Skip to content

refactor(upload): implement dynamic max file upload size configuration and handle upload size exceptions#362

Draft
balazs-szucs wants to merge 179 commits intogrimmory-tools:developfrom
balazs-szucs:max-upload-size
Draft

refactor(upload): implement dynamic max file upload size configuration and handle upload size exceptions#362
balazs-szucs wants to merge 179 commits intogrimmory-tools:developfrom
balazs-szucs:max-upload-size

Conversation

@balazs-szucs
Copy link
Copy Markdown
Member

@balazs-szucs balazs-szucs commented Apr 3, 2026

Description

Linked Issue: Fixes #152

Changes

This pull request refactors how the maximum file upload size is configured and enforced in the application. The upload size limit is now consistently determined by the MAX_UPLOAD_SIZE environment variable (or the Spring Boot property), and enforced at the framework level, rather than in application logic. Related error handling, configuration, and user interface messaging have been updated to reflect this change.

Summary by CodeRabbit

  • New Features

    • File upload size is now configurable via the MAX_UPLOAD_SIZE environment variable at server startup (default 100MB).
  • Bug Fixes

    • Oversized uploads now return clearer "payload too large" responses with the server limit shown.
  • Documentation

    • Added an informative note in global settings explaining that upload size changes require updating the env var and restarting the server.

github-actions Bot and others added 30 commits March 21, 2026 02:18
## [2.3.0](grimmory-tools/grimmory@v2.2.6...v2.3.0) (2026-03-21)

### Features

* **release:** document develop-based stable release previews ([930e526](grimmory-tools@930e526))

### Bug Fixes

* **api:** fix potential memory leaks in file processing ([031e8ae](grimmory-tools@031e8ae))
* **ci:** correct artifact download action pin ([37ca101](grimmory-tools@37ca101))
* **ci:** publish PR test results from workflow_run ([11a76bf](grimmory-tools@11a76bf))
* **ci:** repair release preview and test result publishing ([afa5b81](grimmory-tools@afa5b81))
* drop telemetry from app ([grimmory-tools#52](grimmory-tools#52)) ([4d82cb7](grimmory-tools@4d82cb7))
* **ui:** repair frontend compile after rebrand ([fea1ec6](grimmory-tools@fea1ec6))

### Refactors

* **build:** rename frontend dist output to grimmory ([ecf388f](grimmory-tools@ecf388f))
* **i18n:** rename booklore translation keys to grimmory ([eb94afa](grimmory-tools@eb94afa))
* **metadata:** move default parser from Amazon to Goodreads ([e252122](grimmory-tools@e252122))
* pull kepubify & ffprobe during build ([grimmory-tools#50](grimmory-tools#50)) ([1c15629](grimmory-tools@1c15629))
* **ui:** rebrand frontend surfaces to grimmory ([d786dd8](grimmory-tools@d786dd8))

### Chores

* **api:** remove the custom startup banner ([98c9b1a](grimmory-tools@98c9b1a))
* **deps:** bump flatted from 3.4.1 to 3.4.2 in /booklore-ui ([grimmory-tools#73](grimmory-tools#73)) ([c4bd0c7](grimmory-tools@c4bd0c7))
* **funding:** point support links at opencollective ([55c0ac0](grimmory-tools@55c0ac0))
* **release:** 2.2.7 [skip ci] ([0b5e24c](grimmory-tools@0b5e24c))
* remove old verbose PR template, replace with temporary more low-key one. ([grimmory-tools#84](grimmory-tools#84)) ([b868526](grimmory-tools@b868526))
* **ui:** drop financial support dialog ([grimmory-tools#21](grimmory-tools#21)) ([62be6b1](grimmory-tools@62be6b1))

### Documentation

* updated supported file formats in README.md ([grimmory-tools#68](grimmory-tools#68)) ([f912e80](grimmory-tools@f912e80))

### Style

* **i18n:** normalize translation json formatting ([grimmory-tools#89](grimmory-tools#89)) ([857290d](grimmory-tools@857290d))
* **ui:** simplify the topbar logo branding ([0416d48](grimmory-tools@0416d48))

(cherry picked from commit c335c7b)
…ooklore PR Port) (grimmory-tools#16)

* fix(api): Correct format for fixed-layout epub when using Kobo Sync

* chore: Cleanup duplicate code

* feat: Cache fixed-layout property in db

* fix: Missing nullcheck in after retrieving BookFileEntity

* fix: Remove memory leak in EpubReaderService.java

* chore: Avoid opening the epub twice for fixed-layout extraction

* chore: Fix DB migration from rebase

---------

Co-authored-by: brios <127139797+balazs-szucs@users.noreply.github.com>
grimmory-tools#79)

* chore(deps): bump actions/setup-node from 6.2.0 to 6.3.0 (#1)

Dependabot couldn't find the original pull request head commit, ea510f4.

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump docker/setup-buildx-action from 3.12.0 to 4.0.0 (grimmory-tools#2)

Dependabot couldn't find the original pull request head commit, faed6bf.

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump docker/build-push-action from 6.19.2 to 7.0.0 (grimmory-tools#3)

Dependabot couldn't find the original pull request head commit, f110823.

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump docker/login-action from 3.7.0 to 4.0.0 (grimmory-tools#6)

Dependabot couldn't find the original pull request head commit, 9a8d7a1.

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* fix(archive): infer archive type via Magic Numbers instead of filename

* fix(archive): improve archive type detection and improve logging for cover image retrieval

---------

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…unt (grimmory-tools#87)

* fix: fixed halves missing from series number in Hardcover metadata

* fix: use series primary books count
…ry-tools#117)

* refactor(frontend): migrate state to TanStack Query and signals

* fix(frontend): keep book cache in sync after patches
…hints to supported versions (grimmory-tools#76)

* chore(deps): bump actions/setup-node from 6.2.0 to 6.3.0 (#1)

Dependabot couldn't find the original pull request head commit, ea510f4.

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump docker/setup-buildx-action from 3.12.0 to 4.0.0 (grimmory-tools#2)

Dependabot couldn't find the original pull request head commit, faed6bf.

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump docker/build-push-action from 6.19.2 to 7.0.0 (grimmory-tools#3)

Dependabot couldn't find the original pull request head commit, f110823.

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump docker/login-action from 3.7.0 to 4.0.0 (grimmory-tools#6)

Dependabot couldn't find the original pull request head commit, 9a8d7a1.

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* docs(security): update security policy with reporting guidelines and hints to supported versions

---------

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…oring services (grimmory-tools#137)

* refactor(concurrency): improve thread management and locking in monitoring services

* chore: remove unnecessary comments
the kepubify / ffprobe binaries may be on disk but they're
in the "data" directory under `tools` rather than under the
current directory
… in the app (grimmory-tools#158)

Co-authored-by: Zack Yancey <yanceyz@proton.me>
…rimmory-tools#100)

* chore(build): migrate Gradle build scripts from Groovy to Kotlin DSL

* chore(docker): update Gradle build files to Kotlin DSL in Dockerfile
…tead of better fields like ISBN in Goodreads/Bookdrop (grimmory-tools#85)

* chore(deps): bump actions/setup-node from 6.2.0 to 6.3.0 (#1)

Dependabot couldn't find the original pull request head commit, ea510f4.

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump docker/setup-buildx-action from 3.12.0 to 4.0.0 (grimmory-tools#2)

Dependabot couldn't find the original pull request head commit, faed6bf.

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump docker/build-push-action from 6.19.2 to 7.0.0 (grimmory-tools#3)

Dependabot couldn't find the original pull request head commit, f110823.

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump docker/login-action from 3.7.0 to 4.0.0 (grimmory-tools#6)

Dependabot couldn't find the original pull request head commit, 9a8d7a1.

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* fix(metadata): fix metadata fetching relying for filename "first" instead of better fields like ISBN in Goodreads/Bookdrop

* perf(ci): speed up image builds and centralize cache writes

- Image builds:
  - pin frontend and backend Docker build stages to the build platform so multi-arch packaging can reuse architecture-independent work
  - add an Angular build cache mount and move dynamic version metadata to the end of the runtime stage so static layers stay reusable across tags
  - reduce image workflow checkout depth and keep preview builds on `linux/amd64` only to avoid unnecessary QEMU and history overhead

- Cache policy:
  - make CI packaging smoke builds consume the shared image cache without writing new BuildKit cache state
  - make normal preview builds consume shared GHA and registry caches without mutating the canonical cache
  - keep nightly and stable release builds as the workflows that refresh the shared image cache in both GHA and registry backends

- Preview override:
  - add a `refresh_shared_cache` input to the preview workflow for an explicit no-cache rebuild that repopulates the shared cache when maintainers need to bust and refresh it
  - keep the default preview behavior optimized for fast disposable builds rather than cache churn

- Validation:
  - keep workflow YAML parsing clean after the cache-policy changes
  - keep `git diff --check` clean for the touched Docker and workflow files

* docs: Add a note about how to make a release

* chore: remove unncesary comments

---------

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: James Cox <james@imaj.es>
…nt of frontend lint issues (grimmory-tools#163)

* feat(lint): add Angular Lint Threshold workflow for CI integration

* Update workflow name for clarity in CI integration

* fix(lint): update LINT_THRESHOLD to 725 in CI checks

* Also run workflow on main branch

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* fix(lint): simplify lint problem count calculation using jq

* feat(lint): enhance quality threshold checks and reporting in CI workflow

* refactor(lint): rename lint step for clarity in CI workflow

* fix(lint): swap lint warning and error thresholds for correct configuration

* fix(lint): update build warning threshold and correct log processing for accurate warning count

* refactor(lint): remove unnecessary working-directory specification for quality thresholds step

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
…ols#56)

* refactor(icon): fix SVG icon loading straight to memory

* refactor(icon): loading with improved error handling

* refactor(icon): add flag for SVG icons loading state

* chore(release): 2.3.0 [skip ci]

## [2.3.0](grimmory-tools/grimmory@v2.2.6...v2.3.0) (2026-03-21)

### Features

* **release:** document develop-based stable release previews ([930e526](grimmory-tools@930e526))

### Bug Fixes

* **api:** fix potential memory leaks in file processing ([031e8ae](grimmory-tools@031e8ae))
* **ci:** correct artifact download action pin ([37ca101](grimmory-tools@37ca101))
* **ci:** publish PR test results from workflow_run ([11a76bf](grimmory-tools@11a76bf))
* **ci:** repair release preview and test result publishing ([afa5b81](grimmory-tools@afa5b81))
* drop telemetry from app ([grimmory-tools#52](grimmory-tools#52)) ([4d82cb7](grimmory-tools@4d82cb7))
* **ui:** repair frontend compile after rebrand ([fea1ec6](grimmory-tools@fea1ec6))

### Refactors

* **build:** rename frontend dist output to grimmory ([ecf388f](grimmory-tools@ecf388f))
* **i18n:** rename booklore translation keys to grimmory ([eb94afa](grimmory-tools@eb94afa))
* **metadata:** move default parser from Amazon to Goodreads ([e252122](grimmory-tools@e252122))
* pull kepubify & ffprobe during build ([grimmory-tools#50](grimmory-tools#50)) ([1c15629](grimmory-tools@1c15629))
* **ui:** rebrand frontend surfaces to grimmory ([d786dd8](grimmory-tools@d786dd8))

### Chores

* **api:** remove the custom startup banner ([98c9b1a](grimmory-tools@98c9b1a))
* **deps:** bump flatted from 3.4.1 to 3.4.2 in /booklore-ui ([grimmory-tools#73](grimmory-tools#73)) ([c4bd0c7](grimmory-tools@c4bd0c7))
* **funding:** point support links at opencollective ([55c0ac0](grimmory-tools@55c0ac0))
* **release:** 2.2.7 [skip ci] ([0b5e24c](grimmory-tools@0b5e24c))
* remove old verbose PR template, replace with temporary more low-key one. ([grimmory-tools#84](grimmory-tools#84)) ([b868526](grimmory-tools@b868526))
* **ui:** drop financial support dialog ([grimmory-tools#21](grimmory-tools#21)) ([62be6b1](grimmory-tools@62be6b1))

### Documentation

* updated supported file formats in README.md ([grimmory-tools#68](grimmory-tools#68)) ([f912e80](grimmory-tools@f912e80))

### Style

* **i18n:** normalize translation json formatting ([grimmory-tools#89](grimmory-tools#89)) ([857290d](grimmory-tools@857290d))
* **ui:** simplify the topbar logo branding ([0416d48](grimmory-tools@0416d48))

* fix(book-browser): prevent memory leaks by unsubscribing from observables (grimmory-tools#80)

* test(icon): remove redundant initialization in IconServiceTest

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Alex Fair <20632147+afairgiant@users.noreply.github.com>
- Command surface:
  - add a root `Justfile` with namespaced `api`, `ui`, and `release` modules so humans and agents can use the same entrypoints from the repo root
  - add project-local Justfiles for `booklore-api`, `booklore-ui`, and `tools/release` so each area remains self-contained and can still be driven from inside its own directory
  - standardize local developer workflows around `just check`, `just test`, `just api run`, `just ui dev`, `just db-up`, and `just image-build`

- Workflow integration:
  - update the reusable test suite workflow to install `just` and run backend and frontend CI steps through the Justfiles instead of hardcoded shell commands
  - update the semantic-release workflows to install `just` and invoke release tooling via `just release install`, `just release preview`, and `just release run`
  - keep the Docker image publication workflows on the native Docker actions while moving the project-command logic into the canonical command surface

- Documentation:
  - split backend and frontend implementation guidance into `booklore-api/README.md`, `booklore-api/CONTRIBUTING.md`, `booklore-ui/README.md`, and `booklore-ui/CONTRIBUTING.md`
  - simplify the top-level `README.md` and `CONTRIBUTING.md` so they stay focused on overview, policy, and navigation while pointing to component-specific guides for deeper detail
  - align contributor-facing examples on the `just` interface instead of mixing ad hoc Gradle, npm, Docker, and Compose commands

- Developer environment:
  - add `mise.toml` to pin the expected Java and Node toolchain versions for local work
  - switch the development Compose defaults from the old Booklore database values to Grimmory-oriented defaults
  - keep the command layout ready for a future API/UI split without forcing that packaging change yet
- Issue intake:
  - rebrand the bug and feature request forms from Booklore to Grimmory
  - remove the old `[Bug]` and `[Feature]` title prefixes so issue titles can stay natural
  - default issue intake to `needs-triage` while relying on GitHub Issue Types for the primary classification

- New templates:
  - add a dedicated enhancement template for smaller quality-of-life and UX improvements
  - add a documentation template for doc fixes, missing guides, and confusing setup flows
  - add a performance template for runtime, UI, build, and operational performance problems

- Type alignment:
  - map the templates onto the repo's issue-type taxonomy with `Bug`, `Feature`, `Enhancement`, `Documentation`, and `Performance`
  - keep the larger feature template distinct from the smaller enhancement template so incoming requests are easier to triage
- Community links:
  - update the issue-template support link to use the canonical Grimmory Discord invite from `README.md`
  - update the contributing guide to point at the same Discord server

- Consistency:
  - remove the stale invite URL so issue intake, contributor docs, and the repository landing page all reference the same community link
- Community links:
  - replace the old Discord invite code with the new `9YJ7HB4n8T` invite in the repository README
  - update the contributor guide to point at the same server
  - align the issue-template support link with the same canonical invite

- Consistency:
  - keep the public docs and issue intake flow on a single Discord destination so users and contributors land in the right community space
- Agent workflow:
  - add a root `AGENTS.md` focused on agent execution rather than general contributor onboarding
  - document the expected command surface, branch target, and staged verification order
- Repo boundaries:
  - map the backend and frontend layout with the key source, resource, test, i18n, and asset paths
  - call out ownership boundaries for deploy, packaging, tools, docs, and shared assets
- Project rules:
  - capture backend and frontend conventions that agents should follow before editing or validating work
  - include repo-specific PR expectations such as linked issues, test output, and UI evidence
- GitHub Actions caching:
  - replace implicit setup-java cache writes with explicit Gradle cache restore/save steps
  - only persist the shared Gradle cache from long-lived develop and release workflows
  - remove the unnecessary QEMU setup from the single-arch smoke build
  - disable QEMU image caching in multi-arch publish workflows to stop repeated binfmt cache entries
- CodeQL workflow:
  - replace the generated advanced template with a pinned repo-owned CodeQL workflow
  - add per-ref concurrency to cancel superseded CodeQL runs before they create more caches
  - restrict dependency caching to Java, using restore-only on pull requests and full caching on long-lived runs
  - disable trap caching and turn off PR overlay database caching to avoid repetitive low-value CodeQL caches
- Validation:
  - validated the edited workflow YAML with yq
  - did not execute the workflows locally
- Planning:
  - add the staged frontend migration plan under docs/plans
  - record the intended rename, Yarn 4 adoption, lint rollout, and PR replay sequence
- Cleanup ledger:
  - capture the remaining frontend Booklore-era aliases that should survive the cutover temporarily
  - document explicit triggers for removing each compatibility shim after the dust settles
dependabot Bot and others added 13 commits April 5, 2026 23:14
…rimmory-tools#342)

Bumps [lodash-es](https://github.com/lodash/lodash) from 4.17.23 to 4.18.1.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](lodash/lodash@4.17.23...4.18.1)

---
updated-dependencies:
- dependency-name: lodash-es
  dependency-version: 4.18.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…immory-tools#339)

Bumps [lodash](https://github.com/lodash/lodash) from 4.17.23 to 4.18.1.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](lodash/lodash@4.17.23...4.18.1)

---
updated-dependencies:
- dependency-name: lodash
  dependency-version: 4.18.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* chore(api): fix typing for kobo sync service

* feat(api): add more paths for grimmory/kobo API

* fix(api): disable kobo features if kobo is unavailable

* feat(api): add proxy flag to kobo setting

* feat(api): adhere to kobo proxy enabled flag

* feat(ui): add forward requests toggle

* fix(ui): load setting

* style: use assertNotNull

* fix: reduce advertised routes

this cuts down the advertised routes - in particular to reduce the
number of auth-related requests we will be taking on.  we may eventually
want to do this but I want to reduce the amount of change in this PR

* fix: undo disable of kobo features

This reverts commit 1b242fa.
… authenticated (grimmory-tools#385)

* fix(frontend): library health pings even not authenticated

* test

* authInitialized guard

* subscription
* fix(api): use CBX Extractor in the CBX processor

instead of implementing a separate cover detection algorithm in CBX
processor, this uses the CBXMetadataExtractor to fetch the cover image.
this means we now will take into account expected file names,
`ComicInfo.xml` definitions, and fall back to correctly sorted files

* style(api): drop unused imports

* fix(api): drop placeholder for cbx

this brings the CBX metadata extractor in line
with the other metadata extractors that return
null when no cover can be found

* fix: handle no cover
…outes (grimmory-tools#361)

* see pr message

* fix:
+	use PathPattern for request matching
+	include common public route to whitelist
+	logging for failed queryjwt

* forgot to remove debug code
…ycle (grimmory-tools#322)

* refactor(threads): replace manual thread management with Spring lifecycle

- Convert LibraryWatchService, LibraryFileEventProcessor,
  BookdropMonitoringService, BookdropEventHandlerService to SmartLifecycle
  for proper startup/shutdown ordering
- Replace Executors.newCachedThreadPool() in FilenamePatternExtractor
  with Spring-managed ExecutorService bean
- Delete SecurityContextVirtualThread utility class
- Add DelegatingSecurityContextRunnable task decorator to TaskExecutorConfig
  for automatic security context propagation
- Replace SecurityContextVirtualThread.runWithSecurityContext() calls in
  TaskService, BookCoverService, SendEmailV2Service, LibraryService
  with injected Executor
- Fix CbxReaderService pre-existing compile error (transferEntryTo)

* refactor(threads): improve thread management with ThreadPoolTaskExecutor and improve shutdown handling

* fix: fix broken test
…ding position across devices (grimmory-tools#358)

* fix(reader): add fetchFreshBookDetail method to ensure up-to-date reading position across devices

* test(audiobook): enhance tests to verify queryClient interactions for progress updates

* fix(audiobook): include audiobookProgress and fileProgress in progress payload
…ogress (grimmory-tools#247)

* fix: use ISBN to match the edition to sync

* fix: optimize fallback to default editions when ISBN is not present

* chore: added tests for hardcover sync

* fix: handle cases where hardcover does not have page count

* fix: initial fix to hardcover sync

* added some additional logic to cover the hardcover API

* feat: added tests for hardcover progress sync

* chore: code cleanup

* fix: check if the progress insert and update are actually successful before logging

* fix: ensure book edition id is being updated

* fix: updateUserBookRead returned true even if there was an error
…erations (grimmory-tools#397)

* fix(cache): improve cache handling by checking availability before operations

* fix(cache): improve cache handling and improve error management
* feat: add Unraid community app template

* Fix missing EOF NL

* Remove Duplicate TZ & Use PNG Icon

* Use Dockerhub for image & registry

* Revert to GHCR
…end (grimmory-tools#419)

Bumps [@hono/node-server](https://github.com/honojs/node-server) from 1.19.11 to 1.19.13.
- [Release notes](https://github.com/honojs/node-server/releases)
- [Commits](honojs/node-server@v1.19.11...v1.19.13)

---
updated-dependencies:
- dependency-name: "@hono/node-server"
  dependency-version: 1.19.13
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Copy link
Copy Markdown
Member

@zachyale zachyale left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Image

We have to think this through better- currently on this branch, the UI pre-fills the value via the ENV var by default, but allows users to edit it and hit save (updating the setting value instead). Refreshing this page then just re-initializes the value in that box to the current ENV var.

I still think we should be highlighting this not as an ENV var, but as a user defined setting, but regardless of whether we pivot to that or keep the ENV var, we need to fix this UI so it makes more sense for whichever direction we go. Discuss tomorrow?

balazs-szucs and others added 12 commits April 8, 2026 09:33
…r improved readability (grimmory-tools#359)

* refactor(regex): replace string manipulation with Pattern matching for improved readability

* refactor(duplicate-detection): improve filename normalization using regex patterns for clarity

* refactor(oidc): replace regex trailing slash handling with utility method

* refactor(isbn): enhance ISBN extraction by normalizing case in cleaned output
…rimmory-tools#390)

* feat(cbx-viewer): add (back) infinite and long-strip modes, fixed.

* feat(reader): improve strip width controls and improve continuation affordance

* fix(cbx-reader): clear debounce timer on layout generation changes
…df.js stuff (grimmory-tools#393)

* feat(pdf): move ebook reader to embedpdf, add bookmarks, remove old pdf.js stuff

* feat(pdf): add page number support for bookmarks and enhance mobile navigation

* feat(pdf): implement document ID tracking for search functionality

* feat(pdf): add page number column to book marks and update unique index

* feat(pdf): enhance annotation handling and improve search result scrolling

* feat(pdf): improve layout handling and enhance resize observer functionality

* feat(pdf): improve document viewer initialization and improve close button styling

* fix(pdf): remove 'form' from disabled categories

* feat(pdf): add pan mode functionality and enhance sidebar layout

* feat(pdf): improve book viewer initialization with enhanced element detection

* feat(pdf): add link handling to text selection and improve popup actions

* feat(pdf): enhance link detection and improve selection handling in event service

* feat(pdf): improve accessibility and improve resource management in PDF viewer

* feat(pdf): add resize observer for improved layout handling

* feat(pdf): error handling and improve navigation in PDF reader
…tools#422)

Bumps [hono](https://github.com/honojs/hono) from 4.12.9 to 4.12.12.
- [Release notes](https://github.com/honojs/hono/releases)
- [Commits](honojs/hono@v4.12.9...v4.12.12)

---
updated-dependencies:
- dependency-name: hono
  dependency-version: 4.12.12
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…eration with event handling (grimmory-tools#329)

* refactor(library): implement asynchronous book addition and cover generation with event handling

* fix(bookcover): handle null metadata before updating audiobook and ebook cover information

* fic(library): add library processing service and task executor
…ions (grimmory-tools#348)

* fix(metadata): add support for audible fields in metadata refresh options

* fix(metadata): add support for Lubimyczytac and Audible ratings in scoring

* fix(metadata): update default audible ratings and review counts to zero

* fix(metadata): add reRenderOnLangChange to TranslocoService provider in tests

* fix(tests): update MetadataProviderFieldSelectorComponent tests for async setup and translation
* refactor(file): improve path handling and validation

* fix: update XML escaping to use escapeXml10 for improved compatibility

* feat(mime): integrate Apache Tika for content-based MIME detection across services

* test: enhance MultipartFile tests with input stream handling and content type validation
@zachyale
Copy link
Copy Markdown
Member

zachyale commented Apr 9, 2026

As per our maintainer sync up, let's drive this PR to be a full ENV var approach, and freeze this work being merged until after this upcoming release.

@balazs-szucs balazs-szucs marked this pull request as draft April 9, 2026 20:37
@zachyale zachyale force-pushed the develop branch 2 times, most recently from 0bf513c to 62434c5 Compare April 22, 2026 21:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

File Upload Limits not Respected for Files over 1GB