mirror of
https://github.com/Stirling-Tools/Stirling-PDF.git
synced 2026-09-03 05:10:16 +03:00
79686a3a09bc133df7822d82d413742e6feaad26
5887
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
79686a3a09 |
form field editing (#6655)
# Description of Changes Building ontop of a users draft PR for form creation tools **Fill Form** becomes a full **Form Editor**: fill, create, modify and delete AcroForm fields visually. Builds on the community form-creation draft, plus a UX/UI rework pass. - **Backend**: `/api/v1/form` endpoints — `fields-with-coordinates`, `add/modify/delete-fields`, combined `edit-fields` (one round-trip), `fill`, `extract-csv/xlsx`; supports text (multiline, comb), checkbox, dropdown, list box, radio, button actions (reset/print/URL/submit) and signature placeholders - **Create**: type palette, click-or-drag placement with snap guides, inline property editor, batch "Add N fields" - **Modify**: move/resize on the page, arrow-nudge + Delete key, X/Y/W/H inputs, staged edits/deletes with chips, discard - **Fill**: live progress + required tracking, flatten toggle, Export menu (JSON/CSV/XLSX), Ctrl/Cmd+S - **Safety**: confirm dialog before discarding staged work; empty required fields warn with "Save anyway" instead of blocking - **UI**: consistent panel skeleton (fixed header / scrolling list / pinned actions), empty states that link into Create, full i18n with plural keys [walkthrough.html](https://github.com/user-attachments/files/30508976/walkthrough.html) --- ## Checklist ### General - [ ] I have read the [Contribution Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md) - [ ] I have read the [Stirling-PDF Developer Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md) (if applicable) - [ ] I have read the [How to add new languages to Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md) (if applicable) - [ ] I have performed a self-review of my own code - [ ] My changes generate no new warnings ### Documentation - [ ] I have updated relevant docs on [Stirling-PDF's doc repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/) (if functionality has heavily changed) - [ ] I have read the section [Add New Translation Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md#add-new-translation-tags) (for new translation tags only) ### Translations (if applicable) - [ ] I ran [`scripts/counter_translation.py`](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/docs/counter_translation.md) ### UI Changes (if applicable) - [ ] Screenshots or videos demonstrating the UI changes are attached (e.g., as comments or direct attachments in the PR) ### Testing (if applicable) - [ ] I have run `task check` to verify linters, typechecks, and tests pass - [ ] I have tested my changes locally. Refer to the [Testing Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#7-testing) for more details. --------- Co-authored-by: Denys Vitali <denys@denv.it> Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> |
||
|
|
e51885b379 |
build(deps): bump step-security/harden-runner from 2.20.0 to 2.21.0 (#7623)
Bumps [step-security/harden-runner](https://github.com/step-security/harden-runner) from 2.20.0 to 2.21.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/step-security/harden-runner/releases">step-security/harden-runner's releases</a>.</em></p> <blockquote> <h2>v2.21.0</h2> <h2>What's Changed</h2> <ul> <li>Support for denied endpoints in block mode. This is included in the enterprise tier. Customers can deny outbound calls, for example, to public package registries.</li> <li>Improved Support for AWS CodeBuild GitHub Actions Runners.</li> <li>Bug fixes.</li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/step-security/harden-runner/compare/v2.20.1...v2.21.0">https://github.com/step-security/harden-runner/compare/v2.20.1...v2.21.0</a></p> <h2>v2.20.1</h2> <h2>What's Changed</h2> <ul> <li>AWS CodeBuild-hosted runner support</li> <li>Implicitly allow single-labeled (internal) domains in block-mode</li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/step-security/harden-runner/compare/v2.20.0...v2.20.1">https://github.com/step-security/harden-runner/compare/v2.20.0...v2.20.1</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/step-security/harden-runner/commit/05e31511f85b41b11d1cf0ef85d0992719546e2c"><code>05e3151</code></a> Merge pull request <a href="https://redirect.github.com/step-security/harden-runner/issues/684">#684</a> from step-security/rc-42</li> <li><a href="https://github.com/step-security/harden-runner/commit/0f37afa338f57c61ee3dfc274daca8834963d83e"><code>0f37afa</code></a> fix: ignore denied-endpoints on non-enterprise tier</li> <li><a href="https://github.com/step-security/harden-runner/commit/93b58ee491c5b6cf3a5324966fca2908f8d447f3"><code>93b58ee</code></a> fix: resolve cache host read-first and never downgrade egress policy</li> <li><a href="https://github.com/step-security/harden-runner/commit/e7399dd3e93d6c159d314af54b4704bc48abf6bc"><code>e7399dd</code></a> fix: align deny-list mode detection with agent and log when both endpoint inp...</li> <li><a href="https://github.com/step-security/harden-runner/commit/c16689f716a10cdfd9cfe22e63938b8c6c0657de"><code>c16689f</code></a> test: add denied_endpoints to Configuration fixtures and cover deny-list merge</li> <li><a href="https://github.com/step-security/harden-runner/commit/40b99cf0c7161e4dcdc6c5508927188b65028df9"><code>40b99cf</code></a> Merge pull request <a href="https://redirect.github.com/step-security/harden-runner/issues/682">#682</a> from rohan-stepsecurity/rp/feat/codebuild-self-v2</li> <li><a href="https://github.com/step-security/harden-runner/commit/fedec027a205365a7d64001a81931e4c36a1af6e"><code>fedec02</code></a> Merge branch 'rc-42' into rp/feat/codebuild-self-v2</li> <li><a href="https://github.com/step-security/harden-runner/commit/5361fb178b926b2be6df52e11ee257823821567b"><code>5361fb1</code></a> feat: add build artifacts</li> <li><a href="https://github.com/step-security/harden-runner/commit/286474fffe0b8fe7c9db855f132d04a9b48ab564"><code>286474f</code></a> feat: Support Bravo agent install on CodeBuild runners</li> <li><a href="https://github.com/step-security/harden-runner/commit/051ec05283d064bd82f41279db4f70f0717bf778"><code>051ec05</code></a> Merge pull request <a href="https://redirect.github.com/step-security/harden-runner/issues/683">#683</a> from h0x0er/jatin/deny-list</li> <li>Additional commits viewable in <a href="https://github.com/step-security/harden-runner/compare/v2.20.0...05e31511f85b41b11d1cf0ef85d0992719546e2c">compare view</a></li> </ul> </details> <br /> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> |
||
|
|
ddee690c58 |
Exclude Python virtualenvs from the Docker build context (#7658)
# Description of Changes Stirling engine docker slimming Exclude Python virtualenvs from the Docker build context Drop unused provider SDKs from the engine dependency set Retry the SQLite WAL switch when workers race on startup Build the engine image in two stages and run it unprivileged Swap voyage SDK for api call removing 200MB bloat Bundle the AI engine in the fat image Publish the AI engine as a standalone image 886MB to 295MB in docker file And Docker fat is only 230MB bigger after adding (since it already has python and some deps) --- ## Checklist ### General - [ ] I have read the [Contribution Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md) - [ ] I have read the [Stirling-PDF Developer Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md) (if applicable) - [ ] I have read the [How to add new languages to Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md) (if applicable) - [ ] I have performed a self-review of my own code - [ ] My changes generate no new warnings ### Documentation - [ ] I have updated relevant docs on [Stirling-PDF's doc repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/) (if functionality has heavily changed) - [ ] I have read the section [Add New Translation Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md#add-new-translation-tags) (for new translation tags only) ### Translations (if applicable) - [ ] I ran [`scripts/counter_translation.py`](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/docs/counter_translation.md) ### UI Changes (if applicable) - [ ] Screenshots or videos demonstrating the UI changes are attached (e.g., as comments or direct attachments in the PR) ### Testing (if applicable) - [ ] I have run `task check` to verify linters, typechecks, and tests pass - [ ] I have tested my changes locally. Refer to the [Testing Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#7-testing) for more details. |
||
|
|
158187ac46 |
Fix Documents tab in Processor (#7569)
# Description of Changes The Documents tab in the Processor is supposed to be available to all Processor users, but because the API is built on top of the Audit data, which is only for enterprise users, the API call always fails with 403. This means that it never fills the query cache, so every time you go back to the tab it has to reload all the data for a couple of seconds (and will fail again). This fixes the API so that it's available to any Processor user instead of just enterprise users. Also, the documents data was only being written to the log on an enterprise license, so I've changed it so that data is always tracked in the audit log because otherwise the Documents tab would still be useless to non-enterprise users. The Audit Log tab was also available to all Processor users, but would have the same issue where the table would never load because the API would 403 as well. I've just made the Audit Log tab disabled for non-enterprise users now. We might want to do something to signpost it a bit more that it's an enterprise-specific feature, but it's better than nothing for now. |
||
|
|
e50c3de0a9 |
Run classification locally first and only escalate an unsure verdict to the AI (#7580)
Split out of #7574 — this is the classification half, which is independent of the editor-source work and can land on its own. ## What this does - **Runs the local heuristic first and only escalates an unsure verdict to the AI.** A high-confidence local answer stands; anything less (or a file the heuristic hasn't reached yet) goes to the engine. A wrong label costs more than an engine call, so the bar is deliberately strict. - **Makes `classify` an authorable pipeline task**, so it can be used as a step like any other tool, and skips files that are already classified. - **Leaves the seeded Classification policy unowned** rather than naming a `system` placeholder that was never a real user; existing seeds are repaired on boot. ## Review feedback applied From @jbrunton96 on #7574: - **The generic runner no longer names classification.** Everything classification-specific moved into `proprietary/data/classificationPolicy.ts`, and `usePolicyAutoRun` now asks capability questions instead: `policyRewritesDocument`, `policyDeliversOutputFiles`, `policyRequiresAiEngine`, `shouldDispatchToAi`. There is no `id === "classification"` left in the runner. - **Ordering is no longer a name in the runner.** `pinClassificationLast` is gone; the runner sorts annotating policies after rewriting ones. The constraint is real: an annotating policy is non-blocking, so a rewriting one running after it forks from the pre-annotation version and drops the labels. To be straight about what this is and isn't - see "Still open" below - `policyRewritesDocument` is still keyed on the category id, not on a property each policy declares. The check moved out of the runner; it did not stop being a check on one id. - **Confidence is typed.** New `ClassificationConfidence` union in `core/types/fileContext.ts`, reused by `fileStorage`, `HeuristicConfidence`, and the trusted-verdict constant instead of being respelled at each site. - **Comments trimmed** to the repo's 2-line guideline, and a stale seeder javadoc that still claimed an internal-user owner was corrected. ## Still open, deliberately `classificationPolicy.ts` answers its capability questions with `categoryId === "classification"`. That is the same check relocated, not removed, and the module doc now says so outright. Deliberate, for two reasons: - **The concept it would be declared against is going away.** Policies are becoming pipelines with labels behind a separate enforcement layer, which removes the category the flag would live on. A capability system built on `categoryId` today gets migrated twice. - **Classification is genuinely privileged, not accidentally special.** It is the only policy with a browser-side implementation, so it can answer without the server. That is a product decision, and a local-only mode for set scenarios is planned - the flag for it should be designed with that feature, not guessed at now. The end state for the rest: an in-place output mode retires the ordering rule and `policyDeliversOutputFiles`, and a run result that can carry findings as well as files retires the remainder. Both touch the import path, which is the most delicate code in `usePolicyAutoRun` - not something to bolt on to a PR that has already been split once. Nothing is broken by leaving it. A user-built classify pipeline still gets its labels: the generic import path reads them off the returned PDF. It versions the file instead of labelling in place, and it misses the local-heuristic shortcut, so it always bills the engine. ## Testing - `classificationPolicy.test.ts` — 12 cases covering each capability and the escalation rule - Full frontend `proprietary` project: 39 files / 442 tests - `:proprietary:test` for `DefaultClassificationPolicySeederTest` + `ClassifyLabelControllerTest` - `tsc --noEmit` on core, proprietary, portal, saas, desktop, cloud --------- Co-authored-by: James Brunton <jbrunton96@gmail.com> |
||
|
|
8e7501aec1 |
build(deps): bump org.snakeyaml:snakeyaml-engine from 3.0.1 to 3.1.1 (#7655)
Bumps org.snakeyaml:snakeyaml-engine from 3.0.1 to 3.1.1. [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> |
||
|
|
dbd60d4765 |
Replace Prettier with Oxfmt (#7422)
# Description of Changes Prettier takes about 10 seconds to run over our frontend folder, but [Oxfmt](https://oxc.rs/docs/guide/usage/formatter.html) does an (almost) identical job in 0.2 seconds. This PR converts our Prettier integration to an equivalent Oxfmt integration. There's exactly 2 files in the frontend folder that Oxfmt formats differently to Prettier so it'll barely cause any disruption to the source. I've removed the `--check` option from the frontend tool models generator as part of this because we can do the same thing with Task easily enough and Oxfmt isn't directly importable like Prettier since it's a Rust binary instead of a JS library. Originally I was shelling out to Oxfmt on single-file mode to keep it all in memory but it just seemed more likely that there'd be config mismatches between that script and the task so I think it's better this way. |
||
|
|
629f501e9c |
Fix any type usages in frontend (#7617)
# Description of Changes Follow-on from #7334. Fix more `any` type usages and ban them in the linter. We're starting to get down to only difficult folders left now, so some of these fixes replace an excluded folder with a couple of individual files to reduce scope to manageable levels. There are two real behaviour changes in this PR because of bugs that were never caught due to the lack of proper typing: - In the Google Drive service, `lastModified` was always `undefined` because it should have been read via `lastModifiedUtc`, which it now is. This means that files being read from Google Drive should now accurately retain their last modified date from Drive. - In the error toasts, there was translation logic to try and make friendlier error messages, but it'd never actually fire since it relied on `i18n` being written to `globalThis`, which it never was. It now imports the singleton instead so that translation should start working. I also had to tweak the way that FitText works because it was relying on `any` typing to mix refs between different places where they weren't technically compatible but I've changed it to go via a function and the behaviour doesn't change. |
||
|
|
1df372764f |
Mobile follow-ups to #7518: tool-list search, and drop the empty overflow menu (#7660)
# Description of Changes Follow-up to #7518, picking up two mobile rough edges found while going over that branch. Two changes, one commit each. ## 1. Tool search back in the tool list (mobile) Tool search lives in the workbench bar's super search, which on mobile sits on the Workspace slide. So searching for a tool meant swiping off the tool list, typing, then swiping back. This puts a filter at the head of the tool panel on mobile. Reuses the existing `ToolSearch` component in `mode="filter"`, the same one the desktop fullscreen picker uses. Drives `setSearchQuery` on `ToolWorkflowContext`, so the query, filtering and grouped results are all existing paths. `ToolPanel` takes a new `showSearch` prop; `RightSidebar` passes `showSearch={isMobile}`. Desktop renders exactly as before. **To test:** - Open the editor at a phone-width viewport (under 1024px). - A "Search tools..." field should sit above Favourites / Recommended in the Tools pane. - Typing filters into grouped results. Clearing goes back to the compact list. - It hides once a tool is open, and comes back on the way out. - On desktop the field should not appear at all. ## 2. The mobile overflow menu opened with nothing in it `WorkbenchBarMobileActions` rendered its kebab trigger unconditionally. But every item inside is gated on `currentView === "viewer"` or `!isCustomView`. In a `custom:*` workbench both are false, so the dropdown was empty. `WorkbenchBarDesktopActions` renders nothing in that case, so this only showed on phones. Now returns `null` when neither group applies, with the two conditions named so the trigger and the items can't drift apart again. **To test:** - Phone-width viewport, load a PDF. - Open a tool with its own workbench view: Compare, Get Info report, Show JS, Validate Signature, Edit Table of Contents, or PDF Text Editor. - The kebab at the right of the workbench bar should be gone entirely, rather than opening an empty menu. - Back in the viewer or page editor it should still be there, with Print / Download / Save As / Close. |
||
|
|
5f0fe06bbc |
build(deps): bump logback from 1.6.1 to 1.6.3 (#7622)
Bumps `logback` from 1.6.1 to 1.6.3. Updates `ch.qos.logback:logback-core` from 1.6.1 to 1.6.3 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/qos-ch/logback/releases">ch.qos.logback:logback-core's releases</a>.</em></p> <blockquote> <h2>Logback 1.6.3</h2> <h1>2026-08-14 Release of logback version 1.6.3</h1> <ul> <li> <p>In response <a href="https://www.cve.org/cverecord?id=CVE-2026-19880">CVE-2026-19880</a>, <code>MDCBasedDiscriminator</code> (used by <code>SiftingAppender</code>) now strips forward and backward slashes (<code>/</code>, <code>\</code>) from MDC values before they are used as discriminating keys. This prevents path segments from escaping into destinations controlled by an attacker. When sanitisation actually changes a value, a warning is emitted; the warning is rate-limited (a small batch, then a lull of about ten minutes).</p> </li> <li> <p>Colour console support is split out into a dedicated <a href="https://logback.qos.ch/manual/appenders.html#JansiConsoleAppender"><code>JansiConsoleAppender</code></a>. It wraps stdout or stderr with Jansi so ANSI escape sequences (for example coloured patterns) render correctly on terminals that need it, notably Windows. Prefer this class over the older path described next. See the <a href="https://logback.qos.ch/manual/appenders.html#JansiConsoleAppender">appenders documentation</a>.</p> </li> <li> <p>The <code>withJansi</code> property on <code>ConsoleAppender</code> is <strong>deprecated</strong>. Existing configurations that still set <code><withJansi>true</withJansi></code> continue to work for compatibility, but new setups should use <code>JansiConsoleAppender</code> instead.</p> </li> <li> <p><code>ConsoleAppender</code> no longer treats the process console as an exclusive resource: stopping it does not close <code>System.out</code> / <code>System.err</code>. <code>JansiConsoleAppender</code> pairs each <code>AnsiConsole.systemInstall()</code> with <code>systemUninstall()</code> on stop, so repeated start/stop cycles do not leave Jansi installed or tear down streams shared with the rest of the JVM. Related behavior is covered by tests for <a href="https://redirect.github.com/qos-ch/logback/issues/1063">issues/1063</a>.</p> </li> <li> <p>Invocation throttling helpers were reworked: <code>SimpleInvocationGate</code> is renamed <code>FixedIntervalInvocationGate</code>, and <code>BatchedFixedIntervalInvocationGate</code> allows a short burst of invocations before applying a fixed lull. The sanitisation warning above uses the batched gate.</p> </li> <li> <p>The JPMS <code>module-info</code> for logback-core now exports the <code>ch.qos.logback.core.property</code> package, which had been missing from the module descriptor.</p> </li> <li> <p>A bit-wise identical binary of this version can be reproduced by building from <a href="https://github.com/qos-ch/logback">source code</a> at commit <code>e8e824dede022a6d7208b36cfa875b0d1b7772f3</code> associated with the tag <code>v_1.6.3</code>. The release was built using Java "21" 2023-10-17 LTS build 21.0.1.+12-LTS-29 under Linux Debian 11.6.</p> </li> </ul> <p>-- Sponsoring SLF4J/logback/reload4j at <a href="https://github.com/sponsors/qos-ch">https://github.com/sponsors/qos-ch</a></p> <h2>Logback 1.6.2</h2> <p><a href="https://github.com/user-attachments/assets/9ceaf157-b758-4188-815d-edfe4e1b4edd">https://github.com/user-attachments/assets/9ceaf157-b758-4188-815d-edfe4e1b4edd</a></p> <h1>2026-08-10 Release of logback version 1.6.2</h1> <ul> <li> <p>Configuration analysis now detects <em>contradictory caller-data inclusion instructions</em>. For example, an <code>AsyncAppender</code>, <code>SocketAppender</code> or <code>SMTPAppender</code> with <code>includeCallerData</code> left at the default <code>false</code> is incompatible with a layout or encoder pattern that uses a caller-data converter such as <code>%C</code>, <code>%M</code>, <code>%L</code>, <code>%F</code>, <code>%l</code> or <code>%caller</code>. At runtime those converters would print question marks and still incur extraction cost on a worker thread. Logback now emits a configuration-time warning when such instructions disagree. See <a href="https://logback.qos.ch/codes.html#callerContradiction">codes.html#callerContradiction</a> for details. This issue was reported in <a href="https://redirect.github.com/qos-ch/logback/issues/1059">issues/1059</a> by <a href="https://github.com/leeychee">leeychee</a>. The initial analysis was contributed by <a href="https://github.com/seonwooj0810">seonwoo_jung</a>.</p> </li> <li> <p>Caller-contradiction analysis can be turned off by setting the <code>logback.skipCallerContradictionAnalysis</code> variable to <code>true</code>, either as a system property (<code>-Dlogback.skipCallerContradictionAnalysis=true</code>) or as a property in the configuration file:</p> <pre lang="xml"><code><property name="logback.skipCallerContradictionAnalysis" value="true"/> </code></pre> </li> <li> <p><code>SimpleSocketServer</code> and <code>SimpleSSLSocketServer</code> now require an explicit client IP whitelist. On the command line, pass one or more allowed addresses (single IPs or CIDR ranges) after the configuration file. An empty whitelist means no clients are accepted. When embedding the server programmatically, register allowed addresses with <code>addAllowedClientAddress(String)</code> or <code>setAllowedClientAddresses(Collection)</code> before clients connect. See the documentation on <a href="https://logback.qos.ch/manual/appenders.html#simpleSocketServerClientAccess">restricting client access</a>.</p> </li> <li> <p>Added <code>ThrowableProxyVOBuilder</code> for assembling a <code>ThrowableProxyVO</code> field by field, with a corresponding <code>ThrowableProxyVO.builder()</code> entry point.</p> </li> <li> <p>Dependency analysis handlers now run their <code>postHandle</code> method after child models have been processed, so checks that depend on nested appenders (such as caller-contradiction analysis) see a complete picture.</p> </li> <li> <p>Updated several dependencies, including Angus Mail to 2.0.4 and Jetty (test) to 12.1.12.</p> </li> <li> <p>A bit-wise identical binary of this version can be reproduced by building from <a href="https://github.com/qos-ch/logback">source code</a> at commit e3d78330ad1ba024fd987fd00c3ffb9cfcdb07dc associated with the tag <code>v_1.6.2</code>. The release was built using Java "21" 2023-10-17 LTS build 21.0.1.+12-LTS-29 under Linux Debian 11.6.</p> </li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/qos-ch/logback/commit/e8e824dede022a6d7208b36cfa875b0d1b7772f3"><code>e8e824d</code></a> prepare release 1.6.3</li> <li><a href="https://github.com/qos-ch/logback/commit/761821bfaacac3a0ad44fa546cfc814429bf9312"><code>761821b</code></a> MDCBasedDiscriminator has a gated warning mechanism</li> <li><a href="https://github.com/qos-ch/logback/commit/53ed1229008d8b1902f5c234deaa07d742890879"><code>53ed122</code></a> update copyright year</li> <li><a href="https://github.com/qos-ch/logback/commit/c7e2db244671ffa916182b5da8c89579eb54a645"><code>c7e2db2</code></a> rename SimpleInvocationGate as FixedIntervalInvocationGate</li> <li><a href="https://github.com/qos-ch/logback/commit/b5aa931b096a4b0b6a9e140b74fabe7da152cbf0"><code>b5aa931</code></a> added BatchedSimpleInvocationGate</li> <li><a href="https://github.com/qos-ch/logback/commit/1f22af7686aadd25c08b4bd1e6943a906a743ad4"><code>1f22af7</code></a> add javadocs to SimpleInvocationGate</li> <li><a href="https://github.com/qos-ch/logback/commit/638ffa7e7852478b605a91b3e91238ff26f8158c"><code>638ffa7</code></a> prevent forward and backward slashes to escape to other directories</li> <li><a href="https://github.com/qos-ch/logback/commit/7d6b9a4f8c8996834c0a694f6c141705a003d7bb"><code>7d6b9a4</code></a> add missing ch.qos.logback.core.property package</li> <li><a href="https://github.com/qos-ch/logback/commit/fa25930346f35636fb6a077c1f66ebb06edd3b6f"><code>fa25930</code></a> add an extension path in ConsoleAppender for JansiConsoleAppender</li> <li><a href="https://github.com/qos-ch/logback/commit/c73b43f2011f9d4545abc7ea461172276a0a43b3"><code>c73b43f</code></a> deprecate the withJansi path</li> <li>Additional commits viewable in <a href="https://github.com/qos-ch/logback/compare/v_1.6.1...v_1.6.3">compare view</a></li> </ul> </details> <br /> Updates `ch.qos.logback:logback-classic` from 1.6.1 to 1.6.3 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/qos-ch/logback/releases">ch.qos.logback:logback-classic's releases</a>.</em></p> <blockquote> <h2>Logback 1.6.3</h2> <h1>2026-08-14 Release of logback version 1.6.3</h1> <ul> <li> <p>In response <a href="https://www.cve.org/cverecord?id=CVE-2026-19880">CVE-2026-19880</a>, <code>MDCBasedDiscriminator</code> (used by <code>SiftingAppender</code>) now strips forward and backward slashes (<code>/</code>, <code>\</code>) from MDC values before they are used as discriminating keys. This prevents path segments from escaping into destinations controlled by an attacker. When sanitisation actually changes a value, a warning is emitted; the warning is rate-limited (a small batch, then a lull of about ten minutes).</p> </li> <li> <p>Colour console support is split out into a dedicated <a href="https://logback.qos.ch/manual/appenders.html#JansiConsoleAppender"><code>JansiConsoleAppender</code></a>. It wraps stdout or stderr with Jansi so ANSI escape sequences (for example coloured patterns) render correctly on terminals that need it, notably Windows. Prefer this class over the older path described next. See the <a href="https://logback.qos.ch/manual/appenders.html#JansiConsoleAppender">appenders documentation</a>.</p> </li> <li> <p>The <code>withJansi</code> property on <code>ConsoleAppender</code> is <strong>deprecated</strong>. Existing configurations that still set <code><withJansi>true</withJansi></code> continue to work for compatibility, but new setups should use <code>JansiConsoleAppender</code> instead.</p> </li> <li> <p><code>ConsoleAppender</code> no longer treats the process console as an exclusive resource: stopping it does not close <code>System.out</code> / <code>System.err</code>. <code>JansiConsoleAppender</code> pairs each <code>AnsiConsole.systemInstall()</code> with <code>systemUninstall()</code> on stop, so repeated start/stop cycles do not leave Jansi installed or tear down streams shared with the rest of the JVM. Related behavior is covered by tests for <a href="https://redirect.github.com/qos-ch/logback/issues/1063">issues/1063</a>.</p> </li> <li> <p>Invocation throttling helpers were reworked: <code>SimpleInvocationGate</code> is renamed <code>FixedIntervalInvocationGate</code>, and <code>BatchedFixedIntervalInvocationGate</code> allows a short burst of invocations before applying a fixed lull. The sanitisation warning above uses the batched gate.</p> </li> <li> <p>The JPMS <code>module-info</code> for logback-core now exports the <code>ch.qos.logback.core.property</code> package, which had been missing from the module descriptor.</p> </li> <li> <p>A bit-wise identical binary of this version can be reproduced by building from <a href="https://github.com/qos-ch/logback">source code</a> at commit <code>e8e824dede022a6d7208b36cfa875b0d1b7772f3</code> associated with the tag <code>v_1.6.3</code>. The release was built using Java "21" 2023-10-17 LTS build 21.0.1.+12-LTS-29 under Linux Debian 11.6.</p> </li> </ul> <p>-- Sponsoring SLF4J/logback/reload4j at <a href="https://github.com/sponsors/qos-ch">https://github.com/sponsors/qos-ch</a></p> <h2>Logback 1.6.2</h2> <p><a href="https://github.com/user-attachments/assets/9ceaf157-b758-4188-815d-edfe4e1b4edd">https://github.com/user-attachments/assets/9ceaf157-b758-4188-815d-edfe4e1b4edd</a></p> <h1>2026-08-10 Release of logback version 1.6.2</h1> <ul> <li> <p>Configuration analysis now detects <em>contradictory caller-data inclusion instructions</em>. For example, an <code>AsyncAppender</code>, <code>SocketAppender</code> or <code>SMTPAppender</code> with <code>includeCallerData</code> left at the default <code>false</code> is incompatible with a layout or encoder pattern that uses a caller-data converter such as <code>%C</code>, <code>%M</code>, <code>%L</code>, <code>%F</code>, <code>%l</code> or <code>%caller</code>. At runtime those converters would print question marks and still incur extraction cost on a worker thread. Logback now emits a configuration-time warning when such instructions disagree. See <a href="https://logback.qos.ch/codes.html#callerContradiction">codes.html#callerContradiction</a> for details. This issue was reported in <a href="https://redirect.github.com/qos-ch/logback/issues/1059">issues/1059</a> by <a href="https://github.com/leeychee">leeychee</a>. The initial analysis was contributed by <a href="https://github.com/seonwooj0810">seonwoo_jung</a>.</p> </li> <li> <p>Caller-contradiction analysis can be turned off by setting the <code>logback.skipCallerContradictionAnalysis</code> variable to <code>true</code>, either as a system property (<code>-Dlogback.skipCallerContradictionAnalysis=true</code>) or as a property in the configuration file:</p> <pre lang="xml"><code><property name="logback.skipCallerContradictionAnalysis" value="true"/> </code></pre> </li> <li> <p><code>SimpleSocketServer</code> and <code>SimpleSSLSocketServer</code> now require an explicit client IP whitelist. On the command line, pass one or more allowed addresses (single IPs or CIDR ranges) after the configuration file. An empty whitelist means no clients are accepted. When embedding the server programmatically, register allowed addresses with <code>addAllowedClientAddress(String)</code> or <code>setAllowedClientAddresses(Collection)</code> before clients connect. See the documentation on <a href="https://logback.qos.ch/manual/appenders.html#simpleSocketServerClientAccess">restricting client access</a>.</p> </li> <li> <p>Added <code>ThrowableProxyVOBuilder</code> for assembling a <code>ThrowableProxyVO</code> field by field, with a corresponding <code>ThrowableProxyVO.builder()</code> entry point.</p> </li> <li> <p>Dependency analysis handlers now run their <code>postHandle</code> method after child models have been processed, so checks that depend on nested appenders (such as caller-contradiction analysis) see a complete picture.</p> </li> <li> <p>Updated several dependencies, including Angus Mail to 2.0.4 and Jetty (test) to 12.1.12.</p> </li> <li> <p>A bit-wise identical binary of this version can be reproduced by building from <a href="https://github.com/qos-ch/logback">source code</a> at commit e3d78330ad1ba024fd987fd00c3ffb9cfcdb07dc associated with the tag <code>v_1.6.2</code>. The release was built using Java "21" 2023-10-17 LTS build 21.0.1.+12-LTS-29 under Linux Debian 11.6.</p> </li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/qos-ch/logback/commit/e8e824dede022a6d7208b36cfa875b0d1b7772f3"><code>e8e824d</code></a> prepare release 1.6.3</li> <li><a href="https://github.com/qos-ch/logback/commit/761821bfaacac3a0ad44fa546cfc814429bf9312"><code>761821b</code></a> MDCBasedDiscriminator has a gated warning mechanism</li> <li><a href="https://github.com/qos-ch/logback/commit/53ed1229008d8b1902f5c234deaa07d742890879"><code>53ed122</code></a> update copyright year</li> <li><a href="https://github.com/qos-ch/logback/commit/c7e2db244671ffa916182b5da8c89579eb54a645"><code>c7e2db2</code></a> rename SimpleInvocationGate as FixedIntervalInvocationGate</li> <li><a href="https://github.com/qos-ch/logback/commit/b5aa931b096a4b0b6a9e140b74fabe7da152cbf0"><code>b5aa931</code></a> added BatchedSimpleInvocationGate</li> <li><a href="https://github.com/qos-ch/logback/commit/1f22af7686aadd25c08b4bd1e6943a906a743ad4"><code>1f22af7</code></a> add javadocs to SimpleInvocationGate</li> <li><a href="https://github.com/qos-ch/logback/commit/638ffa7e7852478b605a91b3e91238ff26f8158c"><code>638ffa7</code></a> prevent forward and backward slashes to escape to other directories</li> <li><a href="https://github.com/qos-ch/logback/commit/7d6b9a4f8c8996834c0a694f6c141705a003d7bb"><code>7d6b9a4</code></a> add missing ch.qos.logback.core.property package</li> <li><a href="https://github.com/qos-ch/logback/commit/fa25930346f35636fb6a077c1f66ebb06edd3b6f"><code>fa25930</code></a> add an extension path in ConsoleAppender for JansiConsoleAppender</li> <li><a href="https://github.com/qos-ch/logback/commit/c73b43f2011f9d4545abc7ea461172276a0a43b3"><code>c73b43f</code></a> deprecate the withJansi path</li> <li>Additional commits viewable in <a href="https://github.com/qos-ch/logback/compare/v_1.6.1...v_1.6.3">compare view</a></li> </ul> </details> <br /> Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> |
||
|
|
d34b9f0256 |
build(deps): bump license-report from 6.8.2 to 6.8.5 in /frontend (#7645)
Bumps [license-report](https://github.com/bepo65/license-report) from 6.8.2 to 6.8.5. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/BePo65/license-report/blob/main/CHANGELOG.md">license-report's changelog</a>.</em></p> <blockquote> <h2><a href="https://github.com/bepo65/license-report/compare/v6.8.4...v6.8.5">6.8.5</a> (2026-05-28)</h2> <h2><a href="https://github.com/kessler/license-report/compare/v6.8.3...v6.8.4">6.8.4</a> (2026-04-02)</h2> <h2><a href="https://github.com/kessler/license-report/compare/v6.8.1...v6.8.3">6.8.3</a> (2026-04-01)</h2> <h3>Bug Fixes</h3> <ul> <li>update packages to fix dependabot security warnings (<a href="https://github.com/kessler/license-report/commit/90d39679d5c458c7d59545bb06b61c32a16bf746">90d3967</a>)</li> <li>update packages to fix github dependabot security warnings (<a href="https://github.com/kessler/license-report/commit/02ab3bcd7baaa7985ed3a3164aef5b66a3c58ad0">02ab3bc</a>)</li> </ul> <h2><a href="https://github.com/kessler/license-report/compare/v6.8.0...v6.8.1">6.8.1</a> (2025-10-22)</h2> <h3>Bug Fixes</h3> <ul> <li>update packages to fix security warnings (<a href="https://github.com/kessler/license-report/commit/de28bd74a0c98b24b09470fd48ce4324fa3e193b">de28bd7</a>)</li> </ul> <h2><a href="https://github.com/kessler/license-report/compare/v6.7.2...v6.8.0">6.8.0</a> (2025-05-23)</h2> <h3>Features</h3> <ul> <li>enable usage of .npmrc file (solves issue <a href="https://redirect.github.com/kessler/license-report/issues/205">#205</a>) (<a href="https://redirect.github.com/kessler/license-report/issues/208">#208</a>) (<a href="https://github.com/kessler/license-report/commit/935608872386d531226e41bb90a4f1b71148aac5">9356088</a>)</li> </ul> <h2><a href="https://github.com/kessler/license-report/compare/v6.7.1...v6.7.2">6.7.2</a> (2025-03-01)</h2> <h3>Bug Fixes</h3> <ul> <li>replace path.join for uri with own function (<a href="https://github.com/kessler/license-report/commit/2f30a8bae9050fc2a75c228f5eea10cf91a88ab5">2f30a8b</a>)</li> </ul> <h2><a href="https://github.com/kessler/license-report/compare/v6.7.0...v6.7.1">6.7.1</a> (2024-12-10)</h2> <h2><a href="https://github.com/kessler/license-report/compare/v6.6.1...v6.7.0">6.7.0</a> (2024-09-13)</h2> <h3>Features</h3> <ul> <li>use properties of object entries as custom field (<a href="https://redirect.github.com/kessler/license-report/issues/194">#194</a>) (<a href="https://github.com/kessler/license-report/commit/d9519b23d4cdf11c8659c28644eb4fe206df1b5a">d9519b2</a>)</li> </ul> <h2><a href="https://github.com/kessler/license-report/compare/v6.6.0...v6.6.1">6.6.1</a> (2024-08-02)</h2> <h2><a href="https://github.com/kessler/license-report/compare/v6.5.1...v6.6.0">6.6.0</a> (2024-06-23)</h2> <h3>Features</h3> <ul> <li>change the project from 'default' to named exports (<a href="https://github.com/kessler/license-report/commit/1e526eb2ebd4395a45473e588a6d3e774fc9dd0d">1e526eb</a>)</li> </ul> <h2><a href="https://github.com/ironSource/license-report/compare/v6.5.0...v6.5.1">6.5.1</a> (2024-04-26)</h2> <h2><a href="https://github.com/ironSource/license-report/compare/v6.4.0...v6.5.0">6.5.0</a> (2023-10-09)</h2> <h3>Features</h3> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/BePo65/license-report/commit/a3bc6e5487f833629372a7ee9971dee94de765bd"><code>a3bc6e5</code></a> Merge pull request <a href="https://redirect.github.com/bepo65/license-report/issues/262">#262</a> from BePo65/pu/create-release</li> <li><a href="https://github.com/BePo65/license-report/commit/f68eb4be91802b095b033407b1147cf5af1bc9f1"><code>f68eb4b</code></a> chore(release): 6.8.5</li> <li><a href="https://github.com/BePo65/license-report/commit/97767e43ee578aa97696a58d78432f6cf20d1649"><code>97767e4</code></a> Merge pull request <a href="https://redirect.github.com/bepo65/license-report/issues/250">#250</a> from BePo65/dependabot/github_actions/actions/stale-1...</li> <li><a href="https://github.com/BePo65/license-report/commit/5aa73e676f80f3bb5d9db535433fc8a6cb8ee6ef"><code>5aa73e6</code></a> build(deps): bump actions/stale from 10.2.0 to 10.3.0</li> <li><a href="https://github.com/BePo65/license-report/commit/b14534d2f366c69b9617dda21e8a0ab16301c255"><code>b14534d</code></a> Merge pull request <a href="https://redirect.github.com/bepo65/license-report/issues/261">#261</a> from BePo65/pu/update-gh-workflow-stale</li> <li><a href="https://github.com/BePo65/license-report/commit/1acbb74b7ca80c12a9308da78f309e749d926bcf"><code>1acbb74</code></a> build: update actions/stale to v 10.2.0 and switch to double quotes</li> <li><a href="https://github.com/BePo65/license-report/commit/97d384bcecda69631e824b921bcc81d993e91934"><code>97d384b</code></a> Revert "chore(release): 6.8.5"</li> <li><a href="https://github.com/BePo65/license-report/commit/3ed874213f6920c69c6d3566dfe86d05142264c5"><code>3ed8742</code></a> Merge pull request <a href="https://redirect.github.com/bepo65/license-report/issues/260">#260</a> from BePo65/pu/change-ownership</li> <li><a href="https://github.com/BePo65/license-report/commit/5dd5be3b9f7eaa47869bf1ae675a5635647e0ecd"><code>5dd5be3</code></a> chore(release): 6.8.5</li> <li><a href="https://github.com/BePo65/license-report/commit/b0851a8c7df87a956e1b1cf32790ed9486976e57"><code>b0851a8</code></a> docs: changes caused by transfer of ownership</li> <li>Additional commits viewable in <a href="https://github.com/bepo65/license-report/compare/v6.8.2...v6.8.5">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> |
||
|
|
e9a9dbf644 |
fix(desktop): inset macOS and Linux app icons to platform icon grids (#7646)
# Description of Changes
The macOS Dock icon renders noticeably larger than every other app. The
cause is that
`icon.icns` was **100% full-bleed** - the red rounded square filled all
1024x1024 with zero
margin. macOS does not mask or inset legacy `.icns` icons, so the
artwork has to carry Apple's
grid itself: an **824x824 body centred on a 1024x1024 canvas**.
Full-bleed therefore rendered
**24% wider and 54% larger in area** than its neighbours.
Linux had the same defect for the same reason - the hicolor PNGs were
94.9-100% full-bleed,
and GNOME's HIG says an app icon is drawn within the canvas but must not
fill it (~10% margin,
so a body around 80%). Those small existing margins were resampling
artifacts, not padding.
Windows is deliberately **left full-bleed**. Microsoft imposes no inset:
target-size assets are
drawn without tile padding and the taskbar simply scales the bitmap into
the slot. `app.ico` is
a pure rename here, byte-identical to before.
## What changed
Icons are now split per platform, since the three platforms disagree
about how much of the
canvas the artwork may fill:
| Path | Owner | Treatment |
| --- | --- | --- |
| `icons/macos/app.icns` | `dmg`, `app` | 824/1024 Apple grid |
| `icons/macos/app-512.png` | build-time only | see note below |
| `icons/linux/app-{16..512}.png` | `deb`, `rpm`, `appimage` | ~10%
margin, KDE's small-size exception at 16/32 |
| `icons/windows/app.ico` | `msi`, NSIS | unchanged, full-bleed |
Linux is selected by a new `tauri.linux.conf.json`. Tauri merges
platform configs with
JSON Merge Patch (RFC 7396), so `bundle.icon` is **replaced wholesale**
rather than appended.
## Notes for reviewers
- **`icons/macos/app-512.png` is build ballast, not a real asset.**
`tauri-codegen` requires a
PNG in the icon list for every non-Windows target, with a hardcoded
fallback to
`icons/icon.png` - a file this PR deletes. Without it the build fails.
It is embedded as
`default_window_icon`, which tao's macOS backend discards
(`set_window_icon` there is a no-op:
"macOS doesn't have window icons"). Nothing renders it.
- **Linux icon order matters.** The bundler derives the hicolor
directory from each PNG's real
pixel dimensions, so `app-128.png` lands in `128x128/`. `app-512.png` is
listed first because
the first PNG in the list also becomes the window icon, which GTK does
honour.
- **`.imgbotconfig` had to be repointed.** Its previous entry named
`icons/icon.png`, a path this
PR deletes. That exclusion is load-bearing: ImgBot once optimised the
icon to an indexed
palette and `tauri::generate_context!()` rejects non-RGBA icons,
breaking the desktop build
(#6990). All 15 generated PNGs, including the eight inside the `.icns`,
are verified colour
type 6.
- **Not fixed here:** our corner radius is 14.3% of the body where macOS
and GNOME neighbours sit
near 22%, so the icon still reads squarer than its neighbours. That is a
brand-silhouette
decision rather than the sizing bug, so it was left alone.
- The 15 pre-existing unused assets (`Square*Logo.png`, `mstile-*`,
`android-chrome-*`,
`android/`, `ios/`) are untouched. No configured bundle target consumes
them.
## Verification
`task check` was **not** run - this PR touches no Java, TypeScript or
engine Python, so it
cannot exercise the change. What was verified directly instead:
- Simulated the RFC 7396 merge and Tauri's `find_icon` resolution per
platform: Windows resolves
to `app.ico`, macOS to `app.icns` plus the stub PNG, Linux to its own
six PNGs. Every path exists.
- Both configs validate against the bundled
`@tauri-apps/cli/config.schema.json`, base and merged.
- Every PNG's real dimensions match its filename, and every body
measures exactly its nominal
inset (410/512, 154/192, 102/128, 52/64, 28/32, 14/16).
- An overlay diff of the new macOS body against the old artwork shows
only 1px antialiasing
hairlines - the mark itself is unchanged, only inset.
- Pre-commit hooks pass.
---
## Checklist
### General
- [x] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [x] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md)
(if applicable)
- [x] I have performed a self-review of my own code
- [x] My changes generate no new warnings
### Documentation
- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)
### Translations (if applicable)
- [ ] I ran
[`scripts/counter_translation.py`](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/docs/counter_translation.md)
### UI Changes (if applicable)
- [ ] Screenshots or videos demonstrating the UI changes are attached
(e.g., as comments or direct attachments in the PR)
### Testing (if applicable)
- [ ] I have run `task check` to verify linters, typechecks, and tests
pass
- [x] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#7-testing)
for more details.
|
||
|
|
207410b50e |
build(deps): bump astral-sh/setup-uv from 9.0.0 to 10.0.1 (#7624)
Bumps [astral-sh/setup-uv](https://github.com/astral-sh/setup-uv) from 9.0.0 to 10.0.1. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/astral-sh/setup-uv/releases">astral-sh/setup-uv's releases</a>.</em></p> <blockquote> <h2>v10.0.1 🌈 Tolerate transient manifest timeouts</h2> <h2>Changes</h2> <p>Thank you <a href="https://github.com/arguile"><code>@arguile</code></a>- for making this action more resilient.</p> <h2>🐛 Bug fixes</h2> <ul> <li>Tolerate transient manifest timeouts <a href="https://github.com/arguile"><code>@arguile</code></a>- (<a href="https://redirect.github.com/astral-sh/setup-uv/issues/1016">#1016</a>)</li> </ul> <h2>🧰 Maintenance</h2> <ul> <li>chore: update known checksums for 0.12.4 @<a href="https://github.com/apps/github-actions">github-actions[bot]</a> (<a href="https://redirect.github.com/astral-sh/setup-uv/issues/1017">#1017</a>)</li> </ul> <h2>📚 Documentation</h2> <ul> <li>docs: update version references to v10.0.0 @<a href="https://github.com/apps/github-actions">github-actions[bot]</a> (<a href="https://redirect.github.com/astral-sh/setup-uv/issues/1014">#1014</a>)</li> </ul> <h2>v10.0.0 🌈 Disable automatic caching for sensitive events and new QOL features</h2> <h2>Changes</h2> <p>Another breaking release, directly after v9.0.0 but we think the added security justifies that.</p> <h3>Extra security by default</h3> <p>If you use the default <code>enable-cache: auto</code> this will now <strong>DISABLE THE CACHE</strong> to protect against cache poisoning for the following events:</p> <ul> <li><code>pull_request_target</code></li> <li><code>workflow_run</code></li> <li><code>release</code></li> </ul> <p>You can read the full reasoning in <a href="https://redirect.github.com/astral-sh/setup-uv/issues/984">astral-sh/setup-uv#984</a></p> <h3><code>version: latest-known</code></h3> <pre lang="yaml"><code>- name: Install the latest version of uv known to setup-uv uses: astral-sh/setup-uv@v10.0.0 with: version: "latest-known" </code></pre> <p>This will now install the latest version with a checksum that is known by this action. The <a href="https://github.com/astral-sh/setup-uv/blob/4f6036f71cec78afb113b323f220c9185d983c12/src/download/checksum/known-checksums.ts">known <code>uv</code> checksums</a> are automatically updated but will take a release of this action to take effect. You won't be always using the latest & greatest but you will have an extra level of security.</p> <h3>Read python version from <code>.tool-versions</code></h3> <pre lang="yaml"><code>- name: Install uv based on the version defined in .tool-versions and also set python uses: astral-sh/setup-uv@v10.0.0 with: version-file: "pyproject.toml" </tr></table> </code></pre> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/astral-sh/setup-uv/commit/20cfd1bf945f4377ade1205e4dbc17946fc9a30d"><code>20cfd1b</code></a> chore: update known checksums for 0.12.4 (<a href="https://redirect.github.com/astral-sh/setup-uv/issues/1017">#1017</a>)</li> <li><a href="https://github.com/astral-sh/setup-uv/commit/d73a0cab66a532d7afa440d9df4a67ea9fe65a30"><code>d73a0ca</code></a> Tolerate transient manifest timeouts (<a href="https://redirect.github.com/astral-sh/setup-uv/issues/1016">#1016</a>)</li> <li><a href="https://github.com/astral-sh/setup-uv/commit/ae3b92d1bdb308a10adfe7b8f408e5cc8c30f3f6"><code>ae3b92d</code></a> docs: update version references to v10.0.0 (<a href="https://redirect.github.com/astral-sh/setup-uv/issues/1014">#1014</a>)</li> <li><a href="https://github.com/astral-sh/setup-uv/commit/ae62891fec2bb8e7d6c99fc78c9fec3a63790f8d"><code>ae62891</code></a> chore(deps): roll up Dependabot updates (<a href="https://redirect.github.com/astral-sh/setup-uv/issues/1013">#1013</a>)</li> <li><a href="https://github.com/astral-sh/setup-uv/commit/f9cdb47d487aee2be8925d1e57290177ad9e1ac2"><code>f9cdb47</code></a> Reject paths in .tool-versions (<a href="https://redirect.github.com/astral-sh/setup-uv/issues/1007">#1007</a>)</li> <li><a href="https://github.com/astral-sh/setup-uv/commit/4f6036f71cec78afb113b323f220c9185d983c12"><code>4f6036f</code></a> Require pull requests for Dependabot rollups (<a href="https://redirect.github.com/astral-sh/setup-uv/issues/1005">#1005</a>)</li> <li><a href="https://github.com/astral-sh/setup-uv/commit/8d6402c9b71205b2d8d0b82de531d8fed8430182"><code>8d6402c</code></a> chore(deps): roll up Dependabot updates (<a href="https://redirect.github.com/astral-sh/setup-uv/issues/1004">#1004</a>)</li> <li><a href="https://github.com/astral-sh/setup-uv/commit/46f427bd47c794e99536b75ffaa9f27602425027"><code>46f427b</code></a> Read Python version from .tool-versions (<a href="https://redirect.github.com/astral-sh/setup-uv/issues/996">#996</a>)</li> <li><a href="https://github.com/astral-sh/setup-uv/commit/8ed89c51143f65ea13eaba62db51dbb8ea52d0a3"><code>8ed89c5</code></a> ci: pin Alpine container image (<a href="https://redirect.github.com/astral-sh/setup-uv/issues/995">#995</a>)</li> <li><a href="https://github.com/astral-sh/setup-uv/commit/8473c7fea42cdfd540f4b01317a17ac5f54126ae"><code>8473c7f</code></a> chore(deps): roll up Dependabot updates (<a href="https://redirect.github.com/astral-sh/setup-uv/issues/994">#994</a>)</li> <li>Additional commits viewable in <a href="https://github.com/astral-sh/setup-uv/compare/c771a70e6277c0a99b617c7a806ffedaca235ff9...20cfd1bf945f4377ade1205e4dbc17946fc9a30d">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> |
||
|
|
63ff3afb41 | fix: restrict share link route tokens to UUID length (#7626) | ||
|
|
4457260c60 |
Make the editor and settings menu mobile friendly-er (#7518)
Co-authored-by: EthanHealy01 <80844253+EthanHealy01@users.noreply.github.com> |
||
|
|
41e4b67f1d |
build(deps): bump the simple-java-mail group across 2 directories with 2 updates (#7621)
Bumps the simple-java-mail group with 1 update in the / directory: [org.simplejavamail:simple-java-mail](https://github.com/bbottema/simple-java-mail). Bumps the simple-java-mail group with 1 update in the /app/common directory: [org.simplejavamail:simple-java-mail](https://github.com/bbottema/simple-java-mail). Updates `org.simplejavamail:simple-java-mail` from 9.3.1 to 9.3.2 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/bbottema/simple-java-mail/releases">org.simplejavamail:simple-java-mail's releases</a>.</em></p> <blockquote> <h2>v9.3.2</h2> <p>Fixed <a href="https://redirect.github.com/bbottema/simple-java-mail/issues/702">#702</a>: clarified that <code>RecipientBuilder</code> accepts one address, while <code>RecipientsBuilder</code> handles comma- or semicolon-delimited address lists; see the <a href="https://www.simplejavamail.org/features.html#section-recipient-builders">recipient builder examples</a>.</p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/bbottema/simple-java-mail/blob/master/RELEASE_HISTORY.md">org.simplejavamail:simple-java-mail's changelog</a>.</em></p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/bbottema/simple-java-mail/commit/982007485db7a5397e7c2782bfc296c530636a14"><code>9820074</code></a> released 9.3.2 [skip ci]</li> <li><a href="https://github.com/bbottema/simple-java-mail/commit/12013d9057026ab2a634f5cfa8adf584653e7a89"><code>12013d9</code></a> docs(release): prepare 9.3.2 release notes</li> <li><a href="https://github.com/bbottema/simple-java-mail/commit/8746cffb54b0957b667a3fca7bd2e199611dfbbd"><code>8746cff</code></a> fix(recipients): clarify single-address parameter (<a href="https://redirect.github.com/bbottema/simple-java-mail/issues/702">#702</a>)</li> <li>See full diff in <a href="https://github.com/bbottema/simple-java-mail/compare/9.3.1...9.3.2">compare view</a></li> </ul> </details> <br /> Updates `org.simplejavamail:outlook-module` from 9.3.1 to 9.3.2 Updates `org.simplejavamail:simple-java-mail` from 9.3.1 to 9.3.2 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/bbottema/simple-java-mail/releases">org.simplejavamail:simple-java-mail's releases</a>.</em></p> <blockquote> <h2>v9.3.2</h2> <p>Fixed <a href="https://redirect.github.com/bbottema/simple-java-mail/issues/702">#702</a>: clarified that <code>RecipientBuilder</code> accepts one address, while <code>RecipientsBuilder</code> handles comma- or semicolon-delimited address lists; see the <a href="https://www.simplejavamail.org/features.html#section-recipient-builders">recipient builder examples</a>.</p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/bbottema/simple-java-mail/blob/master/RELEASE_HISTORY.md">org.simplejavamail:simple-java-mail's changelog</a>.</em></p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/bbottema/simple-java-mail/commit/982007485db7a5397e7c2782bfc296c530636a14"><code>9820074</code></a> released 9.3.2 [skip ci]</li> <li><a href="https://github.com/bbottema/simple-java-mail/commit/12013d9057026ab2a634f5cfa8adf584653e7a89"><code>12013d9</code></a> docs(release): prepare 9.3.2 release notes</li> <li><a href="https://github.com/bbottema/simple-java-mail/commit/8746cffb54b0957b667a3fca7bd2e199611dfbbd"><code>8746cff</code></a> fix(recipients): clarify single-address parameter (<a href="https://redirect.github.com/bbottema/simple-java-mail/issues/702">#702</a>)</li> <li>See full diff in <a href="https://github.com/bbottema/simple-java-mail/compare/9.3.1...9.3.2">compare view</a></li> </ul> </details> <br /> Updates `org.simplejavamail:outlook-module` from 9.3.1 to 9.3.2 Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> |
||
|
|
1cb914023c |
fix: allow anonymous access to /invite/:token accept page (#7612)
## Problem In the self-hosted build with login enabled, admin-generated invite links point to the SPA route `/invite/<token>`, but that route is not covered by the anonymous whitelist. Anonymous users get 401 / redirected to `/login` before the React app can mount - even though the APIs the page calls (`/api/v1/invite/validate`, `/api/v1/invite/accept`) are already whitelisted. Since accepting an invite is how a *new* account is created, requiring authentication first makes the feature unusable. ## Fix Add `INVITE_LINK_PATTERN` (`^/invite/[^/]+/?$`) in `RequestUriUtils.java`, matched at the end of `isPublicAuthEndpoint()` - mirroring the existing `SHARE_LINK_PATTERN` handling. The invite data APIs remain protected by their own token validation; only the SPA bootstrap page becomes anonymously reachable. ## Tests Added unit tests in `RequestUriUtilsTest.java` mirroring the share-link tests: - `/invite/<token>` (with/without trailing slash, with context path) ? public - bare `/invite` and `/invite/` ? NOT public (token segment required) - `/invite/<token>/foo` nested paths ? NOT public - `/inviteX` prefix over-match ? NOT public ## Verification Pattern behavior validated against all test cases above. Live-tested on 2.14.3 self-hosted: anonymous `GET /invite/<token>` returned 401 before the fix; the whitelisted accept flow itself (`validate` + `accept` APIs) works anonymously end-to-end. |
||
|
|
f5cf5f1077 |
Update Frontend 3rd Party Licenses (#7616)
Auto-generated by stirlingbot[bot] This PR updates the frontend license report based on changes to package.json dependencies. Signed-off-by: stirlingbot[bot] <stirlingbot[bot]@users.noreply.github.com> Co-authored-by: stirlingbot[bot] <195170888+stirlingbot[bot]@users.noreply.github.com> |
||
|
|
7fb29d002d |
deps(frontend): upgrade i18next ecosystem to v26 (#7356)
# Description of Changes - Upgraded `i18next` to 26.3.6. - Upgraded `react-i18next` to 17.0.11. - Upgraded `i18next-browser-languagedetector` to 8.2.1. - Replaced the removed `initImmediate` option with `initAsync`. - Verified compatibility with the updated `<Trans>` behavior and language detector APIs. - No translation changes were required because all `<Trans>` usages use explicit `i18nKey` values. --- ## Checklist ### General - [ ] I have read the [Contribution Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md) - [ ] I have read the [Stirling-PDF Developer Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md) (if applicable) - [ ] I have read the [How to add new languages to Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md) (if applicable) - [ ] I have performed a self-review of my own code - [ ] My changes generate no new warnings ### Documentation - [ ] I have updated relevant docs on [Stirling-PDF's doc repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/) (if functionality has heavily changed) - [ ] I have read the section [Add New Translation Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md#add-new-translation-tags) (for new translation tags only) ### Translations (if applicable) - [ ] I ran [`scripts/counter_translation.py`](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/docs/counter_translation.md) ### UI Changes (if applicable) - [ ] Screenshots or videos demonstrating the UI changes are attached (e.g., as comments or direct attachments in the PR) ### Testing (if applicable) - [ ] I have run `task check` to verify linters, typechecks, and tests pass - [ ] I have tested my changes locally. Refer to the [Testing Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#7-testing) for more details. |
||
|
|
5f9c396fdd | test: remove PdfUaBenchmarkTest (#7613) | ||
|
|
e092b487ec |
Update Backend 3rd Party Licenses (#7608)
Auto-generated by stirlingbot[bot] This PR updates the backend license report based on dependency changes. Signed-off-by: stirlingbot[bot] <stirlingbot[bot]@users.noreply.github.com> Co-authored-by: stirlingbot[bot] <195170888+stirlingbot[bot]@users.noreply.github.com> |
||
|
|
a7c6fa6ef6 |
build(deps): bump io.swagger.core.v3:swagger-core-jakarta from 2.2.46 to 2.2.53 (#7526)
Bumps io.swagger.core.v3:swagger-core-jakarta from 2.2.46 to 2.2.53. [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> |
||
|
|
4e5b1102b6 |
refactor(search): improve TextInput clear button styling and add component unit tests (#7578)
# Description of Changes FIxes minor stylistic problem about the search bar. Mainly the X and the spacing on the result's icons vs text. ### New <img width="1594" height="600" alt="image" src="https://github.com/user-attachments/assets/f3710cad-f1a6-4aa1-9c2a-f3f474fd2dd6" /> ### Old <img width="1584" height="618" alt="image" src="https://github.com/user-attachments/assets/2d9c26a8-2d68-4d86-9d51-b12f90b17fe0" /> <!-- Please provide a summary of the changes, including: - What was changed - Why the change was made - Any challenges encountered Closes #(issue_number) --> --- ## Checklist ### General - [X] I have read the [Contribution Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md) - [X] I have read the [Stirling-PDF Developer Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md) (if applicable) - [ ] I have read the [How to add new languages to Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md) (if applicable) - [X] I have performed a self-review of my own code - [X] My changes generate no new warnings ### Documentation - [ ] I have updated relevant docs on [Stirling-PDF's doc repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/) (if functionality has heavily changed) - [ ] I have read the section [Add New Translation Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md#add-new-translation-tags) (for new translation tags only) ### Translations (if applicable) - [ ] I ran [`scripts/counter_translation.py`](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/docs/counter_translation.md) ### UI Changes (if applicable) - [ ] Screenshots or videos demonstrating the UI changes are attached (e.g., as comments or direct attachments in the PR) ### Testing (if applicable) - [X] I have run `task check` to verify linters, typechecks, and tests pass - [X] I have tested my changes locally. Refer to the [Testing Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#7-testing) for more details. |
||
|
|
b3acdc4aab |
build(deps): bump actions/setup-java from 5.2.0 to 5.7.0 (#7530)
Bumps [actions/setup-java](https://github.com/actions/setup-java) from 5.2.0 to 5.7.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/actions/setup-java/releases">actions/setup-java's releases</a>.</em></p> <blockquote> <h2>v5.7.0</h2> <h2>What's Changed</h2> <ul> <li>Fix npm audit failures on releases/v5 by <a href="https://github.com/brunoborges"><code>@brunoborges</code></a> in <a href="https://redirect.github.com/actions/setup-java/pull/1154">actions/setup-java#1154</a></li> <li>Backport <a href="https://redirect.github.com/actions/setup-java/issues/1151">#1151</a>: Fix missing wrapper cache distributions by <a href="https://github.com/brunoborges"><code>@brunoborges</code></a> in <a href="https://redirect.github.com/actions/setup-java/pull/1153">actions/setup-java#1153</a></li> <li>Deprecate legacy Adopt distributions in v5 by <a href="https://github.com/brunoborges"><code>@brunoborges</code></a> in <a href="https://redirect.github.com/actions/setup-java/pull/1186">actions/setup-java#1186</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/setup-java/compare/v5.6.0...v5.7.0">https://github.com/actions/setup-java/compare/v5.6.0...v5.7.0</a></p> <h2>v5.6.0</h2> <h2>What's Changed</h2> <ul> <li>Backport to v5: Add Maven compiler problem matcher for javac diagnostics by <a href="https://github.com/brunoborges"><code>@brunoborges</code></a> in <a href="https://redirect.github.com/actions/setup-java/pull/1087">actions/setup-java#1087</a></li> <li>feat: expose cache-primary-key output (<a href="https://redirect.github.com/actions/setup-java/issues/597">#597</a>) [v5 backport] by <a href="https://github.com/brunoborges"><code>@brunoborges</code></a> in <a href="https://redirect.github.com/actions/setup-java/pull/1089">actions/setup-java#1089</a></li> <li>dist: Cover Tencent Kona JDK 25 (<a href="https://redirect.github.com/actions/setup-java/issues/1108">#1108</a>) [v5 backport] by <a href="https://github.com/brunoborges"><code>@brunoborges</code></a> in <a href="https://redirect.github.com/actions/setup-java/pull/1110">actions/setup-java#1110</a></li> <li>Backport <a href="https://redirect.github.com/actions/setup-java/issues/1111">#1111</a>: Preserve Maven toolchains across repeated setup-java runs (<a href="https://redirect.github.com/actions/setup-java/issues/1099">#1099</a>) by <a href="https://github.com/brunoborges"><code>@brunoborges</code></a> in <a href="https://redirect.github.com/actions/setup-java/pull/1113">actions/setup-java#1113</a></li> <li>Backport <a href="https://redirect.github.com/actions/setup-java/issues/1097">#1097</a>/<a href="https://redirect.github.com/actions/setup-java/issues/1098">#1098</a> to v5: cache Maven and Gradle wrapper distributions separately by <a href="https://github.com/brunoborges"><code>@brunoborges</code></a> in <a href="https://redirect.github.com/actions/setup-java/pull/1122">actions/setup-java#1122</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/setup-java/compare/v5...v5.6.0">https://github.com/actions/setup-java/compare/v5...v5.6.0</a></p> <h2>v5.5.0</h2> <h2>What's Changed</h2> <ul> <li>chore: enforce pre-PR validation (aggregate scripts, git hooks, PR checklist) by <a href="https://github.com/brunoborges"><code>@brunoborges</code></a> in <a href="https://redirect.github.com/actions/setup-java/pull/1061">actions/setup-java#1061</a></li> <li>Bump github/codeql-action from 3 to 4 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/actions/setup-java/pull/1069">actions/setup-java#1069</a></li> <li>Bump actions/checkout from 6 to 7 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/actions/setup-java/pull/1068">actions/setup-java#1068</a></li> <li>Bump actions/setup-python from 5 to 6 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/actions/setup-java/pull/1067">actions/setup-java#1067</a></li> <li>Bump <code>@typescript-eslint/parser</code> from 8.61.1 to 8.62.0 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/actions/setup-java/pull/1062">actions/setup-java#1062</a></li> <li>feat: Add verify-signature plumbing and Temurin+Microsoft verification support by <a href="https://github.com/johnoliver"><code>@johnoliver</code></a> in <a href="https://redirect.github.com/actions/setup-java/pull/1060">actions/setup-java#1060</a></li> <li>Updated jetbrains test: https.request() now catches errors. This fixes leaking tests as well by <a href="https://github.com/jmjaffe37"><code>@jmjaffe37</code></a> in <a href="https://redirect.github.com/actions/setup-java/pull/1070">actions/setup-java#1070</a></li> <li>Fix arm64 e2e workflow tests mislabeled as x64 by <a href="https://github.com/brunoborges"><code>@brunoborges</code></a> with <a href="https://github.com/Copilot"><code>@Copilot</code></a> in <a href="https://redirect.github.com/actions/setup-java/pull/1073">actions/setup-java#1073</a></li> <li>feat: suppress Maven transfer progress via MAVEN_ARGS by default (add show-download-progress input) by <a href="https://github.com/brunoborges"><code>@brunoborges</code></a> in <a href="https://redirect.github.com/actions/setup-java/pull/1053">actions/setup-java#1053</a></li> <li>feat: Disable interactiveMode in generated Maven settings.xml by <a href="https://github.com/brunoborges"><code>@brunoborges</code></a> with <a href="https://github.com/Copilot"><code>@Copilot</code></a> in <a href="https://redirect.github.com/actions/setup-java/pull/1052">actions/setup-java#1052</a></li> <li>Bump prettier from 3.6.2 to 3.9.1 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/actions/setup-java/pull/1066">actions/setup-java#1066</a></li> <li>chore(deps-dev): bump eslint-plugin-jest from 29.0.1 to 29.15.4 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/actions/setup-java/pull/1074">actions/setup-java#1074</a></li> <li>fix: Maven Toolchains grows unexpectedly by <a href="https://github.com/Okeanos"><code>@Okeanos</code></a> in <a href="https://redirect.github.com/actions/setup-java/pull/534">actions/setup-java#534</a></li> <li>dist: Support Tencent Kona JDK by <a href="https://github.com/johnshajiang"><code>@johnshajiang</code></a> in <a href="https://redirect.github.com/actions/setup-java/pull/672">actions/setup-java#672</a></li> <li>feat: Add set-default option by <a href="https://github.com/gsmet"><code>@gsmet</code></a> in <a href="https://redirect.github.com/actions/setup-java/pull/1017">actions/setup-java#1017</a></li> <li>docs: document problem matcher (and how to disable it), Maven Wrapper caching, and generated interactiveMode by <a href="https://github.com/brunoborges"><code>@brunoborges</code></a> in <a href="https://redirect.github.com/actions/setup-java/pull/1075">actions/setup-java#1075</a></li> <li>feat: Add distribution detection support to .sdkmanrc file by <a href="https://github.com/lukaszgyg"><code>@lukaszgyg</code></a> in <a href="https://redirect.github.com/actions/setup-java/pull/975">actions/setup-java#975</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/jmjaffe37"><code>@jmjaffe37</code></a> made their first contribution in <a href="https://redirect.github.com/actions/setup-java/pull/1070">actions/setup-java#1070</a></li> <li><a href="https://github.com/gsmet"><code>@gsmet</code></a> made their first contribution in <a href="https://redirect.github.com/actions/setup-java/pull/1017">actions/setup-java#1017</a></li> <li><a href="https://github.com/lukaszgyg"><code>@lukaszgyg</code></a> made their first contribution in <a href="https://redirect.github.com/actions/setup-java/pull/975">actions/setup-java#975</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/setup-java/compare/v5...v5.5.0">https://github.com/actions/setup-java/compare/v5...v5.5.0</a></p> <h2>v5.4.0</h2> <h2>What's Changed</h2> <ul> <li>Bump <code>@typescript-eslint/parser</code> from 8.48.0 to 8.61.1 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/actions/setup-java/pull/1021">actions/setup-java#1021</a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/actions/setup-java/commit/b6effb05e454b25005698d916606bdc6ffcbf961"><code>b6effb0</code></a> Deprecate legacy Adopt distributions in v5 (<a href="https://redirect.github.com/actions/setup-java/issues/1186">#1186</a>)</li> <li><a href="https://github.com/actions/setup-java/commit/e498d2a66a953492f322542257b22125c989b422"><code>e498d2a</code></a> Backport <a href="https://redirect.github.com/actions/setup-java/issues/1151">#1151</a>: Fix missing wrapper cache distributions (<a href="https://redirect.github.com/actions/setup-java/issues/1153">#1153</a>)</li> <li><a href="https://github.com/actions/setup-java/commit/6a3384db745932178632d0e22b2bd28cad1678e6"><code>6a3384d</code></a> Fix npm audit failures on releases/v5 (<a href="https://redirect.github.com/actions/setup-java/issues/1154">#1154</a>)</li> <li><a href="https://github.com/actions/setup-java/commit/03ad4de0992f5dab5e18fcb136590ce7c4a0ac95"><code>03ad4de</code></a> Backport <a href="https://redirect.github.com/actions/setup-java/issues/1097">#1097</a>/<a href="https://redirect.github.com/actions/setup-java/issues/1098">#1098</a>: cache Maven and Gradle wrapper distributions separately...</li> <li><a href="https://github.com/actions/setup-java/commit/d229d2e858d9137cc0b3f118fa5184b9f0a44ac4"><code>d229d2e</code></a> Backport <a href="https://redirect.github.com/actions/setup-java/issues/1111">#1111</a>: Preserve Maven toolchains across repeated setup-java runs (<a href="https://redirect.github.com/actions/setup-java/issues/1">#1</a>...</li> <li><a href="https://github.com/actions/setup-java/commit/bbf0f6967066506f72571a96d5d6c67ca42ab460"><code>bbf0f69</code></a> dist: Cover Tencent Kona JDK 25 (<a href="https://redirect.github.com/actions/setup-java/issues/1110">#1110</a>)</li> <li><a href="https://github.com/actions/setup-java/commit/513edc4f8710565e4ad696f3b7d8e3bda584a46c"><code>513edc4</code></a> feat: expose cache-primary-key output (<a href="https://redirect.github.com/actions/setup-java/issues/597">#597</a>) [v5 backport] (<a href="https://redirect.github.com/actions/setup-java/issues/1089">#1089</a>)</li> <li><a href="https://github.com/actions/setup-java/commit/62df799a9c6e3022bb466697c66c36e9a2dbf347"><code>62df799</code></a> Add Maven compiler problem matcher for javac diagnostics (<a href="https://redirect.github.com/actions/setup-java/issues/1087">#1087</a>)</li> <li><a href="https://github.com/actions/setup-java/commit/176156a187714aaf460b0a3c8f21e8b4f784b978"><code>176156a</code></a> chore: bump version to 5.6.0 for v5 release line</li> <li><a href="https://github.com/actions/setup-java/commit/bf7b8deac240b9cee05eb15ccdb1d2f424a54b9f"><code>bf7b8de</code></a> build: rebuild dist for backported changes (<a href="https://redirect.github.com/actions/setup-java/issues/1079">#1079</a>, <a href="https://redirect.github.com/actions/setup-java/issues/1083">#1083</a>, <a href="https://redirect.github.com/actions/setup-java/issues/1084">#1084</a>)</li> <li>Additional commits viewable in <a href="https://github.com/actions/setup-java/compare/v5.2.0...b6effb05e454b25005698d916606bdc6ffcbf961">compare view</a></li> </ul> </details> <br /> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> |
||
|
|
b549964529 |
build(deps-dev): bump fpdf2 from 2.8.7 to 2.8.8 in /engine (#7560)
Bumps [fpdf2](https://github.com/py-pdf/fpdf2) from 2.8.7 to 2.8.8. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/py-pdf/fpdf2/releases">fpdf2's releases</a>.</em></p> <blockquote> <h2>Add resource access controls, SVG complexity limits, Optional Content Groups, and other features and bug fixes</h2> <h2>[2.8.8] - 2026-08-09</h2> <blockquote> <p>[!WARNING] Upgrading to <strong>fpdf2 2.8.8</strong> is strongly recommended for applications that render user-provided images, SVGs, or HTML content.</p> </blockquote> <h3>Added</h3> <ul> <li>Punjabi (pa) tutorial translation - thanks to <a href="https://github.com/Pawansingh3889"><code>@Pawansingh3889</code></a></li> <li><code>FPDF.svg_limits</code> and <code>SVGLimits</code> to configure SVG complexity limits while rendering SVG images</li> <li><code>resource_access_policy</code> and <a href="https://py-pdf.github.io/fpdf2/Security.html">Security considerations</a> documentation</li> <li><a href="https://py-pdf.github.io/fpdf2/OptionalContent.html"><code>FPDF.optional_content()</code></a> context manager to mark content as visible on screen only or in print only, using PDF Optional Content Groups - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/441">#441</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/441">py-pdf/fpdf2#441</a>), based on a recipe by <a href="https://github.com/digidigital"><code>@digidigital</code></a> - thanks to <a href="https://github.com/eugen-goebel"><code>@eugen-goebel</code></a></li> <li>basic support for SVG <code><symbol></code> elements in the SVG parser - thanks to <a href="https://github.com/Theo1335"><code>@Theo1335</code></a></li> <li>basic support for SVG <code><switch></code> elements in the SVG parser - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/537">#537</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/537">py-pdf/fpdf2#537</a>) - thanks to <a href="https://github.com/dannymaaz"><code>@dannymaaz</code></a></li> <li>support for keeping aspect ratio for images in templates - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1118">#1118</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1118">py-pdf/fpdf2#1118</a>) - thanks to <a href="https://github.com/prateek-dagar"><code>@prateek-dagar</code></a></li> </ul> <h3>Fixed</h3> <ul> <li>custom height passed to <code>Paragraph.ln()</code> in a text region is now applied to the line it terminates instead of the first line of the following paragraph - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1786">#1786</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1786">py-pdf/fpdf2#1786</a>) - thanks to <a href="https://github.com/Sanjays2402"><code>@Sanjays2402</code></a></li> <li>the optional <code>numpy</code> import in <code>image_parsing.py</code> no longer crashes on CPUs unsupported by numpy's <code>manylinux</code> wheel baseline; <code>RuntimeError</code> is now treated the same as <code>ImportError</code>, so <code>numpy</code> degrades to unavailable instead of taking down <code>import fpdf</code> - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1908">#1908</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1908">py-pdf/fpdf2#1908</a>) - thanks to <a href="https://github.com/stumpylog"><code>@stumpylog</code></a></li> <li>font state (family, style, size, current font, and the page-level "font is set" flag) no longer leaks back onto the <code>FPDF</code> instance after a <code>text_columns()</code> / <code>text_region()</code> context exits, so a subsequent <code>pdf.cell()</code> / <code>pdf.write()</code> renders at the caller's font instead of the last paragraph's - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1804">#1804</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1804">py-pdf/fpdf2#1804</a>) - thanks to <a href="https://github.com/Pawansingh3889"><code>@Pawansingh3889</code></a></li> <li>text rendering when the first text on a page starts with a fallback glyph - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1772">#1772</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1772">py-pdf/fpdf2#1772</a>)</li> <li>preserve boundary-neutral formatting during bidirectional text preprocessing - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1779">#1779</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1779">py-pdf/fpdf2#1779</a>)</li> <li>transform application on user space gradients - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1784">#1784</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1784">py-pdf/fpdf2#1784</a>)</li> <li>dependency extras for camelot-py and endesive on pyproject.toml - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1792">#1792</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1792">py-pdf/fpdf2#1792</a>)</li> <li>preserve link annotations during dry-run of <code>FPDF.multi_cell</code> - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1807">#1807</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1807">py-pdf/fpdf2#1807</a>) - thanks to <a href="https://github.com/CoLa5"><code>@CoLa5</code></a></li> <li>preserve two consecutive markdown links (without space inbetween) - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1814">#1814</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1814">py-pdf/fpdf2#1814</a>) - thanks to <a href="https://github.com/CoLa5"><code>@CoLa5</code></a></li> <li>support markdown style around markdown links - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1826">#1826</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1826">py-pdf/fpdf2#1826</a>) - thanks to <a href="https://github.com/CoLa5"><code>@CoLa5</code></a></li> <li>Reset gstate for ToC-rendering - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1837">#1837</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1837">py-pdf/fpdf2#1837</a>) - thanks to <a href="https://github.com/CoLa5"><code>@CoLa5</code></a></li> <li>preserve markdown format in <code>FPDF.multi_cell</code> in dry-run - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1840">#1840</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1840">py-pdf/fpdf2#1840</a>) - thanks to <a href="https://github.com/CoLa5"><code>@CoLa5</code></a></li> <li>fix page order after dry-run of <code>FPDF.multi_cell</code> in ToC - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1836">#1836</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1836">py-pdf/fpdf2#1836</a>) - thanks to <a href="https://github.com/CoLa5"><code>@CoLa5</code></a></li> <li>rendering SVG arcs with very small sweeps that previously rounded to zero - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1831">#1831</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1831">py-pdf/fpdf2#1831</a>)</li> <li>spurious "Not enough horizontal space to render a single character" error when text without break opportunities is split into many small fragments, e.g. by a fallback font alternating with the main font - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1250">#1250</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1250">py-pdf/fpdf2#1250</a>) - thanks to <a href="https://github.com/uttam12331"><code>@uttam12331</code></a></li> <li>number of surviving escape characters - <strong>cf.</strong> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1215">#1215</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1215">py-pdf/fpdf2#1215</a>) - thanks to <a href="https://github.com/amidou-naba"><code>@amidou-naba</code></a></li> <li>leading spaces on new lines inside <code><pre></code> and <code><pre><code></code> blocks are no longer dropped - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1063">#1063</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1063">py-pdf/fpdf2#1063</a>) - thanks to <a href="https://github.com/eugen-goebel"><code>@eugen-goebel</code></a></li> <li><code>FPDF.set_font()</code> can restore <code>current_font</code> when the selected font state diverged - <em>cf.</em> [PR <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1872">#1872</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/pull/1872">py-pdf/fpdf2#1872</a>) - thanks to <a href="https://github.com/gaoflow"><code>@gaoflow</code></a></li> <li>embed CID-keyed CFF fonts as raw CFF programs so browser PDF viewers render them correctly - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1874">#1874</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1874">py-pdf/fpdf2#1874</a>)</li> <li>fixed broken links on documentation not directly leading to the API reference - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1876">#1876</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1876">py-pdf/fpdf2#1876</a>) - thanks to <a href="https://github.com/iamfazakb"><code>@iamfazakb</code></a></li> <li>reject SVG <code><use></code> cycles and excessive nested expansion to prevent resource exhaustion in <code>FPDF.image()</code></li> <li>count SVG <code><switch></code> elements in SVG complexity limits</li> <li>declare the default base state and display order for Optional Content Groups so PDF viewers can list layers correctly - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1895">#1895</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1895">py-pdf/fpdf2#1895</a>)</li> </ul> <h3>Changed</h3> <ul> <li>skip byte-for-byte compressed data comparison when zlib-ng is detected, regardless of OS</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/py-pdf/fpdf2/blob/master/CHANGELOG.md">fpdf2's changelog</a>.</em></p> <blockquote> <h2>[2.8.8] - 2026-08-09</h2> <h3>Added</h3> <ul> <li>Punjabi (pa) tutorial translation - thanks to <a href="https://github.com/Pawansingh3889"><code>@Pawansingh3889</code></a></li> <li><code>FPDF.svg_limits</code> and <code>SVGLimits</code> to configure SVG complexity limits while rendering SVG images</li> <li><code>resource_access_policy</code> and <a href="https://py-pdf.github.io/fpdf2/Security.html">Security considerations</a> documentation</li> <li><a href="https://py-pdf.github.io/fpdf2/OptionalContent.html"><code>FPDF.optional_content()</code></a> context manager to mark content as visible on screen only or in print only, using PDF Optional Content Groups - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/441">#441</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/441">py-pdf/fpdf2#441</a>), based on a recipe by <a href="https://github.com/digidigital"><code>@digidigital</code></a> - thanks to <a href="https://github.com/eugen-goebel"><code>@eugen-goebel</code></a></li> <li>basic support for SVG <code><symbol></code> elements in the SVG parser - thanks to <a href="https://github.com/Theo1335"><code>@Theo1335</code></a></li> <li>basic support for SVG <code><switch></code> elements in the SVG parser - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/537">#537</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/537">py-pdf/fpdf2#537</a>) - thanks to <a href="https://github.com/dannymaaz"><code>@dannymaaz</code></a></li> <li>support for keeping aspect ratio for images in templates - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1118">#1118</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1118">py-pdf/fpdf2#1118</a>) - thanks to <a href="https://github.com/prateek-dagar"><code>@prateek-dagar</code></a></li> </ul> <h3>Fixed</h3> <ul> <li>custom height passed to <code>Paragraph.ln()</code> in a text region is now applied to the line it terminates instead of the first line of the following paragraph - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1786">#1786</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1786">py-pdf/fpdf2#1786</a>) - thanks to <a href="https://github.com/Sanjays2402"><code>@Sanjays2402</code></a></li> <li>the optional <code>numpy</code> import in <code>image_parsing.py</code> no longer crashes on CPUs unsupported by numpy's <code>manylinux</code> wheel baseline; <code>RuntimeError</code> is now treated the same as <code>ImportError</code>, so <code>numpy</code> degrades to unavailable instead of taking down <code>import fpdf</code> - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1908">#1908</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1908">py-pdf/fpdf2#1908</a>) - thanks to <a href="https://github.com/stumpylog"><code>@stumpylog</code></a></li> <li>font state (family, style, size, current font, and the page-level "font is set" flag) no longer leaks back onto the <code>FPDF</code> instance after a <code>text_columns()</code> / <code>text_region()</code> context exits, so a subsequent <code>pdf.cell()</code> / <code>pdf.write()</code> renders at the caller's font instead of the last paragraph's - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1804">#1804</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1804">py-pdf/fpdf2#1804</a>) - thanks to <a href="https://github.com/Pawansingh3889"><code>@Pawansingh3889</code></a></li> <li>text rendering when the first text on a page starts with a fallback glyph - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1772">#1772</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1772">py-pdf/fpdf2#1772</a>)</li> <li>preserve boundary-neutral formatting during bidirectional text preprocessing - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1779">#1779</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1779">py-pdf/fpdf2#1779</a>)</li> <li>transform application on user space gradients - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1784">#1784</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1784">py-pdf/fpdf2#1784</a>)</li> <li>dependency extras for camelot-py and endesive on pyproject.toml - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1792">#1792</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1792">py-pdf/fpdf2#1792</a>)</li> <li>preserve link annotations during dry-run of <code>FPDF.multi_cell</code> - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1807">#1807</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1807">py-pdf/fpdf2#1807</a>) - thanks to <a href="https://github.com/CoLa5"><code>@CoLa5</code></a></li> <li>preserve two consecutive markdown links (without space inbetween) - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1814">#1814</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1814">py-pdf/fpdf2#1814</a>) - thanks to <a href="https://github.com/CoLa5"><code>@CoLa5</code></a></li> <li>support markdown style around markdown links - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1826">#1826</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1826">py-pdf/fpdf2#1826</a>) - thanks to <a href="https://github.com/CoLa5"><code>@CoLa5</code></a></li> <li>Reset gstate for ToC-rendering - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1837">#1837</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1837">py-pdf/fpdf2#1837</a>) - thanks to <a href="https://github.com/CoLa5"><code>@CoLa5</code></a></li> <li>preserve markdown format in <code>FPDF.multi_cell</code> in dry-run - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1840">#1840</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1840">py-pdf/fpdf2#1840</a>) - thanks to <a href="https://github.com/CoLa5"><code>@CoLa5</code></a></li> <li>fix page order after dry-run of <code>FPDF.multi_cell</code> in ToC - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1836">#1836</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1836">py-pdf/fpdf2#1836</a>) - thanks to <a href="https://github.com/CoLa5"><code>@CoLa5</code></a></li> <li>rendering SVG arcs with very small sweeps that previously rounded to zero - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1831">#1831</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1831">py-pdf/fpdf2#1831</a>)</li> <li>spurious "Not enough horizontal space to render a single character" error when text without break opportunities is split into many small fragments, e.g. by a fallback font alternating with the main font - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1250">#1250</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1250">py-pdf/fpdf2#1250</a>) - thanks to <a href="https://github.com/uttam12331"><code>@uttam12331</code></a></li> <li>number of surviving escape characters - <strong>cf.</strong> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1215">#1215</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1215">py-pdf/fpdf2#1215</a>) - thanks to <a href="https://github.com/amidou-naba"><code>@amidou-naba</code></a></li> <li>leading spaces on new lines inside <code><pre></code> and <code><pre><code></code> blocks are no longer dropped - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1063">#1063</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1063">py-pdf/fpdf2#1063</a>) - thanks to <a href="https://github.com/eugen-goebel"><code>@eugen-goebel</code></a></li> <li><code>FPDF.set_font()</code> can restore <code>current_font</code> when the selected font state diverged - <em>cf.</em> [PR <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1872">#1872</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/pull/1872">py-pdf/fpdf2#1872</a>) - thanks to <a href="https://github.com/gaoflow"><code>@gaoflow</code></a></li> <li>embed CID-keyed CFF fonts as raw CFF programs so browser PDF viewers render them correctly - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1874">#1874</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1874">py-pdf/fpdf2#1874</a>)</li> <li>fixed broken links on documentation not directly leading to the API reference - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1876">#1876</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1876">py-pdf/fpdf2#1876</a>) - thanks to <a href="https://github.com/iamfazakb"><code>@iamfazakb</code></a></li> <li>reject SVG <code><use></code> cycles and excessive nested expansion to prevent resource exhaustion in <code>FPDF.image()</code></li> <li>count SVG <code><switch></code> elements in SVG complexity limits</li> <li>declare the default base state and display order for Optional Content Groups so PDF viewers can list layers correctly - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1895">#1895</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1895">py-pdf/fpdf2#1895</a>)</li> </ul> <h3>Changed</h3> <ul> <li>skip byte-for-byte compressed data comparison when zlib-ng is detected, regardless of OS</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/py-pdf/fpdf2/commit/e1fc653d8fce65d2fb118755bda8581a9bf1e4d9"><code>e1fc653</code></a> release v2.8.8 (<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1916">#1916</a>)</li> <li><a href="https://github.com/py-pdf/fpdf2/commit/42ec66442bf278b9768ca787fe601d3d334c62e4"><code>42ec664</code></a> add Sanjays2402 as a contributor for code (<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1915">#1915</a>)</li> <li><a href="https://github.com/py-pdf/fpdf2/commit/af9d7dc11c36db49364c0096ad1edca5d569c676"><code>af9d7dc</code></a> fix(text_region): apply Paragraph.ln(h) height to the line it terminates (<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1904">#1904</a>)</li> <li><a href="https://github.com/py-pdf/fpdf2/commit/81951f837b46782df38f7c4d6f4c8f2644ac9b7e"><code>81951f8</code></a> add stumpylog as a contributor for bug, and code (<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1913">#1913</a>)</li> <li><a href="https://github.com/py-pdf/fpdf2/commit/b30c38c8cfc804342f429fffb26cc44f34f20af3"><code>b30c38c</code></a> Fix: catch RuntimeError alongside ImportError for the optional numpy import (...</li> <li><a href="https://github.com/py-pdf/fpdf2/commit/63df0d0f4f085d3a014166d2d752d9c1e77305e4"><code>63df0d0</code></a> Update github/codeql-action action to v4.37.6 (<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1910">#1910</a>)</li> <li><a href="https://github.com/py-pdf/fpdf2/commit/11a30e672cad2157b657642ed290cb27eb57e482"><code>11a30e6</code></a> Update crate-ci/typos action to v1.49.0 (<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1911">#1911</a>)</li> <li><a href="https://github.com/py-pdf/fpdf2/commit/f65707b369a7ca7aaa6226a77eabf69b9903eac4"><code>f65707b</code></a> Update step-security/harden-runner action to v2.20.1 (<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1912">#1912</a>)</li> <li><a href="https://github.com/py-pdf/fpdf2/commit/a7f7c8945139fb5a20d1993fcff6484b5c2267c7"><code>a7f7c89</code></a> Update github/codeql-action action to v4.37.4 (<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1907">#1907</a>)</li> <li><a href="https://github.com/py-pdf/fpdf2/commit/fe9d8f52643c5dcb88370813f51c29410463e299"><code>fe9d8f5</code></a> Update pypa/gh-action-pypi-publish action to v1.14.2 (<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1906">#1906</a>)</li> <li>Additional commits viewable in <a href="https://github.com/py-pdf/fpdf2/compare/2.8.7...2.8.8">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> |
||
|
|
8e3ecb1fe4 |
chore: update Gradle to 9.7.1 (#7607)
Automated update of the Gradle wrapper and Gradle Docker build images. Gradle version: `9.7.1` Docker image: `gradle:9.7.1-jdk25` Co-authored-by: Ludy87 <4592558+Ludy87@users.noreply.github.com> |
||
|
|
cb0cafabd9 |
ci: Extract Gradle cache priming into a reusable workflow (#7572)
# Description of Changes - What was changed - Moved the `gradle-cache-prime` job from `build.yml` into a dedicated reusable workflow. - Added `workflow_call` support for invocation from other workflows. - Added a `push` trigger for the `main` branch. - Updated `build.yml` to call the new reusable workflow. - Why the change was made - Keeps the shared Gradle cache warm after changes are pushed to `main`. - Allows pull request builds to reuse the same cache and reduce dependency resolution time. - Separates cache maintenance from the main build workflow. --- ## Checklist ### General - [ ] I have read the [Contribution Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md) - [ ] I have read the [Stirling-PDF Developer Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md) (if applicable) - [ ] I have read the [How to add new languages to Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md) (if applicable) - [ ] I have performed a self-review of my own code - [ ] My changes generate no new warnings ### Documentation - [ ] I have updated relevant docs on [Stirling-PDF's doc repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/) (if functionality has heavily changed) - [ ] I have read the section [Add New Translation Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md#add-new-translation-tags) (for new translation tags only) ### Translations (if applicable) - [ ] I ran [`scripts/counter_translation.py`](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/docs/counter_translation.md) ### UI Changes (if applicable) - [ ] Screenshots or videos demonstrating the UI changes are attached (e.g., as comments or direct attachments in the PR) ### Testing (if applicable) - [ ] I have run `task check` to verify linters, typechecks, and tests pass - [ ] I have tested my changes locally. Refer to the [Testing Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#7-testing) for more details. |
||
|
|
90d39aec0b |
🌐 Sync Translations + Update README Progress Table (#7583)
### Description of Changes This Pull Request was automatically generated to synchronize updates to translation files and documentation. Below are the details of the changes made: #### **1. Synchronization of Translation Files** - Updated translation files (`frontend/editor/public/locales/*/translation.toml`) to reflect changes in the reference file `en-US/translation.toml`. - Ensured consistency and synchronization across all supported language files. - Highlighted any missing or incomplete translations. - **Format**: TOML #### **2. Update README.md** - Generated the translation progress table in `README.md` using `counter_translation_v3.py`. - Added a summary of the current translation status for all supported languages. - Included up-to-date statistics on translation coverage. #### **Why these changes are necessary** - Keeps translation files aligned with the latest reference updates. - Ensures the documentation reflects the current translation progress. --- Auto-generated by [create-pull-request][1]. [1]: https://github.com/peter-evans/create-pull-request Co-authored-by: stirlingbot[bot] <195170888+stirlingbot[bot]@users.noreply.github.com> |
||
|
|
6376d1ff8b |
ci: share Docker base image across test-build matrix (#7584)
# Description of Changes This PR decouples the Docker base-image preparation from the embedded Docker image matrix builds in `.github/workflows/test-build-docker.yml`. - Added a dedicated `prepare-base-image` job that runs once when a pull request changes the Docker base image. - Builds `stirling-pdf-base:pr-test` once for `linux/amd64` instead of rebuilding the same image independently in every matrix job. - Exports the prepared image with `docker save`, compresses it, and uploads it as a short-lived GitHub Actions artifact. - Added a dependency from `test-build-docker-images` to `prepare-base-image`, while still allowing the matrix job to run when base-image preparation is skipped. - Each matrix entry downloads and loads the prepared Docker image when `docker-base-changed` is enabled. - Removed the previous per-matrix `Build base image locally` step. - Keeps the prepared image available to the embedded Docker builds through the local Docker daemon. The change was made to eliminate redundant base-image builds across the Docker test matrix. Previously, pull requests modifying `docker/base` caused each matrix entry to build the identical base image independently and in parallel. Preparing the image once reduces duplicated CI work, improves consistency between matrix entries, and should reduce CI resource usage and execution time for Docker-related pull requests. --- ## Checklist ### General - [ ] I have read the [Contribution Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md) - [ ] I have read the [Stirling-PDF Developer Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md) (if applicable) - [ ] I have read the [How to add new languages to Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md) (if applicable) - [ ] I have performed a self-review of my own code - [ ] My changes generate no new warnings ### Documentation - [ ] I have updated relevant docs on [Stirling-PDF's doc repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/) (if functionality has heavily changed) - [ ] I have read the section [Add New Translation Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md#add-new-translation-tags) (for new translation tags only) ### Translations (if applicable) - [ ] I ran [`scripts/counter_translation.py`](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/docs/counter_translation.md) ### UI Changes (if applicable) - [ ] Screenshots or videos demonstrating the UI changes are attached (e.g., as comments or direct attachments in the PR) ### Testing (if applicable) - [ ] I have run `task check` to verify linters, typechecks, and tests pass - [ ] I have tested my changes locally. Refer to the [Testing Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#7-testing) for more details. |
||
|
|
b8cfde3a7a |
build(deps): bump imageioVersion from 3.13.1 to 3.14.0 (#7598)
Bumps `imageioVersion` from 3.13.1 to 3.14.0. Updates `com.twelvemonkeys.imageio:imageio-batik` from 3.13.1 to 3.14.0 Updates `com.twelvemonkeys.imageio:imageio-bmp` from 3.13.1 to 3.14.0 Updates `com.twelvemonkeys.imageio:imageio-jpeg` from 3.13.1 to 3.14.0 Updates `com.twelvemonkeys.imageio:imageio-tiff` from 3.13.1 to 3.14.0 Updates `com.twelvemonkeys.imageio:imageio-webp` from 3.13.1 to 3.14.0 Updates `com.twelvemonkeys.imageio:imageio-psd` from 3.13.1 to 3.14.0 Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> |
||
|
|
43f7db0234 |
build(deps): bump github/codeql-action/upload-sarif from 4.37.6 to 4.37.7 (#7591)
Bumps [github/codeql-action/upload-sarif](https://github.com/github/codeql-action) from 4.37.6 to 4.37.7. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/github/codeql-action/releases">github/codeql-action/upload-sarif's releases</a>.</em></p> <blockquote> <h2>v4.37.7</h2> <ul> <li>Update default CodeQL bundle version to <a href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.26.3">2.26.3</a>. <a href="https://redirect.github.com/github/codeql-action/pull/4085">#4085</a></li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/github/codeql-action/blob/main/CHANGELOG.md">github/codeql-action/upload-sarif's changelog</a>.</em></p> <blockquote> <h1>CodeQL Action Changelog</h1> <p>See the <a href="https://github.com/github/codeql-action/releases">releases page</a> for the relevant changes to the CodeQL CLI and language packs.</p> <h2>[UNRELEASED]</h2> <p>No user facing changes.</p> <h2>4.37.7 - 13 Aug 2026</h2> <ul> <li>Update default CodeQL bundle version to <a href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.26.3">2.26.3</a>. <a href="https://redirect.github.com/github/codeql-action/pull/4085">#4085</a></li> </ul> <h2>4.37.6 - 04 Aug 2026</h2> <ul> <li>Changed the default filepath for the new remote file address format that was introduced in CodeQL Action 4.37.0 / 3.37.0 to <code>.github/codeql-config.yml</code> to align it with the suggested path that is used elsewhere. <a href="https://redirect.github.com/github/codeql-action/pull/4070">#4070</a></li> </ul> <h2>4.37.5 - 03 Aug 2026</h2> <ul> <li>Fixed a bug where a network error while streaming the download of the CodeQL bundle could terminate the <code>init</code> Action instead of falling back to downloading the bundle before extracting it. <a href="https://redirect.github.com/github/codeql-action/pull/4061">#4061</a></li> </ul> <h2>4.37.4 - 29 Jul 2026</h2> <ul> <li>This version of the CodeQL Action adds support for the <code>tools</code> input for the <code>codeql-action/init</code> step to be specified using a <code>github-codeql-tools</code> <a href="https://docs.github.com/en/organizations/managing-organization-settings/managing-custom-properties-for-repositories-in-your-organization">repository property</a>. This feature will gradually be rolled out following the release of this version. Once rolled out, this allows for the CodeQL CLI version that is used in GitHub-managed workflows, such as Default Setup, to be set to a custom value. For example, customers who run into issues with rate limits when a new CodeQL CLI version is released can set the value to <code>toolcache</code> to always use the CodeQL CLI version that is available in the runner toolcache. For Advanced Setup workflows, the value provided for <code>tools</code> in the workflow definition always takes precedence unless the value of the repository property starts with <code>!</code>. <a href="https://redirect.github.com/github/codeql-action/pull/4037">#4037</a></li> <li>Update default CodeQL bundle version to <a href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.26.2">2.26.2</a>. <a href="https://redirect.github.com/github/codeql-action/pull/4051">#4051</a></li> </ul> <h2>4.37.3 - 22 Jul 2026</h2> <p>No user facing changes.</p> <h2>4.37.2 - 21 Jul 2026</h2> <ul> <li>The new address format for the <code>config-file</code> input that was introduced in CodeQL Action 4.37.0 is now enabled by default. In addition to the format described there, the <code>remote=</code> prefix can now be used to explicitly indicate that the input refers to a remote file. All previous input formats continue to be accepted as well. <a href="https://redirect.github.com/github/codeql-action/pull/4023">#4023</a></li> <li>The CodeQL Action can now make use of <a href="https://docs.github.com/en/code-security/how-tos/secure-at-scale/configure-organization-security/manage-usage-and-access/giving-org-access-private-registries">configured private registries</a> in Default Setup to retrieve CodeQL configuration files from remote repositories that require authentication. This will allow customers to store their CodeQL configuration in a single repository that can then be referenced by Default Setup workflows in other repositories. We expect to roll this and other, related changes out to everyone in July. <a href="https://redirect.github.com/github/codeql-action/pull/4007">#4007</a></li> </ul> <h2>4.37.1 - 16 Jul 2026</h2> <ul> <li><em>Upcoming breaking change</em>: Add a deprecation warning for customers using CodeQL version 2.20.6 and earlier. These versions of CodeQL were discontinued on 1 July 2026 alongside GitHub Enterprise Server 3.16, and will be unsupported by the next minor release of the CodeQL Action. <a href="https://redirect.github.com/github/codeql-action/pull/3956">#3956</a></li> <li>Update default CodeQL bundle version to <a href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.26.1">2.26.1</a>. <a href="https://redirect.github.com/github/codeql-action/pull/4019">#4019</a></li> </ul> <h2>4.37.0 - 08 Jul 2026</h2> <ul> <li>Update default CodeQL bundle version to <a href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.26.0">2.26.0</a>. <a href="https://redirect.github.com/github/codeql-action/pull/3995">#3995</a></li> <li>In addition to the existing input format, the <code>config-file</code> input for the <code>codeql-action/init</code> step will soon support a new <code>[owner/]repo[@ref][:path]</code> format. All components except the repository name are optional. If omitted, <code>owner</code> defaults to the same owner as the repository the analysis is running for, <code>ref</code> to <code>main</code>, and <code>path</code> to <code>.github/codeql-action.yaml</code>. Support for this format ships in this version of the CodeQL Action, but will only be enabled over the coming weeks. <a href="https://redirect.github.com/github/codeql-action/pull/3973">#3973</a></li> </ul> <h2>4.36.3 - 01 Jul 2026</h2> <p>No user facing changes.</p> <h2>4.36.2 - 04 Jun 2026</h2> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/github/codeql-action/commit/ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd"><code>ff2f1c6</code></a> Merge pull request <a href="https://redirect.github.com/github/codeql-action/issues/4093">#4093</a> from github/update-v4.37.7-be7a3dbb8</li> <li><a href="https://github.com/github/codeql-action/commit/951a133f96aa2114dd747e9e437305335d0bde16"><code>951a133</code></a> Update changelog for v4.37.7</li> <li><a href="https://github.com/github/codeql-action/commit/be7a3dbb8147b82cd6d27e0707105b36aa190fc1"><code>be7a3db</code></a> Merge pull request <a href="https://redirect.github.com/github/codeql-action/issues/4087">#4087</a> from github/dependabot/npm_and_yarn/npm-minor-0aa561...</li> <li><a href="https://github.com/github/codeql-action/commit/9310334b11405b305d9444edfa56cd86e2f1e4fe"><code>9310334</code></a> Merge pull request <a href="https://redirect.github.com/github/codeql-action/issues/4086">#4086</a> from github/mbg/thread-action-state-to-codeql</li> <li><a href="https://github.com/github/codeql-action/commit/b4d8a54218a8792de9af2f6f32e33af899ca5212"><code>b4d8a54</code></a> Rebuild</li> <li><a href="https://github.com/github/codeql-action/commit/ab5db2519c3344f2fa61c711fa2d6ad135829200"><code>ab5db25</code></a> Bump the npm-minor group across 1 directory with 8 updates</li> <li><a href="https://github.com/github/codeql-action/commit/38055a3c3cf3979323eaf70fc6c73a8690250bde"><code>38055a3</code></a> Drop <code>logger</code> from <code>databaseInitCluster</code> in interface</li> <li><a href="https://github.com/github/codeql-action/commit/1f87aed5e66849f0c43ae147377cc77f2d98ac99"><code>1f87aed</code></a> Merge pull request <a href="https://redirect.github.com/github/codeql-action/issues/4085">#4085</a> from github/update-bundle/codeql-bundle-v2.26.3</li> <li><a href="https://github.com/github/codeql-action/commit/dc1b98ad1c2f13ccf9fc33fb82f32fc76f944253"><code>dc1b98a</code></a> Make <code>logger</code> available to <code>getCodeQLForCmd</code></li> <li><a href="https://github.com/github/codeql-action/commit/6f0220ee37121218af472efbde25f06907a4da4f"><code>6f0220e</code></a> Merge pull request <a href="https://redirect.github.com/github/codeql-action/issues/4084">#4084</a> from github/navntoft/bump-undici</li> <li>Additional commits viewable in <a href="https://github.com/github/codeql-action/compare/5595ccaf912efad79be6eef63a5619ff05969be3...ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> |
||
|
|
1f337c06e4 |
build(deps-dev): bump uvicorn from 0.52.1 to 0.52.3 in /engine (#7600)
Bumps [uvicorn](https://github.com/Kludex/uvicorn) from 0.52.1 to 0.52.3. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/Kludex/uvicorn/releases">uvicorn's releases</a>.</em></p> <blockquote> <h2>Version 0.52.3</h2> <h3>Changed</h3> <ul> <li>Update <code>zttp</code> to 0.0.24 and use its combined receive path, improving HTTP/1.1 request parsing performance (<a href="https://redirect.github.com/Kludex/uvicorn/issues/3067">#3067</a>)</li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/Kludex/uvicorn/compare/0.52.2...0.52.3">https://github.com/Kludex/uvicorn/compare/0.52.2...0.52.3</a></p> <h2>Version 0.52.2</h2> <h3>Fixed</h3> <ul> <li>Update <code>zttp</code> to 0.0.22, fixing bodyless request receives and improving HTTP/1 request parsing performance (<a href="https://redirect.github.com/Kludex/uvicorn/issues/3063">#3063</a>)</li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/Kludex/uvicorn/compare/0.52.1...0.52.2">https://github.com/Kludex/uvicorn/compare/0.52.1...0.52.2</a></p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/Kludex/uvicorn/blob/main/docs/release-notes.md">uvicorn's changelog</a>.</em></p> <blockquote> <h2>0.52.3 (August 13, 2026)</h2> <h3>Changed</h3> <ul> <li>Update <code>zttp</code> to 0.0.24 and use its combined receive path, improving HTTP/1.1 request parsing performance (<a href="https://redirect.github.com/Kludex/uvicorn/issues/3067">#3067</a>)</li> </ul> <h2>0.52.2 (August 13, 2026)</h2> <h3>Fixed</h3> <ul> <li>Update <code>zttp</code> to 0.0.22, fixing bodyless request receives and improving HTTP/1 request parsing performance (<a href="https://redirect.github.com/Kludex/uvicorn/issues/3063">#3063</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/Kludex/uvicorn/commit/a68da608147c5f79d962352dce11de8f6e32d972"><code>a68da60</code></a> Version 0.52.3 (<a href="https://redirect.github.com/Kludex/uvicorn/issues/3068">#3068</a>)</li> <li><a href="https://github.com/Kludex/uvicorn/commit/6e3bb4c5c22531c16d341f2da49f2653307f412f"><code>6e3bb4c</code></a> Use zttp 0.0.24 fast receive path (<a href="https://redirect.github.com/Kludex/uvicorn/issues/3067">#3067</a>)</li> <li><a href="https://github.com/Kludex/uvicorn/commit/2a5ff183e02e6dce62f363009c85574bd5a23de2"><code>2a5ff18</code></a> Version 0.52.2 (<a href="https://redirect.github.com/Kludex/uvicorn/issues/3066">#3066</a>)</li> <li><a href="https://github.com/Kludex/uvicorn/commit/1920297df92b9cf5e6befb00327c1e34276db46f"><code>1920297</code></a> Update zttp to 0.0.22 (<a href="https://redirect.github.com/Kludex/uvicorn/issues/3063">#3063</a>)</li> <li><a href="https://github.com/Kludex/uvicorn/commit/5c560dae6a87f6109d958c6154277f1dc727f704"><code>5c560da</code></a> chore(deps): bump pymdown-extensions from 11.0 to 11.0.1 (<a href="https://redirect.github.com/Kludex/uvicorn/issues/3061">#3061</a>)</li> <li>See full diff in <a href="https://github.com/Kludex/uvicorn/compare/0.52.1...0.52.3">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> |
||
|
|
fb0bffaa31 |
fix(billing): enforce en-US locale for billing money formatting (#7487) (#7498)
# Description of Changes Fixes #7487 - **What was changed:** Explicitly specified the `'en-US'` locale in `Intl.NumberFormat` and `toLocaleString` within `formatMinor` and `formatMoneyMajor` in `frontend/editor/src/proprietary/billing/format.ts`. Also added test coverage for `formatMoneyMajor` in `frontend/editor/src/portal/billing/sharedBillingFormat.test.ts`. - **Why the change was made:** Previously, `formatMinor` used `new Intl.NumberFormat(undefined, ...)`, which inherited the host/browser environment locale. On non-US locales (e.g. German `de-DE`), this produced comma-separated decimals (`$2,24`) instead of dot-separated decimals (`$2.24`), breaking unit tests and leading to inconsistent money formatting. - **Any challenges encountered:** None. Closes #7487 --- ## Checklist ### General - [x] I have read the [Contribution Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md) - [x] I have read the [Stirling-PDF Developer Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md) (if applicable) - [x] I have read the [How to add new languages to Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md) (if applicable) - [x] I have performed a self-review of my own code - [x] My changes generate no new warnings ### Documentation - [ ] I have updated relevant docs on [Stirling-PDF's doc repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/) (if functionality has heavily changed) - [ ] I have read the section [Add New Translation Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md#add-new-translation-tags) (for new translation tags only) ### Translations (if applicable) - [x] I ran [`scripts/counter_translation.py`](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/docs/counter_translation.md) ### UI Changes (if applicable) - [ ] Screenshots or videos demonstrating the UI changes are attached (e.g., as comments or direct attachments in the PR) ### Testing (if applicable) - [x] I have run `task check` to verify linters, typechecks, and tests pass - [x] I have tested my changes locally. Refer to the [Testing Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#7-testing) for more details. |
||
|
|
df74c46211 |
ci: clean up temporary files in GitHub Actions workflows (#7582)
# Description of Changes This change adds cleanup steps to GitHub Actions workflows that create temporary files or sensitive build resources. Changes include: - Removing temporary backend helper files, logs, and PID files. - Cleaning up database migration temporary directories after failure logs are uploaded. - Removing locally generated deployment files and Storybook archives. - Deleting temporary signing certificates, MSI extraction directories, and Apple signing keychains. - Ensuring cleanup runs even when earlier workflow steps fail. The cleanup reduces temporary data retention on runners and ensures sensitive signing material is removed after builds. No functional application code was changed. --- ## Checklist ### General - [ ] I have read the [Contribution Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md) - [ ] I have read the [Stirling-PDF Developer Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md) (if applicable) - [ ] I have read the [How to add new languages to Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md) (if applicable) - [ ] I have performed a self-review of my own code - [ ] My changes generate no new warnings ### Documentation - [ ] I have updated relevant docs on [Stirling-PDF's doc repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/) (if functionality has heavily changed) - [ ] I have read the section [Add New Translation Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md#add-new-translation-tags) (for new translation tags only) ### Translations (if applicable) - [ ] I ran [`scripts/counter_translation.py`](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/docs/counter_translation.md) ### UI Changes (if applicable) - [ ] Screenshots or videos demonstrating the UI changes are attached (e.g., as comments or direct attachments in the PR) ### Testing (if applicable) - [ ] I have run `task check` to verify linters, typechecks, and tests pass - [ ] I have tested my changes locally. Refer to the [Testing Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#7-testing) for more details. |
||
|
|
4f2b1bb381 |
Cache Docker dependency downloads in embedded images (#7535)
# Description of Changes Adds Docker BuildKit syntax and shared Gradle/npm cache mounts to the fat and ultra-lite embedded Dockerfiles. This reduces repeated dependency downloads during rebuilds and speeds up image builds without changing runtime behavior. --- ## Checklist ### General - [ ] I have read the [Contribution Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md) - [ ] I have read the [Stirling-PDF Developer Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md) (if applicable) - [ ] I have read the [How to add new languages to Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md) (if applicable) - [ ] I have performed a self-review of my own code - [ ] My changes generate no new warnings ### Documentation - [ ] I have updated relevant docs on [Stirling-PDF's doc repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/) (if functionality has heavily changed) - [ ] I have read the section [Add New Translation Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md#add-new-translation-tags) (for new translation tags only) ### Translations (if applicable) - [ ] I ran [`scripts/counter_translation.py`](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/docs/counter_translation.md) ### UI Changes (if applicable) - [ ] Screenshots or videos demonstrating the UI changes are attached (e.g., as comments or direct attachments in the PR) ### Testing (if applicable) - [ ] I have run `task check` to verify linters, typechecks, and tests pass - [ ] I have tested my changes locally. Refer to the [Testing Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#7-testing) for more details. |
||
|
|
a24fcb0489 |
chore(dependabot): refresh dependency update configuration (#7561)
# Description of Changes - Added `/testing/compose/mcp-client-check` to the existing Docker Compose dependency monitoring configuration so dependencies used by the MCP client check environment are covered by Dependabot. - Added a `tanstack` dependency group matching `@tanstack/*` packages, allowing related TanStack updates to be reviewed together. - Added a `typescript` dependency group covering both `typescript` and `@typescript/*` packages. - Removed the obsolete `pip` Dependabot configuration for `/testing/cucumber`, as dependency management for this area has moved to the current `uv`-based setup. - Kept the existing Dependabot scheduling, cooldown, grouping, and rebase strategy conventions unchanged where applicable. --- ## Checklist ### General - [ ] I have read the [Contribution Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md) - [ ] I have read the [Stirling-PDF Developer Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md) (if applicable) - [ ] I have read the [How to add new languages to Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md) (if applicable) - [ ] I have performed a self-review of my own code - [ ] My changes generate no new warnings ### Documentation - [ ] I have updated relevant docs on [Stirling-PDF's doc repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/) (if functionality has heavily changed) - [ ] I have read the section [Add New Translation Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md#add-new-translation-tags) (for new translation tags only) ### Translations (if applicable) - [ ] I ran [`scripts/counter_translation.py`](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/docs/counter_translation.md) ### UI Changes (if applicable) - [ ] Screenshots or videos demonstrating the UI changes are attached (e.g., as comments or direct attachments in the PR) ### Testing (if applicable) - [ ] I have run `task check` to verify linters, typechecks, and tests pass - [ ] I have tested my changes locally. Refer to the [Testing Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#7-testing) for more details. |
||
|
|
17938ff5bc |
ci: automate Gradle and Docker image updates (#7464)
## Summary - Add a scheduled GitHub Actions workflow that checks for the latest stable Gradle release. - Update the Gradle wrapper and pinned Gradle Docker build images automatically. - Open an automated pull request when an update is available. - Update the developer prerequisites to Node.js 22+ and Gradle 9.0+. ## Details The workflow runs every Monday at 03:00 UTC and can also be triggered manually. It: 1. Resolves the latest stable Gradle version. 2. Finds the matching `gradle:<version>-jdk25` Docker image digest. 3. Updates the Gradle wrapper and Dockerfiles. 4. Verifies the resolved wrapper version and checks the resulting diff. 5. Creates or updates an automated dependency pull request. The current wrapper and Docker image changes are included as the initial update generated by this workflow. ## Testing - Verified the generated changes with `git diff --check`. - The workflow validates the wrapper version before opening the automated pull request. |
||
|
|
73a78ab423 |
ci: gate backend builds and cache priming (#7405)
# Description of Changes - Added a dedicated backend path filter for Java and Gradle-related changes. - Gated backend builds on backend-relevant file changes. - Limited Gradle cache priming to project changes. - Made Docker image tests resilient to skipped upstream jobs. - Included the Gradle cache prime job in the final CI status check. - Removed the unnecessary build dependency from the license check. --- ## Checklist ### General - [ ] I have read the [Contribution Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md) - [ ] I have read the [Stirling-PDF Developer Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md) (if applicable) - [ ] I have read the [How to add new languages to Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md) (if applicable) - [ ] I have performed a self-review of my own code - [ ] My changes generate no new warnings ### Documentation - [ ] I have updated relevant docs on [Stirling-PDF's doc repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/) (if functionality has heavily changed) - [ ] I have read the section [Add New Translation Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md#add-new-translation-tags) (for new translation tags only) ### Translations (if applicable) - [ ] I ran [`scripts/counter_translation.py`](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/docs/counter_translation.md) ### UI Changes (if applicable) - [ ] Screenshots or videos demonstrating the UI changes are attached (e.g., as comments or direct attachments in the PR) ### Testing (if applicable) - [ ] I have run `task check` to verify linters, typechecks, and tests pass - [ ] I have tested my changes locally. Refer to the [Testing Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#7-testing) for more details. |
||
|
|
6d549c39dc |
Update Frontend 3rd Party Licenses (#7594)
Auto-generated by stirlingbot[bot] This PR updates the frontend license report based on changes to package.json dependencies. Signed-off-by: stirlingbot[bot] <stirlingbot[bot]@users.noreply.github.com> Co-authored-by: stirlingbot[bot] <195170888+stirlingbot[bot]@users.noreply.github.com> |
||
|
|
71af798da4 |
build(deps): bump the simple-java-mail group across 2 directories with 2 updates (#7585)
Bumps the simple-java-mail group with 1 update in the / directory: [org.simplejavamail:simple-java-mail](https://github.com/bbottema/simple-java-mail). Bumps the simple-java-mail group with 1 update in the /app/common directory: [org.simplejavamail:simple-java-mail](https://github.com/bbottema/simple-java-mail). Updates `org.simplejavamail:simple-java-mail` from 9.2.0 to 9.3.1 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/bbottema/simple-java-mail/releases">org.simplejavamail:simple-java-mail's releases</a>.</em></p> <blockquote> <h2>v9.3.1</h2> <p>Simple Java Mail 9.3.1 is a Java 8-compatible build-tool maintenance release.</p> <h2>Changes</h2> <ul> <li>Updated Maven Antrun Plugin from 3.1.0 to 3.2.0 for the JPMS consumer-compilation check.</li> <li>Updated Maven Dependency Plugin from 3.8.1 to 3.11.0 for construction of the JPMS module path.</li> </ul> <p>These changes affect project build tooling only. This release contains no runtime-dependency changes, public API changes, or intended mail-sending behavior changes. Java 8 remains the minimum supported runtime.</p> <p>The maintenance pull requests are <a href="https://redirect.github.com/bbottema/simple-java-mail/pull/700">#700</a> and <a href="https://redirect.github.com/bbottema/simple-java-mail/pull/701">#701</a>.</p> <h2>v9.3.0</h2> <p>Simple Java Mail 9.3.0 exposes <code>batch-module</code> as a supported standalone Jakarta Mail orchestration API.</p> <ul> <li><a href="https://redirect.github.com/bbottema/simple-java-mail/issues/698">#698</a> adds <code>BatchTransportExecutor<K></code> for applications that create their own <code>Session</code> and <code>MimeMessage</code> objects without adopting <code>EmailBuilder</code> or <code>Mailer</code>. The main <code>simple-java-mail</code> facade is not required.</li> <li>Register Sessions by cluster key, then run cluster-selected or exact-Session callbacks synchronously or submit them as <code>CompletableFuture</code> work. Each callback receives the actually selected <code>Session</code> and connected <code>Transport</code>.</li> <li>The facade keeps raw leases private, releases connections after successful callbacks, invalidates them after escaping failures, resolves OAuth2 credentials from the selected Session, and provides deterministic graceful or forced shutdown. Its default executor is module-owned; an injected executor remains caller-owned.</li> <li>The existing pooled <code>Mailer</code> path and the standalone facade now share one transport engine. <code>smtp-connection-pool</code> remains the only physical pool owner; do not stack batch/direct orchestration over the Jakarta <code>smtppool</code> provider.</li> <li>The supporting chain is updated to <code>smtp-connection-pool 4.0.1</code>, <code>clustered-object-pool 4.0.3</code>, and <code>generic-object-pool 2.4.2</code>. The published JPMS names are <code>org.simplejavamail.batch</code>, <code>org.simplejavamail.smtpconnectionpool</code>, <code>org.bbottema.clusteredobjectpool</code>, and <code>org.bbottema.genericobjectpool</code>.</li> </ul> <p>See the <a href="https://www.simplejavamail.org/smtp-connection-pooling.html">SMTP connection pooling and batch orchestration guide</a> for the comparison matrix, ownership rules, and complete examples.</p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/bbottema/simple-java-mail/blob/master/RELEASE.txt">org.simplejavamail:simple-java-mail's changelog</a>.</em></p> <blockquote> <p><a href="https://www.simplejavamail.org">https://www.simplejavamail.org</a></p> <!-- raw HTML omitted --> <p>v9.3.0 - v9.3.2</p> <ul> <li><strong>v9.3.2:</strong> <a href="https://redirect.github.com/bbottema/simple-java-mail/issues/702">#702</a>: clarified the single-address contract of RecipientBuilder by renaming its misleading implementation parameter and validation label; use RecipientsBuilder for comma- or semicolon-delimited address lists.</li> <li><strong>v9.3.1:</strong> Updated Maven Antrun Plugin from 3.1.0 to 3.2.0 (<a href="https://redirect.github.com/bbottema/simple-java-mail/issues/700">#700</a>) and Maven Dependency Plugin from 3.8.1 to 3.11.0 (<a href="https://redirect.github.com/bbottema/simple-java-mail/issues/701">#701</a>), retaining Java 8 compatibility.</li> <li><strong>v9.3.0:</strong> <a href="https://redirect.github.com/bbottema/simple-java-mail/issues/698">#698</a>: exposed batch-module as a supported standalone Jakarta Mail orchestration API with clustered and exact-Session callbacks, asynchronous submission, automatic lease release/invalidation, and deterministic graceful or forced shutdown.</li> <li><strong>v9.3.0:</strong> Updated smtp-connection-pool from 3.1.0 to 4.0.1 and migrated the existing Mailer integration to its explicit SmtpTransportLease contract. The complete generic, clustered, SMTP, and batch dependency chain now publishes stable JPMS automatic module names.</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/bbottema/simple-java-mail/commit/e44c4c983e48ec9372ff745ccb9ab01d731867d0"><code>e44c4c9</code></a> released 9.3.1 [skip ci]</li> <li><a href="https://github.com/bbottema/simple-java-mail/commit/461e5f7c3b97d4882b21bca7ecb4843530184f32"><code>461e5f7</code></a> docs(release): prepare 9.3.1 release notes</li> <li><a href="https://github.com/bbottema/simple-java-mail/commit/68728f3457f7b0e85cf66e758f41985b86c4a125"><code>68728f3</code></a> build(deps-dev): bump org.apache.maven.plugins:maven-dependency-plugin (<a href="https://redirect.github.com/bbottema/simple-java-mail/issues/701">#701</a>)</li> <li><a href="https://github.com/bbottema/simple-java-mail/commit/d491c334bea647a99538984d917cd6ffdcb3cbce"><code>d491c33</code></a> build(deps-dev): bump org.apache.maven.plugins:maven-antrun-plugin (<a href="https://redirect.github.com/bbottema/simple-java-mail/issues/700">#700</a>)</li> <li><a href="https://github.com/bbottema/simple-java-mail/commit/b3111e232a23f9187c2b0c6b98a0bb1a895d9309"><code>b3111e2</code></a> docs(website): publish pooling guidance update [skip ci]</li> <li><a href="https://github.com/bbottema/simple-java-mail/commit/cb3a9a133b91372d112c1b6a07c92e721f1a6f9e"><code>cb3a9a1</code></a> docs(website): publish pooling guide follow-up [skip ci]</li> <li><a href="https://github.com/bbottema/simple-java-mail/commit/29f25e83c654d5dbadd4da321ce9511a4eceeeef"><code>29f25e8</code></a> released 9.3.0 [skip ci]</li> <li><a href="https://github.com/bbottema/simple-java-mail/commit/b9c0cb8b58f4477e92fdd7ea395583863f875310"><code>b9c0cb8</code></a> feat(batch): expose standalone transport orchestration</li> <li><a href="https://github.com/bbottema/simple-java-mail/commit/92549b27f44a0042ca908d22c25db58ccc1e1630"><code>92549b2</code></a> merge(release): reconcile master with develop [skip ci]</li> <li><a href="https://github.com/bbottema/simple-java-mail/commit/b499d76ec28e0566b2000ec6418473da66e1398a"><code>b499d76</code></a> docs(readme): rebuild developer landing page [skip ci]</li> <li>Additional commits viewable in <a href="https://github.com/bbottema/simple-java-mail/compare/9.2.0...9.3.1">compare view</a></li> </ul> </details> <br /> Updates `org.simplejavamail:outlook-module` from 9.2.0 to 9.3.1 Updates `org.simplejavamail:simple-java-mail` from 9.2.0 to 9.3.1 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/bbottema/simple-java-mail/releases">org.simplejavamail:simple-java-mail's releases</a>.</em></p> <blockquote> <h2>v9.3.1</h2> <p>Simple Java Mail 9.3.1 is a Java 8-compatible build-tool maintenance release.</p> <h2>Changes</h2> <ul> <li>Updated Maven Antrun Plugin from 3.1.0 to 3.2.0 for the JPMS consumer-compilation check.</li> <li>Updated Maven Dependency Plugin from 3.8.1 to 3.11.0 for construction of the JPMS module path.</li> </ul> <p>These changes affect project build tooling only. This release contains no runtime-dependency changes, public API changes, or intended mail-sending behavior changes. Java 8 remains the minimum supported runtime.</p> <p>The maintenance pull requests are <a href="https://redirect.github.com/bbottema/simple-java-mail/pull/700">#700</a> and <a href="https://redirect.github.com/bbottema/simple-java-mail/pull/701">#701</a>.</p> <h2>v9.3.0</h2> <p>Simple Java Mail 9.3.0 exposes <code>batch-module</code> as a supported standalone Jakarta Mail orchestration API.</p> <ul> <li><a href="https://redirect.github.com/bbottema/simple-java-mail/issues/698">#698</a> adds <code>BatchTransportExecutor<K></code> for applications that create their own <code>Session</code> and <code>MimeMessage</code> objects without adopting <code>EmailBuilder</code> or <code>Mailer</code>. The main <code>simple-java-mail</code> facade is not required.</li> <li>Register Sessions by cluster key, then run cluster-selected or exact-Session callbacks synchronously or submit them as <code>CompletableFuture</code> work. Each callback receives the actually selected <code>Session</code> and connected <code>Transport</code>.</li> <li>The facade keeps raw leases private, releases connections after successful callbacks, invalidates them after escaping failures, resolves OAuth2 credentials from the selected Session, and provides deterministic graceful or forced shutdown. Its default executor is module-owned; an injected executor remains caller-owned.</li> <li>The existing pooled <code>Mailer</code> path and the standalone facade now share one transport engine. <code>smtp-connection-pool</code> remains the only physical pool owner; do not stack batch/direct orchestration over the Jakarta <code>smtppool</code> provider.</li> <li>The supporting chain is updated to <code>smtp-connection-pool 4.0.1</code>, <code>clustered-object-pool 4.0.3</code>, and <code>generic-object-pool 2.4.2</code>. The published JPMS names are <code>org.simplejavamail.batch</code>, <code>org.simplejavamail.smtpconnectionpool</code>, <code>org.bbottema.clusteredobjectpool</code>, and <code>org.bbottema.genericobjectpool</code>.</li> </ul> <p>See the <a href="https://www.simplejavamail.org/smtp-connection-pooling.html">SMTP connection pooling and batch orchestration guide</a> for the comparison matrix, ownership rules, and complete examples.</p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/bbottema/simple-java-mail/blob/master/RELEASE.txt">org.simplejavamail:simple-java-mail's changelog</a>.</em></p> <blockquote> <p><a href="https://www.simplejavamail.org">https://www.simplejavamail.org</a></p> <!-- raw HTML omitted --> <p>v9.3.0 - v9.3.2</p> <ul> <li><strong>v9.3.2:</strong> <a href="https://redirect.github.com/bbottema/simple-java-mail/issues/702">#702</a>: clarified the single-address contract of RecipientBuilder by renaming its misleading implementation parameter and validation label; use RecipientsBuilder for comma- or semicolon-delimited address lists.</li> <li><strong>v9.3.1:</strong> Updated Maven Antrun Plugin from 3.1.0 to 3.2.0 (<a href="https://redirect.github.com/bbottema/simple-java-mail/issues/700">#700</a>) and Maven Dependency Plugin from 3.8.1 to 3.11.0 (<a href="https://redirect.github.com/bbottema/simple-java-mail/issues/701">#701</a>), retaining Java 8 compatibility.</li> <li><strong>v9.3.0:</strong> <a href="https://redirect.github.com/bbottema/simple-java-mail/issues/698">#698</a>: exposed batch-module as a supported standalone Jakarta Mail orchestration API with clustered and exact-Session callbacks, asynchronous submission, automatic lease release/invalidation, and deterministic graceful or forced shutdown.</li> <li><strong>v9.3.0:</strong> Updated smtp-connection-pool from 3.1.0 to 4.0.1 and migrated the existing Mailer integration to its explicit SmtpTransportLease contract. The complete generic, clustered, SMTP, and batch dependency chain now publishes stable JPMS automatic module names.</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/bbottema/simple-java-mail/commit/e44c4c983e48ec9372ff745ccb9ab01d731867d0"><code>e44c4c9</code></a> released 9.3.1 [skip ci]</li> <li><a href="https://github.com/bbottema/simple-java-mail/commit/461e5f7c3b97d4882b21bca7ecb4843530184f32"><code>461e5f7</code></a> docs(release): prepare 9.3.1 release notes</li> <li><a href="https://github.com/bbottema/simple-java-mail/commit/68728f3457f7b0e85cf66e758f41985b86c4a125"><code>68728f3</code></a> build(deps-dev): bump org.apache.maven.plugins:maven-dependency-plugin (<a href="https://redirect.github.com/bbottema/simple-java-mail/issues/701">#701</a>)</li> <li><a href="https://github.com/bbottema/simple-java-mail/commit/d491c334bea647a99538984d917cd6ffdcb3cbce"><code>d491c33</code></a> build(deps-dev): bump org.apache.maven.plugins:maven-antrun-plugin (<a href="https://redirect.github.com/bbottema/simple-java-mail/issues/700">#700</a>)</li> <li><a href="https://github.com/bbottema/simple-java-mail/commit/b3111e232a23f9187c2b0c6b98a0bb1a895d9309"><code>b3111e2</code></a> docs(website): publish pooling guidance update [skip ci]</li> <li><a href="https://github.com/bbottema/simple-java-mail/commit/cb3a9a133b91372d112c1b6a07c92e721f1a6f9e"><code>cb3a9a1</code></a> docs(website): publish pooling guide follow-up [skip ci]</li> <li><a href="https://github.com/bbottema/simple-java-mail/commit/29f25e83c654d5dbadd4da321ce9511a4eceeeef"><code>29f25e8</code></a> released 9.3.0 [skip ci]</li> <li><a href="https://github.com/bbottema/simple-java-mail/commit/b9c0cb8b58f4477e92fdd7ea395583863f875310"><code>b9c0cb8</code></a> feat(batch): expose standalone transport orchestration</li> <li><a href="https://github.com/bbottema/simple-java-mail/commit/92549b27f44a0042ca908d22c25db58ccc1e1630"><code>92549b2</code></a> merge(release): reconcile master with develop [skip ci]</li> <li><a href="https://github.com/bbottema/simple-java-mail/commit/b499d76ec28e0566b2000ec6418473da66e1398a"><code>b499d76</code></a> docs(readme): rebuild developer landing page [skip ci]</li> <li>Additional commits viewable in <a href="https://github.com/bbottema/simple-java-mail/compare/9.2.0...9.3.1">compare view</a></li> </ul> </details> <br /> Updates `org.simplejavamail:outlook-module` from 9.2.0 to 9.3.1 Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> |
||
|
|
d9a5c9ac7e |
build(deps): bump the embedpdf group across 1 directory with 23 updates (#7469)
Bumps the embedpdf group with 21 updates in the /frontend directory: | Package | From | To | | --- | --- | --- | | [@embedpdf/core](https://github.com/embedpdf/embed-pdf-viewer/tree/HEAD/packages/core/main) | `2.14.4` | `2.15.0` | | [@embedpdf/models](https://github.com/embedpdf/embed-pdf-viewer/tree/HEAD/packages/models) | `2.14.4` | `2.15.0` | | [@embedpdf/plugin-annotation](https://github.com/embedpdf/embed-pdf-viewer/tree/HEAD/packages/plugin-annotation) | `2.14.4` | `2.15.0` | | [@embedpdf/plugin-attachment](https://github.com/embedpdf/embed-pdf-viewer/tree/HEAD/packages/plugin-attachment) | `2.14.4` | `2.15.0` | | [@embedpdf/plugin-bookmark](https://github.com/embedpdf/embed-pdf-viewer/tree/HEAD/packages/plugin-bookmark) | `2.14.4` | `2.15.0` | | [@embedpdf/plugin-document-manager](https://github.com/embedpdf/embed-pdf-viewer/tree/HEAD/packages/plugin-document-manager) | `2.14.4` | `2.15.0` | | [@embedpdf/plugin-export](https://github.com/embedpdf/embed-pdf-viewer/tree/HEAD/packages/plugin-download) | `2.14.4` | `2.15.0` | | [@embedpdf/plugin-history](https://github.com/embedpdf/embed-pdf-viewer/tree/HEAD/packages/plugin-history) | `2.14.4` | `2.15.0` | | [@embedpdf/plugin-interaction-manager](https://github.com/embedpdf/embed-pdf-viewer/tree/HEAD/packages/plugin-interaction-manager) | `2.14.4` | `2.15.0` | | [@embedpdf/plugin-pan](https://github.com/embedpdf/embed-pdf-viewer/tree/HEAD/packages/plugin-pan) | `2.14.4` | `2.15.0` | | [@embedpdf/plugin-print](https://github.com/embedpdf/embed-pdf-viewer/tree/HEAD/packages/plugin-print) | `2.14.4` | `2.15.0` | | [@embedpdf/plugin-redaction](https://github.com/embedpdf/embed-pdf-viewer/tree/HEAD/packages/plugin-redaction) | `2.14.4` | `2.15.0` | | [@embedpdf/plugin-render](https://github.com/embedpdf/embed-pdf-viewer/tree/HEAD/packages/plugin-render) | `2.14.4` | `2.15.0` | | [@embedpdf/plugin-rotate](https://github.com/embedpdf/embed-pdf-viewer/tree/HEAD/packages/plugin-rotate) | `2.14.4` | `2.15.0` | | [@embedpdf/plugin-scroll](https://github.com/embedpdf/embed-pdf-viewer/tree/HEAD/packages/plugin-scroll) | `2.14.4` | `2.15.0` | | [@embedpdf/plugin-search](https://github.com/embedpdf/embed-pdf-viewer/tree/HEAD/packages/plugin-search) | `2.14.4` | `2.15.0` | | [@embedpdf/plugin-spread](https://github.com/embedpdf/embed-pdf-viewer/tree/HEAD/packages/plugin-spread) | `2.14.4` | `2.15.0` | | [@embedpdf/plugin-thumbnail](https://github.com/embedpdf/embed-pdf-viewer/tree/HEAD/packages/plugin-thumbnail) | `2.14.4` | `2.15.0` | | [@embedpdf/plugin-tiling](https://github.com/embedpdf/embed-pdf-viewer/tree/HEAD/packages/plugin-tiling) | `2.14.4` | `2.15.0` | | [@embedpdf/plugin-viewport](https://github.com/embedpdf/embed-pdf-viewer/tree/HEAD/packages/plugin-viewport) | `2.14.4` | `2.15.0` | | [@embedpdf/plugin-zoom](https://github.com/embedpdf/embed-pdf-viewer/tree/HEAD/packages/plugin-zoom) | `2.14.4` | `2.15.0` | Updates `@embedpdf/core` from 2.14.4 to 2.15.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/embedpdf/embed-pdf-viewer/releases">@embedpdf/core's releases</a>.</em></p> <blockquote> <h2>Release v2.15.0</h2> <h2><code>@embedpdf/plugin-selection</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h3>Minor Changes</h3> <ul> <li> <p><a href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/685">#685</a> by <a href="https://github.com/simonmysun"><code>@simonmysun</code></a> – Add <code>setSelection(range, documentId?)</code> to the selection capability and document scope for programmatically applying or restoring a text selection.</p> <p>It accepts the same <code>SelectionRangeX</code> (<code>{ start, end }</code> glyph pointers) shape emitted by <code>onSelectionChange</code>, so a saved selection can be passed straight back in to restore it; passing <code>null</code> clears the selection. Page geometry is loaded on demand, so the returned task resolves only once the highlight rects are computed. The range is normalized (start/end may be given in any order), invalid input (malformed range, non-integer/negative indices, out-of-bounds pages) is rejected, glyph indices are clamped to the available page geometry, and previously highlighted pages are repainted so switching to a disjoint selection no longer leaves stale highlights behind.</p> </li> </ul> <h2><code>@embedpdf/core</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h3>Patch Changes</h3> <ul> <li> <p><a href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/703">#703</a> by <a href="https://github.com/berkayozdin"><code>@berkayozdin</code></a> – Make the precompiled Svelte output work on every Svelte 5 runtime</p> <p>Svelte 5.56 changed the <code>exclude</code> argument of the private <code>rest_props</code> runtime helper from an array (<code>exclude.includes(key)</code>) to a <code>Set</code> (<code>exclude.has(key)</code>). The <code>*/svelte</code> entry points ship precompiled component code, so output built against one side of that change throws on the other: the currently published packages fail with <code>TypeError: exclude.has is not a function</code> on Svelte >= 5.56, which aborts the render of every EmbedPDF Svelte component.</p> <p>The Svelte build now routes those calls through a wrapper that hands the runtime an <code>exclude</code> value satisfying both contracts, so one published build stays valid across the whole <code>svelte: ">=5 <6"</code> peer range.</p> </li> </ul> <h2><code>@embedpdf/engines</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/models</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/pdfium</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-annotation</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-attachment</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-bookmark</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-capture</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-commands</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-document-manager</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-export</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-form</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li>See full diff in <a href="https://github.com/embedpdf/embed-pdf-viewer/commits/v2.15.0/packages/core/main">compare view</a></li> </ul> </details> <br /> Updates `@embedpdf/engines` from 2.14.4 to 2.15.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/embedpdf/embed-pdf-viewer/releases">@embedpdf/engines's releases</a>.</em></p> <blockquote> <h2>Release v2.15.0</h2> <h2><code>@embedpdf/plugin-selection</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h3>Minor Changes</h3> <ul> <li> <p><a href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/685">#685</a> by <a href="https://github.com/simonmysun"><code>@simonmysun</code></a> – Add <code>setSelection(range, documentId?)</code> to the selection capability and document scope for programmatically applying or restoring a text selection.</p> <p>It accepts the same <code>SelectionRangeX</code> (<code>{ start, end }</code> glyph pointers) shape emitted by <code>onSelectionChange</code>, so a saved selection can be passed straight back in to restore it; passing <code>null</code> clears the selection. Page geometry is loaded on demand, so the returned task resolves only once the highlight rects are computed. The range is normalized (start/end may be given in any order), invalid input (malformed range, non-integer/negative indices, out-of-bounds pages) is rejected, glyph indices are clamped to the available page geometry, and previously highlighted pages are repainted so switching to a disjoint selection no longer leaves stale highlights behind.</p> </li> </ul> <h2><code>@embedpdf/core</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h3>Patch Changes</h3> <ul> <li> <p><a href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/703">#703</a> by <a href="https://github.com/berkayozdin"><code>@berkayozdin</code></a> – Make the precompiled Svelte output work on every Svelte 5 runtime</p> <p>Svelte 5.56 changed the <code>exclude</code> argument of the private <code>rest_props</code> runtime helper from an array (<code>exclude.includes(key)</code>) to a <code>Set</code> (<code>exclude.has(key)</code>). The <code>*/svelte</code> entry points ship precompiled component code, so output built against one side of that change throws on the other: the currently published packages fail with <code>TypeError: exclude.has is not a function</code> on Svelte >= 5.56, which aborts the render of every EmbedPDF Svelte component.</p> <p>The Svelte build now routes those calls through a wrapper that hands the runtime an <code>exclude</code> value satisfying both contracts, so one published build stays valid across the whole <code>svelte: ">=5 <6"</code> peer range.</p> </li> </ul> <h2><code>@embedpdf/engines</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/models</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/pdfium</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-annotation</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-attachment</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-bookmark</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-capture</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-commands</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-document-manager</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-export</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-form</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/embedpdf/embed-pdf-viewer/blob/v2.15.0/packages/engines/CHANGELOG.md">@embedpdf/engines's changelog</a>.</em></p> <blockquote> <h2>2.15.0</h2> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/embedpdf/embed-pdf-viewer/commit/a8faf04b15291c895118b819d7395c3bca8a4959"><code>a8faf04</code></a> chore: version packages</li> <li>See full diff in <a href="https://github.com/embedpdf/embed-pdf-viewer/commits/v2.15.0/packages/engines">compare view</a></li> </ul> </details> <br /> Updates `@embedpdf/models` from 2.14.4 to 2.15.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/embedpdf/embed-pdf-viewer/releases">@embedpdf/models's releases</a>.</em></p> <blockquote> <h2>Release v2.15.0</h2> <h2><code>@embedpdf/plugin-selection</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h3>Minor Changes</h3> <ul> <li> <p><a href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/685">#685</a> by <a href="https://github.com/simonmysun"><code>@simonmysun</code></a> – Add <code>setSelection(range, documentId?)</code> to the selection capability and document scope for programmatically applying or restoring a text selection.</p> <p>It accepts the same <code>SelectionRangeX</code> (<code>{ start, end }</code> glyph pointers) shape emitted by <code>onSelectionChange</code>, so a saved selection can be passed straight back in to restore it; passing <code>null</code> clears the selection. Page geometry is loaded on demand, so the returned task resolves only once the highlight rects are computed. The range is normalized (start/end may be given in any order), invalid input (malformed range, non-integer/negative indices, out-of-bounds pages) is rejected, glyph indices are clamped to the available page geometry, and previously highlighted pages are repainted so switching to a disjoint selection no longer leaves stale highlights behind.</p> </li> </ul> <h2><code>@embedpdf/core</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h3>Patch Changes</h3> <ul> <li> <p><a href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/703">#703</a> by <a href="https://github.com/berkayozdin"><code>@berkayozdin</code></a> – Make the precompiled Svelte output work on every Svelte 5 runtime</p> <p>Svelte 5.56 changed the <code>exclude</code> argument of the private <code>rest_props</code> runtime helper from an array (<code>exclude.includes(key)</code>) to a <code>Set</code> (<code>exclude.has(key)</code>). The <code>*/svelte</code> entry points ship precompiled component code, so output built against one side of that change throws on the other: the currently published packages fail with <code>TypeError: exclude.has is not a function</code> on Svelte >= 5.56, which aborts the render of every EmbedPDF Svelte component.</p> <p>The Svelte build now routes those calls through a wrapper that hands the runtime an <code>exclude</code> value satisfying both contracts, so one published build stays valid across the whole <code>svelte: ">=5 <6"</code> peer range.</p> </li> </ul> <h2><code>@embedpdf/engines</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/models</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/pdfium</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-annotation</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-attachment</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-bookmark</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-capture</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-commands</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-document-manager</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-export</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-form</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/embedpdf/embed-pdf-viewer/blob/v2.15.0/packages/models/CHANGELOG.md">@embedpdf/models's changelog</a>.</em></p> <blockquote> <h2>2.15.0</h2> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/embedpdf/embed-pdf-viewer/commit/a8faf04b15291c895118b819d7395c3bca8a4959"><code>a8faf04</code></a> chore: version packages</li> <li>See full diff in <a href="https://github.com/embedpdf/embed-pdf-viewer/commits/v2.15.0/packages/models">compare view</a></li> </ul> </details> <br /> Updates `@embedpdf/plugin-annotation` from 2.14.4 to 2.15.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/embedpdf/embed-pdf-viewer/releases">@embedpdf/plugin-annotation's releases</a>.</em></p> <blockquote> <h2>Release v2.15.0</h2> <h2><code>@embedpdf/plugin-selection</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h3>Minor Changes</h3> <ul> <li> <p><a href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/685">#685</a> by <a href="https://github.com/simonmysun"><code>@simonmysun</code></a> – Add <code>setSelection(range, documentId?)</code> to the selection capability and document scope for programmatically applying or restoring a text selection.</p> <p>It accepts the same <code>SelectionRangeX</code> (<code>{ start, end }</code> glyph pointers) shape emitted by <code>onSelectionChange</code>, so a saved selection can be passed straight back in to restore it; passing <code>null</code> clears the selection. Page geometry is loaded on demand, so the returned task resolves only once the highlight rects are computed. The range is normalized (start/end may be given in any order), invalid input (malformed range, non-integer/negative indices, out-of-bounds pages) is rejected, glyph indices are clamped to the available page geometry, and previously highlighted pages are repainted so switching to a disjoint selection no longer leaves stale highlights behind.</p> </li> </ul> <h2><code>@embedpdf/core</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h3>Patch Changes</h3> <ul> <li> <p><a href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/703">#703</a> by <a href="https://github.com/berkayozdin"><code>@berkayozdin</code></a> – Make the precompiled Svelte output work on every Svelte 5 runtime</p> <p>Svelte 5.56 changed the <code>exclude</code> argument of the private <code>rest_props</code> runtime helper from an array (<code>exclude.includes(key)</code>) to a <code>Set</code> (<code>exclude.has(key)</code>). The <code>*/svelte</code> entry points ship precompiled component code, so output built against one side of that change throws on the other: the currently published packages fail with <code>TypeError: exclude.has is not a function</code> on Svelte >= 5.56, which aborts the render of every EmbedPDF Svelte component.</p> <p>The Svelte build now routes those calls through a wrapper that hands the runtime an <code>exclude</code> value satisfying both contracts, so one published build stays valid across the whole <code>svelte: ">=5 <6"</code> peer range.</p> </li> </ul> <h2><code>@embedpdf/engines</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/models</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/pdfium</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-annotation</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-attachment</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-bookmark</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-capture</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-commands</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-document-manager</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-export</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-form</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/embedpdf/embed-pdf-viewer/blob/v2.15.0/packages/plugin-annotation/CHANGELOG.md">@embedpdf/plugin-annotation's changelog</a>.</em></p> <blockquote> <h2>2.15.0</h2> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/embedpdf/embed-pdf-viewer/commit/a8faf04b15291c895118b819d7395c3bca8a4959"><code>a8faf04</code></a> chore: version packages</li> <li>See full diff in <a href="https://github.com/embedpdf/embed-pdf-viewer/commits/v2.15.0/packages/plugin-annotation">compare view</a></li> </ul> </details> <br /> Updates `@embedpdf/plugin-attachment` from 2.14.4 to 2.15.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/embedpdf/embed-pdf-viewer/releases">@embedpdf/plugin-attachment's releases</a>.</em></p> <blockquote> <h2>Release v2.15.0</h2> <h2><code>@embedpdf/plugin-selection</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h3>Minor Changes</h3> <ul> <li> <p><a href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/685">#685</a> by <a href="https://github.com/simonmysun"><code>@simonmysun</code></a> – Add <code>setSelection(range, documentId?)</code> to the selection capability and document scope for programmatically applying or restoring a text selection.</p> <p>It accepts the same <code>SelectionRangeX</code> (<code>{ start, end }</code> glyph pointers) shape emitted by <code>onSelectionChange</code>, so a saved selection can be passed straight back in to restore it; passing <code>null</code> clears the selection. Page geometry is loaded on demand, so the returned task resolves only once the highlight rects are computed. The range is normalized (start/end may be given in any order), invalid input (malformed range, non-integer/negative indices, out-of-bounds pages) is rejected, glyph indices are clamped to the available page geometry, and previously highlighted pages are repainted so switching to a disjoint selection no longer leaves stale highlights behind.</p> </li> </ul> <h2><code>@embedpdf/core</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h3>Patch Changes</h3> <ul> <li> <p><a href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/703">#703</a> by <a href="https://github.com/berkayozdin"><code>@berkayozdin</code></a> – Make the precompiled Svelte output work on every Svelte 5 runtime</p> <p>Svelte 5.56 changed the <code>exclude</code> argument of the private <code>rest_props</code> runtime helper from an array (<code>exclude.includes(key)</code>) to a <code>Set</code> (<code>exclude.has(key)</code>). The <code>*/svelte</code> entry points ship precompiled component code, so output built against one side of that change throws on the other: the currently published packages fail with <code>TypeError: exclude.has is not a function</code> on Svelte >= 5.56, which aborts the render of every EmbedPDF Svelte component.</p> <p>The Svelte build now routes those calls through a wrapper that hands the runtime an <code>exclude</code> value satisfying both contracts, so one published build stays valid across the whole <code>svelte: ">=5 <6"</code> peer range.</p> </li> </ul> <h2><code>@embedpdf/engines</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/models</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/pdfium</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-annotation</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-attachment</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-bookmark</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-capture</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-commands</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-document-manager</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-export</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-form</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/embedpdf/embed-pdf-viewer/blob/v2.15.0/packages/plugin-attachment/CHANGELOG.md">@embedpdf/plugin-attachment's changelog</a>.</em></p> <blockquote> <h2>2.15.0</h2> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/embedpdf/embed-pdf-viewer/commit/a8faf04b15291c895118b819d7395c3bca8a4959"><code>a8faf04</code></a> chore: version packages</li> <li>See full diff in <a href="https://github.com/embedpdf/embed-pdf-viewer/commits/v2.15.0/packages/plugin-attachment">compare view</a></li> </ul> </details> <br /> Updates `@embedpdf/plugin-bookmark` from 2.14.4 to 2.15.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/embedpdf/embed-pdf-viewer/releases">@embedpdf/plugin-bookmark's releases</a>.</em></p> <blockquote> <h2>Release v2.15.0</h2> <h2><code>@embedpdf/plugin-selection</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h3>Minor Changes</h3> <ul> <li> <p><a href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/685">#685</a> by <a href="https://github.com/simonmysun"><code>@simonmysun</code></a> – Add <code>setSelection(range, documentId?)</code> to the selection capability and document scope for programmatically applying or restoring a text selection.</p> <p>It accepts the same <code>SelectionRangeX</code> (<code>{ start, end }</code> glyph pointers) shape emitted by <code>onSelectionChange</code>, so a saved selection can be passed straight back in to restore it; passing <code>null</code> clears the selection. Page geometry is loaded on demand, so the returned task resolves only once the highlight rects are computed. The range is normalized (start/end may be given in any order), invalid input (malformed range, non-integer/negative indices, out-of-bounds pages) is rejected, glyph indices are clamped to the available page geometry, and previously highlighted pages are repainted so switching to a disjoint selection no longer leaves stale highlights behind.</p> </li> </ul> <h2><code>@embedpdf/core</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h3>Patch Changes</h3> <ul> <li> <p><a href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/703">#703</a> by <a href="https://github.com/berkayozdin"><code>@berkayozdin</code></a> – Make the precompiled Svelte output work on every Svelte 5 runtime</p> <p>Svelte 5.56 changed the <code>exclude</code> argument of the private <code>rest_props</code> runtime helper from an array (<code>exclude.includes(key)</code>) to a <code>Set</code> (<code>exclude.has(key)</code>). The <code>*/svelte</code> entry points ship precompiled component code, so output built against one side of that change throws on the other: the currently published packages fail with <code>TypeError: exclude.has is not a function</code> on Svelte >= 5.56, which aborts the render of every EmbedPDF Svelte component.</p> <p>The Svelte build now routes those calls through a wrapper that hands the runtime an <code>exclude</code> value satisfying both contracts, so one published build stays valid across the whole <code>svelte: ">=5 <6"</code> peer range.</p> </li> </ul> <h2><code>@embedpdf/engines</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/models</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/pdfium</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-annotation</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-attachment</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-bookmark</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-capture</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-commands</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-document-manager</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-export</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-form</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/embedpdf/embed-pdf-viewer/blob/v2.15.0/packages/plugin-bookmark/CHANGELOG.md">@embedpdf/plugin-bookmark's changelog</a>.</em></p> <blockquote> <h2>2.15.0</h2> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/embedpdf/embed-pdf-viewer/commit/a8faf04b15291c895118b819d7395c3bca8a4959"><code>a8faf04</code></a> chore: version packages</li> <li>See full diff in <a href="https://github.com/embedpdf/embed-pdf-viewer/commits/v2.15.0/packages/plugin-bookmark">compare view</a></li> </ul> </details> <br /> Updates `@embedpdf/plugin-document-manager` from 2.14.4 to 2.15.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/embedpdf/embed-pdf-viewer/releases">@embedpdf/plugin-document-manager's releases</a>.</em></p> <blockquote> <h2>Release v2.15.0</h2> <h2><code>@embedpdf/plugin-selection</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h3>Minor Changes</h3> <ul> <li> <p><a href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/685">#685</a> by <a href="https://github.com/simonmysun"><code>@simonmysun</code></a> – Add <code>setSelection(range, documentId?)</code> to the selection capability and document scope for programmatically applying or restoring a text selection.</p> <p>It accepts the same <code>SelectionRangeX</code> (<code>{ start, end }</code> glyph pointers) shape emitted by <code>onSelectionChange</code>, so a saved selection can be passed straight back in to restore it; passing <code>null</code> clears the selection. Page geometry is loaded on demand, so the returned task resolves only once the highlight rects are computed. The range is normalized (start/end may be given in any order), invalid input (malformed range, non-integer/negative indices, out-of-bounds pages) is rejected, glyph indices are clamped to the available page geometry, and previously highlighted pages are repainted so switching to a disjoint selection no longer leaves stale highlights behind.</p> </li> </ul> <h2><code>@embedpdf/core</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h3>Patch Changes</h3> <ul> <li> <p><a href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/703">#703</a> by <a href="https://github.com/berkayozdin"><code>@berkayozdin</code></a> – Make the precompiled Svelte output work on every Svelte 5 runtime</p> <p>Svelte 5.56 changed the <code>exclude</code> argument of the private <code>rest_props</code> runtime helper from an array (<code>exclude.includes(key)</code>) to a <code>Set</code> (<code>exclude.has(key)</code>). The <code>*/svelte</code> entry points ship precompiled component code, so output built against one side of that change throws on the other: the currently published packages fail with <code>TypeError: exclude.has is not a function</code> on Svelte >= 5.56, which aborts the render of every EmbedPDF Svelte component.</p> <p>The Svelte build now routes those calls through a wrapper that hands the runtime an <code>exclude</code> value satisfying both contracts, so one published build stays valid across the whole <code>svelte: ">=5 <6"</code> peer range.</p> </li> </ul> <h2><code>@embedpdf/engines</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/models</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/pdfium</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-annotation</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-attachment</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-bookmark</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-capture</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-commands</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-document-manager</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-export</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-form</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/embedpdf/embed-pdf-viewer/blob/v2.15.0/packages/plugin-document-manager/CHANGELOG.md">@embedpdf/plugin-document-manager's changelog</a>.</em></p> <blockquote> <h2>2.15.0</h2> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/embedpdf/embed-pdf-viewer/commit/a8faf04b15291c895118b819d7395c3bca8a4959"><code>a8faf04</code></a> chore: version packages</li> <li>See full diff in <a href="https://github.com/embedpdf/embed-pdf-viewer/commits/v2.15.0/packages/plugin-document-manager">compare view</a></li> </ul> </details> <br /> Updates `@embedpdf/plugin-export` from 2.14.4 to 2.15.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/embedpdf/embed-pdf-viewer/releases">@embedpdf/plugin-export's releases</a>.</em></p> <blockquote> <h2>Release v2.15.0</h2> <h2><code>@embedpdf/plugin-selection</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h3>Minor Changes</h3> <ul> <li> <p><a href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/685">#685</a> by <a href="https://github.com/simonmysun"><code>@simonmysun</code></a> – Add <code>setSelection(range, documentId?)</code> to the selection capability and document scope for programmatically applying or restoring a text selection.</p> <p>It accepts the same <code>SelectionRangeX</code> (<code>{ start, end }</code> glyph pointers) shape emitted by <code>onSelectionChange</code>, so a saved selection can be passed straight back in to restore it; passing <code>null</code> clears the selection. Page geometry is loaded on demand, so the returned task resolves only once the highlight rects are computed. The range is normalized (start/end may be given in any order), invalid input (malformed range, non-integer/negative indices, out-of-bounds pages) is rejected, glyph indices are clamped to the available page geometry, and previously highlighted pages are repainted so switching to a disjoint selection no longer leaves stale highlights behind.</p> </li> </ul> <h2><code>@embedpdf/core</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h3>Patch Changes</h3> <ul> <li> <p><a href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/703">#703</a> by <a href="https://github.com/berkayozdin"><code>@berkayozdin</code></a> – Make the precompiled Svelte output work on every Svelte 5 runtime</p> <p>Svelte 5.56 changed the <code>exclude</code> argument of the private <code>rest_props</code> runtime helper from an array (<code>exclude.includes(key)</code>) to a <code>Set</code> (<code>exclude.has(key)</code>). The <code>*/svelte</code> entry points ship precompiled component code, so output built against one side of that change throws on the other: the currently published packages fail with <code>TypeError: exclude.has is not a function</code> on Svelte >= 5.56, which aborts the render of every EmbedPDF Svelte component.</p> <p>The Svelte build now routes those calls through a wrapper that hands the runtime an <code>exclude</code> value satisfying both contracts, so one published build stays valid across the whole <code>svelte: ">=5 <6"</code> peer range.</p> </li> </ul> <h2><code>@embedpdf/engines</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/models</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/pdfium</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-annotation</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-attachment</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-bookmark</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-capture</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-commands</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-document-manager</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-export</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-form</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li>See full diff in <a href="https://github.com/embedpdf/embed-pdf-viewer/commits/v2.15.0/packages/plugin-download">compare view</a></li> </ul> </details> <br /> Updates `@embedpdf/plugin-history` from 2.14.4 to 2.15.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/embedpdf/embed-pdf-viewer/releases">@embedpdf/plugin-history's releases</a>.</em></p> <blockquote> <h2>Release v2.15.0</h2> <h2><code>@embedpdf/plugin-selection</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h3>Minor Changes</h3> <ul> <li> <p><a href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/685">#685</a> by <a href="https://github.com/simonmysun"><code>@simonmysun</code></a> – Add <code>setSelection(range, documentId?)</code> to the selection capability and document scope for programmatically applying or restoring a text selection.</p> <p>It accepts the same <code>SelectionRangeX</code> (<code>{ start, end }</code> glyph pointers) shape emitted by <code>onSelectionChange</code>, so a saved selection can be passed straight back in to restore it; passing <code>null</code> clears the selection. Page geometry is loaded on demand, so the returned task resolves only once the highlight rects are computed. The range is normalized (start/end may be given in any order), invalid input (malformed range, non-integer/negative indices, out-of-bounds pages) is rejected, glyph indices are clamped to the available page geometry, and previously highlighted pages are repainted so switching to a disjoint selection no longer leaves stale highlights behind.</p> </li> </ul> <h2><code>@embedpdf/core</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h3>Patch Changes</h3> <ul> <li> <p><a href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/703">#703</a> by <a href="https://github.com/berkayozdin"><code>@berkayozdin</code></a> – Make the precompiled Svelte output work on every Svelte 5 runtime</p> <p>Svelte 5.56 changed the <code>exclude</code> argument of the private <code>rest_props</code> runtime helper from an array (<code>exclude.includes(key)</code>) to a <code>Set</code> (<code>exclude.has(key)</code>). The <code>*/svelte</code> entry points ship precompiled component code, so output built against one side of that change throws on the other: the currently published packages fail with <code>TypeError: exclude.has is not a function</code> on Svelte >= 5.56, which aborts the render of every EmbedPDF Svelte component.</p> <p>The Svelte build now routes those calls through a wrapper that hands the runtime an <code>exclude</code> value satisfying both contracts, so one published build stays valid across the whole <code>svelte: ">=5 <6"</code> peer range.</p> </li> </ul> <h2><code>@embedpdf/engines</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/models</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/pdfium</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-annotation</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-attachment</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-bookmark</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-capture</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-commands</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-document-manager</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-export</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-form</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/embedpdf/embed-pdf-viewer/blob/v2.15.0/packages/plugin-history/CHANGELOG.md">@embedpdf/plugin-history's changelog</a>.</em></p> <blockquote> <h2>2.15.0</h2> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/embedpdf/embed-pdf-viewer/commit/a8faf04b15291c895118b819d7395c3bca8a4959"><code>a8faf04</code></a> chore: version packages</li> <li>See full diff in <a href="https://github.com/embedpdf/embed-pdf-viewer/commits/v2.15.0/packages/plugin-history">compare view</a></li> </ul> </details> <br /> Updates `@embedpdf/plugin-interaction-manager` from 2.14.4 to 2.15.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/embedpdf/embed-pdf-viewer/releases">@embedpdf/plugin-interaction-manager's releases</a>.</em></p> <blockquote> <h2>Release v2.15.0</h2> <h2><code>@embedpdf/plugin-selection</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h3>Minor Changes</h3> <ul> <li> <p><a href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/685">#685</a> by <a href="https://github.com/simonmysun"><code>@simonmysun</code></a> – Add <code>setSelection(range, documentId?)</code> to the selection capability and document scope for programmatically applying or restoring a text selection.</p> <p>It accepts the same <code>SelectionRangeX</code> (<code>{ start, end }</code> glyph pointers) shape emitted by <code>onSelectionChange</code>, so a saved selection can be passed straight back in to restore it; passing <code>null</code> clears the selection. Page geometry is loaded on demand, so the returned task resolves only once the highlight rects are computed. The range is normalized (start/end may be given in any order), invalid input (malformed range, non-integer/negative indices, out-of-bounds pages) is rejected, glyph indices are clamped to the available page geometry, and previously highlighted pages are repainted so switching to a disjoint selection no longer leaves stale highlights behind.</p> </li> </ul> <h2><code>@embedpdf/core</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h3>Patch Changes</h3> <ul> <li> <p><a href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/703">#703</a> by <a href="https://github.com/berkayozdin"><code>@berkayozdin</code></a> – Make the precompiled Svelte output work on every Svelte 5 runtime</p> <p>Svelte 5.56 changed the <code>exclude</code> argument of the private <code>rest_props</code> runtime helper from an array (<code>exclude.includes(key)</code>) to a <code>Set</code> (<code>exclude.has(key)</code>). The <code>*/svelte</code> entry points ship precompiled component code, so output built against one side of that change throws on the other: the currently published packages fail with <code>TypeError: exclude.has is not a function</code> on Svelte >= 5.56, which aborts the render of every EmbedPDF Svelte component.</p> <p>The Svelte build now routes those calls through a wrapper that hands the runtime an <code>exclude</code> value satisfying both contracts, so one published build stays valid across the whole <code>svelte: ">=5 <6"</code> peer range.</p> </li> </ul> <h2><code>@embedpdf/engines</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/models</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/pdfium</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-annotation</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-attachment</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-bookmark</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-capture</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-commands</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-document-manager</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-export</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-form</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/embedpdf/embed-pdf-viewer/blob/v2.15.0/packages/plugin-interaction-manager/CHANGELOG.md">@embedpdf/plugin-interaction-manager's changelog</a>.</em></p> <blockquote> <h2>2.15.0</h2> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/embedpdf/embed-pdf-viewer/commit/a8faf04b15291c895118b819d7395c3bca8a4959"><code>a8faf04</code></a> chore: version packages</li> <li>See full diff in <a href="https://github.com/embedpdf/embed-pdf-viewer/commits/v2.15.0/packages/plugin-interaction-manager">compare view</a></li> </ul> </details> <br /> Updates `@embedpdf/plugin-pan` from 2.14.4 to 2.15.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/embedpdf/embed-pdf-viewer/releases">@embedpdf/plugin-pan's releases</a>.</em></p> <blockquote> <h2>Release v2.15.0</h2> <h2><code>@embedpdf/plugin-selection</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h3>Minor Changes</h3> <ul> <li> <p><a href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/685">#685</a> by <a href="https://github.com/simonmysun"><code>@simonmysun</code></a> – Add <code>setSelection(range, documentId?)</code> to the selection capability and document scope for programmatically applying or restoring a text selection.</p> <p>It accepts the same <code>SelectionRangeX</code> (<code>{ start, end }</code> glyph pointers) shape emitted by <code>onSelectionChange</code>, so a saved selection can be passed straight back in to restore it; passing <code>null</code> clears the selection. Page geometry is loaded on demand, so the returned task resolves only once the highlight rects are computed. The range is normalized (start/end may be given in any order), invalid input (malformed range, non-integer/negative indices, out-of-bounds pages) is rejected, glyph indices are clamped to the available page geometry, and previously highlighted pages are repainted so switching to a disjoint selection no longer leaves stale highlights behind.</p> </li> </ul> <h2><code>@embedpdf/core</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h3>Patch Changes</h3> <ul> <li> <p><a href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/703">#703</a> by <a href="https://github.com/berkayozdin"><code>@berkayozdin</code></a> – Make the precompiled Svelte output work on every Svelte 5 runtime</p> <p>Svelte 5.56 changed the <code>exclude</code> argument of the private <code>rest_props</code> runtime helper from an array (<code>exclude.includes(key)</code>) to a <code>Set</code> (<code>exclude.has(key)</code>). The <code>*/svelte</code> entry points ship precompiled component code, so output built against one side of that change throws on the other: the currently published packages fail with <code>TypeError: exclude.has is not a function</code> on Svelte >= 5.56, which aborts the render of every EmbedPDF Svelte component.</p> <p>The Svelte build now routes those calls through a wrapper that hands the runtime an <code>exclude</code> value satisfying both contracts, so one published build stays valid across the whole <code>svelte: ">=5 <6"</code> peer range.</p> </li> </ul> <h2><code>@embedpdf/engines</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/models</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/pdfium</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-annotation</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-attachment</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-bookmark</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-capture</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-commands</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-document-manager</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-export</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-form</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/embedpdf/embed-pdf-viewer/blob/v2.15.0/packages/plugin-pan/CHANGELOG.md">@embedpdf/plugin-pan's changelog</a>.</em></p> <blockquote> <h2>2.15.0</h2> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/embedpdf/embed-pdf-viewer/commit/a8faf04b15291c895118b819d7395c3bca8a4959"><code>a8faf04</code></a> chore: version packages</li> <li>See full diff in <a href="https://github.com/embedpdf/embed-pdf-viewer/commits/v2.15.0/packages/plugin-pan">compare view</a></li> </ul> </details> <br /> Updates `@embedpdf/plugin-print` from 2.14.4 to 2.15.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/embedpdf/embed-pdf-viewer/releases">@embedpdf/plugin-print's releases</a>.</em></p> <blockquote> <h2>Release v2.15.0</h2> <h2><code>@embedpdf/plugin-selection</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h3>Minor Changes</h3> <ul> <li> <p><a href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/685">#685</a> by <a href="https://github.com/simonmysun"><code>@simonmysun</code></a> – Add <code>setSelection(range, documentId?)</code> to the selection capability and document scope for programmatically applying or restoring a text selection.</p> <p>It accepts the same <code>SelectionRangeX</code> (<code>{ start, end }</code> glyph pointers) shape emitted by <code>onSelectionChange</code>, so a saved selection can be passed straight back in to restore it; passing <code>null</code> clears the selection. Page geometry is loaded on demand, so the returned task resolves only once the highlight rects are computed. The range is normalized (start/end may be given in any order), invalid input (malformed range, non-integer/negative indices, out-of-bounds pages) is rejected, glyph indices are clamped to the available page geometry, and previously highlighted pages are repainted so switching to a disjoint selection no longer leaves stale highlights behind.</p> </li> </ul> <h2><code>@embedpdf/core</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h3>Patch Changes</h3> <ul> <li> <p><a href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/703">#703</a> by <a href="https://github.com/berkayozdin"><code>@berkayozdin</code></a> – Make the precompiled Svelte output work on every Svelte 5 runtime</p> <p>Svelte 5.56 changed the <code>exclude</code> argument of the private <code>rest_props</code> runtime helper from an array (<code>exclude.includes(key)</code>) to a <code>Set</code> (<code>exclude.has(key)</code>). The <code>*/svelte</code> entry points ship precompiled component code, so output built against one side of that change throws on the other: the currently published packages fail with <code>TypeError: exclude.has is not a function</code> on Svelte >= 5.56, which aborts the render of every EmbedPDF Svelte component.</p> <p>The Svelte build now routes those calls through a wrapper that hands the runtime an <code>exclude</code> value satisfying both contracts, so one published build stays valid across the whole <code>svelte: ">=5 <6"</code> peer range.</p> </li> </ul> <h2><code>@embedpdf/engines</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/models</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/pdfium</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-annotation</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-attachment</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-bookmark</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-capture</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-commands</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-document-manager</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-export</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-form</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/embedpdf/embed-pdf-viewer/blob/v2.15.0/packages/plugin-print/CHANGELOG.md">@embedpdf/plugin-print's changelog</a>.</em></p> <blockquote> <h2>2.15.0</h2> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/embedpdf/embed-pdf-viewer/commit/a8faf04b15291c895118b819d7395c3bca8a4959"><code>a8faf04</code></a> chore: version packages</li> <li>See full diff in <a href="https://github.com/embedpdf/embed-pdf-viewer/commits/v2.15.0/packages/plugin-print">compare view</a></li> </ul> </details> <br /> Updates `@embedpdf/plugin-redaction` from 2.14.4 to 2.15.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/embedpdf/embed-pdf-viewer/releases">@embedpdf/plugin-redaction's releases</a>.</em></p> <blockquote> <h2>Release v2.15.0</h2> <h2><code>@embedpdf/plugin-selection</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h3>Minor Changes</h3> <ul> <li> <p><a href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/685">#685</a> by <a href="https://github.com/simonmysun"><code>@simonmysun</code></a> – Add <code>setSelection(range, documentId?)</code> to the selection capability and document scope for programmatically applying or restoring a text selection.</p> <p>It accepts the same <code>SelectionRangeX</code> (<code>{ start, end }</code> glyph pointers) shape emitted by <code>onSelectionChange</code>, so a saved selection can be passed straight back in to restore it; passing <code>null</code> clears the selection. Page geometry is loaded on demand, so the returned task resolves only once the highlight rects are computed. The range is normalized (start/end may be given in any order), invalid input (malformed range, non-integer/negative indices, out-of-bounds pages) is rejected, glyph indices are clamped to the available page geometry, and previously highlighted pages are repainted so switching to a disjoint selection no longer leaves stale highlights behind.</p> </li> </ul> <h2><code>@embedpdf/core</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h3>Patch Changes</h3> <ul> <li> <p><a href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/703">#703</a> by <a href="https://github.com/berkayozdin"><code>@berkayozdin</code></a> – Make the precompiled Svelte output work on every Svelte 5 runtime</p> <p>Svelte 5.56 changed the <code>exclude</code> argument of the private <code>rest_props</code> runtime helper from an array (<code>exclude.includes(key)</code>) to a <code>Set</code> (<code>exclude.has(key)</code>). The <code>*/svelte</code> entry points ship precompiled component code, so output built against one side of that change throws on the other: the currently published packages fail with <code>TypeError: exclude.has is not a function</code> on Svelte >= 5.56, which aborts the render of every EmbedPDF Svelte component.</p> <p>The Svelte build now routes those calls through a wrapper that hands the runtime an <code>exclude</code> value satisfying both contracts, so one published build stays valid across the whole <code>svelte: ">=5 <6"</code> peer range.</p> </li> </ul> <h2><code>@embedpdf/engines</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/models</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/pdfium</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-annotation</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-attachment</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-bookmark</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-capture</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-commands</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-document-manager</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-export</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-form</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/embedpdf/embed-pdf-viewer/blob/v2.15.0/packages/plugin-redaction/CHANGELOG.md">@embedpdf/plugin-redaction's changelog</a>.</em></p> <blockquote> <h2>2.15.0</h2> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/embedpdf/embed-pdf-viewer/commit/a8faf04b15291c895118b819d7395c3bca8a4959"><code>a8faf04</code></a> chore: version packages</li> <li>See full diff in <a href="https://github.com/embedpdf/embed-pdf-viewer/commits/v2.15.0/packages/plugin-redaction">compare view</a></li> </ul> </details> <br /> Updates `@embedpdf/plugin-render` from 2.14.4 to 2.15.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/embedpdf/embed-pdf-viewer/releases">@embedpdf/plugin-render's releases</a>.</em></p> <blockquote> <h2>Release v2.15.0</h2> <h2><code>@embedpdf/plugin-selection</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h3>Minor Changes</h3> <ul> <li> <p><a href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/685">#685</a> by <a href="https://github.com/simonmysun"><code>@simonmysun</code></a> – Add <code>setSelection(range, documentId?)</code> to the selection capability and document scope for programmatically applying or restoring a text selection.</p> <p>It accepts the same <code>SelectionRangeX</code> (<code>{ start, end }</code> glyph pointers) shape emitted by <code>onSelectionChange</code>, so a saved selection can be passed straight back in to restore it; passing <code>null</code> clears the selection. Page geometry is loaded on demand, so the returned task resolves only once the highlight rects are computed. The range is normalized (start/end may be given in any order), invalid input (malformed range, non-integer/negative indices, out-of-bounds pages) is rejected, glyph indices are clamped to the available page geometry, and previously highlighted pages are repainted so switching to a disjoint selection no longer leaves stale highlights behind.</p> </li> </ul> <h2><code>@embedpdf/core</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h3>Patch Changes</h3> <ul> <li> <p><a href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/703">#703</a> by <a href="https://github.com/berkayozdin"><code>@berkayozdin</code></a> – Make the precompiled Svelte output work on every Svelte 5 runtime</p> <p>Svelte 5.56 changed the <code>exclude</code> argument of the private <code>rest_props</code> runtime helper from an array (<code>exclude.includes(key)</code>) to a <code>Set</code> (<code>exclude.has(key)</code>). The <code>*/svelte</code> entry points ship precompiled component code, so output built against one side of that change throws on the other: the currently published packages fail with <code>TypeError: exclude.has is not a function</code> on Svelte >= 5.56, which aborts the render of every EmbedPDF Svelte component.</p> <p>The Svelte build now routes those calls through a wrapper that hands the runtime an <code>exclude</code> value satisfying both contracts, so one published build stays valid across the whole <code>svelte: ">=5 <6"</code> peer range.</p> </li> </ul> <h2><code>@embedpdf/engines</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/models</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/pdfium</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-annotation</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-attachment</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-bookmark</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-capture</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-commands</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-document-manager</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-export</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h2><code>@embedpdf/plugin-form</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/embedpdf/embed-pdf-viewer/blob/v2.15.0/packages/plugin-render/CHANGELOG.md">@embedpdf/plugin-render's changelog</a>.</em></p> <blockquote> <h2>2.15.0</h2> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/embedpdf/embed-pdf-viewer/commit/a8faf04b15291c895118b819d7395c3bca8a4959"><code>a8faf04</code></a> chore: version packages</li> <li>See full diff in <a href="https://github.com/embedpdf/embed-pdf-viewer/commits/v2.15.0/packages/plugin-render">compare view</a></li> </ul> </details> <br /> Updates `@embedpdf/plugin-rotate` from 2.14.4 to 2.15.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/embedpdf/embed-pdf-viewer/releases">@embedpdf/plugin-rotate's releases</a>.</em></p> <blockquote> <h2>Release v2.15.0</h2> <h2><code>@embedpdf/plugin-selection</code><a href="https://github.com/2"><code>@2</code></a>.15.0</h2> <h3>Minor Changes</h3> <ul> <li> <p><a href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/685">#685</a> by <a href="https://github.com/simonmysun"><code>@simonmysun</code></a> – Add <code>setSelection(range, documentId?)</code> to the selection capability and document scope for programmatically applying or restoring a text selection.</p> <p>It accepts the same <code>SelectionRangeX</code> (<code>{ star... _Description has been truncated_ Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> |
||
|
|
c19926456c |
build(deps): update built from source dep versions in Dockerfiles (#7412)
# Description of Changes PR updates built from source dep versions in Dockerfiles Changes: * Updated `CALIBRE_VERSION` from 9.4.0 to 9.13.0 in `docker/base/Dockerfile`. * Updated `GS_VERSION` (Ghostscript) from 10.06.0 to 10.07.1 in `docker/base/Dockerfile`. * Updated `IM_VERSION` (ImageMagick) from 7.1.2-13 to 7.1.2-29 in `docker/base/Dockerfile`. * Updated `QPDF_VERSION` is already at 12.3.2, no change. * Updated `UNOSERVER_VERSION` from 3.6 to 3.7 in both `docker/base/Dockerfile` and `docker/unoserver/Dockerfile` to align with the client version and avoid wire mismatches. * Updated `TASK_VERSION` from 3.49.1 to 3.52.0 in `docker/embedded/Dockerfile`, `docker/embedded/Dockerfile.fat`, `docker/embedded/Dockerfile.ultra-lite`, and `engine/Dockerfile`. <!-- Please provide a summary of the changes, including: - What was changed - Why the change was made - Any challenges encountered Closes #(issue_number) --> --- ## Checklist ### General - [X] I have read the [Contribution Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md) - [X] I have read the [Stirling-PDF Developer Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md) (if applicable) - [ ] I have read the [How to add new languages to Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md) (if applicable) - [X] I have performed a self-review of my own code - [X] My changes generate no new warnings ### Documentation - [ ] I have updated relevant docs on [Stirling-PDF's doc repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/) (if functionality has heavily changed) - [ ] I have read the section [Add New Translation Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md#add-new-translation-tags) (for new translation tags only) ### Translations (if applicable) - [ ] I ran [`scripts/counter_translation.py`](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/docs/counter_translation.md) ### UI Changes (if applicable) - [ ] Screenshots or videos demonstrating the UI changes are attached (e.g., as comments or direct attachments in the PR) ### Testing (if applicable) - [X] I have run `task check` to verify linters, typechecks, and tests pass - [X] I have tested my changes locally. Refer to the [Testing Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#7-testing) for more details. |
||
|
|
383710c1d2 |
style(navigation): improve unsaved changes modal (#7508)
# Description of Changes Improves the design of the unsaved changes modal. ### New <img width="802" height="466" alt="image" src="https://github.com/user-attachments/assets/f73bc51d-fb30-4075-a516-1aa0007d2735" /> ### Old <img width="908" height="450" alt="image" src="https://github.com/user-attachments/assets/ef004923-4121-4f28-81f8-e3ee3cd68f78" /> <!-- Please provide a summary of the changes, including: - What was changed - Why the change was made - Any challenges encountered Closes #(issue_number) --> --- ## Checklist ### General - [X] I have read the [Contribution Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md) - [X] I have read the [Stirling-PDF Developer Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md) (if applicable) - [ ] I have read the [How to add new languages to Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md) (if applicable) - [X] I have performed a self-review of my own code - [X] My changes generate no new warnings ### Documentation - [ ] I have updated relevant docs on [Stirling-PDF's doc repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/) (if functionality has heavily changed) - [ ] I have read the section [Add New Translation Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md#add-new-translation-tags) (for new translation tags only) ### Translations (if applicable) - [ ] I ran [`scripts/counter_translation.py`](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/docs/counter_translation.md) ### UI Changes (if applicable) - [X] Screenshots or videos demonstrating the UI changes are attached (e.g., as comments or direct attachments in the PR) ### Testing (if applicable) - [X] I have run `task check` to verify linters, typechecks, and tests pass - [X] I have tested my changes locally. Refer to the [Testing Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#7-testing) for more details. |
||
|
|
d8fc68a1a7 |
ci(e2e): use Playwright container for stubbed matrix (#7576)
# Description of Changes - Use the pinned official Playwright `v1.58.2-noble` container image. - Remove the per-browser `playwright install --with-deps` step from the matrix jobs. - Keep the browser matrix unchanged for independent Chromium, Firefox, and WebKit reporting. - Configure Playwright to use the container's root home directory while directing Docker to a separate configuration path. - Add npm retry and offline-cache settings to reduce transient dependency installation failures. This prevents three matrix jobs from concurrently downloading Playwright browsers and Linux dependencies, reducing network-related CI failures while preserving separate per-browser test results. --- ## Checklist ### General - [ ] I have read the [Contribution Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md) - [ ] I have read the [Stirling-PDF Developer Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md) (if applicable) - [ ] I have read the [How to add new languages to Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md) (if applicable) - [ ] I have performed a self-review of my own code - [ ] My changes generate no new warnings ### Documentation - [ ] I have updated relevant docs on [Stirling-PDF's doc repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/) (if functionality has heavily changed) - [ ] I have read the section [Add New Translation Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md#add-new-translation-tags) (for new translation tags only) ### Translations (if applicable) - [ ] I ran [`scripts/counter_translation.py`](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/docs/counter_translation.md) ### UI Changes (if applicable) - [ ] Screenshots or videos demonstrating the UI changes are attached (e.g., as comments or direct attachments in the PR) ### Testing (if applicable) - [ ] I have run `task check` to verify linters, typechecks, and tests pass - [ ] I have tested my changes locally. Refer to the [Testing Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#7-testing) for more details. |
||
|
|
96a00cebd1 |
Pdf ua converter testing (#7301)
# Description of Changes Adds a PDF/UA converter, an accessibility report, and PDF/A conformance level A. **New: `POST /api/v1/convert/pdf/ua`** (Convert tool, "PDF/UA" target). Tags an untagged PDF, marks decorative content as artifacts, embeds missing fonts and applies the document-level PDF/UA requirements (title, language, tab order, form-field descriptions), then validates with veraPDF. The `pdfuaid` declaration is written only if validation passes, so a returned file never claims more than it delivers; response headers report whether it was declared, how many checks still fail and how many images still need a description. **New: `POST /api/v1/security/accessibility-report`.** Reports what fails, what the converter can fix on its own, what needs a person, and lists the figures needing a description with the keys the conversion accepts back. Read-only; does not modify the file. Capped at 100 MB / 2000 pages and weighted `LARGE_WEIGHT`, since it runs a full veraPDF pass plus the converter's layout analysis over every page. **PDF/A level A.** `pdfa-1a`, `pdfa-2a` and `pdfa-3a` output formats on the existing `/api/v1/convert/pdf/pdfa` endpoint. Level A is level B plus tagging, so the document is tagged after Ghostscript (which discards any structure tree it is given) and the level A claim is written only if veraPDF agrees. Optional `pdfUa=true` additionally declares PDF/UA alongside PDF/A, again only if it validates. Honesty rules the implementation holds to: - **Never claim a level that was not reached.** If tagging fails, the file is returned at level B and is named `_PDFA-2b.pdf`, not `_PDFA-2a.pdf`. With `strict=true` the request fails outright rather than returning a level B file against a level A request, and a level B pass no longer satisfies a strict level A request. - **Never relabel a document's language.** The requested language (default `en-GB`) is applied only when the document declares none; a French PDF stays French unless the caller sets `overrideLanguage`, and ignoring a requested language is reported as a warning. - **Never invent alternative text.** Descriptions come from the caller. The Convert panel can list the images needing one (via the report endpoint) and send them back per figure; any image left undescribed blocks the conformance claim rather than being papered over. - **Never certify hidden content.** Marking images decorative, or suppressing text that could not be tagged reliably, withdraws the claim instead of passing the checker by hiding content. PDF/UA-1 and PDF/UA-2 are both offered; UA-2 raises the file to PDF 2.0 and namespaces the structure tree, and its test asserts conformance rather than merely reporting it. Convert steps saved in Automations/Pipelines round-trip their PDF/UA settings (profile, language, override, title, font embedding, descriptions). --- ## Checklist ### General - [ ] I have read the [Contribution Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md) - [ ] I have read the [Stirling-PDF Developer Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md) (if applicable) - [ ] I have read the [How to add new languages to Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md) (if applicable) - [ ] I have performed a self-review of my own code - [ ] My changes generate no new warnings ### Documentation - [ ] I have updated relevant docs on [Stirling-PDF's doc repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/) (if functionality has heavily changed) - [ ] I have read the section [Add New Translation Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md#add-new-translation-tags) (for new translation tags only) ### Translations (if applicable) - [ ] I ran [`scripts/counter_translation.py`](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/docs/counter_translation.md) ### UI Changes (if applicable) - [ ] Screenshots or videos demonstrating the UI changes are attached (e.g., as comments or direct attachments in the PR) ### Testing (if applicable) - [ ] I have run `task check` to verify linters, typechecks, and tests pass - [ ] I have tested my changes locally. Refer to the [Testing Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#7-testing) for more details. |
||
|
|
50d34fcca5 |
Add download, rename and duplicate to the file actions menu (#7536)
# Description of Changes Adds expanded dropdown menu for download, rename and duplicate <img width="560" height="380" alt="image" src="https://github.com/user-attachments/assets/84464f0a-46e1-42cf-8098-26f77888710f" /> <img width="560" height="480" alt="image" src="https://github.com/user-attachments/assets/ed871f98-7f89-4560-869e-9ff514000b6f" /> --- ## Checklist ### General - [ ] I have read the [Contribution Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md) - [ ] I have read the [Stirling-PDF Developer Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md) (if applicable) - [ ] I have read the [How to add new languages to Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md) (if applicable) - [ ] I have performed a self-review of my own code - [ ] My changes generate no new warnings ### Documentation - [ ] I have updated relevant docs on [Stirling-PDF's doc repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/) (if functionality has heavily changed) - [ ] I have read the section [Add New Translation Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md#add-new-translation-tags) (for new translation tags only) ### Translations (if applicable) - [ ] I ran [`scripts/counter_translation.py`](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/docs/counter_translation.md) ### UI Changes (if applicable) - [ ] Screenshots or videos demonstrating the UI changes are attached (e.g., as comments or direct attachments in the PR) ### Testing (if applicable) - [ ] I have run `task check` to verify linters, typechecks, and tests pass - [ ] I have tested my changes locally. Refer to the [Testing Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#7-testing) for more details. |
||
|
|
4791d558c5 |
Update Backend 3rd Party Licenses (#7579)
Auto-generated by stirlingbot[bot] This PR updates the backend license report based on dependency changes. Signed-off-by: stirlingbot[bot] <stirlingbot[bot]@users.noreply.github.com> Co-authored-by: stirlingbot[bot] <195170888+stirlingbot[bot]@users.noreply.github.com> |
||
|
|
91fc26f10c |
chore: Bump version to 2.14.3 (#7554)
# Description of Changes This PR bumps the Stirling PDF application version from `2.14.2` to `2.14.3` across the project. Changes include: - Updated the Gradle project version in `build.gradle` to `2.14.3`. - Updated the Tauri desktop application version in `frontend/editor/src-tauri/tauri.conf.json`. - Updated the AUR package version for `stirling-pdf-desktop`. - Updated the AUR package version for `stirling-pdf-server-bin`. - Updated the mocked `appVersion` used by the core frontend server experience simulations. - Updated the mocked `appVersion` used by the proprietary frontend server experience simulations. - Kept all application, desktop, packaging, and test/simulation version references synchronized for the `2.14.3` release. The change prepares the project metadata and packaging configuration for the `2.14.3` release and prevents different components from reporting or packaging the previous `2.14.2` version. --- ## Checklist ### General - [ ] I have read the [Contribution Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md) - [ ] I have read the [Stirling-PDF Developer Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md) (if applicable) - [ ] I have read the [How to add new languages to Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md) (if applicable) - [ ] I have performed a self-review of my own code - [ ] My changes generate no new warnings ### Documentation - [ ] I have updated relevant docs on [Stirling-PDF's doc repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/) (if functionality has heavily changed) - [ ] I have read the section [Add New Translation Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md#add-new-translation-tags) (for new translation tags only) ### Translations (if applicable) - [ ] I ran [`scripts/counter_translation.py`](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/docs/counter_translation.md) ### UI Changes (if applicable) - [ ] Screenshots or videos demonstrating the UI changes are attached (e.g., as comments or direct attachments in the PR) ### Testing (if applicable) - [ ] I have run `task check` to verify linters, typechecks, and tests pass - [ ] I have tested my changes locally. Refer to the [Testing Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#7-testing) for more details. |
||
|
|
f7ed1822c7 |
Float the editor search when no file is open (#7575)
## What The super-search work pinned the editor's `WorkbenchBar` visible on every view except My Files, even with no file open. That left an empty workbench showing a fully painted bar whose only live control was the search — download / close / print / save were all disabled, because those actions only make sense with a file open. This stops forcing the bar. When nothing is open, only the global search floats (unpainted, centered), mirroring how the Processor already works. When a file **is** open, the `WorkbenchBar` renders exactly as before. Also fixes a smaller Processor issue: its floating search strip was shorter than the sidebar logo row, so the search sat higher than the brand. Its height now matches the logo row (51px) so they line up. ## Changes - **`Workbench.tsx`** — render the `WorkbenchBar` only when a file is open (or a custom view supplies content); otherwise render the new floating search. My Files and `hideTopControls` custom views are unchanged. - **`WorkbenchFloatingSearch.tsx` / `.css`** (new) — the editor's `SuperSearch` floated in an unpainted strip, mirroring `PortalSearchBar`. Its vertical band matches the bar's so opening a file swaps in the bar without a shift. - **`PortalSearchBar.css`** — strip height matched to `.portal-sidebar__logo` (51px) so the Processor search aligns with the logo. The notification bell is intentionally out of scope — it ships in a separate PR. ## Before / after (ignore the bell icon in the after that’s not live yet) <img width="2056" height="1077" alt="Screenshot 2026-08-20 at 2 28 17 AM" src="https://github.com/user-attachments/assets/144f5216-4784-42b2-8c09-afda43577ad0" /> <img width="2056" height="1071" alt="Screenshot 2026-08-20 at 2 28 31 AM" src="https://github.com/user-attachments/assets/63af9303-af8a-48dd-b113-485169fb4924" /> - **Editor, no file:** painted bar with disabled buttons → just a floating search. - **Editor, file open:** unchanged. - **Processor:** search now vertically aligned with the logo. ## Testing - `task frontend:check` — lint (incl. colour linters) + typecheck + tests (247 files / 2137 tests) all pass. - Processor alignment verified in Storybook (`Portal/Shell/AppShell`): logo row, search strip, and search pill share the same vertical center. - Editor float not verified in-browser (local backend is behind a login gate); covered by types/tests and reuses the verified Processor pattern. |
||
|
|
a744102cb6 |
Support Supporting Files in Pipelines (#7547)
# Description of Changes Currently in the Processor's Pipelines page, none of the tools which require supporting files are usable because it's never been hooked up to the new API to upload supporting files. This PR hooks it up to that so all tools using supporting files work in the processor. I had to tweak the type generation a little for this so we have a static map of which params are for supporting files so we know to handle them differently. The `Test with a file` button has to work a little differently than the main run since it's running an ad-hoc pipeline so the files haven't necessarily been saved to the server yet. In this case, it'll use whatever local changes the user has made for those pipeline steps, and for all other steps, it'll just use what's saved in the server. |