Photos timeline retries failed day pages continuously and keeps a skeleton #883

Open
opened 2026-10-02 17:31:06 +00:00 by kayg · 0 comments
Owner

Evidence

When a Photos timeline day-page request fails, #run clears pending and calls #pump again. The failed day remains in #wanted, so it can be requested immediately again while still visible. This can repeat continuously during a network outage. A day with no loaded rows continues to render its skeleton, with no per-day error or Retry action.

  • apps/web/src/lib/photos/timeline.svelte.ts:225-256,262-275
  • apps/web/src/lib/photos/PhotoTimeline.svelte:619-620

Expected behaviour

Stop automatic retries after a day-page failure. Show a per-day error state with a user-controlled Retry action or a bounded retry policy. Keep the skeleton for a request that is still pending, not a request that has failed.

Owner rule

The UX-completeness rule requires real error states with a way forward. DESIGN.md §34 says loading must not block on animation; it does not specify this per-day failure state.

Test idea

Make a requested day-page endpoint fail repeatedly. Verify the timeline makes no immediate retry loop, exposes a named Retry action, and loads that day after a user retry succeeds.

## Evidence When a Photos timeline day-page request fails, `#run` clears `pending` and calls `#pump` again. The failed day remains in `#wanted`, so it can be requested immediately again while still visible. This can repeat continuously during a network outage. A day with no loaded rows continues to render its skeleton, with no per-day error or Retry action. - `apps/web/src/lib/photos/timeline.svelte.ts:225-256,262-275` - `apps/web/src/lib/photos/PhotoTimeline.svelte:619-620` ## Expected behaviour Stop automatic retries after a day-page failure. Show a per-day error state with a user-controlled Retry action or a bounded retry policy. Keep the skeleton for a request that is still pending, not a request that has failed. ## Owner rule The UX-completeness rule requires real error states with a way forward. DESIGN.md §34 says loading must not block on animation; it does not specify this per-day failure state. ## Test idea Make a requested day-page endpoint fail repeatedly. Verify the timeline makes no immediate retry loop, exposes a named Retry action, and loads that day after a user retry succeeds.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
kayg/calternal#883
No description provided.