3.1.0 (2026-05-14)
This release of Grimmory: features a redesigned sidebar, supports personal ratings from native Kobo devices, has fixes for the book browser sorting/filtering, prevents a PDF corruption bug, swaps the PWA icons to use the light theme for better iOS support, and more.
Changelog
Full Changelog: v3.0.3...v3.1.0
Features
- deploy: add healthchecks to docker, docker compose, podman quadlet, and helm chart (#1137) (c665359)
- kobo: sync personal ratings from kobo (#1165) (7de39b8)
- oidc: add configurable mobile redirect URI to the admin settings UI (#1287) (ff5f054)
- pdf-reader: PDF reader for vertical/infinite scroll layouts and improved responsiveness (#841) (64945c0)
- ui: add enhanced user popover + rearrange sidebar (#1246) (1042cad)
- ui: add native control CSS system + button/text/tab examples (#1267) (a0a7100)
- ui: New sidebar & search UI (#831) (f3138a8)
Bug Fixes
- api: expose version from jar at
/v1/versionendpoint (#1224) (90547df) - avoid parsing access token on frontend during login (#1201) (60ffb09)
- books: include physical books in app book list query (#938) (218ebb4)
- frontend: unify custom metadata fetch dialog flow (#1088) (237171f)
- kobo: add endpoints for devices to run with proxy off (#1052) (de93200)
- koreader: use a timing-safe comparison for koreader password (#1154) (564ff93)
- metadata: handle non-standard OPF locations (#1256) (f086964)
- metadata: ignore non-results when parsing audble (#1081) (25bcc09)
- metadata: truncate review data before storage (#1086) (d355f73)
- pdf: update pdfium4j version to 1.2.0 and improve XMP metadata extraction (#1285) (a02499a)
- pwa: swap PWA icons to light theme (#1122) (2fcbb5c)
- regenerate-covers: wrap book query stream in transaction to prevent lazy init exception (#916) (2dcbfd1)
- sidebar: add the notification badge to the sidebar (#1299) (168c915)
- ui: add square audiobook artwork in command palette (#1099) (ddd3d6a)
- ui: fix metadata lock patch (#1265) (81b423b)
- ui: fix series page layout and grid (#1192) (95ef4db)
- ui: fix sidebar height and button inconsistency (#1103) (e4c7eb9)
- ui: fix upload books height and scroll issue (#1104) (1f3d776)
- ui: mobile UI enhancements (#1184) (d792d32)
- ui: refine mobile sidebar layout (#1100) (0d1a4ca)
- ui: retrieve full size cover in series page component for hero banner (#1176) (da0d41b)
- ui: revert to UI-based filtering & sorting (#935) (de96fd8)
- ui: sidebar active outline consistency (#1093) (b228513)
Refactors
- api: avoid polynomial regex issue in CustomFontService (#1042) (0edb544)
- api: rename KOReader sync references from booklore to grimmory (#1085) (aec6d69)
- api: replace FQNs with proper imports (#1206) (2deb25a)
- docker: consolidate JVM options into JAVA_TOOL_OPTIONS (#1074) (efb2e1c)
- jpa: apply Hibernate-safe equals and hashCode implementations (#1089) (76c6ca7)
- metadata: make bookId and authorId/categoryId/shelfId final and adjust constructors (#968) (633f011)
- metadata: replace Spring JSON processor with Jackson for leaner prod image (#905) (b9cb791)
- stats: push bulk queries to streams, deduplicate aggregation logic (#937) (30f3a68)
- ui: create shared grid layout for author/series/book browser (#1193) (3ecf312)
- ui: native angular menu component + usage in sidebar (#1229) (e8c56e2)
- ui: remove mobile-specific grid size controls (#1105) (3f3beaf)
- ui: restore deferred render state service (#1255) (cac8681)
- ui: use tanstack virtual+table for book browser table view (#1047) (1c99024)
Chores
- deps: add 3 day npm release age gate (#1270) (442e0f9)
- deps: add angular/aria dependency (#1213) (7a62e71)
- deps: bump @semantic-release/release-notes-generator from 14.1.0 to 14.1.1 in /tools/release in the release-tooling group (#1273) (5988910)
- deps: bump @stomp/rx-stomp from 2.3.0 to 2.4.0 (#1144) (0485bce)
- deps: bump azure/setup-helm from 4.3.0 to 5.0.0 (#1275) (342b7d9)
- deps: bump dependencies and gradle wrapper to 9.5.0 (#1204) (319b3a5)
- deps: bump epub4j and epub4j-native versions to 1.4.0 (#1090) (686dd9f)
- deps: bump fast-uri from 3.1.0 to 3.1.2 in /frontend (#1220) (7c5b3da)
- deps: bump github/codeql-action from 4.35.2 to 4.35.3 (#1036) (e1a8109)
- deps: bump github/codeql-action from 4.35.3 to 4.35.4 (#1274) (82704a2)
- deps: bump hono from 4.12.14 to 4.12.18 in /frontend (#1180) (a71ff8c)
- deps: bump ip-address from 10.1.0 to 10.2.0 in /tools/release (#1146) (694747a)
- deps: bump taiki-e/install-action from 2.75.19 to 2.75.27 (#1037) (c355927)
- deps: bump taiki-e/install-action from 2.75.27 to 2.77.6 (#1277) (15d034e)
- deps: bump the gradle-dependencies group in /backend with 2 updates (#1276) (1bf253a)
- deps: bump the npm-dependencies group in /frontend with 17 updates (#1198) (1b19590)
- deps: bump the npm-dependencies on frontend (#1153) (207000d)
- deps: drop unused frontend dev dependencies (#1149) (84b00de)
- docker: bump Gradle version to 9.5.0 in Dockerfile/dev-docker-compose (#1295) (2c81b64)
- docker: drop mariadb container_name property (#1057) (c9b2a57)
- oidc: backfill + add mobile redirect URI whitelist setting to the backend (#1268) (ee3e21c)
- README: clarify quickstart library must be in a host-mounted directory (#1320) (48a5f5f)
- ui: move theme/language preferences into user profile (#1243) (868e8e6)
- ui: rename menu references to sidebar (#1212) (249878b)
- Update default settings tab from reader to view (#1171) (bf3f119)
Documentation
- api: add OpenAPI stability warning (#1321) (c0b5658)
- Fix Link to Quick Start Guide (#1177) (a47e35a)
- github: clarify and expand on the pull request template (#1075) (96b3a77)
- governance: add project rep (#1218) (4646a27)
CI
- docker: rotate Docker Hub auth secrets for token-based publishing (#1179) (7e55825)
- nightly: make Discord notification optional for manual runs (#1322) (273be54)
- release: publish Helm chart as OCI artifact on release (#993) (34eb6ce)
- use last release as nightly base tag (#1226) (ea02baf)
Build
- add gradle lockfile (#1119) (efc7be6)
- ensure gradle version does not have
vprefix (#1080) (108cd19) - ui: drop
ngx-extended-pdf-viewerangular asset config (#1143) (3dae0e0)
Tests
Contributors
We'd like to thank the contributors for this release for taking the time to make Grimmory better.
Including but not limited to: @thibaultamartin @alexhb1 @balazs-szucs @zachyale @imnotjames @aisa @TheBrandonMorris @bussardrobbie @rubengarciam @Michael-Tanzer @hwine
New Contributors
- @aisaiev made their first contribution in #938
- @TheBrandonMorris made their first contribution in #1057
- @bussardrobbie made their first contribution in #1177
- @rubengarciam made their first contribution in #1176
- @Michael-Tanzer made their first contribution in #1085
- @hwine made their first contribution in #1320