Versie 3.4.0 van Grimmory is uitgekomen, een eenvoudig met Docker op te zetten selfhosted webapplicatie voor het organiseren en beheren van e-boeken. Het kan boeken al dan niet dynamisch organiseren op bijvoorbeeld schrijver of genre, metadata ophalen vanuit meerdere bronnen en biedt ondersteuning voor meerdere gebruikers. Er is een ingebakken lezer voor pdf's, epubs en comics, en boeken kunnen ook naar Kobo-e-readers worden gedownload of gelezen worden op een mobiel apparaat met daarop een leesapp die OPDS ondersteunt. In deze uitgave zijn de volgende veranderingen en verbeteringen in aangebracht:
FeaturesBug Fixes
- 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)Refactors
- 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)Chores
- 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)Dependencies
- 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)Documentation CI Build
- 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)
:strip_exif()/i/2008140498.jpeg?f=imagenormal)
:strip_icc():strip_exif()/u/46863/Nemo.jpg?f=community)
:strip_icc():strip_exif()/u/28051/gwystyl_av.jpg?f=community)
:strip_icc():strip_exif()/u/411101/crop636bd3ebad62b_cropped.jpg?f=community)
/u/423696/crop669cd5afa63a2.png?f=community)
/u/14460/despicable_me.png?f=community)