UI/UX improvements: reader interaction, library covers, appearance settings#78
Merged
Conversation
- Restore status/nav bar icon appearance when leaving the reader - Use app background for reader empty/loading/error panels (was always black) - Surface add-from-URL success and failure as snackbars in Library - Show retryable offline error in Explore instead of generic empty state - Add Browse sources / Import file buttons to the empty-library state - Show 'Start reading' for never-opened titles instead of 'Resume Chapter 0' - Report Settings library size as titles and entries - Accessibility: merge AI switch row semantics, 48dp touch targets, chapter filter icon descriptions, darker Paper theme text (>=7:1 contrast)
- Paged mode: left/right 25% tap zones turn pages (RTL-aware), center toggles controls; falls through to chapter navigation at boundaries - Remove per-element tap clickables in paged renderers so zone taps win - Back no longer loops drawer/controls forever; exits the reader when nothing is open, and predictive back is enabled in the manifest - Haptic feedback: pull-to-navigate threshold, long-press selection, chapter prev/next, tap page turns - Controls polish: gradient scrims behind floating bars, 2-line title, 'Chapter progress' slider labeling
- LibraryItem gains coverImageUrl; Room v9->v10 migration + schema export - Covers captured when adding from Explore (both direct and detail-fetch paths) and propagated to per-chapter items created while reading - Backup schema round-trips the cover URL (old backups import cleanly) - Coil thumbnails (2:3, referer-aware requests matching the Explore pattern) in LibraryItemCard and drawer continue-reading/recent rows
- Settings gains an Appearance section: System/Light/Dark theme override, dynamic color toggle (Android 12+, disables accent with explanation), and the accent palette picker (same preference as the reader sheet) - Theme mode and dynamic color persist via PreferencesManager snapshot flow and apply live in MainActivity - Per-chapter download removal now confirms with a snackbar in the reader - Selection/selected semantics on library cards and reader theme swatches; 48dp targets on explore filter chips
Mechanical sweep: padding, Arrangement.spacedBy, and Spacer dimensions that exactly matched token values now use EasyReaderSpacing. Component sizes, elevation, and corner radii untouched.
getNovels swallowed every source exception (getOrDefault(emptyList())), so a fully-offline browse rendered the generic empty state instead of the retryable error tile. Add getNovelsDetailed mirroring searchNovelsDetailed and set hasError when a browse load returns no items but has failures. Update the ViewModel test to model the real repository contract (failures reported, not thrown).
…tings - LibraryViewModel backfills missing covers once per process: groups cover-less web items by novel, fetches details from the item's source (or by URL for unresolved items), and writes the cover to all rows of the novel so the library list and reader drawer update reactively; per-novel failures skip silently - Remove the accent picker from the reader settings sheet (and the orphaned ReaderViewModel setter) — Settings > Appearance is now the single place to change accent
The cover thumbnail was added to LibraryItemCard, but the library screen actually renders novels through NovelGroupHeader in LibraryScreenListSections — LibraryItemCard is only referenced by its own previews. Add the same Coil thumbnail (shared request builder) to the group header.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
UI/UX improvements across the app, from a full design review of v0.5.9.
Fixes
getNovelsDetailed) and render a retryable error stateReader
Library covers
LibraryItem.coverImageUrlwith Room v9→v10 migration and backup round-tripSettings & accessibility
Chores
EasyReaderSpacingtokens migrated to the tokens (no visual change)Verified with the unit test + detekt gate, both flavor assemblies, and manual passes on emulator (fresh install, light/dark, offline) and device.