Skip to content

Releases: grimmory-tools/grimmory

Release v3.2.2

19 Jun 21:00
Immutable release. Only release title and notes can be modified.
6d14043

Choose a tag to compare

3.2.2 (2026-06-19)

This patch release of Grimmory is focused on bug fixes. It fixes folder watcher SQL errors, correctly applies library restrictions to the OPDS shelf catalogs, fixes a bug affecting bookdrop on QNAP devices, ensures non-admin users are assigned at least one library, and more.

Changelog

Full Changelog: v3.2.1...v3.2.2

Bug Fixes

  • bookdrop: directly copy instead of move between filesystems (#1759) (64ddbe5)
  • event-processor: avoid invalid query during watch folder processing (#1803) (6d14043)
  • metadata-refresh: add audible to metadata refresh (#1779) (e4ebe97)
  • opds: add library restrictions to shelf OPDS catalogs (#1731) (0cc48a8)
  • user-managment: non-admin users must be assigned atleast one lib… (#1741) (2b8ac73)

Refactors

Chores

  • deps: bump @angular/common from 21.2.15 to 21.2.17 (#1756) (1afe9de)
  • deps: bump @angular/compiler from 21.2.15 to 21.2.17 (#1757) (467aa1b)
  • deps: bump @angular/core from 21.2.15 to 21.2.17 (#1753) (a738124)
  • deps: bump @angular/service-worker from 21.2.15 to 21.2.17 (#1755) (70a0b51)
  • deps: bump EnricoMi/publish-unit-test-result-action from 2.23.0 to 2.24.0 (#1767) (6711aba)
  • deps: bump pnpm/action-setup from 6.0.8 to 6.0.9 (#1766) (008f8fe)
  • deps: bump semantic-release from 25.0.3 to 25.0.5 in the release-tooling group across 1 directory (#1769) (7729c76)
  • deps: bump taiki-e/install-action from 2.81.5 to 2.81.11 (#1768) (dee01c4)
  • deps: bump the frontend group across 1 directory with 24 updates (#1771) (692c2ea)
  • deps: bump the gradle-dependencies group across 1 directory with 5 updates (#1770) (2f3e3be)
  • helm: add extra env to deployment (#1661) (bd5c920)
  • i18n: update translations from Weblate (#1748) (763d732)
  • pdf-reader: drop redundant pdf in-memory caching (#1754) (8da867d)

Contributors

We'd like to thank the contributors for this release for taking the time to make Grimmory better.

Including but not limited to: @geneliu @imnotjames @idriss-mechkene @alexhb1

New Contributors

Release v3.2.1

14 Jun 17:14
Immutable release. Only release title and notes can be modified.
48eefc0

Choose a tag to compare

3.2.1 (2026-06-14)

This release of Grimmory is focused on bug fixes. It fixes content restrictions applied to the book's page endpoint, drops the Blackbird library to prevent JSON serialization errors, fixes public shelves not showing up for books, fixes bidirectional KOReader sync in some cases, and improves reactivity across the UI. Furthermore, there are performance improvements in the book ingest pipeline and reductions in memory usage due to file downloads.

Changelog

Full Changelog: v3.2.0...v3.2.1

Bug Fixes

  • api: fix content restrictions for api/v1/books/page (#1706) (a93bc5f)
  • book-details: fall back from invalid book detail tabs (#1685) (46f4457)
  • download: stream book downloads instead of buffering in browser (#1718) (7f38de8)
  • drop blackbird to avoid serialization failure states (#1513) (65f3f85)
  • handle multiple book files with the same checksum (#1724) (0cc918f)
  • helm: add startup probe to helm chart (#1712) (f13538a)
  • koreader: fix bidirectional progress sync (#1687) (590bd9e)
  • library stats showing 0KB due to incorrect fileSizeKb field path (#1436) (f3dacb9)
  • login: fix oidc login button on light mode (#1682) (d1298af)
  • metadata: extract epub titles per spec with regards to ordering (#1637) (d775011)
  • reader: switch header/footer hover zones from static heights to dynamic (#1716) (a44197e)
  • shelf: fix public shelf book visibility (#1735) (48eefc0)
  • ui: convert device settings state to signals (#1635) (f6661fe)
  • ui: no libraries assigned label (#1736) (0625095)
  • ui: use signals for OIDC settings (#1737) (d5f652f)
  • ui: use signals for user management to improve reactivity (#1726) (f2b7cdc)

Performance

  • db: add missing book_file indices for ingestion lookups (#1729) (a86dfb2)
  • download: stream all book downloads via StreamingResponseBody (#1722) (798767c)

Chores

  • deps: bump docker/metadata-action from 6.0.0 to 6.1.0 (#1650) (abe1258)
  • deps: bump docker/setup-buildx-action from 4.0.0 to 4.1.0 (#1648) (851fa40)
  • deps: bump github/codeql-action from 4.36.1 to 4.36.2 (#1651) (8a06943)
  • deps: bump hono from 4.12.18 to 4.12.23 in /frontend (#1642) (43b3c5d)
  • deps: bump taiki-e/install-action from 2.77.6 to 2.81.5 (#1649) (436d04c)
  • deps: bump the gradle-dependencies group across 1 directory with 4 updates (#1646) (d6a88a3)
  • deps: bump the npm-dependencies group in /frontend with 25 updates (#1647) (1ffbd54)
  • i18n: update translations from Weblate (#1644) (11febb9)
  • i18n: update translations from Weblate (#1665) (2675c4a)
  • i18n: update translations from Weblate (#1678) (1037757)
  • i18n: update translations from Weblate (#1679) (1b64f13)
  • i18n: update translations from Weblate (#1686) (6b28d14)
  • repo: migrate from yarn to pnpm (#1598) (e83a143)
  • ui: add warning for goodreads metadata provider (#1732) (b25a3f5)
  • ui: normalise text size and spacing (#1656) (349f046)

Documentation

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 @DeeWooo @imnotjames @raphkun

New Contributors

Release v3.2.0

04 Jun 22:14
Immutable release. Only release title and notes can be modified.
3971ea0

Choose a tag to compare

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

  • api: avoid using objectmapper on TaskCreateRequest (#1509) (fa64030)
  • api: use spring objectmapper...
Read more

Release v3.1.0

15 May 00:01
Immutable release. Only release title and notes can be modified.
273be54

Choose a tag to compare

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/version endpoint (#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 ...
Read more

Release v3.0.3

02 May 05:09
Immutable release. Only release title and notes can be modified.
08450fa

Choose a tag to compare

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

26 Apr 02:20
Immutable release. Only release title and notes can be modified.
08156bb

Choose a tag to compare

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

25 Apr 23:53
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

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

22 Apr 21:53
Immutable release. Only release title and notes can be modified.
62434c5

Choose a tag to compare

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)
    *...
Read more

Release v2.3.1

22 Apr 21:13
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

2.3.1 (2026-04-22)

Bug Fixes

  • reader: remove foliate allow-scripts and add CSP for EPUB resources (5448205)

Release v2.3.0

21 Mar 02:18
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

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

  • updated supported file formats in README.md (#68) (f912e80)

Style

  • i18n: normalize translation json formatting (#89) (857290d)
  • ui: simplify the topbar logo branding (0416d48)