Bookmark Sync
- Two-way bookmark sync with ABS server (bookmarks created in web UI show in Absorb and vice versa)
- Title + note fields kept locally, combined as single note for server compatibility
- Sync triggers on bookmark sheet open, all-bookmarks screen, and on add/edit/delete
- All-bookmarks screen pulls all server bookmarks on open
- Book detail sheet shows expandable bookmarks section below chapters
- Full bookmark detail dialog in all-bookmarks screen with edit and jump buttons
- Confirm dialogs for bookmark jump and delete
Bookmark & Chapter Playback
- Bookmarks and chapters now work on inactive cards - starts playback from that point
- Jump-to-bookmark resumes playback if paused
- Bookmark button always visible on all cards
Playlist Podcast Episodes (#143)
- Fixed podcast episodes in playlists showing as shows instead of episodes
- Episode titles and details now display correctly on home page and playlist sheet
- Tapping opens the episode detail, not the show sheet
Admin Podcast Management
- Popular podcasts discovery with iTunes top charts and genre filters (#140)
- Multi-select feed episodes to bulk download
- Multi-select downloaded episodes to bulk delete
- Match podcast - search iTunes to update cover and metadata
- Check new episodes with date picker and download limit
- Quick access to podcast management from library screen (root only)
Admin User Sessions
- View a user's recent listening sessions from the user detail screen
Series Sub-Series Grouping
- Collapse/group books by sub-series within a parent series (e.g. Mistborn within Cosmere)
- Grid view shows stacked cover tiles for sub-series
- List view shows expandable headers with book count and progress
Sleep Timer
- Auto sleep timer can now stop at end of chapter instead of a fixed duration (#142)
Settings
- Account switcher sheet from username dropdown to the top of settings
- Admin controls restricted to root users only (most ABS admin actions require root, simplifies permission handling)
- Version info and update check moved to bottom
Code Cleanup
- Removed unused widgets and dead code
- Split large files into smaller, focused modules