Versie 3.3.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 worden georganiseerd op bijvoorbeeld schrijver of genre, kan metadata worden opgehaald vanuit meerdere bronnen en is er 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:
Release v3.3.0This minor release of Grimmory has a large number of bug fixes, features, and refactors to prepare for the performance improvements we're looking to make in the near future. We've made a lot of improvements to our Hardcover and RanobeDB metadata parsers, fixed over twenty outstanding bugs, and have also added Korean and Czech language support.
FeaturesInternationalization Bug Fixes
- author: derive and store author sort name on save (#1897) (
55b9d34)- language: use consistent language normalization across the frontend (#2258) (
1d707ff)- metadata: improve RanobeDB search (#1804) (
b68e022)- metadata: improve hardcover edition selection (#1800) (
fbd1d5e)- ui: app-menu based shelf assignment component (#2058) (
daae463)- emit actual koreader device / device ID (#2025) (
e978098)Refactors
- amazon: parse kindle ebook metadata (#2201) (
4d4df8c)- api: avoid
missing-cover.jpgwhen getting book thumbnails (#2256) (1420634)- api: use safer default file naming pattern (#2252) (
be2ac14)- api: emit 401 on bad credentials during login (#2130) (
3376d33)- api: ensure JWTs always have a unique JWT ID (#2246) (
5a6b0e5)- api: handle exceptions with status codes (#2160) (
6056f8f)- api: ignore unused tasks to stop warnings (#2213) (
38a0c47)- db: add explicit collation for icon map migration (#1944) (
0792e0b)- docker: disable heap dumps by default (#2027) (
1ff4619)- epub: ignores non-publication dates for published metadata (#2226) (
c077551)- epub: remove refines when referenced elements are removed (#2048) (
9dd8bcc)- fb2: prioritize explicit cover binary elements (#2230) (
106a2eb)- fb2: use base64 decoder aware of newlines (#2229) (
027ac6c)- magic-shelf: remove OPDS permission gate (#2144) (
f410ecb)- magic-shelf: remove timestamp from magic shelf date checks (#2097) (
8edf135)- metadata: require Google Books API key (#1795) (
4df5816)- properly flush books during detach (#2085) (
f1f86bc)- ranobedb: prioritize English results (#2133) (
068d006)- resolve timezone offset in reading session heatmap tooltip (#1870) (
2e4f85c)- support
getAuthenticatedUser()in OPDS (#2041) (108c5c1)- ui: add missing page titles (#2073) (
dbc0ccc)- ui: drop chartjs plugin datalabels (#2021) (
15446a8)- ui: prevent ng-deep overrides from hiding upload modal text (#2227) (
754637a)- use expected ranobedb rate limit (#2051) (
e28b911)Chores
- api: migrate away from nightcompress (#2103) (
134e97f)- books: add /api/v1/books/facets endpoint (#1898) (
d2c0836)- books: add /api/v1/books/ids select-all endpoint (#1899) (
30d8760)- books: frontend book query service and pagination basics (#2094) (
111670e)- books: initial book command service and shared command options (#2168) (
cb88558)- books: paginate /api/v1/books/page with cursor, sort, facet, search (#1853) (
ef51479)- covers: consolidate cover images into app-cover (#1928) (
b4570e3)- epub: use archiveservice instead of epub4j to read archive (#2066) (
b67b32a)- ui: autocomplete pagination and infinite scroll (#1965) (
0b1fa83)- ui: rebuilt app-menu to angular aria template-based component (#2044) (
0b71406)- ui: migrate controls to lucide (#1840) (
891f900)- ui: mobile enhancements to UI controls (#1916) (
88faeb6)- ui: new page header component and page size foundation (#1966) (
a1a6031)- ui: switch library and shelf menu to app-menu (#2057) (
0acd8bc)- ui: use
app-coverfor metadata searcher (#2254) (68f024b)- ui: simplify control transition guard (#2171) (
d77a580)Dependencies
- drop unused demo-user permission (#2045) (
f2b64c1)- drop unused jsoup connection factory (#2151) (
6417224)- icons: remove bundled svgs and migrate preferences to default library (#1929) (
9c59e91)- repo: add
just ui dev-unsafecommand (#2142) (1b911b0)- ui: drop unused
missing-cover.jpg(#2260) (41f6c93)- ui: drop unused
secure-srcdirecctive (#2255) (5898153)- use
SERVER_PORTenv var for listening port (#2018) (74642c1)- use
grimmory.localfor fake email domains (#2023) (ef707ab)- use
Grimmorybranding for basic auth realms (#2049) (a078fd5)- use
grimmoryin sidecar generatedby (#2024) (2859e4e)- use
Grimmorybranding for fallback koreader device / device ID (#2026) (bd478ce)- use Grimmory user agent for comicvine / ranobedb / fileservice (#2014) (
9e3c503)Documentation
- deps: bump @analogjs/vite-plugin-angular from 2.6.2 to 2.6.3 in the frontend group (#1985) (
7e6e027)- deps: bump @angular/* from 21.2.18 to 21.2.19 (#2240) (
7b0dfed)- deps: bump actions/cache/restore from 5.0.5 to 6.1.0 (#1982) (
a451984)- deps: bump actions/cache/save from 5.0.5 to 6.1.0 (#1904) (
4bd4542)- deps: bump actions/checkout from 6.0.3 to 7.0.0 (#1925) (
0e483a2)- deps: bump actions/checkout from 7.0.0 to 7.0.1 (#2208) (
349a0c3)- deps: bump actions/setup-java from 5.2.0 to 5.4.0 (#1908) (
c94fc1a)- deps: bump actions/setup-java from 5.4.0 to 5.6.0 (#2205) (
ccc3746)- deps: bump actions/setup-node from 6.4.0 to 7.0.0 (#2207) (
86bf550)- deps: bump azure/setup-helm from 5.0.0 to 5.0.1 (#1906) (
efd8280)- deps: bump codeql from 4.36.2 to 4.36.3 (#1922) (
9838041)- deps: bump com.github.ben-manes.versions from 0.54.0 to 0.56.0 in /backend in the gradle-dependencies group (#2179) (
9d78cba)- deps: bump conventional-changelog-conventionalcommits from 10.2.0 to 10.2.1 in the release-tooling group across 1 directory (#1970) (
35959a6)- deps: bump conventional-changelog-conventionalcommits from 9.3.1 to 10.2.0 in the release-tooling group across 1 directory (#1919) (
5733d43)- deps: bump docker/build-push-action from 7.2.0 to 7.3.0 (#1926) (
4a2aa1f)- deps: bump docker/login-action from 4.2.0 to 4.4.0 (#1981) (
82d5313)- deps: bump docker/metadata-action from 6.1.0 to 6.2.0 (#1923) (
eb28439)- deps: bump docker/setup-buildx-action from 4.1.0 to 4.2.0 (#1924) (
c389c7b)- deps: bump docker/setup-qemu-action from 4.1.0 to 4.2.0 (#1905) (
e381ce5)- deps: bump github/codeql-action from 4.36.3 to 4.37.0 (#1980) (
01687be)- deps: bump github/codeql-action from 4.37.0 to 4.37.3 (#2206) (
a4ba65c)- deps: bump grimmory-epub4j to 1.5.0 (#2163) (
a7a8464)- deps: bump semantic-release from 25.0.5 to 25.0.7 in the release-tooling group (#2042) (
2cfe5d2)- deps: bump semantic-release from 25.0.7 to 25.0.8 in the release-tooling group (#2089) (
9741c6d)- deps: bump taiki-e/install-action from 2.81.11 to 2.82.7 (#1907) (
263e54f)- deps: bump taiki-e/install-action from 2.82.7 to 2.83.1 (#1983) (
6154d3e)- deps: bump taiki-e/install-action from 2.82.7 to 2.85.4 (#2204) (
61e9da7)- deps: bump the frontend group across 1 directory with 10 updates (#2101) (
bf093b9)- deps: bump the frontend group across 1 directory with 18 updates (#2043) (
d3c0c29)- deps: bump the frontend group with 10 updates (#2181) (
51afd6c)- deps: bump the frontend group with 14 updates (#1972) (
fa72429)- deps: bump the frontend group with 19 updates (#1921) (
d28aea3)- deps: bump the gradle-dependencies group across 1 directory with 4 updates (#1920) (
db20fcc)- deps: bump the gradle-dependencies group across 1 directory with 8 updates (#2008) (
634e9e2)- deps: bump the gradle-dependencies group in /backend with 3 updates (#2090) (
ce79661)- deps: bump the release-tooling group across 1 directory with 2 updates (#2180) (
2e04b1a)- deps: drop deprecated angular packages (#2242) (
b18c444)- deps: replace
tailwindcss-primeuiwithoptimus-ui-tailwindcss(#2175) (8152cd4)- deps: switch PrimeNG to Optimus UI (#2093) (
cc8a53b)- deps: update pnpm to 11.18.0 (#2193) (
2e60cb4)- fix pnpm peer dependency issues (#2074) (
9be80a4)

:strip_icc():strip_exif()/u/65843/chef60x60.jpg?f=community)
:strip_icc():strip_exif()/u/46863/Nemo.jpg?f=community)