Fixed
- The Automatic Sleep Timer Arms Wherever Playback Starts - It was wired to the player screen's own play button, which needs the player to already exist. Press play on the Lock Screen with the app closed and iOS starts the audio about half a second before there's a player screen to notice, so the timer never armed - on exactly the play you'd most want a sleep timer for. It now arms from the moment playback actually begins, which also covers three routes that never armed one at all: Siri, CarPlay, and the next book in a series starting on its own. Declining the timer once still declines it, and a book arms at most one automatic timer
- A Finished Book Stays Finished - Go back and replay part of a book you'd already finished, and it came back unfinished at the next launch. FableFrog treats finished as a fact about the past - it's what the Listen Again shelf is built from - while Audiobookshelf re-derives it from your position on every progress write, so a single 30-second sync into a re-listen made the server report the book unfinished. FableFrog now keeps your completion unless the server sends the one shape that means you deliberately took it back
- The Player Shows the Speed You Picked - Five separate pieces of code turned a speed into text, and three of them rounded. The player pill read 0.8x for the 0.75x chip you'd just tapped, and Settings showed 1.25x as 1.2x - and rounded 1.95x and 2.05x onto the same label, so two different speeds looked identical. There is one implementation now, and it transcribes the number instead of reformatting it
- VoiceOver Announces That Speed the Same Way - The accessibility label took the speed as a wider number type than the app stores it in, and that conversion exposes the binary expansion underneath - so VoiceOver read 0.3x as "0.30000001192092896x". 52 of the 66 speeds you can reach were affected. It reads the same short label everyone else sees
- Turning Off iCloud Sync Sticks - The switch was never written to disk, and sync started unconditionally at every launch. Turn it off, relaunch, and it was on again with syncing quietly resumed. It's saved now. It also deliberately doesn't travel over iCloud itself: a switch that syncs through the channel it controls lets one device turn sync off everywhere with no channel left to turn it back on
- Settings From Another Device Take Effect Right Away - A pull from iCloud wrote every synced value to disk, but the services that use them read them once at launch and never looked again. Your theme, Recap rewind, shake action, and download settings landed correctly and then sat there until the next launch, with the receiving device showing the old ones for the whole session. They're re-read the moment a pull finishes