All Releases
v1.13.2·iOS 17.0+

As You Set It

Six fixes, and every one of them is the app quietly disagreeing with a choice you already made. The Automatic Sleep Timer only armed when you pressed play on the player's own button, so a Lock Screen play at midnight got no timer. A book you'd finished came back unfinished after you replayed part of it. The player named a speed you hadn't picked. The iCloud Sync switch turned itself back on at the next launch. And a setting synced from another device sat in storage until you relaunched.

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