Replace day-level snapshot slideshow with per-camera scrubber interface #119

Closed
opened 2026-07-15 23:22:50 +00:00 by coding-agent-marvin8 · 1 comment
coding-agent-marvin8 commented 2026-07-15 23:22:50 +00:00 (Migrated from codeberg.org)

The day-level snapshot view (/days/{day}/snapshots) currently shows a simple prev/next carousel. With 100+ snapshots per day this becomes unwieldy — stepping through one image at a time makes it hard to browse the day's visual timeline.

This issue tracks replacing that interface with a richer per-camera scrubber that includes:

  • A time slider spanning the full day, with snap-to-nearest-snapshot behaviour
  • A filmstrip of 10 neighbouring thumbnails for spatial context
  • Play/pause with adjustable speed
  • Keyboard navigation
  • Per-camera filtering (the view requires a camera — defaults to first alphabetically)

The clip-level snapshot album (/clips/{id}/snapshots) is unchanged.

The day-level snapshot view (`/days/{day}/snapshots`) currently shows a simple prev/next carousel. With 100+ snapshots per day this becomes unwieldy — stepping through one image at a time makes it hard to browse the day's visual timeline. This issue tracks replacing that interface with a richer per-camera scrubber that includes: - A time slider spanning the full day, with snap-to-nearest-snapshot behaviour - A filmstrip of 10 neighbouring thumbnails for spatial context - Play/pause with adjustable speed - Keyboard navigation - Per-camera filtering (the view requires a camera — defaults to first alphabetically) The clip-level snapshot album (`/clips/{id}/snapshots`) is unchanged.
coding-agent-marvin8 commented 2026-07-15 23:22:57 +00:00 (Migrated from codeberg.org)

Design spec: .superpowers/specs/2026-07-16-PI-snapshot-scrubber-design.md
Implementation plan: .superpowers/plans/2026-07-16-PI-snapshot-scrubber.md

Approach: New scrubber.html template replaces snapshots.html for the day-level route only. The existing clip-level album keeps the old carousel template. Vanilla JS handles all client-side navigation (no framework). Snapshot metadata is inlined as JSON at page load.

Branch: feat/PI-snapshot-scrubber

Commits:

  1. 🐛 URL-encode camera name in snapshot query strings
  2. Add failing tests for scrubber snapshot UI
  3. Add scrubber snapshot template with filmstrip and time slider
  4. ♻️ Route day snapshots through scrubber template with per-camera default
  5. 📝 Add snapshot scrubber release notes
  6. 📝 Document snapshot scrubber interface
Design spec: `.superpowers/specs/2026-07-16-PI-snapshot-scrubber-design.md` Implementation plan: `.superpowers/plans/2026-07-16-PI-snapshot-scrubber.md` **Approach:** New `scrubber.html` template replaces `snapshots.html` for the day-level route only. The existing clip-level album keeps the old carousel template. Vanilla JS handles all client-side navigation (no framework). Snapshot metadata is inlined as JSON at page load. **Branch:** `feat/PI-snapshot-scrubber` **Commits:** 1. :bug: URL-encode camera name in snapshot query strings 2. :white_check_mark: Add failing tests for scrubber snapshot UI 3. :sparkles: Add scrubber snapshot template with filmstrip and time slider 4. :recycle: Route day snapshots through scrubber template with per-camera default 5. :memo: Add snapshot scrubber release notes 6. :memo: Document snapshot scrubber interface
Sign in to join this conversation.
No labels
No milestone
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
marvin8/cang#119
No description provided.