All Releases
v1.6·iOS 17.0+

Chapter Seven

Smooth sailing. Earlier release alerts, a sharper player, and snappier pages across the app.

New

  • Earlier Release Reminders — Followed series now ping you 1 week and 2 weeks before a new book drops, in addition to the existing release-day alert. Notifications reschedule themselves when you open the app or when a widget refresh fires, and the per-tenant scheduling cache keeps the alerts straight across multiple servers
  • Release-Day Banner on Cold Start — The release-day banner now appears immediately on cold launch — not just after the next home refresh — and includes books that already landed in your library so you don't miss the day-of celebration for series you also own
  • Status Badges on Series Rows — Series detail rows show download, favorite, abandoned, and finished badges directly on each book cover so you can scan a long series at a glance instead of tapping into every book
  • Book-Remaining in the Scrubber — When the scrubber is in chapter-timeframe mode, the countdown now also surfaces how much time is left in the whole book, so you can see both numbers without flipping modes
  • Diagnostic Log Window Picker — The diagnostic log export now lets you pick how far back to export, including new 5-minute and 15-minute windows for grabbing a tight slice right after something went sideways
  • Sign Out and Export Logs from Library Selection — The library selection screen has a new menu with a one-tap Export Diagnostic Logs and Sign Out — handy when you've signed in and can't get past the library picker

Improved

  • Stale-While-Revalidate Everywhere — Favorites, Author detail, Narrator detail, Series detail, and Book detail all now paint instantly from the SwiftData cache and refresh in the background, the same pattern that already powered Library and Home
  • Parallel Stats Aggregation — Stats use a TaskGroup to resolve per-item metadata in parallel, and locally derived numbers render immediately before the full library aggregate finishes
  • Listen Again Restarts Cleanly — Tapping Listen Again on a finished book now starts from the beginning instead of resuming from the saved progress position
  • Local-First Playback for Downloaded Books — Downloaded books now default to playing from local storage — no server round-trip — for instant start and reliable offline behavior. The player automatically falls back to streaming if the local file is corrupted, and flags it for re-download
  • Bigger Tap Targets — Author detail and series detail rows now expand the tap area to the full padded row, not just the cover or title
  • Cover Cache Goes Read-Only Offline — When the device is offline, the cover cache stops trying to refresh and serves what it already has, so browsing stays smooth without retry storms
  • Inline Reauth on Session Expiry — When your session expires, an inline reauth sheet now slides up over the current screen instead of yanking you back to the login screen. A new per-server ServerSessionState keeps reachability and auth state separate, and a small banner appears when the server is unreachable so you know it's the network, not the app

Fixed

  • Auto-Remove Defers to True End — Downloaded books are no longer auto-removed until playback truly ends, instead of right after the last chapter finishes
  • Timeframe Row Stays Visible — The player hydrates chapters before play starts so the timeframe row stays visible during the first second of a fresh load
  • Most Listened Groups by Bare Series Name — Stats' Most Listened now groups books by the bare series name across all metadata shapes, so a series isn't split in two by a stray #1 sequence suffix
  • Self-Healing Speed Savings — The speed-savings total self-heals if it gets corrupted on disk, and per-session deltas are clamped to plausible values so a single bad sync can't blow up your lifetime total
  • CarPlay Cold Launch — CarPlay-only cold launch now shows the Now Playing button and the Recent shelf instantly, instead of after the first sync round-trip. The restored mini-player book also surfaces correctly in the system Now Playing info
  • CarPlay Recent After Offline Sync — The CarPlay Recent shelf now refreshes after an offline session sync completes, instead of staying stuck on what was visible when you went offline
  • Smarter Token Refresh — A 401 immediately after a /auth/refresh timeout is now treated as ambiguous instead of automatic sign-out, and the refresh endpoint gets a longer 60-second timeout. The on-resume refresh window also tightened from 5 minutes to 60 seconds so wakes don't burn a token round-trip unnecessarily
  • Series Detail seriesId Preserved — Series detail no longer drops the series identifier when the cache upserts, so navigation back into the series after a refresh works correctly
  • External Cover Aspect — External book covers (upcoming releases, etc.) continue to render square to match the source aspect — extended to a handful of additional metadata shapes