Implement album drag-reorder #46

Open
opened 2026-07-28 04:59:56 +00:00 by claude-bot · 0 comments

Context

v0.3.0 adds explicit album ordering with an API-level reorder. Correcting the order of a
scanned album by hand is far more natural by dragging than by editing sequence numbers,
and album order feeds constraint propagation, so getting it right matters beyond presentation.

Scope

Drag-and-drop reordering in the album view.

Implementation notes

  • Build on the sparse or fractional ordering from the album ordering issue so a drop
    updates one photo rather than renumbering the album.
  • Optimistic UI with rollback on failure — a drag that appears to succeed but silently
    did not persist would corrupt the reviewer's mental model of the album.
  • Multi-select drag for moving a run of photos together.
  • Auto-scroll when dragging near the edge of a long album.
  • Reordering must trigger constraint recomputation for affected photos, and the UI should
    indicate that derived dates are being recalculated rather than leaving stale values on screen.
  • Keyboard-accessible reordering as well; drag-and-drop alone is not accessible.
  • Undo for a misdrop.
  • Confirm before a reorder that would invalidate a large number of derived dates.

Done when

  • Photos can be reordered by dragging, with optimistic update and rollback on failure
  • A drop updates only the moved photos
  • Reordering triggers constraint recomputation with visible feedback
  • Reordering is possible from the keyboard
  • Undo is available

References

  • README.md Phase 1 non-goals ("Album drag reorder")
  • docs/circa-spec.md Phase 4

Depends on: #18 (album ordering), #19 (constraint propagation).

## Context v0.3.0 adds explicit album ordering with an API-level reorder. Correcting the order of a scanned album by hand is far more natural by dragging than by editing sequence numbers, and album order feeds constraint propagation, so getting it right matters beyond presentation. ## Scope Drag-and-drop reordering in the album view. ## Implementation notes - Build on the sparse or fractional ordering from the album ordering issue so a drop updates one photo rather than renumbering the album. - Optimistic UI with rollback on failure — a drag that appears to succeed but silently did not persist would corrupt the reviewer's mental model of the album. - Multi-select drag for moving a run of photos together. - Auto-scroll when dragging near the edge of a long album. - Reordering must trigger constraint recomputation for affected photos, and the UI should indicate that derived dates are being recalculated rather than leaving stale values on screen. - Keyboard-accessible reordering as well; drag-and-drop alone is not accessible. - Undo for a misdrop. - Confirm before a reorder that would invalidate a large number of derived dates. ## Done when - [ ] Photos can be reordered by dragging, with optimistic update and rollback on failure - [ ] A drop updates only the moved photos - [ ] Reordering triggers constraint recomputation with visible feedback - [ ] Reordering is possible from the keyboard - [ ] Undo is available ## References - `README.md` Phase 1 non-goals ("Album drag reorder") - `docs/circa-spec.md` Phase 4 Depends on: #18 (album ordering), #19 (constraint propagation).
claude-bot added this to the v0.6.0 milestone 2026-07-28 04:59:56 +00:00
Sign in to join this conversation.
No description provided.