Skip to content

Commit ca69d11

Browse files
program247365claude
andcommitted
docs: document graceful replay-failure behavior and history-browser states
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 907a7ba commit ca69d11

1 file changed

Lines changed: 13 additions & 0 deletions

File tree

CLAUDE.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,12 @@ There are now two major UI modes:
141141
- progress bar
142142
- footer / micro-status
143143
- 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.
144150

145151
### Playlist behavior
146152

@@ -166,6 +172,13 @@ There are now two major UI modes:
166172
- per-band AGC keeps the scatter visualizer lively across different mixes
167173
- YouTube currently favors reliability over immediacy: cached download-first instead of direct stream-first
168174
- 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.
169182
- `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`).
170183

171184
## Tests

0 commit comments

Comments
 (0)