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 in mapstruct mappers (#1528) (2c59292)
- api: use spring objectmapper where possible (#1507) (07b83c1)
- book-api: drop redundant library joins from UserBookFileProgressRepository (#1414) (9b28306)
- helm: improve chart consistency (#1401) (e46305e)
- imports: remove unused imports across multiple service and controller files (#1307) (d103962)
- komga: stop using opds service for book access checks (#1479) (89279eb)
- math: replace min/max with clamp for improved readability (#1440) (c0d1d30)
- metadata: change long if/else branch to switch (#1589) (743303e)
- metadata: Normalize language field to ISO 639-1 (#1407) (1a76f19)
- metadata: update Comic ID validation to use a compiled regex pattern (#1441) (9951136)
- ui: convert book details tab state to signals (#1629) (05de312)
- ui: convert bookdrop progress to signals (#1626) (9de1c9d)
- ui: fix prime menu positioning + cleanup (#1377) (1e763b1)
- ui: move large library processing screen to notifications (#1428) (dbbc7c3)
- ui: move theme and locale settings location (#1624) (2ac8abd)
- ui: use signals for library import progress (#1458) (db09c39)
Chores
- backend: local-path-configs (#1594) (02cdaef)
- deps: bump actions/checkout from 6.0.2 to 6.0.3 (#1615) (174c672)
- deps: bump docker/build-push-action from 7.1.0 to 7.2.0 (#1614) (6046f89)
- deps: bump docker/login-action from 4.1.0 to 4.2.0 (#1613) (70d0da1)
- deps: bump docker/setup-qemu-action from 4.0.0 to 4.1.0 (#1617) (20df5d3)
- deps: bump github/codeql-action from 4.35.4 to 4.36.1 (#1616) (b5ebaa2)
- deps: bump gradle to 9.5.1 and flyway to 12.6.1 (#1329) (f2a89fb)
- deps: bump hibernate to 7.3.5, jaudiotager to 2.0.21, and flyway to 12.6.2 (#1447) (3537480)
- deps: bump qs from 6.15.0 to 6.15.2 in /frontend (#1462) (9c530f5)
- deps: bump the gradle-dependencies group in /backend with 4 updates (#1567) (49a2ad8)
- deps: bump the npm-dependencies group in /frontend with 26 updates (#1448) (ea9a76b)
- deps: bump the npm-dependencies group in /frontend with 29 updates (#1568) (e138648)
- deps: bump the npm-dependencies group in /frontend with 6 updates (#1330) (ec7c84b)
- docker: update docker-compose for Gradle caching and build volume management (#1312) (8365efd)
- drop duplicate goodreads requests (#1455) (82d4de4)
- env: update Java version to 25.0.3-tem in .sdkmanrc (#1439) (adef28f)
- helm: add extra objects field (#1464) (f56aa99)
- i18n: update translations from Weblate (#1620) (73bde70)
- i18n: update translations from Weblate (#1621) (a275218)
- i18n: update translations from Weblate (#1622) (8f5bda8)
- i18n: update translations from Weblate (#1633) (b936586)
- justfile: add dev-rebuild command to force Docker container rebuild (#1349) (09b7aa2)
- ui: add tailwind 4.3 and update classes (#1379) (398b1fa)
- use valid unraid icon (#1325) (4868589)
Documentation
Build
Tests
Contributors
We'd like to thank the contributors for this release for taking the time to make Grimmory better.
Including but not limited to: @opisaac9001 @balazs-szucs @imnotjames @thibaultamartin @alexhb1 @ghostdiverr @monsagri @zachyale @mhlgio @tuomasmakinen @KuntaMallikRaj @Rvby1 @sabrina553 @AliAbuelkheir
New Contributors
- @opisaac9001 made their first contribution in #1325
- @ghostdiverr made their first contribution in #1407
- @monsagri made their first contribution in #1378
- @mhlgio made their first contribution in #1464
- @KuntaMallikRaj made their first contribution in #1581
- @Rvby1 made their first contribution in #1589
- @sabrina553 made their first contribution in #1594
- @AliAbuelkheir made their first contribution in #1611