Open
Conversation
…, color pickers - Floating pill-shaped bottom nav bar (mobile) with nav bar color picker - Keep Reading horizontal strip in library series list - Home screen: horizontal section rows (Keep Reading, On Deck, etc.) in new UI mode - Pill-shaped filter chips; accent color picker for chips and tabs - New Library UI master toggle in Settings → Appearance (defaults ON) - Collections and read lists: tighter grid spacing in new UI mode - Nav bar icon color fix (correct contrast in dark/light mode) - DB migrations V13 (nav_bar_color, accent_color) and V14 (use_new_library_ui) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add ImmersiveDetailScaffold: draggable card over full-bleed cover image, animated corner radius, nested scroll, FAB and top bar layers - Add LocalRawStatusBarHeight composition local to capture status bar height before statusBarsPadding() consumes it in MainScreen - Wire immersive=true in SeriesScreen, BookScreen, OneshotScreen; replace IconButton (40dp M3 minimum) with Box+clickable for true 36dp circle size; add edge padding so button is not flush with screen edges - Rename migration V14__new_library_ui → V14__immersive_layout; add V15 for new library UI settings Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add ImmersiveSeriesContent using ImmersiveDetailScaffold; wired into SeriesScreen behind MOBILE && useNewLibraryUI flag - ImmersiveDetailFab: read / read-incognito / download with confirmation dialog - Card layout: title (2/3 headlineMedium) → writers+year → SeriesDescriptionRow → summary → chip tags → tab row → books/collections content - Bulk-select support: top bar swaps to BulkActionsContainer in selection mode, BottomPopupBulkActionsPanel shown when books selected - SeriesDescriptionRow: add showReleaseYear param (default true) - ImmersiveDetailScaffold: add 2dp shadow before clip so shadow isn't clipped Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…fold pager sync - Extract ImmersiveBookContent and ImmersiveOneshotContent composables from BookScreen/OneshotScreen; screens now delegate to these dedicated composables - ImmersiveDetailScaffold: add initiallyExpanded param + onExpandChange callback for synchronized expand/collapse state across pager pages; use remember instead of rememberSaveable so adjacent pager pages don't restore stale state; snapTo correct anchor when parent-driven initiallyExpanded changes - ImmersiveSeriesContent: add nav bar + 80 dp bottom content padding to grid so last row isn't hidden behind nav bar - Minor import cleanup in BookScreen / OneshotScreen Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add SharedTransitionLayout and AnimatedContent for smooth library UI transitions.
- Enhance ImmersiveDetailScaffold and thumbnails with shared bounds and visibility animations.
- Implement 'Gesture System Fix':
- Fix pan-zoom lock and velocity jumps by tracking pointer count stability in ScalableContainer.
- Add smooth double-tap to zoom in ReaderControlsOverlay with base zoom tracking in ScreenScaleState.
- Synchronize velocity resets on pointer count changes to prevent kinetic scrolling jumps.
- Update Paged, Continuous, and Panels reader states to support base zoom.
- Add implementation and research documents:
- GESTURE_SYSTEM_FIX.md: Documentation for the implemented gesture fixes.
- PAGED_SWIPE_PLAN.md: Proposed plan for paged mode sticky swipe.
- PANEL_VIEWER_RESEARCH.md: Research for upcoming panel viewer improvements.
- REORG_TASKS.md: Task list for repository reorg.
Co-Authored-By: Gemini CLI <noreply@google.com>
- Implement RTL-aware directional sticky barrier: prevents accidental page turns when zoomed in. - Implement kinetic momentum: uses dispatchRawDelta and performFling for smooth, natural movement. - Implement robust kinetic snapping: automatically settles on the closest page when gesture or fling ends. - Replace static paged layout with controlled HorizontalPager for frame-perfect synchronization. - Fix RTL gesture reversal: ensure scroll orientation and barriers update reactively to direction changes. - Restore synchronous pan/zoom math: eliminates race conditions and restores precise gesture control. - Optimize image loading: refined LaunchedEffect and remembered spread metadata for smoother paging. Co-Authored-By: Gemini CLI <noreply@google.com>
- Add 'Show full page' setting to Panel Reader with options: None, Before, After, Both.
- Implement intelligent full-page injection in PanelsReaderState:
- Automatically show full page before/after panel sequences based on settings.
- Prevent redundant views on splash pages (1 large panel) or empty detections.
- Support seamless bidirectional navigation (forward/backward) through the injected sequence.
- Persistence and Data Model:
- Add PanelsFullPageDisplayMode enum to domain layer.
- Implement database migration (V16) to persist display mode setting.
- Update repository and Exposed implementation for SQLite storage.
- UI Enhancements:
- Add 'Show full page' selection to mobile bottom sheet reader settings.
- Add 'Show full page' dropdown to desktop side menu reader settings.
Co-Authored-By: Gemini CLI <noreply@google.com>
- Add synchronized animateTo(Offset, Float) to ScreenScaleState:
- Uses linear interpolation to animate offset and zoom simultaneously over 1000ms.
- Prevents jerky 'zoom then scroll' jumps during panel transitions.
- Update PanelsReaderState to use unified animation for panel-to-panel movement.
- Add skipAnimation support to scrollToPanel for instant positioning during initial loads.
Co-Authored-By: Gemini CLI <noreply@google.com>
- Add separate 'Tap to zoom' settings for Paged and Panel reader modes.
- Implement database migration (V17) to persist mode-specific tap configuration.
- Update persistence layer (Table, Data Class, Repository) to support new settings.
- Enhance gesture system:
- Conditionally enable double-tap to zoom based on the active reader's configuration.
- Disabling double-tap allows for instantaneous single-tap response (faster page/panel turns).
- UI Enhancements:
- Add 'Tap to zoom' toggle to mobile bottom sheet for Paged and Panels modes.
- Add 'Tap to zoom' toggle to desktop side menu for Paged and Panels modes.
Co-Authored-By: Gemini CLI <noreply@google.com>
- Update download URL to point to the higher-accuracy Medium model. - Update detector search path to load 'rf-detr-med.onnx' instead of 'nano'. - Improves panel detection reliability on Android devices. Co-Authored-By: Gemini CLI <noreply@google.com>
…ransitions - Centralize navigation physics in ReaderAnimation.navSpringSpec(density). - Update ScreenScaleState to store and use display density for camera transitions. - Normalize page sliding and camera movement tempo across devices (phone vs tablet). - Ensure smooth side-by-side page sliding in Panel mode transitions by rendering neighbors. - Resolves sluggish feel on tablets and jarring snap on phones. Co-Authored-By: Gemini CLI <noreply@google.com>
- Remove incorrect early return in jumpToPage() that prevented loading on startup. - Matches the fix applied to Panel mode for consistent startup behavior. Co-Authored-By: Gemini CLI <noreply@google.com>
- Fix ImmersiveDetailFab layout by removing weights and adding a leading Spacer for correct right-alignment. - Synchronize BookViewModel with ImmersiveBookContent pager to ensure correct book context for download and navigation. - Refactor ImmersiveDetailScaffold nested scroll logic to ensure a hard stop at the top when expanding the card. - Prevent state drift in card scrolling by consuming upward velocity and delta in onPreScroll/onPreFling. Co-Authored-By: Gemini CLI <noreply@google.com>
- Remove manual scroll tracking (innerScrollPx) and overlay thumbnail from ImmersiveDetailScaffold. - Move thumbnails directly into card content for Books, Series, and Oneshots to ensure perfect scroll synchronization. - Persist card expansion state (isExpanded) in ViewModels to ensure correct state restoration when navigating back. - Fix layout issue where extra space was reserved for thumbnails when the card was downsized. Co-Authored-By: Gemini CLI <noreply@google.com>
…ted card specs - Align typography in Series, Book, and Oneshot immersive screens with Material 3 tokens (headlineSmall, titleMedium, labelSmall). - Replace manually scaled headlines and hardcoded 10sp text with standard M3 scale steps. - Upgrade card in ImmersiveDetailScaffold to Material 3 Elevated Card specs (6.dp elevation). - Adjust scaffold background to 'surface' to provide visual contrast for the elevated card shadow. Co-Authored-By: Gemini CLI <noreply@google.com>
…cification - Refactor MainScreen mobile layout to use a single Scaffold and M3 NavigationBar. - Update immersive detail FABs to use standard M3 Extended FAB and standard FAB with squircle shapes. - Standardize visual hierarchy in all action menus with leading icons and M3 typography. - Style destructive menu actions with 'error' color tokens and remove manual hover overrides. - Update toolbar and item card triggers to use rounded icon variants (MoreVert). - Clean up redundant window inset spacers and hardcoded list padding. Co-Authored-By: Gemini CLI <noreply@google.com>
…ion crash - Update 'AppFilterChipDefaults' and 'NoPaddingChip' to use Material 3 squarish shape (8dp). - Lighten unselected chip borders using 'outline' color and 'Dp.Hairline'. - Add 'AppSuggestionChipDefaults' and apply to count chips in Library and Series screens. - Fix IllegalArgumentException on Android by adding navigation guards to prevent redundant screen pushes.
- Move library options menu to the right. - Make library name clickable to toggle the navigation drawer. - Truncate long library names with ellipsis (max width 150dp). - Optimize spacing between name and chips. - Add end padding to chips row to prevent overlap with menu button.
- Relocate Home screen edit button to top right as a menu icon. - Align Home screen chips with section headers. - Fix Library screen toolbar layout with fixed name and right-aligned menu.
- Add efficient edge-sampling color utility using libvips. - Implement AdaptiveBackground Composable with animated transitions. - Integrate adaptive backgrounds into Paged and Panel reader modes. - Add settings toggles and persistence for both reader modes. - Include database migration (V18) for new settings.
This commit implements Phase 2 and 2.5 of the adaptive background plan: - Add EdgeSampling and EdgeSample data classes for richer edge data. - Update ReaderImageUtils to efficiently sample edge average colors. - Pre-calculate image display sizes in reader states to avoid composition-time suspend calls. - Rewrite AdaptiveBackground to draw gradients relative to image edges rather than screen center. - Implement sub-pixel rounding fixes and 1px overlap to eliminate background gaps. - Add ByteArray.toImageBitmap extension for raw RGBA buffer conversion across platforms.
…aptive background This commit completes Phase 3 of the adaptive background implementation, optimizing for Panel Mode: - Update EdgeSampling to support all four sides (top, bottom, left, right). - Update ReaderImageUtils to sample all four edges and provide 1D color lines. - Implement trapezoidal gradient zones with 45-degree corner mitering in AdaptiveBackground. - Move AdaptiveBackground outside of the ScalableContainer in Panel Mode for static rendering. - Update PanelsReaderContent to calculate real-time imageBounds for background alignment.
Ongoing image downloads were being cancelled when changing pages due to aggressive cancelChildren() on the page load scope. Introduced targeted cancellation of the spread/page loading job while allowing individual image loading tasks to continue.
… open Hold the pager at 1 page (always showing the tapped book) until the shared-element transition settles before expanding to the full sibling count. This prevents two race-condition bugs that were deterministic per (book, navigation-source) pair: - Bug A (cover flash): siblingBooks loading mid-transition caused page 0 to show siblingBooks[0] (a different book) because the shared-element cover key changed mid-flight. - Bug B (double card slide): new pages entering composition while AnimatedVisibility was still "entering" fired a second slideInVertically on ImmersiveDetailScaffold. Key changes in ImmersiveBookContent: - pagerExpanded / initialScrollDone are now separate flags: pager expands first (so scrollToPage can run), then initialScrollDone flips only after the pager has settled on the correct page — preventing the brief window where page 0 shows the wrong cover. - selectedBook is guarded by initialScrollDone so onBookChange is not called with the wrong sibling before the pager is initialised, which previously propagated back as a changed `book` prop and corrupted the pageBook guard. - transitionIsSettled (derivedStateOf over animatedVisibilityScope) gates the scroll so no new pages enter composition during the enter transition. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…rs and accent presets
- Align immersive oneshot screen layout with the series screen (tabs for tags, collections, and read lists). - Ensure collections and read lists are initialized in OneshotViewModel. - Remove solid backgrounds and shadows from thumbnail count and filter dropdowns for a cleaner, transparent look. - Add thin borders to selected book view mode buttons.
BoxWithConstraints.maxHeight shrinks by ~80dp when the Material NavigationBar disappears during the library→book transition. The previous fix added systemNavBarHeight back, but the instability was from the app nav bar, not the OS nav bar. Replace `maxHeight + rawNavBar` with `windowHeight − statusBar − navBar` using LocalWindowInfo.current.containerSize, which is invariant to whether the app NavigationBar is visible. Also add LocalRawNavBarHeight CompositionLocal (needed for the calculation) and remove the now-duplicate statusBarDp declaration. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Update progress slider to May 2025 Material 3 spec (16dp track, animated thumb). - Implement floating slider design by removing solid backgrounds and adding semi-transparent tracks. - Replace top settings icon with a bottom-right Floating Action Button (FAB) using 'Tune' icon. - Enhance settings bottom sheet with standard M3 drag handle and scrim. - Integrate user-defined accent color across all reader and appearance sliders.
…ettings - Introduce AnimatedDropdownMenu for M3-style enter/exit animations. - Replace standard DropdownMenu with AnimatedDropdownMenu in all action menus. - Enhance shared transitions in immersive screens (Book, Oneshot, DetailScaffold) with better overlay rendering and timing. - Refine navigation logic to prevent redundant screen replacements. - Modernize appearance settings: replace nav bar color with accent color and use DropdownChoiceMenu for accent presets. - Fix immersive screen bottom bar visibility and styling for New UI.
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.
I have done quite a bit of UI change in the last couple of weeks or so - here is the list , and I added a settings to keep the old UI as well. I would be very happy if you can accept this into the main app if you think its OK - and if you need me to improve anything let me know.
this is the first time I am doing such pull request - and I didnt find any other way to reach out (I tried opening a discussion) - so I hope this is the right thing to do - let me know.
here are the changes - its mostly AI text but it summarize it roughly ok.
Library UI Changes
Reader Changes
Settings