You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CLAUDE.md
+13Lines changed: 13 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -141,6 +141,12 @@ There are now two major UI modes:
141
141
- progress bar
142
142
- footer / micro-status
143
143
- optional compact cache badge like `CACHE 42%`
144
+
- history browser (`browse_history_session`) — the landing screen when `looper`
145
+
is run with no `--url`; also reachable mid-playback via the `p` overlay. `enter`
146
+
replays the selected row.
147
+
- "track unavailable" modal (`draw_replay_error`) — non-fatal overlay shown when
148
+
a replay target can't be resolved; `d` prunes the dead row, any other key
149
+
returns to the history browser.
144
150
145
151
### Playlist behavior
146
152
@@ -166,6 +172,13 @@ There are now two major UI modes:
166
172
- per-band AGC keeps the scatter visualizer lively across different mixes
167
173
- YouTube currently favors reliability over immediacy: cached download-first instead of direct stream-first
168
174
- remote loading is presented in-TUI instead of as plain stderr logging
175
+
- an unresolvable replay target (private/removed/region-locked/expired live
176
+
stream) is **not** fatal: `resolve_url_with_startup` returns
177
+
`ResolveStartupOutcome::Failed`, `play_file_session` shows the "track
178
+
unavailable" modal, and replay from the history browser returns to the list
179
+
(`SessionOutcome::BackToHistory`) rather than exiting. Quitting playback with
180
+
`q` still exits the app (`SessionOutcome::Quit`). This is intentional — a
181
+
"jukebox historian" accumulates links that inevitably rot.
169
182
-`souvlaki` is wired with the `use_zbus` feature so Linux builds don't need `libdbus-1-dev`; macOS uses `MPRemoteCommandCenter` + `MPNowPlayingInfoCenter` directly. Windows is intentionally unwired (would need a hidden message-only HWND + a per-tick `pump_event_queue`).
0 commit comments