LocalJam v2026.09.068
Immutable
release. Only release title and notes can be modified.
LocalJam v2026.09.068
Live Deployment & App Access
- 🌐 Web App: https://varun.khaneja.org/LocalJam/
- 🏷️ Release Tag: v2026.09.068
- 📦 Repository Commit: c1b88547a3254f1d90c749bbd3f49e0e322f1bd2
Commit Details
Subject: feat(ui): add 6-row stage viewport component with dual-source handle bar
Date: 2026-09-15 22:48:13 -0700
Commit Message
Implement the persistent one-screen L0 Stage viewport component per
docs/design/2026-09-15-minimalist-player-redesign.md (§4.1, §4.4, §7.4, §8 Task 7).
- Row 1: Interactive status chips ([★], [SHUFFLE], [REPEAT], [EQ], [MUTED])
with cached configuration keys to prevent DOM destruction during playback
time ticks, plus [ ••• ] overflow button. - Row 2: 280x280 album artwork with error fallback to icon-192.svg, real-time
Canvas audio visualizer, and pointer gesture bindings (single tap to cycle
visualizer modes, double-tap to toggle favorite, long-press to open overflow). - Row 3: Live metadata titles and subtitles updated in place.
- Row 4: Timeline range seek slider and dual-ended mm:ss / -mm:ss timestamps
for local playback; double-coded radio stream status line ([READY],
[CONNECTING], [BUFFERING], [LIVE], [OFFLINE] with distinct glyphs) for radio. - Row 5: Ergonomic transport cluster (Previous, Play/Pause, Next).
- Row 6: Dual-Source Handle Bar ([ Local ] · [ Radio ]) with horizontal swipe
gesture for source toggling and Tier 2 re-open folder prompt when session files
are unavailable. - Stage interactions: Wheel volume stepping (±5%) with [VOLUME XX%] toast and
middle-click (auxclick / mousedown suppression) mute toggling. - Updates test/helpers/mock-dom.js with WheelEvent and input type property syncing.
- Adds 13 unit tests in test/ui/stage.test.js covering all 6 rows and gestures.