What's New
- Fine-grained scrubbing - drag away from the progress bar for precision control (half speed, quarter speed, fine scrubbing)
- Stackable sheet navigation - back button returns to previous sheet, drag down closes all
- Responsive grid columns for large screens (iPad, tablets)
- Queue mode indicator and toggle on the Absorbed page
- Episode finished/progress/downloaded badges on Discover screen podcast cards
- Podcast subscription auto-download now detects episodes added while app was closed
- Press feedback on all card and playback buttons
- Toggleable explicit badge setting in Library settings
- Keep screen awake toggle in Playback settings (resets on app restart)
- In-app update checker for GitHub builds
Podcast Improvements
- Episode chapters now load correctly for inactive podcast cards
- Episode detail sheet shows full data (description, chapters, date) when opened from active player
- Stats row on chapter-less podcast cards no longer shows duplicate timestamps
Offline & Downloads
- iOS downloads now survive TestFlight and App Store updates (sandbox path migration)
- Library screen shows downloaded items when offline instead of empty grid
- Home screen shows correct progress when offline instead of 0%
Performance
- Faster queue auto-advance - finished book cleanup no longer blocks next item from starting
- Streaming cache now works on iOS - cached audio served from disk on repeat plays/seeks, reducing network overhead and battery usage
UX Improvements
- Swipe-to-absorb and mark as finished now show overlay toasts above sheets instead of hidden SnackBars
- Haptic feedback on swipe-to-absorb actions
- Continue listening card timestamps are more legible
- Server version now displays reliably in settings and admin panel
Fixes
- Finished books not auto-removing from absorbing cards, stale progress overrides, continue-series not adding next book
- Casting card not moving to front on reconnect
- Offline sync pulling stale position (#136)
- Swap card and play bug - old audio now pauses, loading state shown
- Series list view not showing covers (#134)
- Author series sheets not opening when seriesId is null
- Local server setting no longer shared across accounts (#137)
- Crash when accessing context on unmounted widgets during login/navigation
- Google Assistant voice query leaking into app search field on Android Auto
- Podcast episodes no longer appearing in audiobook library cards
- Uniform header button heights across all screens
- Fixed crash when clearing streaming cache on iOS
- Fixed rare proxy crash ("Headers already sent") during playback interruptions
Logging & Diagnostics
- Log file now sanitizes URLs, tokens, and sensitive query params at write time (not just when sharing)
- Bare auth keys and credentials masked in log output
- Reduced progress override cleanup log noise