Software-update: Grimmory 3.0.0

Grimmory logoEnkele 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.0.0 is uitgekomen en hier zijn de volgende veranderingen en verbeteringen in aangebracht:

Features
  • add discord automated release notifications (#564) (e65536d)
  • add reading progress endpoints to mobile api (#377) (4bca3f6)
  • add Unraid community app template (#62) (b2b01cf)
  • api-docs: reintroduce API doc generation (#289) (5ac7b55)
  • api: allow disable of kobo store proxy (#337) (91c1973)
  • api: use redirect for kobo sync book images (#198) (c4107a9)
  • brand: update app to use the Grimmory brand identity (#550) (5a6b702)
  • build: nvmrc file to automatic switch to Node.js 24 (#130) (8fcb147)
  • cbx-viewer: add (back) infinite and long-strip modes, fixed. (#390) (1db1b84)
  • community: move issue intake to GitHub Discussions (#565) (11cb206)
  • devex: add a unified just command surface (69d50d4)
  • filters: add age rating and content rating filters, improve filter options (#479) (502f573)
  • issues: add typed Grimmory issue templates (511f84c)
  • lint: Additional CI workflow to enforce a threshold of the amount of frontend lint issues (#163) (79aa2e0)
  • pdf: integrate PDFium4j for PDF processing and metadata extraction (#281) (64083fe)
  • pdf: move ebook reader to embedpdf, add bookmarks, remove old pdf.js stuff (#393) (6c8a907)
  • reader: add document mode to the PDF viewer, overhaul PDF viewer, add different modes to CBX viewer (#306) (61b9b53)
  • ui: allow copying non-release app version from sidebar (#472) (cefa3ac)
  • web-reader: HTTP Caching & Cache Storage for content responses (#75) (5495225)
Bug Fixes
  • api: check legacy tools path for binaries (#146) (5d84097)
  • api: handle kobo proxy errors during kobo sync (#217) (d7867ba)
  • api: invert kobo book type check for downloads (#432) (6a9f4cd)
  • api: merge processFile() transactions with calling transactions (#287) (8bdf36d)
  • api: skip physical books in metadata manager to prevent NPE (#234) (ebdcd0b)
  • api: stop using dropped streamEntryFromArchive (#315) (0c87e37), closes #113
  • api: use ASIN instead of search if available (#369) (34042be)
  • api: use CBX Extractor in the CBX processor (#409) (5318e10)
  • api: use correct field lengths for file processors (#459) (d4bc840)
  • api: Use fixed-layout epub format in Kobo sync when necessary (Booklore PR Port) (#16) (dc1fa74)
  • archive: infer archive type via Magic Numbers instead of filename (#79) (3c0b5c0), closes #1 #2 #3 #6
  • audiobook: improve audiobook streaming and player UI (#513) (3e98807)
  • auth: add global error handler and PWA update service, and update auth logout to force full page reload (prevent reload-hell) (#741) (62434c5)
  • auth: ensure case-insensitivity on reading remote auth headers (#389) (b9a28d6)
  • auth: fix authentication request handling to exclude specific endpoints from authorization checks leading to permission denied errors (#566) (4d6691e)
  • backend: Fix metadata fields being stripped from API response, causing issues with filtering. (#250) (c1711dd)
  • book-browser: prevent memory leaks by unsubscribing from observables (#80) (5f1d34d)
  • book-card: prefer audiobook covers for square mixed-format cards (#467) (0eb4c8e)
  • bookdrop: clean bookdrop metadata before persisting (#462) (6a52a1a)
  • books: make "select all" actually select all not just the books loaded in (#533) (13f282f)
  • cache: improve cache handling by checking availability before operations (#397) (b2ff955)
  • cbx-reader: add GIF and BMP to supported image extensions (#230) (74c7ad5)
  • ci: align github actions with yarn 4 frontend tooling (dcd264c)
  • ci: reduce workflow cache churn (3f9d3e0)
  • clean up import in AuthenticationSettingsComponent (49101b7)
  • collapse-series: fix series collapsing (#541) (e26df36)
  • dashboard: improve performance with OnPush change detection (#440) (85e8d23)
  • devex: add GitHub sign-in note to rc and nightly Discord posts (#572) (52ed009)
  • dto: add DailyListeningDto and update session-related DTOs to use LocalDate (#403) (e2d6c1b)
  • entrypoint: ensure books directory exists and is writable by the target user (#119) (af9beaf)
  • file-mover: fix file mover never updating (#651) (d9d7a18)
  • file: allow physical books to be moved between libraries (#296) (4ce9188)
  • file: deduplicate bookFiles and protect source library root in FileMoveService (#294) (1625055)
  • file: update file type and size retrieval to use primaryFile structure (#383) (707f0a8)
  • filter: add missing filters for: Lubimyczytac, RanobeDB, and Audible ratings, comic specific metadata fields (#647) (4bac913)
  • filter: update filter options to use CountedOption for read statuses and file types (#448) (4a68fa2)
  • fix text overflow with attach-to-book flow when dealing with long titles (#265) (1799493)
  • frontend: fixes library health pinging even when the user is not authenticated (#385) (d502c18)
  • frontend: remove double encoding of series name in URL (#262) (a92459d)
  • hardcover: add series position decimals and use primary books count (#87) (8def367)
  • hardcover: hardcover sync duplicates reads and doesn't update progress (#247) (a261749)
  • hardcover: use hardcover edition based on ISBN for syncing progress (#173) (85c1749)
  • hibernate: improve transaction management and optimize entity fetching (#176) (ad3a981)
  • image-dimension: fix image dimension detection loading whole CBX files into memory (#663) (9236ac9)
  • kobo: add library to entityGraph when fetching books for download (#646) (11e6a35)
  • kobo: default kobo store proxy to "on" (#515) (a32cd54)
  • kobo: handle missing book when pulling kobo metadata (#473) (28dd303)
  • kobo: proxy the /v1/auth/device endpoint (#511) (ba6eb4f)
  • lazy-loading: improve image loading performance with lazy loading and low priority fetch (#431) (2c26bd2)
  • loading: update loading checks to use signal() for reactive state management (#727) (284e7be)
  • logging: change book added event completion log level from info to debug (#532) (928ccff)
  • metadata: add support for audible fields in metadata refresh options (#348) (2ecd352)
  • metadata: fix metadata fetching relying for filename "first" instead of better fields like ISBN in Goodreads/Bookdrop (#85) (4ac1d31), closes #1 #2 #3 #6
  • metadata: include custom namespace fields in file write checks (#257) (339a0c7)
  • metadata: preserve lock states and fallback values in metadata refresh (#258) (3f8a185)
  • metadata: refactor book metadata fetching to use fetch API and signals for state management (#495) (fcee609)
  • metadata: support multiple roles for the same creator in EPUB metadata extraction (#561) (c06dc95)
  • metadata: update book retrieval methods to fix lazy init exception when removing some authors/retrieving metadata from file (#560) (9c3ecc5)
  • mobile: enable pan mode and disable swipe-to-navigate and tap-to-turn-page zones on mobile devices (#742) (fb555d9)
  • packaging: include frontend in the docker build context (00f116a)
  • packaging: keep the frontend compatibility symlink in docker context (237c54b)
  • pdf-reader: localize embedpdf viewer to active app language (#466) (da7fa4b)
  • pdf-viewer: convert component properties to signals for improved reactivity (#475) (846a4b2)
  • pdf-writer: use same-dir temp files and harden cleanup (#719) (9601667)
  • pdf: improve PDF blob handling and improve viewer destruction logic (#506) (68d0b26)
  • reader: add fetchFreshBookDetail method to ensure up-to-date reading position across devices (#358) (4527d43)
  • reader: implement signal-based state management and cleanup in EbookReaderComponent (#435) (a779de8)
  • reader: optimize memory management for canvas and image handling in infinite scrolling (#433) (376ac6f)
  • reader: resolve epub preview runtime and audiobook download failures (#463) (c95b5fa)
  • readers: add chapter caching and improve page rendering (#514) (649c485)
  • release: always publish nightly images on manual runs (#571) (c6d567e)
  • search: replace dropdown with popover for search results and improve visibility handling (#355) (a176be3)
  • security: add access control annotations to various controllers (#312) (145b94d)
  • security: enforce validation on request bodies and tighten JWT issuer checks (7d7a5d9)
  • service: add transactional support to author delete and update methods (#653) (fd00da3)
  • streaming: rewrite file streaming with NIO and HTTP caching (#512) (5bd2e9a)
  • table-view: table-view to also actually select all when users select press all (#645) (791a4ea)
  • transloco-loader: update deepMerge function type definitions (#167) (6ff7275)
  • ui: add missing OIDC group permissions (#487) (39de8e3)
  • ui: enable all OIDC permissions when admin is granted (#517) (27db18a)
  • ui: Fix book scroll judder (#309) (351074f)
  • ui: Fixed the Angular Linter (#138) (0e61057)
  • ui: handle RFC5987 content-disposition headers (#730) (8047f87)
  • ui: improve audible metadata provider detection (#456) (a63328b)
  • ui: parse magic shelf date values as local midnight (#489) (41e1132)
  • ui: properly scale placeholder artwork text with smaller sizes (#531) (6f2b86a)
  • ui: restore frontend verification after eslint cleanup (43389c8)
  • ui: settings forms not reflecting saved values reliably (#648) (78be516)
  • ui: use RFC3330 format for date picker (#491) (6541d41)
  • ui: use signals for duplicate merger (#732) (a03ae72)
  • upload: add ChangeDetectorRef calls to ensure UI updates during file upload process (#557) (bf4fab3)
  • user-settings: fix settings loading errors (#527) (902f5f5)
  • webmvc: avoid index fallback exception for missing public routes (#298) (a3add5d)
  • websocket: add heartbeat scheduling and transport limits (#313) (bfeeef2)
Performance
  • ui: captures some low hanging fruit around excessive re-renders in the app (#158) (8778827)
  • ui: decouple book browser rendering pipeline (#341) (be0b717)
Refactors
  • api: move detect deleted/new books to LibraryFileHelper (#555) (11caa91)
  • api: optimize caching mechanisms and improve book filtering (#372) (3e5a6a9)
  • api: switch to Spring logging filter (#195) (5f06ab9)
  • api: use NightCompress library for reading CBX (#113) (1e0b4d0)
  • api: use Path for FileUtils.getBookFullPath (#209) (97411fa)
  • api: use spring content disposition helper for BookDownloadService (#449) (2637960)
  • cbx-reader: convert properties to signals for improved reactivity and performance/add top/bottom swipe detection (#743) (a9ce7c7)
  • concurrency: improve thread management and locking in monitoring services (#137) (5bcef92)
  • config: remove redundant Spring Boot config and fix injection patterns (#314) (390a372)
  • cover: add async cover notifications, for real time updates (#716) (7a88b12)
  • drop unused standalone comicinfo.xml parser (#218) (66de45c)
  • ebook-reader: optimize destruction handling and improve reactive subscriptions (#478) (1f5f99d)
  • email: replace Booklore References In Email with Grimmory (#434) (a0a7be4)
  • entity: update fetch strategies to LAZY for improved relibility (#122) (b905e82)
  • epub: migrate from documentnode to grimmory epub4j library and update related code (#334) (bff20c5)
  • file: improve path handling and validation (#82) (cbd04ee)
  • frontend: decouple app shell from PrimeNG layout system (#307) (55a6343)
  • frontend: Migrate state to Tanstack Query + signals (#117) (ccb80d7)
  • frontend: rename booklore-ui to frontend (874b013)
  • frontend: repoint repo tooling to the frontend path (42d9dcb)
  • geoip: replace ObjectMapper instantiation with JsonMapper for improved configuration (#139) (aab68d5)
  • icon: fix SVG icons loading straight to memory (#56) (c9c255b), closes #80
  • kobo: create endpoints for non-catchall (#507) (bd7e578)
  • library: implement asynchronous book addition and cover generation with event handling (#329) (536daa9)
  • migrate library-creator component state to signals and enable component unit tests (#476) (f292a3e)
  • pdf-viewer: improve worker and blob handling for better loading of wasm PDFium workers (#333) (74c5bbd)
  • regex: replace string manipulation with Pattern matching for improved readability (#359) (78099cc)
  • SecurityFilter: Stop filters from being registered on all routes (#361) (9ddbe35)
  • service: replace manual caching with Cacheable and JPQL with Criteria API (#316) (02b2087)
  • settings: replace unsubscribe logic with takeUntilDestroyed for better resource management (#443) (7abac02)
  • threads: replace manual thread management with Spring lifecycle (#322) (cf79990)
  • ui: replace SVG artwork placeholders with CSS (#292) (2fd7310)
Chores
  • api: add the base OpenAPI metadata config (#423) (a32ca37)
  • api: drop unused book download proxy (#428) (907ad09)
  • api: drop unused code in AmazonBookParser and AudibleParser (#368) (b05d76d)
  • api: fix typo on openapi doc for healthcheck (#380) (7e796ec)
  • api: Migrate BookCreatorServiceTests to AssertJ and remove unnessesary tests (#229) (2474cdd)
  • banner: add ASCII art banner (#381) (05185ee)
  • build: migrate Gradle build scripts from Groovy to Kotlin DSL (#100) (ff14647)
  • codeql: Initialize a codeql config so we can sort out the caching properly. (2ad937a)
  • dependencies: bump Spring Boot to 4.0.5 and Hibernate to 7.3.0 Final (#223) (4e57719)
  • dependencies: update @embedpdf packages to version 2.12.0 (#325) (84ff595)
  • deps: bump @hono/node-server from 1.19.11 to 1.19.13 in /frontend (#419) (fadc129)
  • deps: bump actions/cache from 4.2.4 to 5.0.4 (40d0076)
  • deps: bump actions/cache from 5.0.4 to 5.0.5 (#762) (317557c)
  • deps: bump actions/setup-node from 6.3.0 to 6.4.0 (#758) (6d6003c)
  • deps: bump actions/upload-artifact from 7.0.0 to 7.0.1 (#763) (a0e2f60)
  • deps: bump conventional-changelog-conventionalcommits (#351) (19223d7)
  • deps: bump docker/build-push-action from 7.0.0 to 7.1.0 (#759) (9834381)
  • deps: bump docker/login-action from 4.0.0 to 4.1.0 (#757) (d2b32ed)
  • deps: bump docker/setup-qemu-action from 3.7.0 to 4.0.0 (3a1cd68)
  • deps: bump dompurify from 3.3.3 to 3.4.0 in /frontend (#536) (7f47b51)
  • deps: bump github/codeql-action from 4.34.1 to 4.35.1 (#332) (4be3311)
  • deps: bump github/codeql-action from 4.35.1 to 4.35.2 (#754) (70b2463)
  • deps: bump handlebars from 4.7.8 to 4.7.9 in /tools/release (#232) (e5ec9d0)
  • deps: bump hono from 4.12.12 to 4.12.14 in /frontend (#535) (91989b5)
  • deps: bump hono from 4.12.9 to 4.12.12 in /frontend (#422) (10c7fac)
  • deps: bump lodash from 4.17.23 to 4.18.1 in /tools/release (#339) (736ed01)
  • deps: bump lodash-es from 4.17.23 to 4.18.1 in /frontend (#344) (f7294bf)
  • deps: bump lodash-es from 4.17.23 to 4.18.1 in /tools/release (#342) (bd58f19)
  • deps: bump taiki-e/install-action from 2.69.10 to 2.71.0 (#331) (f7600e6)
  • deps: bump taiki-e/install-action from 2.69.7 to 2.69.10 (c0fca03)
  • deps: bump taiki-e/install-action from 2.71.0 to 2.75.19 (#756) (365d44e)
  • deps: bump the gradle-dependencies group (#350) (73857a8)
  • deps: bump the gradle-dependencies group across 1 directory with 8 updates (#224) (052c932)
  • deps: bump the gradle-dependencies group across 1 directory with 9 updates (#755) (8b0c3f8)
  • docker: bump Gradle version to 9.4.1 in Dockerfiles (#379) (d254da1)
  • docs: align Discord links with the README (dee8cd9)
  • docs: update Discord invite links (e4fc279)
  • drop booklore-ui symlink (#753) (9c92f54)
  • expand and generate specs for the frontend code section (#242) (a3c5da9)
  • frontend-lint: add local typecheck and stylelint commands (cef000d)
  • frontend-lint: tune stylelint for Angular and legacy SCSS patterns (dc2c1ec)
  • frontend: add missing auth service mock (#226) (4da5f2b)
  • frontend: add temporary booklore-ui compatibility symlink (4ddc567)
  • frontend: fix build warnings + set threshold to zero (#421) (6ab2ad6)
  • github: update bug report template with build selection (#529) (f2b3507)
  • lint: set LINT_ERROR_THRESHOLD to zero (#238) (cb8fa67)
  • nvm: moved .nvmrc file to the repository root (#237) (169c9ff)
  • packaging: simplify dockerignore to a denylist (a735bf1)
  • rename springboot app folder to backend (#752) (1a664dd)
  • sdkman: add Java version 25.0.2-tem to .sdkmanrc (#228) (da88da5)
  • ui: clear eslint angular style guide bucket (68e3df7)
  • ui: clear eslint control flow bucket (ac6b44e)
  • ui: clear eslint empty object type bucket (eba9688)
  • ui: clear eslint empty-function bucket (5dfd1e1)
  • ui: clear eslint expression cleanup bucket (79eef41)
  • ui: clear eslint interaction accessibility bucket (18784fd)
  • ui: clear eslint label-association bucket (b03ecf3)
  • ui: clear eslint mechanical style bucket (ea15719)
  • ui: clear eslint no-unused-vars bucket (0d6f83b)
  • ui: clear eslint optional chain assertion bucket (935b3ed)
  • ui: clear eslint presentation-label bucket (0a407f6)
  • ui: clear final prefer-inject bucket (878cfa0)
  • ui: clear helper service any bucket (f7a5d93)
  • ui: clear reader core any bucket (782bd63)
  • ui: clear reader settings prefer-inject bucket (4f7d38a)
  • ui: clear reader state any bucket (af9a53d)
  • ui: clear reader utility any bucket (e12f4ea)
  • ui: clear settings and stats any bucket (3700e35)
  • ui: clear shared prefer-inject bucket (b3fe4fd)
  • ui: clear test and declaration any bucket (2e66fd3)
  • ui: drop book and author animations (#270) (09c36df)
  • ui: drop unused favicon pngs (#675) (64b7a5c)
  • ui: enforce placeholder aspect ratios (#320) (f376b68)
  • ui: lazily load filter sidebar content (#283) (2a2dee8)
  • ui: remove remaining series chart template casts (3fdb63f)
  • ui: update PWA icons for new branding (#679) (d5b497e)
  • unraid: sync unraid template with README (#417) (e3b22ed)
  • update npm packages and address warnings in build (#426) (f0e4497)
Documentation
  • add AI usage policy for contributors (#547) (2c6509e)
  • add code of conduct (#546) (4c56e10)
  • agents: add repository agent workflow guide (caa37cd)
  • api: normalize OpenAPI tagging and operation metadata for app + auth/task endpoints (#437) (402c6f0)
  • consolidate application project development docs (#545) (719e083)
  • plan: add frontend grimmory migration plan (c99aa87)
  • readme: add DISK_TYPE to example compose file (#272) (#477) (3ddec09)
  • readme: modify wording on project independence (#382) (e172fa8)
  • remove frontend test architecture plans (#543) (8fde433)
  • security: update security policy with reporting guidelines and hints to supported versions (#76) (21c23d6), closes #1 #2 #3 #6
CI
  • apt update before installing libarchive (#375) (4d2b803)
  • drop publish-test-results.yml workflow (#737) (f05feae)
  • match release automation to desired behavioral workflow (#739) (10afe3c)
  • split release from build (#749) (ff73eea)
  • temp disable dependabot typescript updates (#761) (1d32e5f)
  • use env vars for input to scripts (#733) (2dbfe82)
Build
  • frontend: make deps checks work with yarn 4 (d59d5f7)
  • yarn: migrate frontend and release tooling to yarn 4 (4855f36)
Style
  • frontend: apply the first eslint autofix pass (e2a8e6a)
  • frontend: apply the first stylelint autofix pass (34fc600)
  • frontend: enforce alpha-value-notation in scss (6921da7)
  • frontend: enforce at-rule-empty-line-before in scss (43412c0)
  • frontend: enforce color-function-alias-notation in scss (130463b)
  • frontend: enforce color-function-notation in scss (ddcbb5b)
  • frontend: enforce color-hex-length in scss (a991351)
  • frontend: enforce declaration-block-single-line-max-declarations in scss (32765de)
  • frontend: enforce declaration-empty-line-before in scss (a04daac)
  • frontend: enforce declaration-property-value-keyword-no-deprecated (1a65884)
  • frontend: enforce keyframes-name-pattern in scss (7058992)
  • frontend: enforce media-feature-range-notation in scss (e46f87e)
  • frontend: enforce no-empty-source in scss (d95424d)
  • frontend: enforce number-max-precision in scss (a689751)
  • frontend: enforce property-no-deprecated in scss (df12acd)
  • frontend: enforce property-no-vendor-prefix in scss (ee02f6e)
  • frontend: enforce rule-empty-line-before in scss (55f4481)
  • frontend: enforce scss dollar-variable-empty-line-before (e68938f)
  • frontend: enforce scss dollar-variable-pattern in layout styles (2ee5dce)
  • frontend: enforce selector-class-pattern in scss (c0dff27)
  • frontend: enforce shorthand-property-no-redundant-values in scss (7b9830f)
  • frontend: resolve the remaining stylelint findings (dbd1f20)
  • frontend: scope no-invalid-position-declaration for scss mixins (0b34a85)

Grimmory

Versienummer 3.0.0
Releasestatus Final
Besturingssystemen Platformonafhankelijk
Website Grimmory
Download https://github.com/grimmory-tools/grimmory/releases/tag/v3.0.0
Licentietype GPL

Door Bart van Klaveren

Downloads en Best Buy Guide

23-04-2026 • 13:30

4

Submitter: ajbu

Bron: Grimmory

Update-historie

Reacties (4)

Sorteer op:

Weergave:

Release announcement op Discord:

It's been a few weeks since our last release. There has been a ton of changes, fixes, and architecture changes. I count over 2,500 files changed, 200+ pull requests merged, and one new logo included so far. And today we have Release 3.0.0!

Release 3.0.0

Github Release Github Discussions Page Grimmory Docs
  1. Release Highlights
    • Security & Stability: We’ve prioritized your safety with patches for outstanding security vulnerabilities (CVEs) and fixed backend memory leaks to keep the app running rock-solid.
    • A Snappier Experience: Enjoy significant performance improvements across the Library UI and book browser, powered by smarter caching and a modernized frontend architecture.
    • Next-Level Reading: We’ve overhauled our readers!
      • PDFs: Introducing a brand-new Document Mode.
      • Comics (CBX): "Infinite scroll" and "long-strip" modes!
    • Enhanced Metadata & Syncing: Integration with external services is much tighter. Highlights include improved Kobo sync (proxying and fixed-layout support), better metadata fetching (prioritizing ISBN over filenames), and new reading progress endpoints specifically for the mobile API.
    • Frontend Architecture Shift: To improve reactivity and performance, the frontend has largely migrated to Tanstack Query and Angular Signals. This addresses excessive re-renders and provides a much snappier UI, alongside new lazy-loading for images and sidebars.
    • Faster Library Browsing: The interface is much snappier thanks to performance improvements in the Library UI and server-side pagination across the frontend. Additionally better use of your browser’s cache to load books quickly.
  • API Docs - The Swagger API docs have been re-added and anyone can enable them with environmental variable API_DOCS_ENABLED to explore the API directly.
Nu wel the-booklore/booklore, voorheen booklore-app/booklore voor zowel github als docker. Grimmory lijkt voorlopig de meest geloofwaardige en betrouwbaarste fork
Tja, eerst BookLore gebruikt, door die ellende gemigreerd naar Calibre-Web Automated. Ik weet niet of ik weer wil migreren naar Grimmory. 🤔 Het werkt nu tenslotte.

Om te kunnen reageren moet je ingelogd zijn