- 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.
Move the directory creation before the SDK license acceptance step to
avoid permission issues. The directory will be created with normal user
permissions, preventing the "Operation not permitted" errors when the
SDK manager (running with sudo) tries to use it.
The directory is created by the SDK license step with sudo, so we need
sudo to change its permissions. This fixes the "Operation not permitted"
error during the workflow run.
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 workflow automatically builds APKs for feature branches:
- Triggers on pushes to branches starting with 'claude/', 'feature/', or 'dev/'
- Runs build_runner to generate required .g.dart files
- Supports both signed (if secrets available) and debug builds
- Uploads APK artifacts with branch name and commit SHA
- 30-day artifact retention for testing
- Manual trigger support via workflow_dispatch
This allows developers to test changes without manually building locally.
Artifacts can be downloaded from the GitHub Actions run page.
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 CI workflow and add Linux packaging support; update app title to "Vaani"
* Refactor CI workflow to separate setup, testing, and building steps; add Linux AppImage packaging support
* use reusable workflow
* Make Flutter version input optional in setup-env action and rename step in workflow
* Replace setup-env action with reusable flutter-setup workflow; streamline CI configuration and enhance dependency management
* Add Flutter setup composite action for streamlined environment configuration
* Move repository checkout step to the main workflow for better control and clarity in the CI process
* Remove unnecessary shell specification for Flutter dependency setup to simplify action configuration
* Add shell specification for Flutter dependency command to enhance cross-platform compatibility
* Comment out static analysis step in Flutter test workflow to streamline CI process
* Add repository checkout and Flutter environment setup steps to CI workflow
* Add installation of Linux dependencies for Flutter test workflow
* Remove obsolete Flutter setup and release workflows to streamline CI configuration
* Fix formatting in make_config.yaml by ensuring newline at end of file