- 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.
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
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:
doExtendTimein ParentView calledchildChoreListRef.value?.refresh()directly AND the SSEchore_time_extendedevent handler also calledrefresh(), causing two concurrent fetches.ScrollingList.fetchItems()had no protection against concurrent calls. When two fetches raced,items.valuewas set before images were resolved, and the second call'sloading.value = falsedidn't trigger a re-render (already false), leaving images from the second fetch invisible.
Fix:
- Removed the manual
refresh()call fromdoExtendTimein 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.valueis 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.
