Releases: grimmory-tools/grimmory
Release v3.2.0
3.2.0 (2026-06-04)
Features
- helm: support external MariaDB (#1068) (4afc738)
- kobo: add subtitle to KoboBookMetadata (#1543) (e4bf4c5)
- pdf-reader: add manual save to the top bar functionality for document edits (#1426) (0e76b38)
- ui: light mode and new theming system (#1468) (22ff6d8)
- ui: move settings button to sidebar footer row (#1469) (62c1435)
- ui: OLED dark mode variant (#1560) (5e0eac5)
- ui: sync profile locale and theme preferences (#1604) (d6d18aa)
- users: store locale and theme preferences on the backend (#1571) (ad63a95)
Bug Fixes
- api: clear EntityManager before deleting books (#1467) (f9d9000)
- api: flush/clear EntityManager after deleting books (#1453) (754bdb8)
- audit-logs: refresh table reactively (#1611) (5b79e12)
- auth: centralize token handling in auth service (#1534) (db64539)
- author-browser: convert AuthorMatchComponent state to signals (#1581) (1018549)
- email: pass correct mail properties for SSL transport (#1378) (150dcf4)
- file-imports: Properly group multi-file audiobooks imported via the folder watcher (#1489) (fbbcd3f)
- goodreads: use autocomplete endpoint for metadata provider (#1456) (673f008)
- i18n: align translation domain structure (#1605) (099873a)
- i18n: update Hardcover sync translations for clarity (#1640) (3971ea0)
- kobo: limit kobo shelf additions to permissible books (#1423) (4980391)
- kobo: update resources to match live values (#1502) (3211d78)
- logo: set logo bookmark colour based on theme (#1511) (91c248f)
- metadata: match new lubimyczytac HTML for search (#1608) (9b879af)
- metadata: NPE when updating book without files (#1446) (be9b141)
- metadata: replace iterator calls with getFirst() (#1305) (4055059)
- opds: add audiobook covers for opds navigation (#1425) (21f3b0b)
- reader: improve header layout and responsiveness in the reader (#1415) (b210265)
- reader: prevent 'x' shortcut from closing reader while typing notes (#1387) (453a5b8)
- readers: create reader-specific chrome colours (#1493) (7a3a3ba)
- reader: visual feedback for tools selected (#1394) (c926582)
- settings: hide opds, email, and device settings tabs when users lacks relevant perms (#1488) (413f12b)
- ui: add version number overflow handling (#1625) (9d30913)
- ui: backfill legacy appearance theme to system (#1510) (3726793)
- ui: convert book metadata suggestions to signals (#1583) (32acb61)
- ui: dashboard empty icon colour in light mode (#1600) (49239a1)
- ui: filter sidebar width narrow bug + UI polish (#1470) (7da24d1)
- ui: handle author adding when books are added (#1572) (49a7593)
- ui: proper favicon format for bookmarks (#1432) (f202939)
- ui: stats light mode theming (#1533) (bd9f99a)
- ui: update file type tag links to book type (#1530) (d22a6d6)
- ui: use signals for OPDS users to improve reactivity (#1544) (fe51328)
- user-management: render loaded content restrictions (#1623) (24079f0)
Performance
- frontend: optimize initial bundle size with lazy-loaded dialogs and localized chart providers (#1110) (c6cbdcf)
Refactors
Release v3.1.0
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 ...
Release v3.0.3
3.0.3 (2026-04-25)
This release of Grimmory has various usability fixes for the CBX and PDF readers, fixes a crash when loading some CBX files, adds fields back to the book browser table - among other fixes and code clean ups.
Changelog
Full Changelog: v3.0.2...v3.0.3
Bug Fixes
ui: allow self frame-src for pdf doc mode (#901) (ed35da2)
ui: fall back the book sorting service to primary file (#944) (7da3377)
ui: virtual grid scroll restore (#948) (005d2f0)
ui: use signals to unfreeze library loading component (#964) (4001b04)
ui:: prevent console error when leaving reader (#956) (f359e49)
ui:: prevent directory picker folder clicks selecting (#986) (0fad5c1)
ui: add back the dashboard scroller scrollbar (#983) (2936d28)
comicvine: update Comicvine ID handling for issues and volumes in metadata extraction (#864) (661672b)
cbx: drain NightCompress InputStream before closing (#1004) (12e721f)
cbx-reader: fix two-page layout + navigation (#1030) (bc05738)
books: add missing book metadata fields (#1032) (08450fa)
repositories: add automatic flushing to delete methods in various repositories (#791) (183c688)
Refactors
api: use package imports in more situations (#899) (df40f84)
specifications: replace dynamic array creation with static empty arrays for improved performance (#883) (2cfcc64)
ui: unify author/series/book browsers using tanstack virtual (#941) (d256fbf)
metadata: avoid regex for AmazonBookParser (#926) (bf7c2d8)
metadata: avoid polynomial regexes in ComicvineBookParser (#930) (dce13b1)
api: replace Stream.collect(Collectors.toList()) with Stream.toList() (#977) (125b2c6)
styles: unify scrollbar styles (#990) (9e14f3b)
security: replace JWT library with Nimbus JOSE and improve token validation (#911) (491df47)
regex: replace string manipulation with regex patterns for improved clarity and performance (#869) (b22fa38)
Chores
deps: bump postcss from 8.5.8 to 8.5.12 in /frontend (#918) (95cd73d)
ui: replace showdown markdown renderer (#936) (75568d3)
helm: switch MariaDB chart to CloudPirate (#881) (da99788)
Style
api: replace ignored exceptions with Java's unnamed pattern (_) (#976) (72cd021)
Contributors
We'd like to thank the contributors for this release for taking the time to make Grimmory better.
Including but not limited to: @alexhb1 @balazs-szucs @zachyale @thibaultamartin @imnotjames
Release v3.0.2
3.0.2 (2026-04-26)
This release of Grimmory has fixes for the Content-Security-Policy issue seen in 3.0.1 which caused a lack of styling.
Bug Fixes
- ui: add 'self' to worker-src for our angular worker (#894) (08156bb)
- ui: disable critical-inlining to prevent CSP failure (#893) (6b8d916)
Contributors
We'd like to thank the contributors for this release for taking the time to make Grimmory better.
Including but not limited to: @imnotjames
Release v3.0.1
Caution
We've identified a bug in this release related to the Content-Security-Policy which prevents usage of the UI.
Please use the v3.0.2 release instead.
3.0.1 (2026-04-25)
This release of Grimmory contains bug fixes & dependency updates.
Of note, this release fixes bugs affecting the series listing page, the iOS mobile browser reading experience, and the Kobo Sync reading progress experience.
However, there's a number of other fixes and changes which are detailed below.
Changelog
Full Changelog: v3.0.0...v3.0.1
Bug Fixes
- api: improve sort feature parity of
AppBookService(#828) (c6e8c4d) - api: use configurable upload limit for author photo / book cover (#783) (55f2255)
- api: use correct field for lastReadTime (#779) (a3616c9)
- file-move: clean up emptied source folders after sidecar move (#822) (019f13f)
- kobo-sync: use KoboSpan for progress sync (#253) (cc83bd2)
- kobo: fix epub cfi parsing for kobo progress sync (#861) (33dd36d)
- kobo: fix progress sync graph error (#858) (950736a)
- metadata: hide sidecar tab when sidecar json is disabled (#814) (7958232)
- metadata: improve fallback logic for blank or null titles in metadata extraction, bump pdfium4j to 0.16.0 (#839) (5220803)
- metadata: read proper description field for LubimyCzytac (#877) (137686e)
- reader: fix kobo progress race + apply in-chapter progress (#859) (44ed090)
- reader: use CSP for protecting foliate instead of iframe sandbox (#848) (fc02d4d)
- ui: drop hard coded author/cover image upload limits (#782) (4bcbf8a)
- ui: stabilize series browser virtual scroll (#873) (4f7c85c)
Refactors
- kobo: update book recommendation and initialization resource handling to use entry sets (#870) (2bfc28a)
- nativelib: implement JVM-wide native library availability checks and management (#790) (9e12432)
Chores
- deps: update Spring Boot version to 4.0.6 and adjust testing behavior for new version (#833) (0ff7ce5)
- deps: bump the npm-dependencies group across 1 directory with 13 updates (#825) (0977279)
- deps: bump the npm-dependencies group across 1 directory with 35 updates (#764) (3bce715)
- deps: drop deprecated npm package @types/dompurify (#827) (ebc6aab)
- deps: remove unused dependencies from package.json and yarn.lock (#843) (adebd07)
- dev: support accessing the dev server from non-localhost (#887) (36cc340)
- drop
CHANGELOG.md(#798) (d72e1a8) - repo: add coderabbit.yaml and transloco review rules (#829) (cf36411)
Contributors
We'd like to thank the contributors for this release for taking the time to make Grimmory better.
Including but not limited to: @zachyale @alexhb1 @balazs-szucs @imnotjames
Release v3.0.0
3.0.0 (2026-04-22)
Features
- add discord automated release notifications (#564) (e65536d)
- add reading progress endpoints to mobile api (#377) (4bca3f6)
- add Unraid community app template (#62) (b2b01cf)
- api-docs: reintroduce API doc generation (#289) (5ac7b55)
- api: allow disable of kobo store proxy (#337) (91c1973)
- api: use redirect for kobo sync book images (#198) (c4107a9)
- brand: update app to use the Grimmory brand identity (#550) (5a6b702)
- build: nvmrc file to automatic switch to Node.js 24 (#130) (8fcb147)
- cbx-viewer: add (back) infinite and long-strip modes, fixed. (#390) (1db1b84)
- community: move issue intake to GitHub Discussions (#565) (11cb206)
- devex: add a unified just command surface (69d50d4)
- filters: add age rating and content rating filters, improve filter options (#479) (502f573)
- issues: add typed Grimmory issue templates (511f84c)
- lint: Additional CI workflow to enforce a threshold of the amount of frontend lint issues (#163) (79aa2e0)
- pdf: integrate PDFium4j for PDF processing and metadata extraction (#281) (64083fe)
- pdf: move ebook reader to embedpdf, add bookmarks, remove old pdf.js stuff (#393) (6c8a907)
- reader: add document mode to the PDF viewer, overhaul PDF viewer, add different modes to CBX viewer (#306) (61b9b53)
- ui: allow copying non-release app version from sidebar (#472) (cefa3ac)
- web-reader: HTTP Caching & Cache Storage for content responses (#75) (5495225)
Bug Fixes
- api: check legacy tools path for binaries (#146) (5d84097)
- api: handle kobo proxy errors during kobo sync (#217) (d7867ba)
- api: invert kobo book type check for downloads (#432) (6a9f4cd)
- api: merge processFile() transactions with calling transactions (#287) (8bdf36d)
- api: skip physical books in metadata manager to prevent NPE (#234) (ebdcd0b)
- api: stop using dropped
streamEntryFromArchive(#315) (0c87e37), closes #113 - api: use ASIN instead of search if available (#369) (34042be)
- api: use CBX Extractor in the CBX processor (#409) (5318e10)
- api: use correct field lengths for file processors (#459) (d4bc840)
- api: Use fixed-layout epub format in Kobo sync when necessary (Booklore PR Port) (#16) (dc1fa74)
- archive: infer archive type via Magic Numbers instead of filename (#79) (3c0b5c0), closes #1 #2 #3 #6
- audiobook: improve audiobook streaming and player UI (#513) (3e98807)
- auth: add global error handler and PWA update service, and update auth logout to force full page reload (prevent reload-hell) (#741) (62434c5)
- auth: ensure case-insensitivity on reading remote auth headers (#389) (b9a28d6)
- auth: fix authentication request handling to exclude specific endpoints from authorization checks leading to permission denied errors (#566) (4d6691e)
- backend: Fix metadata fields being stripped from API response, causing issues with filtering. (#250) (c1711dd)
- book-browser: prevent memory leaks by unsubscribing from observables (#80) (5f1d34d)
- book-card: prefer audiobook covers for square mixed-format cards (#467) (0eb4c8e)
- bookdrop: clean bookdrop metadata before persisting (#462) (6a52a1a)
- books: make "select all" actually select all not just the books loaded in (#533) (13f282f)
- cache: improve cache handling by checking availability before operations (#397) (b2ff955)
- cbx-reader: add GIF and BMP to supported image extensions (#230) (74c7ad5)
*...
Release v2.3.1
Release v2.3.0
2.3.0 (2026-03-21)
Features
- release: document develop-based stable release previews (930e526)
Bug Fixes
- api: fix potential memory leaks in file processing (031e8ae)
- ci: correct artifact download action pin (37ca101)
- ci: publish PR test results from workflow_run (11a76bf)
- ci: repair release preview and test result publishing (afa5b81)
- drop telemetry from app (#52) (4d82cb7)
- ui: repair frontend compile after rebrand (fea1ec6)
Refactors
- build: rename frontend dist output to grimmory (ecf388f)
- i18n: rename booklore translation keys to grimmory (eb94afa)
- metadata: move default parser from Amazon to Goodreads (e252122)
- pull kepubify & ffprobe during build (#50) (1c15629)
- ui: rebrand frontend surfaces to grimmory (d786dd8)
Chores
- api: remove the custom startup banner (98c9b1a)
- deps: bump flatted from 3.4.1 to 3.4.2 in /booklore-ui (#73) (c4bd0c7)
- funding: point support links at opencollective (55c0ac0)
- release: 2.2.7 [skip ci] (0b5e24c)
- remove old verbose PR template, replace with temporary more low-key one. (#84) (b868526)
- ui: drop financial support dialog (#21) (62be6b1)
Documentation
Style
Release v2.2.7
2.2.7 (2026-03-21)
Bug Fixes
- api: fix potential memory leaks in file processing (031e8ae)
- ci: correct artifact download action pin (37ca101)
- ci: publish PR test results from workflow_run (11a76bf)
- drop telemetry from app (#52) (4d82cb7)
- ui: repair frontend compile after rebrand (fea1ec6)
Refactors
- build: rename frontend dist output to grimmory (ecf388f)
- i18n: rename booklore translation keys to grimmory (eb94afa)
- metadata: move default parser from Amazon to Goodreads (e252122)
- pull kepubify & ffprobe during build (#50) (1c15629)
- ui: rebrand frontend surfaces to grimmory (d786dd8)
Chores
- api: remove the custom startup banner (98c9b1a)
- deps: bump flatted from 3.4.1 to 3.4.2 in /booklore-ui (#73) (c4bd0c7)
- funding: point support links at opencollective (55c0ac0)
- remove old verbose PR template, replace with temporary more low-key one. (#84) (b868526)
- ui: drop financial support dialog (#21) (62be6b1)