Skip to content

Document the sleep timer redesign - #19

Merged
KodeStar merged 2 commits into
mainfrom
sleep-timer-redesign
Aug 13, 2026
Merged

Document the sleep timer redesign#19
KodeStar merged 2 commits into
mainfrom
sleep-timer-redesign

Conversation

@KodeStar

Copy link
Copy Markdown
Owner

Docs for KodeStar/audiosilo-frontend#59, where shake now extends a running sleep timer instead of cancelling it.

User Guide

The "shake to cancel" claim was wrong in two places (listening/playback.md and listening/mobile-apps.md) and is corrected, not merely supplemented. Added:

  • what the fade does and does not apply to: set-time timers fade over their last 30 seconds and show "Fading out"; end-of-chapter timers play out at full volume and show "Ending soon"
  • the "Keep listening" button, and that it is the only route on the web player
  • the countdown freezing while paused, with the 20 minute reset and the 2 hour abandon
  • the Auto sleep timer setting and its arming rules, in both listening/playback.md and listening/account.md
  • a note that iOS Safari refuses per-element volume, so the web player there gets the pause and Keep listening but no audible fade

Developer Docs

frontend/playback.md covers the timer's phase machine and the syncFade reconciler, the freeze representation and why it must survive the JS runtime being suspended, the allowEndOfBook split between an automatic arm and a shake, the auto sleep controller with its session memory and no-re-arm-loop argument, and the required (not optional) setVolume on PlaybackService.

Several stale claims a reviewer caught are fixed: it described setVolume as optional in four places when types.ts declares it required and explicitly rejects that design, named applyFadeGain after it became syncFade, described the phase as derived when it is stored, and said useShakeToExtend is called from player-view.tsx when it is deliberately mounted at the root so shake works on a locked phone with no player screen.

frontend/testing.md documents the shared player-store test double, including its deliberate divergences from the real store, and records that render and fireEvent are both async in RNTL 14.

Gate

npm run build passes, which throws on broken links and anchors.

Known follow-up

static/img/screenshots/web-player/settings.png is now out of date, since the Settings screen has a new Sleep timer section. Regenerating needs a running server, so it is a separate pass.

…equence veto

Document the two matching fixes: metadata extraction now prefers the title
tag when it extends the album with a real subtitle (the Audible
series-in-album shape), and pkg/match disqualifies a same-series candidate
on a sequence conflict only when both titles are bare "series + number".
Shake now extends a running sleep timer instead of cancelling it, so the
User Guide's "shake to cancel" claims were wrong in two places. Covers
what the fade does and does not apply to (set-time timers fade over their
last 30 seconds, end-of-chapter timers play out at full volume), the
"Keep listening" button as the web's only route, the countdown freezing
while paused with its 20 minute reset and 2 hour abandon, and the new
Auto sleep timer setting with its arming rules.

Developer docs cover the timer's phase machine, the required setVolume on
PlaybackService, the shake hook mounting at the root rather than in the
player modal, the auto sleep controller and its session memory, and the
shared player-store test double.
@KodeStar
KodeStar merged commit ed5ecca into main Aug 13, 2026
1 check passed
@KodeStar
KodeStar deleted the sleep-timer-redesign branch August 13, 2026 18:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant