- Change childAspectRatio from 0.68 to 0.65
- Fixes 3.3 pixel overflow when titles span two lines
- Single-line titles already worked, this ensures two-line titles fit
- Change childAspectRatio from 0.75 to 0.68 for more vertical space
- Fixes 'bottom overflowed by X pixels' error in grid cards
- Provides adequate space for square cover + title + author text
- Cards are slightly taller but layout is now correct
Navigation fixes:
- Change goNamed to pushNamed in all library browser pages
- Maintains proper back navigation stack
- Back button now goes step by step instead of to beginning
- Prevents app from closing when navigating back from book detail
Grid layout fixes:
- Book covers are now always square (1.0 aspect ratio)
- Overall card aspect ratio is 0.75 to provide space for text
- Wrap cover in AspectRatio widget instead of using Expanded
- Ensures title and author info always visible below covers
- Fixes issue where book info was missing in series view
- Change from ListView to GridView with 3 columns for better book browsing
- Redesign LibraryItemCard as grid cards with cover images and metadata
- Fix navigation to use Routes.libraryItem instead of Routes.you
- Use correct path parameter 'itemId' for book detail navigation
- Remove subtitle from cards to simplify grid layout
- Books now open properly when tapped, same as home page
- Try filterdata endpoint first (like genres)
- Fall back to series endpoint if needed
- Make SimpleSeries.fromJson more robust with multiple field name attempts
- Add extensive logging to debug series loading issues
Add non-null assertion operators for authorName and subtitle in Text
widgets where null checks are already performed. This resolves the
null safety compilation errors.
- Add shelfsdk import to router.dart for Filter types
- Fix Media and MediaMetadata type checking using freezed mapOrNull
- Handle all Media variants (book, bookMinified, bookExpanded)
- Handle all MediaMetadata variants to extract title, subtitle, and authors
- Fix BookMetadata accessing authors list instead of authorName property
Resolves compilation errors in GitHub Actions build.
- Sort authors by surname (last word in name) instead of first name
- Create FilteredLibraryItemsPage to display books filtered by author/genre/series
- Add navigation from authors/genres/series pages to filtered book lists
- Use AuthorFilter, GenreFilter, and SeriesFilter from shelfsdk
- Add libraryFiltered route with filter parameter support
Users can now:
- Browse authors sorted by surname
- Tap on an author to see all their books
- Tap on a genre to see all books in that genre
- Tap on a series to see all books in that series
- Fix genres error by parsing JSON manually to avoid Series deserialization
- Fix series blank screen by using SimpleSeries class instead of full Series
- Add alphabetical sorting to authors page
- Work around shelfsdk Series variant detection issues
The Audiobookshelf API returns Series objects that don't match any of the
variant detection patterns in the shelfsdk SeriesConverter. Since we can't
modify the external shelfsdk, we parse the API responses manually to extract
only the data we need for display.
Fix compilation errors in library browser views:
- Use serverUrl instead of url on AudiobookShelfServer model
- Use authToken instead of token on AuthenticatedUser model
- Add all required variant handlers to Series.maybeMap call
These changes align with the actual model definitions in the codebase.
This commit implements a comprehensive library browsing feature:
- Add LibraryBrowserProvider with providers for authors, genres, and series data
- Create LibraryAuthorsPage with grid view of authors including images and book counts
- Create LibraryGenresPage with list view of all genres
- Create LibrarySeriesPage with list view of series and book counts
- Update LibraryBrowserPage navigation to route to the new views
- Add routes for /browser/authors, /browser/genres, and /browser/series
- Replace "Not Implemented" toasts with functional navigation
The implementation uses the Audiobookshelf API via shelfsdk to fetch:
- Authors list with metadata (getAuthors)
- Genres from library filter data (getFilterData)
- Series with pagination support (getSeries)
All views follow Material Design 3 patterns and include proper loading/error states.
* feat: add fadeSlideTransitionBuilder for smoother transitions in user login
* fix: reuse onboarding components on server manager page
* fix: gaining focus rebuilt the widget
using memoized fixes this issue
* feat: add AbsIcons font and update pubspec.yaml for font integration
* feat: implement library selection in YouPage
* fix: optimize authenticatedApi provider to not rebuild unnecessarily
* feat: add LibrarySwitchChip widget and integrate it into YouPage and ScaffoldWithNavBar
* feat: enhance library selection UI with refresh functionality and error handling
* fix: change library switcher activation from long press to double tap
* feat: show current library on nav bar
* feat: refactor LibraryBrowserPage to use CustomScrollView and enhance app bar with dynamic library icon and title
* refactor: consolidate theme definitions by removing separate dark and light theme files
* feat: integrate dynamic color support and enhance theme settings management
* feat: add theme settings route and update theme management in app settings
* feat: enhance theme management by integrating high contrast support in various components
* feat: implement mode selection dialog for theme settings and enhance button functionality
* refactor: update theme import paths and consolidate theme provider files
* feat: enhance theme management by integrating theme selection based on audiobook playback
* refactor: update default value for useMaterialThemeFromSystem to false in theme settings
* refactor: adjust high contrast condition order in theme settings for consistency
* refactor: rename useMaterialThemeOfPlayingItem to useCurrentPlayerThemeThroughoutApp for clarity
* refactor: correct spelling in system theme provider and replace with updated implementation
* refactor: extract restore backup dialog into a separate widget for improved readability
* refactor: reorganize settings sections for clarity and improve restore dialog functionality
* feat: add ability to get logs file from ui
* test: add unit test for log line parsing in logs_provider
* refactor: update all logs to obfuscate sensitive information
* feat: generate dynamic zip file name for logs export
* feat: enhance logging in audiobook player and provider for better debugging
* refactor: extract user display logic into UserBar widget for offline access of settings and logs
* feat: add About section with app metadata and source code link in YouPage
* feat: update shake detection settings to reduce cooldown and feedback options
* fix: shake detector not detecting in background
* enhance shake action handling to avoid unnecessary feedback
* disable shake detector when player not playing anything
* refactor: remove outdated TODO regarding shake detection optimization
* refactor: comment out notifyListeners call in restartTimer method for clarity