Enkele maanden geleden verscheen Booklore op het toneel, een eenvoudig met Docker op te zetten selfhosted webapplicatie voor het organiseren en beheren van e-boeken. Ondanks dat er met grote regelmaat nieuwe versies uitkwamen, werd het project nogal geplaagd door drama. Er was een autoritaire hoofdontwikkelaar die zich niet goed aan het opensourceprincipe hield en slecht met de community communiceerde, en er was kritiek op het vele gebruik van AI in de ontwikkeling. Dit leidde ertoe dat de hoofdontwikkelaar plotseling de stekker eruit trok en de repo zelfs helemaal van GitHub verwijderde.
Kort daarop verscheen er een fork onder de naam Grimmory, die verdergaat waar Booklore is opgehouden. Zo kunnen 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. Versie 3.2.0 is uitgekomen en hier zijn de volgende veranderingen en verbeteringen in aangebracht:
FeaturesBug Fixes
- 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)
Performance
- 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)
Refactors
- frontend: optimize initial bundle size with lazy-loaded dialogs and localized chart providers (#1110) (c6cbdcf)
Chores
- 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)
Documentation Build Tests
- 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)
