3.4.0 (2026-09-14)
Grimmory 3.4.0 introduces OpenLibrary & Apple Books Metadata Providers, fixes the existing GoodReads & Douban Metadata Providers, fixes bugs with epub generation, handles non-UTF8 headers in archives, and more.
Changelog
Full Changelog: v3.3.3...v3.4.0
Features
- kobo: show full Kobo API path in sync settings (#2381) (
852da00) - metadata: initial implementation of Apple Books source (#1780) (
0660e1d) - metadata: initial implementation of OpenLibrary source (#1764) (
9b38a09) - opds: add pagination to authors / series navigation (#2315) (
7d768a2) - api: add paged books sorts for author name / author sort name (#2497) (
f44a7df) - api: add paged books random sort (#2451) (
0e67549)
Bug Fixes
- amazon: emit external Amazon URL with region domain (#2330) (
4c160cd) - archive: handle non-utf8 ZIP headers with apache ZIP library (#2520) (
0279c15) - cbx: use natural compare that handles numbers larger than int (#2536) (
11224eb) - douban: ignore extraneous data when parsing window data (#2516) (
d75c128) - epub: add applebooks ID to template content.opf (#2616) (
a1b6233) - epub: handle duplicate zip entries when extracting epubs (#2526) (
75495bf) - epub: handle literal
+when decoding URLs (#2618) (ce18ce3) - epub: no flattening when sorting opf document elements (#2611) (
0b887ae) - epub: support cover edits when media type changes (#2281) (
828806a) - epub: support cover edits when no previous cover (#2278) (
e963f28) - goodreads: refresh goodreads public api token (#2477) (
8362a90) - i18n: use correct value for magicshelf.metadataFields.applebooksId (#2609) (
0ca234d) - library: refresh file size and hash for in-place modified files (#2490) (
7a9cd31) - magic-shelf: keep rule value on compatible operator change (#2604) (
81a40fd) - sidecar files are not written when only cover changes (#2567) (
b3574cc) - ui: add show/hide toggle to admin change-password dialog (#2612) (
7163761) - ui: logout needs access token before clearing session (#2340) (
bc5616f) - ui: use OIDC client secret if included in settings (#2557) (
32b6384)
Refactors
- api: add missing book facet fields (#2469) (
e60bb82) - api: add missing book sorts (#2554) (
14b45a2) - cbx: only use
ArchiveServicefor CBXReaderService (#2395) (a88982b) - googbooks: move google books key to HTTP header (#2533) (
ed8f7b3) - i18n: combine localization files into one JSON per language (#2498) (
9bf8ca9) - metadata: normalize metadata provider language fields to BCP-47 (#2259) (
8c24d69) - move OIDC client secret to non public app setting (#2558) (
53abc8b) - settings: simplify app settings service (#2527) (
1ee9b51)
Chores
- api: add extra XSS protections to SVG icon endpoint (#2433) (
f8c45da) - api: drop unused
LibraryScanListener(#2434) (e0c8118) - backend: remove unused LoginRateLimitService (#2613) (
9d239c3) - i18n: migrate translations from Weblate to Crowdin (#2568) (
41c612c) - settings: drop installation service / migrations (#2528) (
703c7f2)
Dependencies
- deps: update to Angular 22 and adopt APIs (#2468) (
3cc29fc) - deps: bump @tanstack/angular-query-experimental from 5.101.4 to 5.102.8 (#2552) (
3724713) - deps: bump @vitest/coverage-v8 from 4.1.10 to 5.0.0 (#2547) (
4a066e7) - deps: bump actions/checkout from 7.0.0 to 7.0.1 (#2503) (
bceed0b) - deps: bump actions/setup-java from 5.6.0 to 5.7.0 (#2449) (
5c535d8) - deps: bump actions/setup-java from 5.7.0 to 6.0.0 (#2504) (
3725ca7) - deps: bump angular to 21.2.20 (#2420) (
9960d2c) - deps: bump com.twelvemonkeys.imageio from 3.14.0 to 3.15.0 in /backend (#2587) (
d528d2f) - deps: bump conventional-changelog-conventionalcommits from 10.3.0 to 10.4.0 in the release-tooling group (#2439) (
8ff933c) - deps: bump docker/login-action from 4.4.0 to 4.6.0 (#2444) (
ea80fc0) - deps: bump docker/setup-buildx-action from 4.2.0 to 4.3.0 (#2441) (
9f6754f) - deps: bump docker/setup-qemu-action from 4.2.0 to 4.3.0 (#2549) (
ac68da1) - deps: bump eslint from 10.8.1 to 10.9.1 (#2542) (
464a259) - deps: bump github/codeql-action/analyze from 4.37.3 to 4.37.7 (#2443) (
b34ac76) - deps: bump gradle-wrapper from 9.7.0 to 9.7.1 in /backend in the gradle-dependencies group (#2442) (
b941693) - deps: bump lucide-static from 1.31.0 to 1.40.0 (#2546) (
7d4662b) - deps: bump markdown-it from 15.0.0 to 15.0.1 (#2544) (
5186f85) - deps: bump org.flywaydb:flyway-mysql from 13.3.0 to 13.5.0 in /backend (#2548) (
f8d6f75) - deps: bump org.freemarker:freemarker from 2.3.34 to 2.3.35 in /backend (#2541) (
3432178) - deps: bump org.hibernate.orm from 7.4.6.Final to 7.4.7.Final in /backend (#2550) (
9fdf424) - deps: bump org.jsoup:jsoup from 1.23.1 to 1.23.2 in /backend (#2545) (
e7b8482) - deps: bump org.projectlombok:lombok from 1.18.46 to 1.18.48 in /backend (#2543) (
e40f067) - deps: bump org.springdoc:springdoc-openapi-starter-webmvc-api from 3.1.0 to 3.1.1 in /backend (#2583) (
83dede5) - deps: bump taiki-e/install-action from 2.85.4 to 2.86.4 (#2440) (
60e59e4) - deps: bump taiki-e/install-action from 2.86.4 to 2.87.1 (#2502) (
ffa9440) - deps: bump taiki-e/install-action from 2.87.1 to 2.87.5 (#2551) (
2b843fa) - deps: bump the codeql group with 2 updates (#2501) (
4e28fde) - deps: bump the gradle-dependencies group in /backend with 3 updates (#2474) (
aa58069) - deps: bump uuid from 14.0.1 to 14.0.2 (#2540) (
14454c3) - deps: bump vitest from 4.1.10 to 4.1.11 (#2578) (
1d2c5a8) - deps: update pnpm to 11.19.0 and pnpm/action-setup to 6.0.10 (#2445) (
fcc4d9c) - pin angular table to v8 (#2422) (
1766f87)
Documentation
- add original authoring NOTICE (#2577) (
4f64172) - drop booklore migration from README (#2517) (
a1a4ee1)
CI
Build
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 @alexhb1 @davemachado @zachyale @benjitobz
New Contributors
- @davemachado made their first contribution in #2381
- @benjitobz made their first contribution in #2567