Files
chore/.github/specs/bugs-1.0.6-02/bugs-1.0.6-set02.md
Ryan Kegel 359c170b27
Some checks failed
Chore App Build, Test, and Push Docker Images / build-and-push (push) Has been cancelled
fix: implement fetch generation counter to handle concurrent refreshes in ScrollingList
- Added a fetch generation counter to the fetchItems method to discard stale results from concurrent fetches.
- Updated the loading state management to ensure it only updates if the fetch is the latest.
- Enhanced the refresh method to prevent stale data from being rendered when multiple refreshes occur.
- Added a test case to verify that stale fetches are discarded correctly when concurrent refreshes happen.
- Fixed CSS for mobile banners to prevent overflow and adjusted font sizes for better visibility.
- Resolved issues with task icons disappearing when extending time on overdue chores by ensuring only one fetch is active at a time.
2026-03-25 15:30:00 -04:00

2.2 KiB

Bug List for 1.0.6 Set 2

On mobile, the COMPLETED (and possible other banners) overflow it's bounding box

  • Fixed

alt text

We need the banner text to be a little smaller on mobile screens so it does not go outside the dark border box.

Fix: Added @media (max-width: 480px) CSS rule for .chore-stamp in both ChildView.vue and ParentView.vue. Reduces font-size to 0.82rem, letter-spacing to 1px, and padding to 0.3rem 0 on small screens.

Extending time on a chore that is too late causes task icons to disappear.

  • Fixed

When the user extends time on a chore that is TOO LATE, I think 2 identical calls are being made to the api /child/[id]/list-tasks. This is causing a condition where images no longer appear until the user refreshes.

Could SSE calls be causing this? Could also be a childChoreListRef.value?.refresh() is called in the UI too many times too quickly.

Root Cause: Two issues combined:

  1. doExtendTime in ParentView called childChoreListRef.value?.refresh() directly AND the SSE chore_time_extended event handler also called refresh(), causing two concurrent fetches.
  2. ScrollingList.fetchItems() had no protection against concurrent calls. When two fetches raced, items.value was set before images were resolved, and the second call's loading.value = false didn't trigger a re-render (already false), leaving images from the second fetch invisible.

Fix:

  • Removed the manual refresh() call from doExtendTime in ParentView — the SSE event handler already handles it.
  • Added a fetch generation counter to ScrollingList.fetchItems() that discards stale results from superseded fetches.
  • After image resolution, items.value is re-assigned ([...itemList]) to trigger Vue reactivity for image URLs set on raw objects.

When adding a schedule to a task and submitting, icons dissappear.

  • Fixed

This is related to the previous bug. API calls to /child[id]/list-tasks are called very quickly causing a problem.

Fix: The ScrollingList generation counter fix (described above) resolves this for all callers. Any concurrent refresh() calls — whether from SSE events, manual triggers, or timer-based refreshes — are now safely handled.