Photos: changing a burst key photo has no Undo action #775

Open
opened 2026-10-02 13:10:19 +00:00 by kayg · 2 comments
Owner

Found during the source review for #427 on origin/dev at c4a61e8cf090170f35b1bed3350d9de20c83ecd5.

Decided behavior

DESIGN §28 (pairs and stacks), §34 (8 s Undo toast), and the owner UX completeness rule of 2026-10-02 require Undo for a state-changing action.

Evidence

apps/web/src/lib/photos/PhotoViewer.svelte:240–246 calls setKeyPhoto, clears the stack cache, posts a plain toast and calls onstackchanged. It does not retain the previous key photo or offer an Undo action.

Observed behavior

The User can change a burst's visible photo, but has no immediate recovery action in the result toast.

This is a source finding. No production build or live-server run was made in this review job.

Expected

Retain the previous member ID and offer Undo through the shared toast and key-photo route. Update the viewer strip and timeline at once. Preserve a later key-photo choice if it supersedes this action.

Test idea

Change the key photo of a real burst, undo and check the viewer, timeline and persisted choice. Repeat two rapid choices and check that a stale Undo does not replace the newer choice.

For UI evidence, use a production build at 390, 820 and 1440 px in light and dark, with macOS platform hints. Check pointer, keyboard and touch, plus reduced motion.

Duplicate check

Searched all issue titles for key photo and bursts. Read closed #29, which added key-photo selection. No specific key-photo Undo ticket found.

Found during the source review for #427 on `origin/dev` at `c4a61e8cf090170f35b1bed3350d9de20c83ecd5`. ## Decided behavior DESIGN §28 (pairs and stacks), §34 (8 s Undo toast), and the owner UX completeness rule of 2026-10-02 require Undo for a state-changing action. ## Evidence `apps/web/src/lib/photos/PhotoViewer.svelte:240–246` calls setKeyPhoto, clears the stack cache, posts a plain toast and calls onstackchanged. It does not retain the previous key photo or offer an Undo action. ## Observed behavior The User can change a burst's visible photo, but has no immediate recovery action in the result toast. This is a source finding. No production build or live-server run was made in this review job. ## Expected Retain the previous member ID and offer Undo through the shared toast and key-photo route. Update the viewer strip and timeline at once. Preserve a later key-photo choice if it supersedes this action. ## Test idea Change the key photo of a real burst, undo and check the viewer, timeline and persisted choice. Repeat two rapid choices and check that a stale Undo does not replace the newer choice. For UI evidence, use a production build at 390, 820 and 1440 px in light and dark, with macOS platform hints. Check pointer, keyboard and touch, plus reduced motion. ## Duplicate check Searched all issue titles for key photo and bursts. Read closed #29, which added key-photo selection. No specific key-photo Undo ticket found.
Author
Owner

Additional source check: the current key-photo route writes XMP Sidecars for burst members one at a time and does not check the expected current choice. If the prior display was inferred from capture order, I will undo by clearing the explicit key-photo override, and reject stale Undo after a newer selection.

Additional source check: the current key-photo route writes XMP Sidecars for burst members one at a time and does not check the expected current choice. If the prior display was inferred from capture order, I will undo by clearing the explicit key-photo override, and reject stale Undo after a newer selection.
Author
Owner

Starting work on #775 in branch job/undo-a11y-filesphotos, based at 9281e63b01. I am tracing the burst key-photo route, Sidecar write recovery, and viewer refresh path, then will add regression coverage for restoring an inferred key and rejecting stale Undo.

Starting work on #775 in branch job/undo-a11y-filesphotos, based at 9281e63b0164fd0297d959f37eb0008bfa0aa4d3. I am tracing the burst key-photo route, Sidecar write recovery, and viewer refresh path, then will add regression coverage for restoring an inferred key and rejecting stale Undo.
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#775
No description provided.