Skip to content

Feature/improve custom rotate - #631

Merged
alam00000 merged 3 commits into
alam00000:mainfrom
quhxl:feature/improve-custom-rotate
May 9, 2026
Merged

Feature/improve custom rotate#631
alam00000 merged 3 commits into
alam00000:mainfrom
quhxl:feature/improve-custom-rotate

Conversation

@quhxl

@quhxl quhxl commented Apr 3, 2026

Copy link
Copy Markdown
Contributor

Description

This PR improves the usability of the "Rotate by Custom Degrees" tool by addressing two limitations:

  • Larger previews: Increased thumbnail height (h-36 to h-64) and reduced grid density to improve visual feedback when adjusting small rotation angles.
  • Floating-point support: Replaced parseInt with parseFloat, added step="0.1" to inputs, and implemented rounding to 1 decimal place for more precise control.

Fixes #630

Type of change

Please delete options that are not relevant.

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • This change requires a documentation update

🧪 How Has This Been Tested?

Please describe how you tested your changes so that maintainers can verify them. Include enough detail for someone else to reproduce your tests.

Checklist:

  • Verified output manually
  • Tested with relevant sample documents or data
  • Wrote Vite Test Case (if applicable)

Test details:

  • Uploaded scanned PDFs with slight skew (~0.5°–2°)
  • Applied fractional rotations (e.g. 1.2, -0.8)

Checklist:

  • I have signed the Contributor License Agreement (CLA) or my organization has signed the Corporate CLA
  • My code follows the style guidelines of this project
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • New and existing unit tests pass locally with my changes
  • Any dependent changes have been merged and published in downstream modules

Summary by CodeRabbit

  • UI/UX Changes

    • Increased per-page thumbnail height for improved visibility.
    • Adjusted thumbnail grid to show fewer columns on smaller screens and increased spacing between items.
  • New Features

    • Rotation controls now accept and apply decimal angles with 0.1° step precision and values normalized to one decimal place for both individual and batch operations.

@github-actions

github-actions Bot commented Apr 3, 2026

Copy link
Copy Markdown
Contributor

All contributors have signed the CLA ✍️ ✅
Posted by the CLA Assistant Lite bot.

@coderabbitai

coderabbitai Bot commented Apr 3, 2026

Copy link
Copy Markdown
Contributor

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: f8601dd1-0b28-4654-8b7a-09ce0867a0ff

📥 Commits

Reviewing files that changed from the base of the PR and between 0ed5e95 and dd2ee5d.

📒 Files selected for processing (1)
  • src/js/logic/rotate-custom-page.ts
🚧 Files skipped from review as they are similar to previous changes (1)
  • src/js/logic/rotate-custom-page.ts

📝 Walkthrough

Walkthrough

Increased thumbnail preview size and adjusted grid layout; enabled floating-point rotation inputs with 0.1-degree steps and one-decimal rounding for both per-page and batch rotation controls.

Changes

Rotate by Custom Degrees (preview + decimal angles)

Layer / File(s) Summary
UI layout / classes
src/pages/rotate-custom.html
Grid layout and spacing changed: grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5 gap-4grid-cols-1 sm:grid-cols-2 md:grid-cols-2 lg:grid-cols-3 gap-6.
Thumbnail size
src/js/logic/rotate-custom-page.ts
Per-page thumbnail container height class changed from h-36 to h-64.
Input attributes
src/pages/rotate-custom.html, src/js/logic/rotate-custom-page.ts
Numeric inputs set to step="0.1" and width adjusted (w-12w-16) for per-page controls.
Per-page controls: parsing & step handlers
src/js/logic/rotate-custom-page.ts
Replaced parseInt with parseFloat in decrement/increment handlers; adjust by ±1, round to one decimal place, and normalize input value.
Per-page Apply
src/js/logic/rotate-custom-page.ts
Apply handler parses with parseFloat, rounds to one decimal (fallback 0), normalizes input, stores rounded value into pageState.rotations[pageIndex], and updates thumbnail transform.
Batch controls: parsing & step handlers
src/js/logic/rotate-custom-page.ts
Batch decrement/increment parse with parseFloat, adjust by ±1, round to one decimal, and normalize the #batch-custom-angle input.
Batch Apply
src/js/logic/rotate-custom-page.ts
Batch Apply parses #batch-custom-angle with parseFloat, rounds to one decimal (fallback 0), normalizes the input, assigns the rounded angle across all pageState.rotations, and refreshes rotation displays.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

🐰 I hopped in to make things neat,
Thumbnails taller, easier to meet.
Angles whisper, one-decimal tune,
Steps of 0.1 beneath the moon.
A little hop — alignment soon. ✨

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Title check ❓ Inconclusive The title "Feature/improve custom rotate" is vague and generic, failing to clearly describe the specific improvements (larger previews and floating-point support). Use a more specific title like "Add floating-point rotation and improve thumbnail previews" to clearly convey the main changes.
✅ Passed checks (3 passed)
Check name Status Explanation
Description check ✅ Passed The PR description includes all required sections: summary of changes, issue reference (#630), type of change selection, testing methodology with specific test details, and the standard checklist.
Linked Issues check ✅ Passed Code changes fully address both requirements from issue #630: thumbnail height increased from h-36 to h-64 with reduced grid density for larger previews, and parseInt replaced with parseFloat with step="0.1" for floating-point support.
Out of Scope Changes check ✅ Passed All changes are directly aligned with issue #630 objectives: thumbnail styling improvements and floating-point rotation input support, with no extraneous modifications.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Tip

💬 Introducing Slack Agent: The best way for teams to turn conversations into code.

Slack Agent is built on CodeRabbit's deep understanding of your code, so your team can collaborate across the entire SDLC without losing context.

  • Generate code and open pull requests
  • Plan features and break down work
  • Investigate incidents and troubleshoot customer tickets together
  • Automate recurring tasks and respond to alerts with triggers
  • Summarize progress and report instantly

Built for teams:

  • Shared memory across your entire org—no repeating context
  • Per-thread sandboxes to safely plan and execute work
  • Governance built-in—scoped access, auditability, and budget controls

One agent for your entire SDLC. Right inside Slack.

👉 Get started


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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@quhxl

quhxl commented Apr 3, 2026

Copy link
Copy Markdown
Contributor Author

I have read the CLA Document and I hereby sign the CLA

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@src/js/logic/rotate-custom-page.ts`:
- Around line 152-153: The parseFloat usage in the apply handlers (e.g., where
you read input.value and set pageState.rotations[pageIndex]) accepts
NaN/Infinity and un-normalized numbers; fix by validating the parsed value with
Number.isFinite and normalizing to one decimal place before assignment (e.g.,
parse -> Number.isFinite check -> round to one decimal such as Math.round(value
* 10) / 10) and fallback to 0 when invalid; apply the same change to both the
handler that sets pageState.rotations[pageIndex] and the other apply path around
the code referenced near line 393 so all typed angles enforce finite values and
one-decimal precision.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: a57585cb-7a59-42ec-9602-678c7aec094f

📥 Commits

Reviewing files that changed from the base of the PR and between ed6e6c0 and 7f9c352.

📒 Files selected for processing (3)
  • docs/tools/rotate-custom.md
  • src/js/logic/rotate-custom-page.ts
  • src/pages/rotate-custom.html

Comment thread src/js/logic/rotate-custom-page.ts Outdated
@quhxl
quhxl force-pushed the feature/improve-custom-rotate branch from 7f9c352 to ec178bd Compare April 3, 2026 13:34
github-actions Bot added a commit that referenced this pull request Apr 3, 2026
syed211198 pushed a commit to syed211198/HTSbentopdf that referenced this pull request May 8, 2026
@gitguardian

gitguardian Bot commented May 9, 2026

Copy link
Copy Markdown

⚠️ GitGuardian has uncovered 1 secret following the scan of your pull request.

Please consider investigating the findings and remediating the incidents. Failure to do so may lead to compromising the associated services or software components.

Since your pull request originates from a forked repository, GitGuardian is not able to associate the secrets uncovered with secret incidents on your GitGuardian dashboard.
Skipping this check run and merging your pull request will create secret incidents on your GitGuardian dashboard.

🔎 Detected hardcoded secret in your pull request
GitGuardian id GitGuardian status Secret Commit Filename
32666090 Triggered Generic Password dd2ee5d public/locales/tr/tools.json View secret
🛠 Guidelines to remediate hardcoded secrets
  1. Understand the implications of revoking this secret by investigating where it is used in your code.
  2. Replace and store your secret safely. Learn here the best practices.
  3. Revoke and rotate this secret.
  4. If possible, rewrite git history. Rewriting git history is not a trivial act. You might completely break other contributing developers' workflow and you risk accidentally deleting legitimate data.

To avoid such incidents in the future consider


🦉 GitGuardian detects secrets in your source code to help developers and security teams secure the modern development process. You are seeing this because you or someone else with access to this repository has authorized GitGuardian to scan your pull request.

@alam00000
alam00000 merged commit bef12f1 into alam00000:main May 9, 2026
10 of 11 checks passed
eleboucher pushed a commit to eleboucher/homelab that referenced this pull request May 27, 2026
…5) (#641)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [ghcr.io/alam00000/bentopdf](https://github.com/alam00000/bentopdf) | patch | `2.8.4` → `2.8.5` |

---

### Release Notes

<details>
<summary>alam00000/bentopdf (ghcr.io/alam00000/bentopdf)</summary>

### [`v2.8.5`](https://github.com/alam00000/bentopdf/releases/tag/v2.8.5): Bug Fixes - v2.8.5

[Compare Source](alam00000/bentopdf@v2.8.5...v2.8.5)

##### Dad Joke Of the Release

What's the easiest building to lift? A lighthouse 🤣

(This release is later than I would have liked. The past few weeks I've been under the weather and pretty burnt out, so v2.8.5 sat finished for longer than it should have. Thanks for being patient ❤️)

##### What's Changed

##### 1.  Custom Rotate

- Improved angle input handling, rotation utilities, and a smoother UX for fine-grained rotation. Thanks to [@&#8203;quhxl](https://github.com/quhxl) for the contribution.

##### 2.  Alternate & Mix Pages

- Alternate and mix pages are now in workflow builder. Fixes  [#&#8203;684](alam00000/bentopdf#684)

##### 3. Helm Chart Auto Update

- Helm chart version now auto updates with each release. Fixes [#&#8203;680](alam00000/bentopdf#680)

##### 4. New Option in Merge

- By default merge tool used to keep Keep original page labels from each file intact. Now users have the option to opt out from it via a checkbox. Fixes [#&#8203;676](alam00000/bentopdf#676)

##### Bug Fixes 🐛

- **OCR Arabic + Latin** — Fixed mixed Arabic and Latin OCR output where English text appeared as empty boxes when run alongside Arabic. Dual font loading now covers any non Latin script combined with Latin. Also fixes the bug in [#&#8203;724](alam00000/bentopdf#724)

- **HEIC in workflow** — HEIC images are now correctly accepted in the image to pdf workflow node. Fixes [#&#8203;703](alam00000/bentopdf#703)

- **Email parsing reliability** — MsgReader CJS/ESM interop fix for `.msg` files. Fixes [#&#8203;701](alam00000/bentopdf#701)

- **Sign PDF signature editor width** — Editor now fills the full available width like the rest of the tool. Fixes [#&#8203;653](alam00000/bentopdf#653)

- **PDF Compare export issue** - Now export correctly filters out instead of showing all the changes in exported PDF. Fixes [#&#8203;655](alam00000/bentopdf#655)

- *RFC 3161 error* - Now users can correctly timestamp using RFC 3161. Fixes [#&#8203;649](alam00000/bentopdf#649)

- **.mjs MIME errors on self-hosted nginx** — Vite now emits `.js` instead of `.mjs` for built assets, so PDFs no longer fail to load on self-hosted setups whose `mime.types` doesn't include a `.mjs → application/javascript` mapping. Fixes the failures reported by users on the Proxmox helper script.

##### A note on canonicals

A lot of BentoPDF users come to and use bentopdf.com directly since the whole thing runs in the browser. Over the past few months I've received complaints from people who searched for BentoPDF and ended up on someone else's self hosted instance instead of the main site. Sometimes that worked out, but more often it confused users and put unwanted traffic on a self hoster who never asked for it.

To address this, canonical URLs, hreflang, and the sitemap now default to bentopdf.com unless explicitly overridden. This only affects deployments that are exposed to the public internet. Internal and private self-hosted instances (anyone running with `ROBOTS_NOINDEX=true`) are unaffected, since search engines were never indexing those pages to begin with.

The change fixes three things at once:

1. **Self-hosters keep their bandwidth.** Public-facing self-hosted instances no longer absorb search traffic from people who were actually looking for bentopdf.com.
2. **Users land on the right site.** Search results for "BentoPDF" reliably point to bentopdf.com instead of a randomly indexed mirror.
3. **Self-hosters who want their own canonical can still claim it.** Build with `--build-arg SITE_URL=https://your-domain.com` and canonicals, sitemap, and hreflang all point at your domain. Documented in [STATIC-HOSTING.md](https://github.com/alam00000/bentopdf/blob/main/STATIC-HOSTING.md#run-your-own-seo-instance-claim-canonical-for-yourself).

##### Self-Hosting Docs

The `bentopdf-simple` was meant to be used for self hosting, while the `bentopdf` image is used on our live site. But unfortunately many users still run the `bentopdf` build

- **Self-Hosted vs Commercial builds** — Docs now clearly distinguish the `bentopdf-simple` (Self-Hosted) and `bentopdf` (Commercial) builds across the README, getting-started, docker.md, and self-hosting/index.md. Self  Hosted is the recommended default; the existing Commercial path is unchanged.
- **New "Common Issues" troubleshooting section** — Added `.mjs` MIME entries and SharedArrayBuffer / COEP-COOP entries to the self-hosting docs, with platform-specific snippets for nginx, Apache, AWS S3, and Kubernetes.

##### Looking ahead: a bundled self-host build

Something I'm looking into: bringing back a fully bundled self host image like earlier versions had. The current setup pulls the heavy AGPL libraries (PyMuPDF, Ghostscript, CoherentPDF) from jsDelivr at runtime, which works but is sometimes cumbersome for self hosters to manage. Packaging this cleanly under the dual license takes some thought, so no timeline yet. But for the self hosters who've asked about it, it's on my mind and I am working on it so there's no friction going forward.

##### A note from the developer

Translations across the 19 locales are still automated through Microsoft Translator for the bulk passes. Native-speaker corrections like the ones [@&#8203;Stephan-P](https://github.com/Stephan-P)  keeps catching are the only thing keeping short-string quality high. A Crowdin or Weblate workflow is on the roadmap so corrections reach a reviewer before they ship. Until then, if you read any of the supported languages and spot something off, a PR or even a quick issue is genuinely appreciated.

##### By the Community

- build(deps-dev): bump vite from 8.0.5 to 8.0.6 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;669](alam00000/bentopdf#669)
- build(deps): bump i18next-http-backend from 3.0.2 to 3.0.5 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;681](alam00000/bentopdf#681)
- build(deps): bump postcss from 8.5.8 to 8.5.12 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;692](alam00000/bentopdf#692)
- Update tools.json by [@&#8203;Stephan-P](https://github.com/Stephan-P) in [#&#8203;700](alam00000/bentopdf#700) ❤️
- build(deps-dev): bump vite from 8.0.6 to 8.0.7 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;696](alam00000/bentopdf#696)
- Update common.json by [@&#8203;Stephan-P](https://github.com/Stephan-P) in [#&#8203;699](alam00000/bentopdf#699)
- Refactor modals into partials and add missing i18n keys for settings by [@&#8203;Skillkiller](https://github.com/Skillkiller) in [#&#8203;658](alam00000/bentopdf#658) ❤️
- Localize status messages and UI elements across various tools by [@&#8203;Skillkiller](https://github.com/Skillkiller) in [#&#8203;664](alam00000/bentopdf#664) ❤️
- build(deps-dev): bump vite from 8.0.7 to 8.0.8 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;705](alam00000/bentopdf#705)
- build(deps): bump postcss from 8.5.12 to 8.5.13 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;698](alam00000/bentopdf#698)
- Feature/improve custom rotate by [@&#8203;quhxl](https://github.com/quhxl) in [#&#8203;631](alam00000/bentopdf#631)
- build(deps): bump fast-xml-builder from 1.1.5 to 1.2.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;711](alam00000/bentopdf#711)
- build(deps): bump devalue from 5.6.4 to 5.8.1 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;720](alam00000/bentopdf#720)
- build(deps): bump svelte from 5.54.1 to 5.55.7 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;721](alam00000/bentopdf#721)
- build(deps): bump mermaid from 11.13.0 to 11.15.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;713](alam00000/bentopdf#713)
- build(deps-dev): bump vite from 8.0.8 to 8.0.9 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;712](alam00000/bentopdf#712)
- Update tools.json by [@&#8203;Stephan-P](https://github.com/Stephan-P) in [#&#8203;718](alam00000/bentopdf#718) ❤️
- build(deps): bump i18next-http-backend from 3.0.5 to 3.0.6 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;697](alam00000/bentopdf#697)

##### New Contributors

- [@&#8203;quhxl](https://github.com/quhxl) made their first contribution in [#&#8203;631](alam00000/bentopdf#631)  ❤️

**Full Changelog**: <alam00000/bentopdf@v2.8.4...v2.8.5>

That's it for now. Thank you for using BentoPDF. Have a great weekend! ❤️

### [`v2.8.5`](https://github.com/alam00000/bentopdf/releases/tag/v2.8.5): Bug Fixes - v2.8.5

[Compare Source](alam00000/bentopdf@v2.8.4...v2.8.5)

##### Dad Joke Of the Release

What's the easiest building to lift? A lighthouse 🤣

(This release is later than I would have liked. The past few weeks I've been under the weather and pretty burnt out, so v2.8.5 sat finished for longer than it should have. Thanks for being patient ❤️)

##### What's Changed

##### 1.  Custom Rotate

- Improved angle input handling, rotation utilities, and a smoother UX for fine-grained rotation. Thanks to [@&#8203;quhxl](https://github.com/quhxl) for the contribution.

##### 2.  Alternate & Mix Pages

- Alternate and mix pages are now in workflow builder. Fixes  [#&#8203;684](alam00000/bentopdf#684)

##### 3. Helm Chart Auto Update

- Helm chart version now auto updates with each release. Fixes [#&#8203;680](alam00000/bentopdf#680)

##### 4. New Option in Merge

- By default merge tool used to keep Keep original page labels from each file intact. Now users have the option to opt out from it via a checkbox. Fixes [#&#8203;676](alam00000/bentopdf#676)

##### Bug Fixes 🐛

- **OCR Arabic + Latin** — Fixed mixed Arabic and Latin OCR output where English text appeared as empty boxes when run alongside Arabic. Dual font loading now covers any non Latin script combined with Latin. Also fixes the bug in [#&#8203;724](alam00000/bentopdf#724)

- **HEIC in workflow** — HEIC images are now correctly accepted in the image to pdf workflow node. Fixes [#&#8203;703](alam00000/bentopdf#703)

- **Email parsing reliability** — MsgReader CJS/ESM interop fix for `.msg` files. Fixes [#&#8203;701](alam00000/bentopdf#701)

- **Sign PDF signature editor width** — Editor now fills the full available width like the rest of the tool. Fixes [#&#8203;653](alam00000/bentopdf#653)

- **PDF Compare export issue** - Now export correctly filters out instead of showing all the changes in exported PDF. Fixes [#&#8203;655](alam00000/bentopdf#655)

- *RFC 3161 error* - Now users can correctly timestamp using RFC 3161. Fixes [#&#8203;649](alam00000/bentopdf#649)

- **.mjs MIME errors on self-hosted nginx** — Vite now emits `.js` instead of `.mjs` for built assets, so PDFs no longer fail to load on self-hosted setups whose `mime.types` doesn't include a `.mjs → application/javascript` mapping. Fixes the failures reported by users on the Proxmox helper script.

##### A note on canonicals

A lot of BentoPDF users come to and use bentopdf.com directly since the whole thing runs in the browser. Over the past few months I've received complaints from people who searched for BentoPDF and ended up on someone else's self hosted instance instead of the main site. Sometimes that worked out, but more often it confused users and put unwanted traffic on a self hoster who never asked for it.

To address this, canonical URLs, hreflang, and the sitemap now default to bentopdf.com unless explicitly overridden. This only affects deployments that are exposed to the public internet. Internal and private self-hosted instances (anyone running with `ROBOTS_NOINDEX=true`) are unaffected, since search engines were never indexing those pages to begin with.

The change fixes three things at once:

1. **Self-hosters keep their bandwidth.** Public-facing self-hosted instances no longer absorb search traffic from people who were actually looking for bentopdf.com.
2. **Users land on the right site.** Search results for "BentoPDF" reliably point to bentopdf.com instead of a randomly indexed mirror.
3. **Self-hosters who want their own canonical can still claim it.** Build with `--build-arg SITE_URL=https://your-domain.com` and canonicals, sitemap, and hreflang all point at your domain. Documented in [STATIC-HOSTING.md](https://github.com/alam00000/bentopdf/blob/main/STATIC-HOSTING.md#run-your-own-seo-instance-claim-canonical-for-yourself).

##### Self-Hosting Docs

The `bentopdf-simple` was meant to be used for self hosting, while the `bentopdf` image is used on our live site. But unfortunately many users still run the `bentopdf` build

- **Self-Hosted vs Commercial builds** — Docs now clearly distinguish the `bentopdf-simple` (Self-Hosted) and `bentopdf` (Commercial) builds across the README, getting-started, docker.md, and self-hosting/index.md. Self  Hosted is the recommended default; the existing Commercial path is unchanged.
- **New "Common Issues" troubleshooting section** — Added `.mjs` MIME entries and SharedArrayBuffer / COEP-COOP entries to the self-hosting docs, with platform-specific snippets for nginx, Apache, AWS S3, and Kubernetes.

##### Looking ahead: a bundled self-host build

Something I'm looking into: bringing back a fully bundled self host image like earlier versions had. The current setup pulls the heavy AGPL libraries (PyMuPDF, Ghostscript, CoherentPDF) from jsDelivr at runtime, which works but is sometimes cumbersome for self hosters to manage. Packaging this cleanly under the dual license takes some thought, so no timeline yet. But for the self hosters who've asked about it, it's on my mind and I am working on it so there's no friction going forward.

##### A note from the developer

Translations across the 19 locales are still automated through Microsoft Translator for the bulk passes. Native-speaker corrections like the ones [@&#8203;Stephan-P](https://github.com/Stephan-P)  keeps catching are the only thing keeping short-string quality high. A Crowdin or Weblate workflow is on the roadmap so corrections reach a reviewer before they ship. Until then, if you read any of the supported languages and spot something off, a PR or even a quick issue is genuinely appreciated.

##### By the Community

- build(deps-dev): bump vite from 8.0.5 to 8.0.6 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;669](alam00000/bentopdf#669)
- build(deps): bump i18next-http-backend from 3.0.2 to 3.0.5 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;681](alam00000/bentopdf#681)
- build(deps): bump postcss from 8.5.8 to 8.5.12 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;692](alam00000/bentopdf#692)
- Update tools.json by [@&#8203;Stephan-P](https://github.com/Stephan-P) in [#&#8203;700](alam00000/bentopdf#700) ❤️
- build(deps-dev): bump vite from 8.0.6 to 8.0.7 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;696](alam00000/bentopdf#696)
- Update common.json by [@&#8203;Stephan-P](https://github.com/Stephan-P) in [#&#8203;699](alam00000/bentopdf#699)
- Refactor modals into partials and add missing i18n keys for settings by [@&#8203;Skillkiller](https://github.com/Skillkiller) in [#&#8203;658](alam00000/bentopdf#658) ❤️
- Localize status messages and UI elements across various tools by [@&#8203;Skillkiller](https://github.com/Skillkiller) in [#&#8203;664](alam00000/bentopdf#664) ❤️
- build(deps-dev): bump vite from 8.0.7 to 8.0.8 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;705](alam00000/bentopdf#705)
- build(deps): bump postcss from 8.5.12 to 8.5.13 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;698](alam00000/bentopdf#698)
- Feature/improve custom rotate by [@&#8203;quhxl](https://github.com/quhxl) in [#&#8203;631](alam00000/bentopdf#631)
- build(deps): bump fast-xml-builder from 1.1.5 to 1.2.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;711](alam00000/bentopdf#711)
- build(deps): bump devalue from 5.6.4 to 5.8.1 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;720](alam00000/bentopdf#720)
- build(deps): bump svelte from 5.54.1 to 5.55.7 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;721](alam00000/bentopdf#721)
- build(deps): bump mermaid from 11.13.0 to 11.15.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;713](alam00000/bentopdf#713)
- build(deps-dev): bump vite from 8.0.8 to 8.0.9 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;712](alam00000/bentopdf#712)
- Update tools.json by [@&#8203;Stephan-P](https://github.com/Stephan-P) in [#&#8203;718](alam00000/bentopdf#718) ❤️
- build(deps): bump i18next-http-backend from 3.0.5 to 3.0.6 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;697](alam00000/bentopdf#697)

##### New Contributors

- [@&#8203;quhxl](https://github.com/quhxl) made their first contribution in [#&#8203;631](alam00000/bentopdf#631)  ❤️

**Full Changelog**: <alam00000/bentopdf@v2.8.4...v2.8.5>

That's it for now. Thank you for using BentoPDF. Have a great weekend! ❤️

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these updates again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMDEuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEwMS4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZS9jb250YWluZXIiLCJ0eXBlL3BhdGNoIl19-->

Reviewed-on: https://git.erwanleboucher.dev/eleboucher/homelab/pulls/641
dgalanberasaluce pushed a commit to dgalanberasaluce/infra-personal that referenced this pull request Jun 13, 2026
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| docker.io/library/postgres | minor | `17.9` → `17.10` |
| docker.io/library/redis | minor | `8.6.3` → `8.8.0` |
| [ghcr.io/alam00000/bentopdf-simple](https://github.com/alam00000/bentopdf) | patch | `2.8.4` → `2.8.5` |
| [ghcr.io/fccview/jotty](https://github.com/fccview/jotty) | minor | `1.23.0` → `1.24.0` |
| [grafana/alloy](https://github.com/grafana/alloy) | patch | `v1.16.1` → `v1.16.2` |
| [grafana/grafana](https://github.com/grafana/grafana) | patch | `12.4.3` → `12.4.4` |
| [lscr.io/linuxserver/mariadb](https://github.com/linuxserver/docker-mariadb/packages) ([source](https://github.com/linuxserver/docker-mariadb)) | patch | `11.4.10` → `11.4.12` |
| [plantuml/plantuml-server](https://github.com/plantuml/plantuml-server) | patch | `v1.2026.2` → `v1.2026.5` |
| [prompve/prometheus-pve-exporter](https://github.com/prometheus-pve/prometheus-pve-exporter) | minor | `3.8.3` → `3.9.0` |
| [victoriametrics/victoria-metrics](https://github.com/VictoriaMetrics/VictoriaMetrics) | minor | `v1.143.0-scratch` → `v1.144.0-scratch` |

---

### Release Notes

<details>
<summary>alam00000/bentopdf (ghcr.io/alam00000/bentopdf-simple)</summary>

### [`v2.8.5`](https://github.com/alam00000/bentopdf/releases/tag/v2.8.5): Bug Fixes - v2.8.5

[Compare Source](alam00000/bentopdf@v2.8.5...v2.8.5)

##### Dad Joke Of the Release

What's the easiest building to lift? A lighthouse 🤣

(This release is later than I would have liked. The past few weeks I've been under the weather and pretty burnt out, so v2.8.5 sat finished for longer than it should have. Thanks for being patient ❤️)

##### What's Changed

##### 1.  Custom Rotate

- Improved angle input handling, rotation utilities, and a smoother UX for fine-grained rotation. Thanks to [@&#8203;quhxl](https://github.com/quhxl) for the contribution.

##### 2.  Alternate & Mix Pages

- Alternate and mix pages are now in workflow builder. Fixes  [#&#8203;684](alam00000/bentopdf#684)

##### 3. Helm Chart Auto Update

- Helm chart version now auto updates with each release. Fixes [#&#8203;680](alam00000/bentopdf#680)

##### 4. New Option in Merge

- By default merge tool used to keep Keep original page labels from each file intact. Now users have the option to opt out from it via a checkbox. Fixes [#&#8203;676](alam00000/bentopdf#676)

##### Bug Fixes 🐛

- **OCR Arabic + Latin** — Fixed mixed Arabic and Latin OCR output where English text appeared as empty boxes when run alongside Arabic. Dual font loading now covers any non Latin script combined with Latin. Also fixes the bug in [#&#8203;724](alam00000/bentopdf#724)

- **HEIC in workflow** — HEIC images are now correctly accepted in the image to pdf workflow node. Fixes [#&#8203;703](alam00000/bentopdf#703)

- **Email parsing reliability** — MsgReader CJS/ESM interop fix for `.msg` files. Fixes [#&#8203;701](alam00000/bentopdf#701)

- **Sign PDF signature editor width** — Editor now fills the full available width like the rest of the tool. Fixes [#&#8203;653](alam00000/bentopdf#653)

- **PDF Compare export issue** - Now export correctly filters out instead of showing all the changes in exported PDF. Fixes [#&#8203;655](alam00000/bentopdf#655)

- *RFC 3161 error* - Now users can correctly timestamp using RFC 3161. Fixes [#&#8203;649](alam00000/bentopdf#649)

- **.mjs MIME errors on self-hosted nginx** — Vite now emits `.js` instead of `.mjs` for built assets, so PDFs no longer fail to load on self-hosted setups whose `mime.types` doesn't include a `.mjs → application/javascript` mapping. Fixes the failures reported by users on the Proxmox helper script.

##### A note on canonicals

A lot of BentoPDF users come to and use bentopdf.com directly since the whole thing runs in the browser. Over the past few months I've received complaints from people who searched for BentoPDF and ended up on someone else's self hosted instance instead of the main site. Sometimes that worked out, but more often it confused users and put unwanted traffic on a self hoster who never asked for it.

To address this, canonical URLs, hreflang, and the sitemap now default to bentopdf.com unless explicitly overridden. This only affects deployments that are exposed to the public internet. Internal and private self-hosted instances (anyone running with `ROBOTS_NOINDEX=true`) are unaffected, since search engines were never indexing those pages to begin with.

The change fixes three things at once:

1. **Self-hosters keep their bandwidth.** Public-facing self-hosted instances no longer absorb search traffic from people who were actually looking for bentopdf.com.
2. **Users land on the right site.** Search results for "BentoPDF" reliably point to bentopdf.com instead of a randomly indexed mirror.
3. **Self-hosters who want their own canonical can still claim it.** Build with `--build-arg SITE_URL=https://your-domain.com` and canonicals, sitemap, and hreflang all point at your domain. Documented in [STATIC-HOSTING.md](https://github.com/alam00000/bentopdf/blob/main/STATIC-HOSTING.md#run-your-own-seo-instance-claim-canonical-for-yourself).

##### Self-Hosting Docs

The `bentopdf-simple` was meant to be used for self hosting, while the `bentopdf` image is used on our live site. But unfortunately many users still run the `bentopdf` build

- **Self-Hosted vs Commercial builds** — Docs now clearly distinguish the `bentopdf-simple` (Self-Hosted) and `bentopdf` (Commercial) builds across the README, getting-started, docker.md, and self-hosting/index.md. Self  Hosted is the recommended default; the existing Commercial path is unchanged.
- **New "Common Issues" troubleshooting section** — Added `.mjs` MIME entries and SharedArrayBuffer / COEP-COOP entries to the self-hosting docs, with platform-specific snippets for nginx, Apache, AWS S3, and Kubernetes.

##### Looking ahead: a bundled self-host build

Something I'm looking into: bringing back a fully bundled self host image like earlier versions had. The current setup pulls the heavy AGPL libraries (PyMuPDF, Ghostscript, CoherentPDF) from jsDelivr at runtime, which works but is sometimes cumbersome for self hosters to manage. Packaging this cleanly under the dual license takes some thought, so no timeline yet. But for the self hosters who've asked about it, it's on my mind and I am working on it so there's no friction going forward.

##### A note from the developer

Translations across the 19 locales are still automated through Microsoft Translator for the bulk passes. Native-speaker corrections like the ones [@&#8203;Stephan-P](https://github.com/Stephan-P)  keeps catching are the only thing keeping short-string quality high. A Crowdin or Weblate workflow is on the roadmap so corrections reach a reviewer before they ship. Until then, if you read any of the supported languages and spot something off, a PR or even a quick issue is genuinely appreciated.

##### By the Community

- build(deps-dev): bump vite from 8.0.5 to 8.0.6 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;669](alam00000/bentopdf#669)
- build(deps): bump i18next-http-backend from 3.0.2 to 3.0.5 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;681](alam00000/bentopdf#681)
- build(deps): bump postcss from 8.5.8 to 8.5.12 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;692](alam00000/bentopdf#692)
- Update tools.json by [@&#8203;Stephan-P](https://github.com/Stephan-P) in [#&#8203;700](alam00000/bentopdf#700) ❤️
- build(deps-dev): bump vite from 8.0.6 to 8.0.7 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;696](alam00000/bentopdf#696)
- Update common.json by [@&#8203;Stephan-P](https://github.com/Stephan-P) in [#&#8203;699](alam00000/bentopdf#699)
- Refactor modals into partials and add missing i18n keys for settings by [@&#8203;Skillkiller](https://github.com/Skillkiller) in [#&#8203;658](alam00000/bentopdf#658) ❤️
- Localize status messages and UI elements across various tools by [@&#8203;Skillkiller](https://github.com/Skillkiller) in [#&#8203;664](alam00000/bentopdf#664) ❤️
- build(deps-dev): bump vite from 8.0.7 to 8.0.8 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;705](alam00000/bentopdf#705)
- build(deps): bump postcss from 8.5.12 to 8.5.13 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;698](alam00000/bentopdf#698)
- Feature/improve custom rotate by [@&#8203;quhxl](https://github.com/quhxl) in [#&#8203;631](alam00000/bentopdf#631)
- build(deps): bump fast-xml-builder from 1.1.5 to 1.2.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;711](alam00000/bentopdf#711)
- build(deps): bump devalue from 5.6.4 to 5.8.1 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;720](alam00000/bentopdf#720)
- build(deps): bump svelte from 5.54.1 to 5.55.7 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;721](alam00000/bentopdf#721)
- build(deps): bump mermaid from 11.13.0 to 11.15.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;713](alam00000/bentopdf#713)
- build(deps-dev): bump vite from 8.0.8 to 8.0.9 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;712](alam00000/bentopdf#712)
- Update tools.json by [@&#8203;Stephan-P](https://github.com/Stephan-P) in [#&#8203;718](alam00000/bentopdf#718) ❤️
- build(deps): bump i18next-http-backend from 3.0.5 to 3.0.6 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;697](alam00000/bentopdf#697)

##### New Contributors

- [@&#8203;quhxl](https://github.com/quhxl) made their first contribution in [#&#8203;631](alam00000/bentopdf#631)  ❤️

**Full Changelog**: <alam00000/bentopdf@v2.8.4...v2.8.5>

That's it for now. Thank you for using BentoPDF. Have a great weekend! ❤️

### [`v2.8.5`](https://github.com/alam00000/bentopdf/releases/tag/v2.8.5): Bug Fixes - v2.8.5

[Compare Source](alam00000/bentopdf@v2.8.4...v2.8.5)

##### Dad Joke Of the Release

What's the easiest building to lift? A lighthouse 🤣

(This release is later than I would have liked. The past few weeks I've been under the weather and pretty burnt out, so v2.8.5 sat finished for longer than it should have. Thanks for being patient ❤️)

##### What's Changed

##### 1.  Custom Rotate

- Improved angle input handling, rotation utilities, and a smoother UX for fine-grained rotation. Thanks to [@&#8203;quhxl](https://github.com/quhxl) for the contribution.

##### 2.  Alternate & Mix Pages

- Alternate and mix pages are now in workflow builder. Fixes  [#&#8203;684](alam00000/bentopdf#684)

##### 3. Helm Chart Auto Update

- Helm chart version now auto updates with each release. Fixes [#&#8203;680](alam00000/bentopdf#680)

##### 4. New Option in Merge

- By default merge tool used to keep Keep original page labels from each file intact. Now users have the option to opt out from it via a checkbox. Fixes [#&#8203;676](alam00000/bentopdf#676)

##### Bug Fixes 🐛

- **OCR Arabic + Latin** — Fixed mixed Arabic and Latin OCR output where English text appeared as empty boxes when run alongside Arabic. Dual font loading now covers any non Latin script combined with Latin. Also fixes the bug in [#&#8203;724](alam00000/bentopdf#724)

- **HEIC in workflow** — HEIC images are now correctly accepted in the image to pdf workflow node. Fixes [#&#8203;703](alam00000/bentopdf#703)

- **Email parsing reliability** — MsgReader CJS/ESM interop fix for `.msg` files. Fixes [#&#8203;701](alam00000/bentopdf#701)

- **Sign PDF signature editor width** — Editor now fills the full available width like the rest of the tool. Fixes [#&#8203;653](alam00000/bentopdf#653)

- **PDF Compare export issue** - Now export correctly filters out instead of showing all the changes in exported PDF. Fixes [#&#8203;655](alam00000/bentopdf#655)

- *RFC 3161 error* - Now users can correctly timestamp using RFC 3161. Fixes [#&#8203;649](alam00000/bentopdf#649)

- **.mjs MIME errors on self-hosted nginx** — Vite now emits `.js` instead of `.mjs` for built assets, so PDFs no longer fail to load on self-hosted setups whose `mime.types` doesn't include a `.mjs → application/javascript` mapping. Fixes the failures reported by users on the Proxmox helper script.

##### A note on canonicals

A lot of BentoPDF users come to and use bentopdf.com directly since the whole thing runs in the browser. Over the past few months I've received complaints from people who searched for BentoPDF and ended up on someone else's self hosted instance instead of the main site. Sometimes that worked out, but more often it confused users and put unwanted traffic on a self hoster who never asked for it.

To address this, canonical URLs, hreflang, and the sitemap now default to bentopdf.com unless explicitly overridden. This only affects deployments that are exposed to the public internet. Internal and private self-hosted instances (anyone running with `ROBOTS_NOINDEX=true`) are unaffected, since search engines were never indexing those pages to begin with.

The change fixes three things at once:

1. **Self-hosters keep their bandwidth.** Public-facing self-hosted instances no longer absorb search traffic from people who were actually looking for bentopdf.com.
2. **Users land on the right site.** Search results for "BentoPDF" reliably point to bentopdf.com instead of a randomly indexed mirror.
3. **Self-hosters who want their own canonical can still claim it.** Build with `--build-arg SITE_URL=https://your-domain.com` and canonicals, sitemap, and hreflang all point at your domain. Documented in [STATIC-HOSTING.md](https://github.com/alam00000/bentopdf/blob/main/STATIC-HOSTING.md#run-your-own-seo-instance-claim-canonical-for-yourself).

##### Self-Hosting Docs

The `bentopdf-simple` was meant to be used for self hosting, while the `bentopdf` image is used on our live site. But unfortunately many users still run the `bentopdf` build

- **Self-Hosted vs Commercial builds** — Docs now clearly distinguish the `bentopdf-simple` (Self-Hosted) and `bentopdf` (Commercial) builds across the README, getting-started, docker.md, and self-hosting/index.md. Self  Hosted is the recommended default; the existing Commercial path is unchanged.
- **New "Common Issues" troubleshooting section** — Added `.mjs` MIME entries and SharedArrayBuffer / COEP-COOP entries to the self-hosting docs, with platform-specific snippets for nginx, Apache, AWS S3, and Kubernetes.

##### Looking ahead: a bundled self-host build

Something I'm looking into: bringing back a fully bundled self host image like earlier versions had. The current setup pulls the heavy AGPL libraries (PyMuPDF, Ghostscript, CoherentPDF) from jsDelivr at runtime, which works but is sometimes cumbersome for self hosters to manage. Packaging this cleanly under the dual license takes some thought, so no timeline yet. But for the self hosters who've asked about it, it's on my mind and I am working on it so there's no friction going forward.

##### A note from the developer

Translations across the 19 locales are still automated through Microsoft Translator for the bulk passes. Native-speaker corrections like the ones [@&#8203;Stephan-P](https://github.com/Stephan-P)  keeps catching are the only thing keeping short-string quality high. A Crowdin or Weblate workflow is on the roadmap so corrections reach a reviewer before they ship. Until then, if you read any of the supported languages and spot something off, a PR or even a quick issue is genuinely appreciated.

##### By the Community

- build(deps-dev): bump vite from 8.0.5 to 8.0.6 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;669](alam00000/bentopdf#669)
- build(deps): bump i18next-http-backend from 3.0.2 to 3.0.5 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;681](alam00000/bentopdf#681)
- build(deps): bump postcss from 8.5.8 to 8.5.12 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;692](alam00000/bentopdf#692)
- Update tools.json by [@&#8203;Stephan-P](https://github.com/Stephan-P) in [#&#8203;700](alam00000/bentopdf#700) ❤️
- build(deps-dev): bump vite from 8.0.6 to 8.0.7 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;696](alam00000/bentopdf#696)
- Update common.json by [@&#8203;Stephan-P](https://github.com/Stephan-P) in [#&#8203;699](alam00000/bentopdf#699)
- Refactor modals into partials and add missing i18n keys for settings by [@&#8203;Skillkiller](https://github.com/Skillkiller) in [#&#8203;658](alam00000/bentopdf#658) ❤️
- Localize status messages and UI elements across various tools by [@&#8203;Skillkiller](https://github.com/Skillkiller) in [#&#8203;664](alam00000/bentopdf#664) ❤️
- build(deps-dev): bump vite from 8.0.7 to 8.0.8 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;705](alam00000/bentopdf#705)
- build(deps): bump postcss from 8.5.12 to 8.5.13 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;698](alam00000/bentopdf#698)
- Feature/improve custom rotate by [@&#8203;quhxl](https://github.com/quhxl) in [#&#8203;631](alam00000/bentopdf#631)
- build(deps): bump fast-xml-builder from 1.1.5 to 1.2.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;711](alam00000/bentopdf#711)
- build(deps): bump devalue from 5.6.4 to 5.8.1 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;720](alam00000/bentopdf#720)
- build(deps): bump svelte from 5.54.1 to 5.55.7 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;721](alam00000/bentopdf#721)
- build(deps): bump mermaid from 11.13.0 to 11.15.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;713](alam00000/bentopdf#713)
- build(deps-dev): bump vite from 8.0.8 to 8.0.9 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;712](alam00000/bentopdf#712)
- Update tools.json by [@&#8203;Stephan-P](https://github.com/Stephan-P) in [#&#8203;718](alam00000/bentopdf#718) ❤️
- build(deps): bump i18next-http-backend from 3.0.5 to 3.0.6 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;697](alam00000/bentopdf#697)

##### New Contributors

- [@&#8203;quhxl](https://github.com/quhxl) made their first contribution in [#&#8203;631](alam00000/bentopdf#631)  ❤️

**Full Changelog**: <alam00000/bentopdf@v2.8.4...v2.8.5>

That's it for now. Thank you for using BentoPDF. Have a great weekend! ❤️

</details>

<details>
<summary>fccview/jotty (ghcr.io/fccview/jotty)</summary>

### [`v1.24.0`](https://github.com/fccview/jotty/releases/tag/1.24.0): Stable 1.24.0

[Compare Source](fccview/jotty@1.23.0...1.24.0)

<p align="center">
  <a href="https://discord.gg/invite/mMuk2WzVZu">
    <img width="40" src="https://skills.syvixor.com/api/icons?i=discord">
  </a>
  <a href="https://www.reddit.com/r/jotty">
    <img width="40" src="https://skills.syvixor.com/api/icons?i=reddit">
  </a>
  <a href="https://t.me/jottypage">
    <img width="40" src="https://skills.syvixor.com/api/icons?i=telegram">
  </a>
  <br />
  <br />
  <i>Join our communities</i>
  <br />
</p>

***

### Changelog

I was going to do a bit more work before releasing but Nextjs ruined everything by having a shit tons of CVE and I had to be a responsible adult and fix them all. Also **disclaimer**, you'll notice a Claude icon popping in the contributors tab, that's not done by me but by a lovely contributor who actually added some seriously good improvements to this release. They used Claude quite heavily and I don't mind as I went through the code, tested and adjusted things accordingly when they weren't meeting the project standards (frankly these pull requests were almost perfect). My stance on AI is still the same, if the code is good and you reviewed it, I welcome it.

**features**

- Add a `+` button on the kanban columns to quickly create an item within a status (thank you [@&#8203;nikolai-andree](https://github.com/nikolai-andree))
- Add option to hide redundant statuses from kanban card items (settings -> personal preferences -> kanban) (thank you [@&#8203;nikolai-andree](https://github.com/nikolai-andree))
- Add indent button and numbered list button to the editor toolbar [#&#8203;503](fccview/jotty#503) (thank you [@&#8203;nikolai-andree](https://github.com/nikolai-andree) )

**bufixes**

- Fix layout issue around kanban status manager (thank you [@&#8203;nikolai-andree](https://github.com/nikolai-andree))
- Cannot archive checklists [#&#8203;499](fccview/jotty#499)
- TOC not working while editing a note [#&#8203;510](fccview/jotty#510)
- Fix diagram modals being suddenly embedded in the note body, this was caused by the recent IOS fixes, test suite didn't catch it because it technically works, it's just shit UX 😆
- Add new line at the end of notes when saving to avoid `[noeol]` on opinionated editors (e.g. vim)
- Fix timer state not persisting during changes on kanban [#&#8203;512](fccview/jotty#512)
- Fix checklist duplicate ids after file drop import [#&#8203;501](fccview/jotty#501)

**direct dependency upgrades**

- [@&#8203;excalidraw/excalidraw](https://github.com/excalidraw/excalidraw): 0.18.0 -> 0.18.1 (XSS via Mermaid/KaTeX)
- mermaid: 10.9.4 -> 10.9.6 (Gantt chart infinite loop DoS)
- next: 16.2.3 -> 16.2.6 (2x high-severity: DoS + middleware bypass)
- next-intl: 4.9.1 -> 4.9.2 (prototype pollution)
- uuid: 11.1.0 -> 11.1.1 (buffer bounds check)
- ws: 8.19.0 -> 8.20.1 (uninitialized memory disclosure)

**resolutions added/updated**

- \*\*/mermaid: 10.9.4 -> 10.9.6 (force patched version for transitive deps)
- brace-expansion: >=5.0.6 (DoS via large numeric range, pulled in by multiple deps)
- postcss: >=8.5.10 (XSS via unescaped </style>, pulled in by next)

</details>

<details>
<summary>grafana/alloy (grafana/alloy)</summary>

### [`v1.16.2`](https://github.com/grafana/alloy/releases/tag/v1.16.2)

[Compare Source](grafana/alloy@v1.16.1...v1.16.2)

##### Bug Fixes 🐛

- **ci:** Bump build image to use go v1.26.3 ([#&#8203;6334](grafana/alloy#6334)) \[backport] ([d379ce1](grafana/alloy@d379ce1)) ([@&#8203;thampiotr](https://github.com/thampiotr))
- **ci:** Update to go v1.26.3 ([#&#8203;6337](grafana/alloy#6337)) \[backport] ([d379ce1](grafana/alloy@d379ce1)) ([@&#8203;kalleep](https://github.com/kalleep))
- **loki.process:** No longer mutate rules in stage.truncate causing every config update to reload pipeline when this stage is used \[backport] ([#&#8203;6394](grafana/alloy#6394)) ([32c64cb](grafana/alloy@32c64cb)) ([@&#8203;kalleep](https://github.com/kalleep))
- **loki.process:** Potential deadlock on update with stage and receiver changes \[backport] ([#&#8203;6290](grafana/alloy#6290)) ([144e0e2](grafana/alloy@144e0e2)) ([@&#8203;kalleep](https://github.com/kalleep))
- **otelcol.exporter.awss3:** Add missing `unique_key_func_name` attribute \[backport] ([#&#8203;6193](grafana/alloy#6193)) ([928bb50](grafana/alloy@928bb50)) ([@&#8203;kalleep](https://github.com/kalleep))
- **security:** Address Critical CVE's From Scanner ([#&#8203;6232](grafana/alloy#6232)) \[backport] ([d379ce1](grafana/alloy@d379ce1)) ([@&#8203;blewis12](https://github.com/blewis12))
- **security:** Update module github.com/jackc/pgx/v5 to v5.9.2 \[SECURITY] ([#&#8203;6326](grafana/alloy#6326)) \[backport] ([d379ce1](grafana/alloy@d379ce1)) ([@&#8203;kgeckhart](https://github.com/kgeckhart))
- **security:** Update x/crypto and x/net for CVEs ([#&#8203;6336](grafana/alloy#6336)) \[backport] ([d379ce1](grafana/alloy@d379ce1)) ([@&#8203;thampiotr](https://github.com/thampiotr))
- **ui:** Reduce UI dependencies ([#&#8203;6349](grafana/alloy#6349)) \[backport] ([d379ce1](grafana/alloy@d379ce1)) ([@&#8203;jharvey10](https://github.com/jharvey10))

#### Upgrading

Read the [release notes] for specific instructions on upgrading from older versions:

[release notes]: https://grafana.com/docs/alloy/v1.16/release-notes/

#### Installation

Refer to our [installation guide] for how to install Grafana Alloy.

[installation guide]: https://grafana.com/docs/alloy/v1.16/get-started/install/

</details>

<details>
<summary>grafana/grafana (grafana/grafana)</summary>

### [`v12.4.4`](grafana/grafana@v12.4.3...v12.4.4)

[Compare Source](grafana/grafana@v12.4.3...v12.4.4)

</details>

<details>
<summary>plantuml/plantuml-server (plantuml/plantuml-server)</summary>

### [`v1.2026.5`](plantuml/plantuml-server@v1.2026.3...v1.2026.5)

[Compare Source](plantuml/plantuml-server@v1.2026.3...v1.2026.5)

### [`v1.2026.3`](plantuml/plantuml-server@v1.2026.2...v1.2026.3)

[Compare Source](plantuml/plantuml-server@v1.2026.2...v1.2026.3)

</details>

<details>
<summary>prometheus-pve/prometheus-pve-exporter (prompve/prometheus-pve-exporter)</summary>

### [`v3.9.0`](https://github.com/prometheus-pve/prometheus-pve-exporter/blob/HEAD/CHANGELOG.rst#390---2026-05-18)

[Compare Source](prometheus-pve/prometheus-pve-exporter@v3.8.3...v3.9.0)

Added

```

- Add qdevice collector (#&#8203;442)

Changed
```

- Bump paramiko from 4.0.0 to 5.0.0 ([#&#8203;441](prometheus-pve/prometheus-pve-exporter#441))
- Bump urllib2 from 2.6.3 to 2.7.0 ([#&#8203;440](prometheus-pve/prometheus-pve-exporter#440))

</details>

<details>
<summary>VictoriaMetrics/VictoriaMetrics (victoriametrics/victoria-metrics)</summary>

### [`v1.144.0`](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/tag/v1.144.0)

[Compare Source](VictoriaMetrics/VictoriaMetrics@v1.143.0...v1.144.0)

#### [v1.144.0](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/tag/v1.144.0)

Released at 2026-05-22

- FEATURE: all VictoriaMetrics components: improve logging for the `-memory.allowedBytes` flag to warn about excessively low value (less than 1MB). See issue [#&#8203;10935](VictoriaMetrics/VictoriaMetrics#10935).

- FEATURE: [vmagent](https://docs.victoriametrics.com/victoriametrics/vmagent/) and [vmalert](https://docs.victoriametrics.com/victoriametrics/vmalert/): add `basicAuth.usernameFile` command-line flags for reading basic auth username from a file, similar to the existing `basicAuth.passwordFile`. The file is re-read every second. See [#&#8203;9436](VictoriaMetrics/VictoriaMetrics#9436). Thanks to [@&#8203;kimjune01](https://github.com/kimjune01) for the contribution.

- FEATURE: `vminsert` in [VictoriaMetrics cluster](https://docs.victoriametrics.com/victoriametrics/cluster-victoriametrics/): add `clusternative.tls` `vminsert` configuration flags for [multi-level cluster setups](https://docs.victoriametrics.com/victoriametrics/cluster-victoriametrics/#multi-level-cluster-setup). See [#&#8203;10958](VictoriaMetrics/VictoriaMetrics#10958).

- FEATURE: [vmsingle](https://docs.victoriametrics.com/victoriametrics/single-server-victoriametrics/), `vminsert` in [VictoriaMetrics cluster](https://docs.victoriametrics.com/victoriametrics/cluster-victoriametrics/) and [vmagent](https://docs.victoriametrics.com/victoriametrics/vmagent/): add `-opentelemetry.labelNameUnderscoreSanitization` command-line flag to control whether to enable prepending of `key` to labels starting with `_` when `-opentelemetry.usePrometheusNaming` is enabled. See [OpenTelemetry](https://docs.victoriametrics.com/victoriametrics/integrations/opentelemetry/) docs and [#&#8203;9663](VictoriaMetrics/VictoriaMetrics#9663). Thanks to [@&#8203;andriibeee](https://github.com/andriibeee) for the contribution.

- FEATURE: [vmui](https://docs.victoriametrics.com/victoriametrics/single-server-victoriametrics/#vmui): improve the [Top Queries](https://docs.victoriametrics.com/victoriametrics/single-server-victoriametrics/#top-queries) table UI. Duration columns now display human-readable values (e.g. `1.23s`) instead of raw seconds, memory column shows human-readable sizes (e.g. `1.23 MB`), instant queries are labeled as `instant` instead of empty string, and column headers now show tooltips with descriptions. See [#&#8203;10790](VictoriaMetrics/VictoriaMetrics#10790).

- FEATURE: [vmagent](https://docs.victoriametrics.com/victoriametrics/vmagent/): drain in-memory remote write queue on shutdown within the 5-second grace period before falling back to persisting blocks to disk. See [#&#8203;9996](VictoriaMetrics/VictoriaMetrics#9996)

- FEATURE: `vminsert` in [VictoriaMetrics cluster](https://docs.victoriametrics.com/victoriametrics/cluster-victoriametrics/): Improve [slowness-based rerouting](https://docs.victoriametrics.com/victoriametrics/cluster-victoriametrics/#slowness-based-re-routing) to prevent rerouting storms under high cluster load. Previously, rerouting could cascade across storage nodes when the whole cluster was saturated, making the situation worse. Now rerouting only activates when the cluster p90 saturation is below 60%, and the slowest node is more than 20% slower than p90. See [#&#8203;10876](VictoriaMetrics/VictoriaMetrics#10876).

- FEATURE: [vmauth](https://docs.victoriametrics.com/victoriametrics/vmauth/): add `{{.MetricsAccountID}}` and `{{.MetricsProjectID}}` [JWT claim placeholders](https://docs.victoriametrics.com/victoriametrics/vmauth/#jwt-claim-based-request-templating) for use in `headers` and `url_prefix` config fields. Previously, only the combined `{{.MetricsTenant}}` (`accountID:projectID`) JWT placeholder was supported, making it impossible to configure [multitenancy via headers](https://docs.victoriametrics.com/victoriametrics/cluster-victoriametrics/#multitenancy-via-headers). See [#&#8203;10927](VictoriaMetrics/VictoriaMetrics#10927). Thanks to [@&#8203;Vinayak9769](https://github.com/Vinayak9769) for the contribution.

- FEATURE: [vmui](https://docs.victoriametrics.com/victoriametrics/single-server-victoriametrics/#vmui): display `null` values on `Raw Query` chart. `null` values can be actual `NaN` or `null` values exposed by the exporter, or [stale markers](https://docs.victoriametrics.com/victoriametrics/vmagent/#prometheus-staleness-markers). Before, vmui Raw Query was silently dropping non-numeric values. Displaying such values on the chart could improve the debugging experience. See [#&#8203;10986](VictoriaMetrics/VictoriaMetrics#10986).

- BUGFIX: [stream aggregation](https://docs.victoriametrics.com/victoriametrics/stream-aggregation/): stop emitting stale values for `quantiles(...)` outputs when a time series has no samples during the current aggregation interval. See [#&#8203;10918](VictoriaMetrics/VictoriaMetrics#10918). Thanks to [@&#8203;alexei38](https://github.com/alexei38) for the contribution.

- BUGFIX: [stream aggregation](https://docs.victoriametrics.com/victoriametrics/stream-aggregation/): extend delay on aggregation windows flush by the biggest lag among pushed samples. Before, the delay was calculated as 95th percentile across samples, which could underrepresent outliers and reject them from aggregation as "too old". See [#&#8203;10402](VictoriaMetrics/VictoriaMetrics#10402).

- BUGFIX: [vmagent](https://docs.victoriametrics.com/victoriametrics/vmagent/): fix a bug in [cardinality limiters](https://docs.victoriametrics.com/victoriametrics/vmagent/#cardinality-limiter) where series with different labels, like `{a="bc"}` and `{ab="c"}`, could be incorrectly treated as identical and dropped. See [#&#8203;10937](VictoriaMetrics/VictoriaMetrics#10937).

- BUGFIX: [vmagent](https://docs.victoriametrics.com/victoriametrics/vmagent/): hide values passed to `-remoteWrite.headers` in startup logs, `/metrics`, and `/flags`, since they can contain sensitive HTTP headers such as `Authorization` and API keys.

- BUGFIX: [vmagent](https://docs.victoriametrics.com/victoriametrics/vmagent/): hide values passed to `-remoteWrite.proxyURL` in startup logs, `/metrics`, and `/flags`, since they can contain sensitive credentials.

- BUGFIX: [vmalert](https://docs.victoriametrics.com/victoriametrics/vmalert/): hide values passed to `-remoteWrite.headers`,`remoteRead.headers`, `datasource.headers` and `notifier.headers` in startup logs, `/metrics`, and `/flags`, since they can contain sensitive HTTP headers such as `Authorization` and API keys.

- BUGFIX: `vminsert` in [VictoriaMetrics cluster](https://docs.victoriametrics.com/victoriametrics/cluster-victoriametrics/): properly establish [mtls](https://docs.victoriametrics.com/victoriametrics/cluster-victoriametrics/#mtls-protection) connection between vmstorage and vminsert. Regression was introduced in v1.130.0 release for the enterprise version of vmstorage. See [#&#8203;10972](VictoriaMetrics/VictoriaMetrics#10972).

- BUGFIX: [vmrestore](https://docs.victoriametrics.com/victoriametrics/vmrestore/): fix a bug where specifying `-storageDataPath` with a trailing slash could cause `vmrestore` to panic. See [#&#8203;10823](VictoriaMetrics/VictoriaMetrics#10823). Thanks to [@&#8203;utafrali](https://github.com/utafrali) for the contribution.

- BUGFIX: [vmagent](https://docs.victoriametrics.com/victoriametrics/vmagent/): prevent unintentional rerouting of samples to other sharding targets when one of the `-remoteWrite.url` targets with `-remoteWrite.disableOnDiskQueue` becomes blocked. Previously this could break the sharding guarantee by sending samples to wrong targets instead of dropping or retrying them. See [#&#8203;10507](VictoriaMetrics/VictoriaMetrics#10507).

- BUGFIX: [vmagent](https://docs.victoriametrics.com/victoriametrics/vmagent/): return error on startup if `-remoteWrite.disableOnDiskQueue` is not configured uniformly across all `-remoteWrite.url` targets when `-remoteWrite.shardByURL` is enabled. Either all targets must have it enabled or all must have it disabled. See [#&#8203;10507](VictoriaMetrics/VictoriaMetrics#10507).

- BUGFIX: [vmsingle](https://docs.victoriametrics.com/victoriametrics/single-server-victoriametrics/) and `vmselect` in [VictoriaMetrics cluster](https://docs.victoriametrics.com/victoriametrics/cluster-victoriametrics/): hide values passed to `vmalert.proxyURL` in startup logs, `/metrics`, and `/flags`, since they can contain sensitive HTTP headers such as `Authorization` and API keys.

- BUGFIX: [vmui](https://docs.victoriametrics.com/victoriametrics/single-server-victoriametrics/#vmui): preserve exact series values in graph tooltips instead of rounding them by significant digits. See [#&#8203;10952](VictoriaMetrics/VictoriaMetrics#10952).

- BUGFIX: all VictoriaMetrics components: fix int64 overflow when parsing [timestamp parameters](https://docs.victoriametrics.com/victoriametrics/single-server-victoriametrics/#timestamp-formats) with relative durations. See [#&#8203;10880](VictoriaMetrics/VictoriaMetrics#10880).

- BUGFIX: [vmsingle](https://docs.victoriametrics.com/victoriametrics/single-server-victoriametrics/) and `vmstorage` in [VictoriaMetrics cluster](https://docs.victoriametrics.com/victoriametrics/cluster-victoriametrics/): `-denyQueriesOutsideRetention` now also rejects queries whose end time is beyond `-futureRetention`. See [#&#8203;10879](VictoriaMetrics/VictoriaMetrics#10879).

- BUGFIX: [vmui](https://docs.victoriametrics.com/victoriametrics/single-server-victoriametrics/#vmui): add missing `__timestamp__` and `__value__` columns to CSV exported from the table view on the Query tab. See [#&#8203;10975](VictoriaMetrics/VictoriaMetrics#10975).

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My43My4yIiwidXBkYXRlZEluVmVyIjoiNDMuNzMuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsicmVub3ZhdGUiXX0=-->

Reviewed-on: https://forgejo.internal/forgejo_admin/infra-personal/pulls/90
Co-authored-by: Renovate Bot <renovatebot@forgejo.internal>
Co-committed-by: Renovate Bot <renovatebot@forgejo.internal>
dgalanberasaluce pushed a commit to dgalanberasaluce/infra-personal that referenced this pull request Jul 12, 2026
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [ghcr.io/alam00000/bentopdf-simple](https://github.com/alam00000/bentopdf) | patch | `2.8.4` → `2.8.5` |
| [ghcr.io/gchq/cyberchef](https://github.com/gchq/CyberChef) | minor | `11.0.0` → `11.1.0` |
| [jgraph/drawio](https://www.drawio.com) ([source](https://github.com/jgraph/docker-drawio)) | patch | `29.7.9` → `29.7.12` |
| [plantuml/plantuml-server](https://github.com/plantuml/plantuml-server) | patch | `v1.2026.2` → `v1.2026.6` |

---

### Release Notes

<details>
<summary>alam00000/bentopdf (ghcr.io/alam00000/bentopdf-simple)</summary>

### [`v2.8.5`](https://github.com/alam00000/bentopdf/releases/tag/v2.8.5): Bug Fixes - v2.8.5

[Compare Source](alam00000/bentopdf@v2.8.5...v2.8.5)

##### Dad Joke Of the Release

What's the easiest building to lift? A lighthouse 🤣

(This release is later than I would have liked. The past few weeks I've been under the weather and pretty burnt out, so v2.8.5 sat finished for longer than it should have. Thanks for being patient ❤️)

##### What's Changed

##### 1.  Custom Rotate

- Improved angle input handling, rotation utilities, and a smoother UX for fine-grained rotation. Thanks to [@&#8203;quhxl](https://github.com/quhxl) for the contribution.

##### 2.  Alternate & Mix Pages

- Alternate and mix pages are now in workflow builder. Fixes  [#&#8203;684](alam00000/bentopdf#684)

##### 3. Helm Chart Auto Update

- Helm chart version now auto updates with each release. Fixes [#&#8203;680](alam00000/bentopdf#680)

##### 4. New Option in Merge

- By default merge tool used to keep Keep original page labels from each file intact. Now users have the option to opt out from it via a checkbox. Fixes [#&#8203;676](alam00000/bentopdf#676)

##### Bug Fixes 🐛

- **OCR Arabic + Latin** — Fixed mixed Arabic and Latin OCR output where English text appeared as empty boxes when run alongside Arabic. Dual font loading now covers any non Latin script combined with Latin. Also fixes the bug in [#&#8203;724](alam00000/bentopdf#724)

- **HEIC in workflow** — HEIC images are now correctly accepted in the image to pdf workflow node. Fixes [#&#8203;703](alam00000/bentopdf#703)

- **Email parsing reliability** — MsgReader CJS/ESM interop fix for `.msg` files. Fixes [#&#8203;701](alam00000/bentopdf#701)

- **Sign PDF signature editor width** — Editor now fills the full available width like the rest of the tool. Fixes [#&#8203;653](alam00000/bentopdf#653)

- **PDF Compare export issue** - Now export correctly filters out instead of showing all the changes in exported PDF. Fixes [#&#8203;655](alam00000/bentopdf#655)

- *RFC 3161 error* - Now users can correctly timestamp using RFC 3161. Fixes [#&#8203;649](alam00000/bentopdf#649)

- **.mjs MIME errors on self-hosted nginx** — Vite now emits `.js` instead of `.mjs` for built assets, so PDFs no longer fail to load on self-hosted setups whose `mime.types` doesn't include a `.mjs → application/javascript` mapping. Fixes the failures reported by users on the Proxmox helper script.

##### A note on canonicals

A lot of BentoPDF users come to and use bentopdf.com directly since the whole thing runs in the browser. Over the past few months I've received complaints from people who searched for BentoPDF and ended up on someone else's self hosted instance instead of the main site. Sometimes that worked out, but more often it confused users and put unwanted traffic on a self hoster who never asked for it.

To address this, canonical URLs, hreflang, and the sitemap now default to bentopdf.com unless explicitly overridden. This only affects deployments that are exposed to the public internet. Internal and private self-hosted instances (anyone running with `ROBOTS_NOINDEX=true`) are unaffected, since search engines were never indexing those pages to begin with.

The change fixes three things at once:

1. **Self-hosters keep their bandwidth.** Public-facing self-hosted instances no longer absorb search traffic from people who were actually looking for bentopdf.com.
2. **Users land on the right site.** Search results for "BentoPDF" reliably point to bentopdf.com instead of a randomly indexed mirror.
3. **Self-hosters who want their own canonical can still claim it.** Build with `--build-arg SITE_URL=https://your-domain.com` and canonicals, sitemap, and hreflang all point at your domain. Documented in [STATIC-HOSTING.md](https://github.com/alam00000/bentopdf/blob/main/STATIC-HOSTING.md#run-your-own-seo-instance-claim-canonical-for-yourself).

##### Self-Hosting Docs

The `bentopdf-simple` was meant to be used for self hosting, while the `bentopdf` image is used on our live site. But unfortunately many users still run the `bentopdf` build

- **Self-Hosted vs Commercial builds** — Docs now clearly distinguish the `bentopdf-simple` (Self-Hosted) and `bentopdf` (Commercial) builds across the README, getting-started, docker.md, and self-hosting/index.md. Self  Hosted is the recommended default; the existing Commercial path is unchanged.
- **New "Common Issues" troubleshooting section** — Added `.mjs` MIME entries and SharedArrayBuffer / COEP-COOP entries to the self-hosting docs, with platform-specific snippets for nginx, Apache, AWS S3, and Kubernetes.

##### Looking ahead: a bundled self-host build

Something I'm looking into: bringing back a fully bundled self host image like earlier versions had. The current setup pulls the heavy AGPL libraries (PyMuPDF, Ghostscript, CoherentPDF) from jsDelivr at runtime, which works but is sometimes cumbersome for self hosters to manage. Packaging this cleanly under the dual license takes some thought, so no timeline yet. But for the self hosters who've asked about it, it's on my mind and I am working on it so there's no friction going forward.

##### A note from the developer

Translations across the 19 locales are still automated through Microsoft Translator for the bulk passes. Native-speaker corrections like the ones [@&#8203;Stephan-P](https://github.com/Stephan-P)  keeps catching are the only thing keeping short-string quality high. A Crowdin or Weblate workflow is on the roadmap so corrections reach a reviewer before they ship. Until then, if you read any of the supported languages and spot something off, a PR or even a quick issue is genuinely appreciated.

##### By the Community

- build(deps-dev): bump vite from 8.0.5 to 8.0.6 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;669](alam00000/bentopdf#669)
- build(deps): bump i18next-http-backend from 3.0.2 to 3.0.5 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;681](alam00000/bentopdf#681)
- build(deps): bump postcss from 8.5.8 to 8.5.12 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;692](alam00000/bentopdf#692)
- Update tools.json by [@&#8203;Stephan-P](https://github.com/Stephan-P) in [#&#8203;700](alam00000/bentopdf#700) ❤️
- build(deps-dev): bump vite from 8.0.6 to 8.0.7 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;696](alam00000/bentopdf#696)
- Update common.json by [@&#8203;Stephan-P](https://github.com/Stephan-P) in [#&#8203;699](alam00000/bentopdf#699)
- Refactor modals into partials and add missing i18n keys for settings by [@&#8203;Skillkiller](https://github.com/Skillkiller) in [#&#8203;658](alam00000/bentopdf#658) ❤️
- Localize status messages and UI elements across various tools by [@&#8203;Skillkiller](https://github.com/Skillkiller) in [#&#8203;664](alam00000/bentopdf#664) ❤️
- build(deps-dev): bump vite from 8.0.7 to 8.0.8 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;705](alam00000/bentopdf#705)
- build(deps): bump postcss from 8.5.12 to 8.5.13 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;698](alam00000/bentopdf#698)
- Feature/improve custom rotate by [@&#8203;quhxl](https://github.com/quhxl) in [#&#8203;631](alam00000/bentopdf#631)
- build(deps): bump fast-xml-builder from 1.1.5 to 1.2.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;711](alam00000/bentopdf#711)
- build(deps): bump devalue from 5.6.4 to 5.8.1 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;720](alam00000/bentopdf#720)
- build(deps): bump svelte from 5.54.1 to 5.55.7 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;721](alam00000/bentopdf#721)
- build(deps): bump mermaid from 11.13.0 to 11.15.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;713](alam00000/bentopdf#713)
- build(deps-dev): bump vite from 8.0.8 to 8.0.9 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;712](alam00000/bentopdf#712)
- Update tools.json by [@&#8203;Stephan-P](https://github.com/Stephan-P) in [#&#8203;718](alam00000/bentopdf#718) ❤️
- build(deps): bump i18next-http-backend from 3.0.5 to 3.0.6 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;697](alam00000/bentopdf#697)

##### New Contributors

- [@&#8203;quhxl](https://github.com/quhxl) made their first contribution in [#&#8203;631](alam00000/bentopdf#631)  ❤️

**Full Changelog**: <alam00000/bentopdf@v2.8.4...v2.8.5>

That's it for now. Thank you for using BentoPDF. Have a great weekend! ❤️

### [`v2.8.5`](https://github.com/alam00000/bentopdf/releases/tag/v2.8.5): Bug Fixes - v2.8.5

[Compare Source](alam00000/bentopdf@v2.8.4...v2.8.5)

##### Dad Joke Of the Release

What's the easiest building to lift? A lighthouse 🤣

(This release is later than I would have liked. The past few weeks I've been under the weather and pretty burnt out, so v2.8.5 sat finished for longer than it should have. Thanks for being patient ❤️)

##### What's Changed

##### 1.  Custom Rotate

- Improved angle input handling, rotation utilities, and a smoother UX for fine-grained rotation. Thanks to [@&#8203;quhxl](https://github.com/quhxl) for the contribution.

##### 2.  Alternate & Mix Pages

- Alternate and mix pages are now in workflow builder. Fixes  [#&#8203;684](alam00000/bentopdf#684)

##### 3. Helm Chart Auto Update

- Helm chart version now auto updates with each release. Fixes [#&#8203;680](alam00000/bentopdf#680)

##### 4. New Option in Merge

- By default merge tool used to keep Keep original page labels from each file intact. Now users have the option to opt out from it via a checkbox. Fixes [#&#8203;676](alam00000/bentopdf#676)

##### Bug Fixes 🐛

- **OCR Arabic + Latin** — Fixed mixed Arabic and Latin OCR output where English text appeared as empty boxes when run alongside Arabic. Dual font loading now covers any non Latin script combined with Latin. Also fixes the bug in [#&#8203;724](alam00000/bentopdf#724)

- **HEIC in workflow** — HEIC images are now correctly accepted in the image to pdf workflow node. Fixes [#&#8203;703](alam00000/bentopdf#703)

- **Email parsing reliability** — MsgReader CJS/ESM interop fix for `.msg` files. Fixes [#&#8203;701](alam00000/bentopdf#701)

- **Sign PDF signature editor width** — Editor now fills the full available width like the rest of the tool. Fixes [#&#8203;653](alam00000/bentopdf#653)

- **PDF Compare export issue** - Now export correctly filters out instead of showing all the changes in exported PDF. Fixes [#&#8203;655](alam00000/bentopdf#655)

- *RFC 3161 error* - Now users can correctly timestamp using RFC 3161. Fixes [#&#8203;649](alam00000/bentopdf#649)

- **.mjs MIME errors on self-hosted nginx** — Vite now emits `.js` instead of `.mjs` for built assets, so PDFs no longer fail to load on self-hosted setups whose `mime.types` doesn't include a `.mjs → application/javascript` mapping. Fixes the failures reported by users on the Proxmox helper script.

##### A note on canonicals

A lot of BentoPDF users come to and use bentopdf.com directly since the whole thing runs in the browser. Over the past few months I've received complaints from people who searched for BentoPDF and ended up on someone else's self hosted instance instead of the main site. Sometimes that worked out, but more often it confused users and put unwanted traffic on a self hoster who never asked for it.

To address this, canonical URLs, hreflang, and the sitemap now default to bentopdf.com unless explicitly overridden. This only affects deployments that are exposed to the public internet. Internal and private self-hosted instances (anyone running with `ROBOTS_NOINDEX=true`) are unaffected, since search engines were never indexing those pages to begin with.

The change fixes three things at once:

1. **Self-hosters keep their bandwidth.** Public-facing self-hosted instances no longer absorb search traffic from people who were actually looking for bentopdf.com.
2. **Users land on the right site.** Search results for "BentoPDF" reliably point to bentopdf.com instead of a randomly indexed mirror.
3. **Self-hosters who want their own canonical can still claim it.** Build with `--build-arg SITE_URL=https://your-domain.com` and canonicals, sitemap, and hreflang all point at your domain. Documented in [STATIC-HOSTING.md](https://github.com/alam00000/bentopdf/blob/main/STATIC-HOSTING.md#run-your-own-seo-instance-claim-canonical-for-yourself).

##### Self-Hosting Docs

The `bentopdf-simple` was meant to be used for self hosting, while the `bentopdf` image is used on our live site. But unfortunately many users still run the `bentopdf` build

- **Self-Hosted vs Commercial builds** — Docs now clearly distinguish the `bentopdf-simple` (Self-Hosted) and `bentopdf` (Commercial) builds across the README, getting-started, docker.md, and self-hosting/index.md. Self  Hosted is the recommended default; the existing Commercial path is unchanged.
- **New "Common Issues" troubleshooting section** — Added `.mjs` MIME entries and SharedArrayBuffer / COEP-COOP entries to the self-hosting docs, with platform-specific snippets for nginx, Apache, AWS S3, and Kubernetes.

##### Looking ahead: a bundled self-host build

Something I'm looking into: bringing back a fully bundled self host image like earlier versions had. The current setup pulls the heavy AGPL libraries (PyMuPDF, Ghostscript, CoherentPDF) from jsDelivr at runtime, which works but is sometimes cumbersome for self hosters to manage. Packaging this cleanly under the dual license takes some thought, so no timeline yet. But for the self hosters who've asked about it, it's on my mind and I am working on it so there's no friction going forward.

##### A note from the developer

Translations across the 19 locales are still automated through Microsoft Translator for the bulk passes. Native-speaker corrections like the ones [@&#8203;Stephan-P](https://github.com/Stephan-P)  keeps catching are the only thing keeping short-string quality high. A Crowdin or Weblate workflow is on the roadmap so corrections reach a reviewer before they ship. Until then, if you read any of the supported languages and spot something off, a PR or even a quick issue is genuinely appreciated.

##### By the Community

- build(deps-dev): bump vite from 8.0.5 to 8.0.6 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;669](alam00000/bentopdf#669)
- build(deps): bump i18next-http-backend from 3.0.2 to 3.0.5 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;681](alam00000/bentopdf#681)
- build(deps): bump postcss from 8.5.8 to 8.5.12 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;692](alam00000/bentopdf#692)
- Update tools.json by [@&#8203;Stephan-P](https://github.com/Stephan-P) in [#&#8203;700](alam00000/bentopdf#700) ❤️
- build(deps-dev): bump vite from 8.0.6 to 8.0.7 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;696](alam00000/bentopdf#696)
- Update common.json by [@&#8203;Stephan-P](https://github.com/Stephan-P) in [#&#8203;699](alam00000/bentopdf#699)
- Refactor modals into partials and add missing i18n keys for settings by [@&#8203;Skillkiller](https://github.com/Skillkiller) in [#&#8203;658](alam00000/bentopdf#658) ❤️
- Localize status messages and UI elements across various tools by [@&#8203;Skillkiller](https://github.com/Skillkiller) in [#&#8203;664](alam00000/bentopdf#664) ❤️
- build(deps-dev): bump vite from 8.0.7 to 8.0.8 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;705](alam00000/bentopdf#705)
- build(deps): bump postcss from 8.5.12 to 8.5.13 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;698](alam00000/bentopdf#698)
- Feature/improve custom rotate by [@&#8203;quhxl](https://github.com/quhxl) in [#&#8203;631](alam00000/bentopdf#631)
- build(deps): bump fast-xml-builder from 1.1.5 to 1.2.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;711](alam00000/bentopdf#711)
- build(deps): bump devalue from 5.6.4 to 5.8.1 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;720](alam00000/bentopdf#720)
- build(deps): bump svelte from 5.54.1 to 5.55.7 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;721](alam00000/bentopdf#721)
- build(deps): bump mermaid from 11.13.0 to 11.15.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;713](alam00000/bentopdf#713)
- build(deps-dev): bump vite from 8.0.8 to 8.0.9 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;712](alam00000/bentopdf#712)
- Update tools.json by [@&#8203;Stephan-P](https://github.com/Stephan-P) in [#&#8203;718](alam00000/bentopdf#718) ❤️
- build(deps): bump i18next-http-backend from 3.0.5 to 3.0.6 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;697](alam00000/bentopdf#697)

##### New Contributors

- [@&#8203;quhxl](https://github.com/quhxl) made their first contribution in [#&#8203;631](alam00000/bentopdf#631)  ❤️

**Full Changelog**: <alam00000/bentopdf@v2.8.4...v2.8.5>

That's it for now. Thank you for using BentoPDF. Have a great weekend! ❤️

</details>

<details>
<summary>gchq/CyberChef (ghcr.io/gchq/cyberchef)</summary>

### [`v11.1.0`](https://github.com/gchq/CyberChef/blob/HEAD/CHANGELOG.md#1110---2026-06-13)

[Compare Source](gchq/CyberChef@v11.0.0...v11.1.0)

This release includes a security fix (\[[#&#8203;2557](gchq/CyberChef#2557)])

- Security: Add fix, and tests, for Lorem Ipsum DoS issue \[[@&#8203;GCHQDeveloper581](https://github.com/GCHQDeveloper581)] | \[[#&#8203;2557](gchq/CyberChef#2557)]
- chore (deps): bump the patch-updates group with 4 updates  | \[[#&#8203;2552](gchq/CyberChef#2552)]
- chore (deps): bump the actions-dependencies group with 2 updates  | \[[#&#8203;2551](gchq/CyberChef#2551)]
- chore (deps): bump the docker-dependencies group with 2 updates  | \[[#&#8203;2550](gchq/CyberChef#2550)]
- chore (deps): bump protobufjs from 8.5.0 to 8.6.2 in the minor-updates group  | \[[#&#8203;2553](gchq/CyberChef#2553)]
- Security Policy Update \[[@&#8203;C85297](https://github.com/C85297)] | \[[#&#8203;2547](gchq/CyberChef#2547)]
- Fix spurious error messages generated during webpack build \[[@&#8203;GCHQDeveloper581](https://github.com/GCHQDeveloper581)] | \[[#&#8203;2545](gchq/CyberChef#2545)]
- chore (deps): bump shell-quote from 1.8.3 to 1.8.4  | \[[#&#8203;2543](gchq/CyberChef#2543)]
- Implementing ROR13 feature \[[@&#8203;Fufu-btw](https://github.com/Fufu-btw)] | \[[#&#8203;2539](gchq/CyberChef#2539)]
- New operation improvements \[[@&#8203;jl5193](https://github.com/jl5193)] \[[@&#8203;GCHQDeveloper581](https://github.com/GCHQDeveloper581)] | \[[#&#8203;1431](gchq/CyberChef#1431)]
- Npm and yarn/major version updates \[[@&#8203;GCHQDeveloper581](https://github.com/GCHQDeveloper581)] | \[[#&#8203;2527](gchq/CyberChef#2527)]
- Update README to reflect AES Decrypt changes \[[@&#8203;andreasrtv](https://github.com/andreasrtv)] | \[[#&#8203;2502](gchq/CyberChef#2502)]
- feat: add Escape Smart Characters operation \[[@&#8203;HarelKatz](https://github.com/HarelKatz)] | \[[#&#8203;2391](gchq/CyberChef#2391)]
- feat: Get AES IV from input (QoL) \[[@&#8203;andreasrtv](https://github.com/andreasrtv)] | \[[#&#8203;2471](gchq/CyberChef#2471)]
- fix: validate text encoding options \[[@&#8203;SyedIshmumAhnaf](https://github.com/SyedIshmumAhnaf)] | \[[#&#8203;2497](gchq/CyberChef#2497)]
- chore (deps): bump the minor-updates group with 5 updates \[[@&#8203;GCHQDeveloper581](https://github.com/GCHQDeveloper581)] | \[[#&#8203;2500](gchq/CyberChef#2500)]
- chore (deps): bump the patch-updates group with 2 updates  | \[[#&#8203;2499](gchq/CyberChef#2499)]
- chore (deps): bump nginxinc/nginx-unprivileged from `df0e9ed` to `0a1e718` in the docker-dependencies group  | \[[#&#8203;2498](gchq/CyberChef#2498)]
- Add remove ANSI escape codes operation \[[@&#8203;Louis-Ladd](https://github.com/Louis-Ladd)] \[[@&#8203;GCHQDeveloper581](https://github.com/GCHQDeveloper581)] | \[[#&#8203;2143](gchq/CyberChef#2143)]
- Fix option ingredients being overwriten \[[@&#8203;C85297](https://github.com/C85297)] | \[[#&#8203;2341](gchq/CyberChef#2341)]
- chore (deps): bump qs and express  | \[[#&#8203;2478](gchq/CyberChef#2478)]
- chore (deps): bump tmp from 0.2.5 to 0.2.7  | \[[#&#8203;2479](gchq/CyberChef#2479)]
- chore (deps): bump the patch-updates group across 1 directory with 6 updates  | \[[#&#8203;2463](gchq/CyberChef#2463)]
- chore (deps): bump the docker-dependencies group across 1 directory with 2 updates  | \[[#&#8203;2468](gchq/CyberChef#2468)]
- chore (deps): bump terser from 5.46.2 to 5.48.0  | \[[#&#8203;2385](gchq/CyberChef#2385)]
- Make dependabot quieter \[[@&#8203;GCHQDeveloper581](https://github.com/GCHQDeveloper581)] | \[[#&#8203;2467](gchq/CyberChef#2467)]
- update sitemap \[[@&#8203;Blank0120](https://github.com/Blank0120)] | \[[#&#8203;2443](gchq/CyberChef#2443)]
- Bump webpack-dev-server to 5.2.4 \[[@&#8203;GCHQDeveloper581](https://github.com/GCHQDeveloper581)] | \[[#&#8203;2417](gchq/CyberChef#2417)]
- Fix pgp tests \[[@&#8203;GCHQDeveloper581](https://github.com/GCHQDeveloper581)] \[[@&#8203;C85297](https://github.com/C85297)] | \[[#&#8203;2461](gchq/CyberChef#2461)]
- chore (deps): bump the patch-updates group across 1 directory with 4 updates  | \[[#&#8203;2438](gchq/CyberChef#2438)]
- chore (deps): bump docker/setup-buildx-action from 4.0.0 to 4.1.0  | \[[#&#8203;2439](gchq/CyberChef#2439)]
- chore (deps): bump docker/login-action from 4.1.0 to 4.2.0  | \[[#&#8203;2441](gchq/CyberChef#2441)]
- chore (deps): bump docker/metadata-action from 6.0.0 to 6.1.0  | \[[#&#8203;2442](gchq/CyberChef#2442)]
- update bson \[[@&#8203;Blank0120](https://github.com/Blank0120)] \[[@&#8203;GCHQDeveloper581](https://github.com/GCHQDeveloper581)] | \[[#&#8203;2425](gchq/CyberChef#2425)]
- chore (deps): bump webpack from 5.106.2 to 5.107.1  | \[[#&#8203;2428](gchq/CyberChef#2428)]
- chore (deps): bump protobufjs from 7.5.8 to 7.6.0  | \[[#&#8203;2429](gchq/CyberChef#2429)]
- chore (deps): bump sql-formatter from 15.7.4 to 15.8.0  | \[[#&#8203;2430](gchq/CyberChef#2430)]
- chore (deps): bump docker/build-push-action from 7.1.0 to 7.2.0  | \[[#&#8203;2431](gchq/CyberChef#2431)]
- Fix flaky `npm run testui` \[[@&#8203;lzandman](https://github.com/lzandman)] | \[[#&#8203;2412](gchq/CyberChef#2412)]
- Include git ref in website download zip name \[[@&#8203;C85297](https://github.com/C85297)] | \[[#&#8203;2339](gchq/CyberChef#2339)]
- Bump nginxinc/nginx-unprivileged from `808f784` to `b9f7ba1`  | \[[#&#8203;2389](gchq/CyberChef#2389)]
- Series Chart HTML Formatting fix \[[@&#8203;C85297](https://github.com/C85297)] | \[[#&#8203;2403](gchq/CyberChef#2403)]
- Parse Ethernet Frame HTML formatting fix \[[@&#8203;C85297](https://github.com/C85297)] | \[[#&#8203;2402](gchq/CyberChef#2402)]
- Parse IPv4 Header HTML formatting fix \[[@&#8203;C85297](https://github.com/C85297)] | \[[#&#8203;2401](gchq/CyberChef#2401)]
- Update chromedriver, and install corresponding chrome in workflows (fixes build) \[[@&#8203;GCHQDeveloper581](https://github.com/GCHQDeveloper581)] | \[[#&#8203;2387](gchq/CyberChef#2387)]
- chore (deps): bump [@&#8203;codemirror/view](https://github.com/codemirror/view) from 6.41.1 to 6.43.0  | \[[#&#8203;2384](gchq/CyberChef#2384)]
- chore (deps): bump globals from 17.5.0 to 17.6.0  | \[[#&#8203;2386](gchq/CyberChef#2386)]
- chore (deps): bump the patch-updates group across 1 directory with 3 updates  | \[[#&#8203;2388](gchq/CyberChef#2388)]
- \[StepSecurity] Apply security best practices \[[@&#8203;GCHQDeveloper581](https://github.com/GCHQDeveloper581)] StepSecurity Bot <bot@stepsecurity.io> | \[[#&#8203;2378](gchq/CyberChef#2378)]
- Build docker container for arm v7 as well \[[@&#8203;GCHQDeveloper581](https://github.com/GCHQDeveloper581)] | \[[#&#8203;2379](gchq/CyberChef#2379)]
- chore (deps): bump fast-uri from 3.1.0 to 3.1.2  | \[[#&#8203;2372](gchq/CyberChef#2372)]
- update bcryptjs \[[@&#8203;C85297](https://github.com/C85297)] \[[@&#8203;GCHQDeveloper581](https://github.com/GCHQDeveloper581)] | \[[#&#8203;2368](gchq/CyberChef#2368)]
- chore (deps): bump picomatch from 2.3.1 to 2.3.2  | \[[#&#8203;2370](gchq/CyberChef#2370)]
- chore (deps): bump ip-address from 10.1.0 to 10.2.0  | \[[#&#8203;2371](gchq/CyberChef#2371)]
- chore (deps): bump axios from 1.15.0 to 1.16.0  | \[[#&#8203;2369](gchq/CyberChef#2369)]
- feat(operation-wrap): add new Wrap operation to format text at specified line width \[[@&#8203;0xff1ce](https://github.com/0xff1ce)] | \[[#&#8203;1882](gchq/CyberChef#1882)]
- chore (deps): bump the patch-updates group across 1 directory with 5 updates  | \[[#&#8203;2354](gchq/CyberChef#2354)]
- chore (deps): bump docker/login-action from 3 to 4  | \[[#&#8203;2363](gchq/CyberChef#2363)]
- chore (deps): bump docker/setup-buildx-action from 3 to 4  | \[[#&#8203;2364](gchq/CyberChef#2364)]
- chore (deps): bump crazy-max/ghaction-github-pages from 3 to 5  | \[[#&#8203;2365](gchq/CyberChef#2365)]
- chore (deps): bump docker/metadata-action from 4 to 6  | \[[#&#8203;2366](gchq/CyberChef#2366)]
- chore (deps): bump docker/setup-qemu-action from 3 to 4  | \[[#&#8203;2367](gchq/CyberChef#2367)]
- Update dependabot for Node 24. \[[@&#8203;GCHQDeveloper581](https://github.com/GCHQDeveloper581)] | \[[#&#8203;2361](gchq/CyberChef#2361)]
- chore (deps): bump uuid from 13.0.0 to 14.0.0  | \[[#&#8203;2332](gchq/CyberChef#2332)]
- chore (deps): bump webpack-bundle-analyzer from 5.2.0 to 5.3.0  | \[[#&#8203;2353](gchq/CyberChef#2353)]
- Fix all zeros after 16384 bytes with Blake3 \[[@&#8203;zachbowden](https://github.com/zachbowden)] \[[@&#8203;GCHQDeveloper581](https://github.com/GCHQDeveloper581)] | \[[#&#8203;2351](gchq/CyberChef#2351)]

</details>

<details>
<summary>jgraph/docker-drawio (jgraph/drawio)</summary>

### [`v29.7.12`](jgraph/docker-drawio@v29.7.11...v29.7.12)

[Compare Source](jgraph/docker-drawio@v29.7.11...v29.7.12)

### [`v29.7.11`](jgraph/docker-drawio@v29.7.9...v29.7.11)

[Compare Source](jgraph/docker-drawio@v29.7.9...v29.7.11)

</details>

<details>
<summary>plantuml/plantuml-server (plantuml/plantuml-server)</summary>

### [`v1.2026.6`](plantuml/plantuml-server@v1.2026.5...v1.2026.6)

[Compare Source](plantuml/plantuml-server@v1.2026.5...v1.2026.6)

### [`v1.2026.5`](plantuml/plantuml-server@v1.2026.3...v1.2026.5)

[Compare Source](plantuml/plantuml-server@v1.2026.3...v1.2026.5)

### [`v1.2026.3`](plantuml/plantuml-server@v1.2026.2...v1.2026.3)

[Compare Source](plantuml/plantuml-server@v1.2026.2...v1.2026.3)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My43My4yIiwidXBkYXRlZEluVmVyIjoiNDMuNzMuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsicmVub3ZhdGUiXX0=-->

Reviewed-on: https://forgejo.internal/forgejo_admin/infra-personal/pulls/101
Co-authored-by: Renovate Bot <renovatebot@forgejo.internal>
Co-committed-by: Renovate Bot <renovatebot@forgejo.internal>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

(Feature) Improve usability of "Rotate by Custom Degrees"

2 participants