feat(discord): add discord changelog workflows#1
Conversation
…ding of wasm PDFium workers (grimmory-tools#333) * refactor(pdf-viewer): improve worker and blob handling for better loading of wasm PDFium workers * feat(doc-viewer): add dismissible info banner for saved changes
…mory-tools#331) Bumps [taiki-e/install-action](https://github.com/taiki-e/install-action) from 2.69.10 to 2.71.0. - [Release notes](https://github.com/taiki-e/install-action/releases) - [Changelog](https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md) - [Commits](taiki-e/install-action@7627fb4...a1df912) --- updated-dependencies: - dependency-name: taiki-e/install-action dependency-version: 2.71.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…mory-tools#344) 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>
…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>
…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
…mmory-tools#512) * fix(streaming): rewrite file streaming with NIO and HTTP caching * fix(streaming): improve file transfer handling and enhance client disconnect detection * fix(streaming): improve If-None-Match header evaluation for improved caching * fix(streaming): improve chapter tracking and loading in audiobook player * fix(streaming): remove unused imports in audiobook player component * fix(streaming): improve chapter tracking and state management in audiobook player (again) * fix: fix merge conflict errors and update code
* refactor(user): optimize detail fetching with custom repository implementation * refactor(fonts): fix font loading and improve custom font handling * refactor(user-data): update userSettings to use input() for better reactivity * refactor(fonts): improve font loading logic and improve readi ness state management again * refactor(user-data): simplify user fetching logic and improve batch loading * refactor(custom-fonts): improve font loading logic with run ID for better state management
…rimmory-tools#531) * chore(ui): scale down placeholder text sizes * chore(ui): switch to inline-size
…gic (grimmory-tools#506) * fix(pdf): improve PDF blob handling and improve viewer destruction logic * fix(pdf): PDF annotation saving logic and improve responsive design for mobile * fix(pdf): improve PDF fetching (once again) and caching logic to improve performance and reduce network requests * fix(pdf): hide footer and notification elements in PDF viewer * fix(pdf): improve loading behavior and improve annotation persistence logic * fix(pdf): improve PDF annotation persistence with retry mechanism and logging * fix(pdf): improve PDF annotation saving with raw fetch and improved error handling * fix(pdf): cap highlight opacity and adjust rendering for small viewports
…-tools#535) Bumps [hono](https://github.com/honojs/hono) from 4.12.12 to 4.12.14. - [Release notes](https://github.com/honojs/hono/releases) - [Commits](honojs/hono@v4.12.12...v4.12.14) --- updated-dependencies: - dependency-name: hono dependency-version: 4.12.14 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…s#545) * docs: add DEVELOPMENT.md * docs: dedupe application project development guides * docs: update junit version target
…y-tools#536) Bumps [dompurify](https://github.com/cure53/DOMPurify) from 3.3.3 to 3.4.0. - [Release notes](https://github.com/cure53/DOMPurify/releases) - [Commits](cure53/DOMPurify@3.3.3...3.4.0) --- updated-dependencies: - dependency-name: dompurify dependency-version: 3.4.0 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
|
Important Review skippedToo many files! This PR contains 300 files, which is 150 over the limit of 150. ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (300)
You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
| name: Notify Discord | ||
| runs-on: ubuntu-latest | ||
|
|
||
| steps: | ||
| - name: Compose Message | ||
| id: compose | ||
| env: | ||
| CHANNEL: ${{ inputs.channel }} | ||
| CANDIDATE_SHA: ${{ inputs.candidate_sha }} | ||
| BASE_TAG: ${{ inputs.base_tag }} | ||
| PREDICTED_VERSION: ${{ inputs.predicted_version }} | ||
| RELEASE_NOTES: ${{ inputs.release_notes }} | ||
| COMPARE_URL: ${{ inputs.compare_url }} | ||
| IMAGE_TAG: ${{ inputs.image_tag }} | ||
| run: | | ||
| set -eu | ||
|
|
||
| short_sha="$(printf '%s' "$CANDIDATE_SHA" | cut -c1-7)" | ||
| display_version="${PREDICTED_VERSION:-N/A}" | ||
|
|
||
| if [ "$CHANNEL" = "rc" ]; then | ||
| header="🧪 **Release Candidate Ready for Regression Testing**" | ||
| body="${header}\n- Candidate SHA: \`${short_sha}\`\n- Predicted stable version: \`v${display_version}\`\n- Base stable tag: \`${BASE_TAG:-N/A}\`" | ||
|
|
||
| if [ -n "$IMAGE_TAG" ]; then | ||
| body="${body}\n- Docker tag: \`${IMAGE_TAG}\`" | ||
| fi | ||
|
|
||
| if [ -n "$COMPARE_URL" ]; then | ||
| body="${body}\n- Compare: ${COMPARE_URL}" | ||
| fi | ||
| else | ||
| header="📦 **Build Notification**" | ||
| body="${header}\n- Candidate SHA: \`${short_sha}\`\n- Predicted stable version: \`v${display_version}\`" | ||
| fi | ||
|
|
||
| if [ -n "$RELEASE_NOTES" ]; then | ||
| body="${body}\n\n**Conventional Commit Changelog**\n${RELEASE_NOTES}" | ||
| else | ||
| body="${body}\n\n_No release-relevant commits detected for this candidate._" | ||
| fi | ||
|
|
||
| { | ||
| echo 'message<<EOF' | ||
| printf '%b\n' "$body" | ||
| echo 'EOF' | ||
| } >> "$GITHUB_OUTPUT" | ||
|
|
||
| - name: Send Discord Webhook | ||
| env: | ||
| DISCORD_WEBHOOK: ${{ secrets.discord_webhook }} | ||
| MESSAGE: ${{ steps.compose.outputs.message }} | ||
| run: | | ||
| set -eu | ||
| payload="$(jq -n --arg content "$MESSAGE" '{content: $content}')" | ||
| curl -sS -X POST "$DISCORD_WEBHOOK" \ | ||
| -H 'Content-Type: application/json' \ | ||
| -d "$payload" |
| name: Resolve Candidate Ref | ||
| runs-on: ubuntu-latest | ||
|
|
||
| outputs: | ||
| candidate_sha: ${{ steps.resolve.outputs.candidate_sha }} | ||
| rc_tag: ${{ steps.resolve.outputs.rc_tag }} | ||
| base_tag: ${{ steps.resolve.outputs.base_tag }} | ||
| compare_url: ${{ steps.resolve.outputs.compare_url }} | ||
|
|
||
| steps: | ||
| - name: Checkout Repository | ||
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 | ||
| with: | ||
| fetch-depth: 0 | ||
| ref: ${{ inputs.candidate_ref }} | ||
|
|
||
| - name: Resolve Candidate Metadata | ||
| id: resolve | ||
| run: | | ||
| set -eu | ||
|
|
||
| git fetch origin main --tags --force | ||
|
|
||
| if ! git merge-base --is-ancestor origin/main HEAD; then | ||
| echo "Selected ref does not contain origin/main and cannot be promoted cleanly to main" >&2 | ||
| exit 1 | ||
| fi | ||
|
|
||
| candidate_sha="$(git rev-parse HEAD)" | ||
| short_sha="$(git rev-parse --short HEAD)" | ||
| build_date="$(date -u +%Y%m%d)" | ||
| rc_tag="rc-${build_date}-${short_sha}" | ||
| base_tag="$(git describe --tags --abbrev=0 --match 'v*' origin/main)" | ||
| compare_url="https://github.com/${GITHUB_REPOSITORY}/compare/${base_tag}...${candidate_sha}" | ||
|
|
||
| echo "candidate_sha=${candidate_sha}" >> "$GITHUB_OUTPUT" | ||
| echo "rc_tag=${rc_tag}" >> "$GITHUB_OUTPUT" | ||
| echo "base_tag=${base_tag}" >> "$GITHUB_OUTPUT" | ||
| echo "compare_url=${compare_url}" >> "$GITHUB_OUTPUT" | ||
|
|
||
| { | ||
| echo "## Release Candidate Candidate" | ||
| echo | ||
| echo "- Candidate ref input: \`${{ inputs.candidate_ref }}\`" | ||
| echo "- Candidate SHA: \`${candidate_sha}\`" | ||
| echo "- Base stable tag: \`${base_tag}\`" | ||
| echo "- Compare: ${compare_url}" | ||
| echo "- RC image tag: \`${rc_tag}\`" | ||
| } >> "$GITHUB_STEP_SUMMARY" | ||
|
|
||
| test-suite: |
| name: Notify Discord (RC) | ||
| if: ${{ needs.generate-notes.result == 'success' && (needs.build-and-push.result == 'success' || needs.build-and-push.result == 'skipped') }} | ||
| needs: [resolve_ref, build-and-push, generate-notes] | ||
| uses: ./.github/workflows/notify-discord-release-notes.yml | ||
| secrets: | ||
| discord_webhook: ${{ secrets.DISCORD_RELEASE_WEBHOOK }} | ||
| with: | ||
| channel: rc | ||
| candidate_sha: ${{ needs.resolve_ref.outputs.candidate_sha }} | ||
| base_tag: ${{ needs.resolve_ref.outputs.base_tag }} | ||
| predicted_version: ${{ needs.generate-notes.outputs.predicted_version }} | ||
| release_notes: ${{ needs.generate-notes.outputs.release_notes }} | ||
| compare_url: ${{ needs.resolve_ref.outputs.compare_url }} | ||
| image_tag: ${{ needs.build-and-push.outputs.image_tag }} |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: e5488c6bf9
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| case "publisher" -> "metadata.publisher"; | ||
| case "language" -> "metadata.language"; | ||
| case "publisheddate" -> "metadata.publishedDate"; | ||
| case "lastreadtime" -> "lastReadTime"; |
There was a problem hiding this comment.
Map last-read sorting to a valid JPA property
The new lastreadtime branch maps to "lastReadTime", but BookEntity has no such property (last-read timestamps live on user progress entities). When clients request sort=lastReadTime, bookRepository.findAll(spec, pageable) will fail resolving the sort path and return a 500 instead of results. This is a regression from the previous fallback mapping and will break app book listing for that sort option.
Useful? React with 👍 / 👎.
| return ResponseEntity.ok(mobileBookService.getBooks( | ||
| page, size, sort, dir, libraryId, shelfId, status, search, | ||
| fileType, minRating, maxRating, authors, language)); | ||
| @ModelAttribute BookListRequest request) { |
There was a problem hiding this comment.
Validate BookListRequest model attributes
BookListRequest now defines many @Size(max = 20) guards for multi-value filters, but this endpoint binds it via @ModelAttribute without @Valid, so Bean Validation is never triggered. A client can submit arbitrarily large repeated query params (e.g., hundreds of authors/tags), bypassing the intended limits and generating very large predicate/IN trees that can degrade query performance.
Useful? React with 👍 / 👎.
| curl -sS -X POST "$DISCORD_WEBHOOK" \ | ||
| -H 'Content-Type: application/json' \ | ||
| -d "$payload" |
There was a problem hiding this comment.
Fail workflow on Discord webhook HTTP errors
The Discord notification step posts with curl -sS but does not use --fail/--fail-with-body, so HTTP 4xx/5xx responses are still treated as success by curl. If Discord rejects the payload (for example, invalid webhook or oversized content), this job will appear green while no notification is delivered, making release signaling unreliable.
Useful? React with 👍 / 👎.
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>
…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>
…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>
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>
…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>
…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>
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>
…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>
…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>
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>
…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>
…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>
Description
Linked Issue: Fixes #
Changes