mirror of
https://github.com/Stirling-Tools/Stirling-PDF.git
synced 2026-09-02 21:03:34 +03:00
17938ff5bcefc6b54e7e0065d029dd94cf5089dd
5851
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
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. |
||
|
|
1690cc25cc |
Update Frontend 3rd Party Licenses (#7573)
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> |
||
|
|
088e0ef4e2 |
deps(frontend): upgrade Cantoo PDF library to 2.8.2 (#7493)
# Description of Changes This pull request upgrades the frontend PDF dependency from `@cantoo/pdf-lib` 2.6.5 to 2.8.2. - Updated `frontend/package.json` to require `@cantoo/pdf-lib` `^2.8.2`. - Regenerated `frontend/package-lock.json` with `@cantoo/pdf-lib@2.8.2`, `pako@2.2.0`, and `node-html-better-parser@1.5.9`. - Added the root npm `pako` override recommended by the upstream release. - The upgrade brings upstream parser, object-stream, encryption, form, PNG, and PDF serialization fixes into the frontend dependency. - No application API migration was required because the project does not use the newly added PDF/A, XFA, Factur-X, incremental-update, fontkit, or page-content-extraction APIs. The main challenge was validating the broad upstream change set against the project's actual usage. The frontend typecheck and a direct PDF create/save/load smoke test passed. The complete `frontend:check` and `frontend:test` tasks exceeded the available execution timeout without reporting a test failure. No related issue. --- ## 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/HowToAddNewLanguage.md) (if applicable) - [x] 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/HowToAddNewLanguage.md#add-new-translation-tags) (for new translation tags only) ### 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 tested my changes locally. Refer to the [Testing Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing) for more details. |
||
|
|
6bae9d516d |
chore(saas): one task per environment, and make the frontend follow it (#7483)
## The problem The `dev` profile hardcoded one project ref (`qacaivhsjtftfwtgjvva`) in five places: the ref, the Supabase URL, the publishable key, the datasource host and the meter endpoint. That made it both the shared environment everyone relies on *and* the only thing you could point the backend at. Testing an open SaaS PR meant hand-overriding all five via env just to reach that PR's Supabase preview branch, which is the only place the PR's migrations have actually been applied. Get it wrong and you see `relation "stirling_pdf.<new table>" does not exist` for a table the PR added, which is what happened on [#7414](https://github.com/Stirling-Tools/Stirling-PDF/pull/7414). ## One task per environment ```bash task dev:saas # backend + frontend + engine, against this PR's preview branch task staging:saas # backend + frontend + engine, against the shared v3 project task backend:dev:saas # backend only, preview branch task backend:staging:saas # backend only, v3 ``` | | how | vars | project | |---|---|---|---| | prod | `PROFILES=none` | `SAAS_DB_*` | the live one | | staging | `PROFILES=staging` | `SAAS_STAGING_*` | pinned to v3, always there | | dev | `PROFILES=dev` | `SAAS_DEV_*` | follows a SaaS PR's preview branch | `PROFILES` is still the underlying switch, so the old spelling keeps working. Production deliberately has no named task: reaching it should take a conscious `PROFILES=none`, not a tab-complete. **staging** is the old `dev` configuration, moved and kept pinned. The value of a shared environment is that it is still there tomorrow: reproduce a bug, paste a link to a colleague, share data. **dev** is parameterised by `SAAS_DEV_PROJECT_REF` and derives the Supabase URL, JWT issuer, JWKS, meter endpoint and (unless overridden) the database host from it. Switching which PR you are testing is one variable instead of five. With no ref set, `task backend:dev:saas` stops and says what to set rather than falling back. ## The frontend was the real gap `frontend/editor/.env` is committed and pins the **production** Supabase project, and nothing in the frontend knew about dev or staging. So `task dev:saas` gave you a backend on a preview branch and a login against prod, unless you happened to have hand-written `frontend/editor/.env.saas.local`. The dev tasks now read the backend's env files and derive `VITE_SUPABASE_URL` and `VITE_SUPABASE_PUBLISHABLE_DEFAULT_KEY` from the same project ref the backend resolved, so the two halves cannot point at different projects. Nothing to keep in sync by hand, no new vite mode, and `SAAS_ENV=prod` opts back out to the committed values. ## Where to put your local values Two files, both gitignored, neither ever committed: **`app/.env.saas.local`** is the only one you normally need. The tasks load it for the backend *and* the frontend. ```bash # staging: everything else is already defaulted, so this is all it takes SAAS_STAGING_DB_PASSWORD=... # dev: the preview branch of the PR you are testing, from its "Supabase Preview" check. # A branch has its OWN password and API keys; the parent project's will not authenticate. SAAS_DEV_PROJECT_REF=... SAAS_DEV_DB_PASSWORD=... SAAS_DEV_PUBLISHABLE_KEY=... # prod, if you ever need it SAAS_DB_PROJECT_REF=... SAAS_DB_URL=... SAAS_DB_PASSWORD=... SUPABASE_EDGE_FUNCTION_SECRET=... ``` **`frontend/editor/.env.saas.local`** is no longer needed for choosing a Supabase project, and is best left empty or deleted. If you have one from before this PR, note that the task-supplied values now win, which is the point: the frontend follows the backend. **A blank is not the same as absent.** A dotenv line with an empty value still *sets* the variable, and Spring's `${VAR:default}` only falls back when a variable is absent. So `.env.saas` lists what you must set as blanks, and leaves out the two `*_DB_URL` overrides, which have real defaults to fall back to. This is not theoretical, see below. Committed `app/.env.saas` holds non-secret defaults only. Real secrets are passwords, the edge-function secret and service-role keys. Project refs and publishable keys are neither: a ref is the public `<ref>.supabase.co` subdomain and a publishable key ships in the browser bundle by design, which is why `frontend/editor/.env` has always carried prod's. ## Three bugs found while building the tasks All three were in this PR's own earlier commits, and all three were caught by actually booting things rather than by reading the config. **staging could not boot at all.** A blank `SAAS_STAGING_DB_URL=` in `.env.saas` set the variable to empty, so `${SAAS_STAGING_DB_URL:jdbc:...}` resolved to `""` and startup failed with `spring.datasource.url is required when the saas profile is active`. The file already carried a comment warning about exactly this; it had only been applied to the dev block. The original verification for this PR was "placeholders resolve" and "the task parses", neither of which boots anything. **The dev to staging fallback ran `ddl-auto=update` against shared v3.** The dev profile sets `update`, which is right for a disposable preview branch, and separately fell back to staging's project ref. Together that meant Hibernate was free to reconcile tables that RLS policies depend on. `application-staging.properties` pins `none`, but that only applies when the staging profile is the active one, which it was not on the fallback path. There is no fallback now: with no ref the task stops before gradle, and the frontend fails the same way, both naming the variable. **`PROFILES=` never selected production.** Go template `default` treats `""` as absent, so it silently resolved back to `dev`. It is `PROFILES=none` now. ## Two choices worth reviewing **Staging keeps its committed project ref**, now as a `${SAAS_STAGING_PROJECT_REF:...}` default in one place, with the URL, database host and meter endpoint all derived from it. So staging still works with zero setup, and repointing it is one variable. Nothing in CI referenced the ref or the profile. Its publishable key default carries no inline `gitleaks:allow`: a trailing comment in a `.properties` file is part of the value, so the pragma ended up inside the key. It is in `.gitleaksignore` instead. **`SAAS_DEV_DB_URL` still overrides the whole URL**, so a branch needing the pooler host rather than the direct one is reachable without touching committed config. ## Verification - `task backend:staging:saas` boots against v3 and serves `200`. It could not boot before this commit. - `task backend:dev:saas` with no ref stops before gradle naming the variable, and `PROFILES=none` still reaches production. `task frontend:dev:saas` fails the same way; `SAAS_ENV=staging` still resolves with no local config. - Frontend routing picks the SaaS runner for dev/staging and the plain runner for prod; the derivation returns the right URL and key for each. - Vite's `process.env` precedence and Task's dotenv/env semantics were measured, not assumed. That is how one trap surfaced: Task sets an `env:` key even when its value resolves to empty, and Vite treats an empty `process.env` `VITE_*` as authoritative over a committed `.env`. Putting the Supabase vars on the shared `dev:_run` would have blanked Supabase config for the core, proprietary and desktop dev servers, so the SaaS path has its own runner. - `:saas:spotlessApply` and `:saas:compileJava` green. `DevProfileProjectNotice` becomes `SaasProjectNotice` and covers both profiles, stating the project ref and `ddl-auto` at startup so which environment you are on is never a guess. No behaviour change for prod: the `saas` profile is untouched. |
||
|
|
0f8803f35f |
Require the policy-management role to run a policy against its sources (#7565)
## What
Running a stored policy against its **configured sources** (`POST
/api/v1/policies/{id}/trigger`, the manual "run now") now requires the
policy-management role — global admin self-hosted, team leader on SaaS —
alongside the existing team scoping.
## Why
A source sweep operates on the team's configured sources using the
server's stored connection credentials, so it belongs with the other
policy-management capabilities rather than with ordinary use. Team
scoping on its own didn't express that distinction.
## Not changed
- `POST /{id}/run` — running a policy over documents the **caller
supplied** stays open to every team member. That's ordinary editor
enforcement on upload and export, and gating it would break it.
- Ad-hoc pipelines (`/run`, `/run/stream`).
- The scheduled, folder-watch and webhook triggers.
- Single-user deployments (login disabled), which have no roles.
## Implementation
`PolicyManagementAuthority` gains `canTriggerPolicies()`, kept separate
from `canEditPolicies()` so the two capabilities can diverge later. Both
current implementations grant it to the same principals that may edit
policies.
## Tests
- role absent → 403, rejected before any run starts
- role present → 202
- login disabled → check skipped entirely
- `/{id}/run` asserted to consult neither authority method, so the gate
can't quietly extend to the editor path later
|
||
|
|
6f7f28946c |
Set deployment: false on environment jobs that do not deploy (#7562)
# Description of Changes thanks ludy for the tip :P --- ## 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. |
||
|
|
ec3de16c08 |
ci: centralize Gradle caching across GitHub Actions workflows (#7546)
## Summary This pull request restructures Gradle dependency caching across the GitHub Actions workflows. The central `gradle-cache-prime` job is responsible for preparing the shared backend Gradle cache. Reusable workflows restore that shared cache without writing to the same key, while independently triggered workflows use isolated cache namespaces. ## What changed ### Shared Gradle cache - Added a stable `gradle-v1-` cache namespace for the shared backend cache. - The cache key includes the runner OS, runner architecture, JDK version, and the relevant Gradle configuration files. - The cache key is calculated before Gradle runs and reused for the later save step. - The prime job performs a lookup first and resolves backend dependencies only when the exact cache is missing. - This prevents Gradle or Spotless changes during the prime step from producing a different save key from the key used by downstream jobs. ### Reusable workflows - Backend, OpenAPI, license, Docker, E2E, and migration workflows restore the shared cache instead of writing to the shared key. - The backend build matrix includes `matrix.jdk-version` in its cache key. - Enterprise, Tauri, and generated-model workflows support the `use_shared_cache` boolean input. - When `use_shared_cache` is enabled, those workflows restore the shared cache. - When it is disabled, they use workflow-specific cache namespaces. ### Independent workflows Independent workflows now use separate cache prefixes, including: - `gradle-license-report-v1-` - `gradle-swagger-v1-` - `gradle-push-docker-v1-` - `gradle-tauri-releases-v1-` - `gradle-deploy-pr-v1-` - `gradle-playwright-e2e-v1-` - `gradle-generated-models-v1-` This prevents them from creating or affecting the shared backend cache before the prime job. ### Build and E2E flow - Removed the `-PnoSpotless` option from the central Gradle dependency-resolution command. - Removed the separate Gradle dependency prime/retry logic from the live E2E workflow. - Connected the Tauri build and generated-models check to the central cache-prime job. ## Motivation Previously, multiple workflows could use and save the same Gradle cache key independently. The first workflow to save the cache could therefore determine its contents, even if it had resolved a different or incomplete set of dependencies. The cache key was also evaluated after some Gradle tasks had run. If Gradle or Spotless modified a file covered by `hashFiles(...)`, the save key could differ from the restore key used by downstream jobs. This change gives the shared cache a single owner, isolates workflow-specific caches, and makes cache usage deterministic across the CI pipeline. ## Expected result - `gradle-cache-prime` is the single writer for the shared backend Gradle cache. - Downstream jobs restore the same cache without competing cache writes. - Independently triggered workflows remain isolated through their own cache namespaces. - Changes to the monitored Gradle configuration files produce a new cache key. - The normal Gradle/Spotless path is included when the shared cache is populated. ## Validation - Compared the cache key expressions and `hashFiles(...)` inputs across the affected workflows. - Verified that the central restore and save steps use the same precomputed key. - CI should confirm that the prime job populates the shared cache and downstream workflows only restore it. ## Checklist - [ ] I have read the [Contribution Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md) - [ ] I have performed a self-review of my changes - [ ] I have run the relevant CI checks - [ ] I have tested the workflow changes |
||
|
|
913601ff03 |
Consolidate the editor + processor sidebar footers into one component (#7539)
## What Both sidebars ended in a different bottom section. The editor showed an account row (avatar, name, settings); the processor showed a "Link Stirling account" CTA plus a `Settings` nav item and no identity at all. They are now **one shared `<NavFooter>`** rendering the same rows in both apps, in this order: 1. the link-account CTA (self-hosted, when unlinked) 2. free credits remaining 3. **Open \<the other app\>** 4. the account row — avatar, name, settings It's a **single surface** with hairline dividers between rows, not stacked cards. Rows are assembled as a list, so a row this build doesn't show (no wallet, no processor access, nothing to link) takes its divider with it rather than leaving a stray line. This also fixes the profile-picture/initials desync between the sidebar and the account settings page. ## Screenshots Captured with the stubbed Playwright harness at 1600x900, scoped to the sidebar and auto-cropped to the region that actually changed. Base is `origin/main`; every state is driven by dummy backend stubs so all the nav-bar permutations are covered. <img width="2104" height="3044" alt="montage_cloud-dark" src="https://github.com/user-attachments/assets/667c9a71-3ab7-4582-9259-08cda521e238" /> <img width="2104" height="3044" alt="montage_cloud-light" src="https://github.com/user-attachments/assets/126bc994-efa3-436b-bf50-31d76f574eaa" /> <img width="2104" height="1492" alt="montage_editor-dark" src="https://github.com/user-attachments/assets/c725726d-ea90-4fa9-bf0a-6014f3729869" /> <img width="2104" height="1490" alt="montage_editor-light" src="https://github.com/user-attachments/assets/d0d34e0a-ac60-4f8c-af15-afb66fbd679e" /> <img width="2104" height="1066" alt="montage_processor-dark" src="https://github.com/user-attachments/assets/51ccfe63-c327-41f4-ab91-74555b6f7148" /> <img width="2104" height="1068" alt="montage_processor-light" src="https://github.com/user-attachments/assets/c90d7aba-90fa-4998-ac8f-26ce666dde71" /> The free-credits meter is a cloud-build surface, so the self-hosted capture can't reach it. Those states come from the new Storybook stories with dummy wallet data (`Shared/NavFooter`), which is also where the credit tone bands and the collapsed rail are easiest to review. ## How it's wired `NavFooter` is purely presentational. Each app resolves its own data through three `@app/*` seams, so core carries no build-specific gating and any box whose data is absent is dropped rather than rendered empty. | Seam | core | cloud / proprietary / saas | |---|---|---| | `useFreeCreditsSummary` | `null` — self-hosted editor installs aren't metered | cloud reads `freeRemaining` / `freeAllowance` off the same `useWallet()` the Plan page's free meter uses, so the sidebar and Plan can't disagree | | `useOtherAppSwitch` | `null` — core ships no processor | gated on `portalAccess` (`/api/v1/auth/me` in SaaS, the Spring session flag self-hosted) | | Link-account CTA | n/a | unchanged conditions — passed in as `accountExtras`, still only when `linkState === "unlinked"`, still a no-op in SaaS | - The processor reads the meter through its own `@portal/hooks/useFreeCreditsSummary` rather than the editor's `@app` one. Self-hosted resolves `@app/*` as proprietary → core, where the cloud wallet hook isn't in the cascade, and the implementation can't live in `proprietary/` because core/desktop builds ship no portal and must never resolve `@portal`. Keeping it in `portal/` gets the figure to the linked self-hosted processor without weakening that rule; it reads the same `GET /api/v1/payg/wallet` the Usage page's trial meter already renders, gated on link state and behind the portal's query cache. `portal-saas/` just re-exports the cloud hook, so both footers share one fetch. The processor-access gate previously lived in two near-identical `AppSwitcher` copies. It moves into `useOtherAppSwitch`, `AppSwitcher` now reads it too, and the duplicate `saas/components/shared/AppSwitcher.tsx` is deleted — the logo switcher and the footer row can no longer disagree about access. ## Profile picture sync One `useAccountIdentity` hook now backs the editor footer, the processor footer and the account settings page. Previously settings derived its initial from `email[0]` while the sidebar used `displayName[0]`, and the two drew different blue discs. Alongside that, the shared `Avatar`: - falls back to initials when a picture URL fails to load, instead of leaving an empty disc - renders one letter for single-word names (`admin` → "A", not "AD") - gains an `xl` size so the settings hero disc is the same component ## Notes - Labelled **"Free credits"** rather than "free monthly credits": `freeAllowance` is documented as a one-time lifetime grant, not a monthly reset, so "monthly" would misdescribe the data. Happy to change if the backend semantics differ from the type comments. ## Testing - `task frontend:check` and `task frontend:typecheck:all` pass (all 9 build variants). - 9 new `Shared/NavFooter` stories pass the Chromium + axe story scan; `frontend:storybook:a11y:changed` reports no regressions. - Stubbed E2E suite passes, including the `config-button` tour/settings specs that target the account row. Two failures (`console-clean › landing`, `viewer-text-selection › Ctrl+C`) also fail on `origin/main` locally — they need a backend on :8080 and clipboard permissions. |
||
|
|
cf49742d97 |
Fix the top bar styling (#7544)
Every top bar styled itself, so none of them matched the new UI. Also, colors on the premium banner (and possibly others) clashed since the theme changes. ## Before Example Issue <img width="1934" height="348" alt="Screenshot 2026-08-17 at 11 47 20 PM" src="https://github.com/user-attachments/assets/b6f13207-2f47-4084-bd3b-2392f572c1a1" /> ## After (all) <img width="2880" height="800" alt="danger__dark" src="https://github.com/user-attachments/assets/6b311dec-23e7-4059-a6bb-75527cbd2e34" /> <img width="2880" height="800" alt="danger__light" src="https://github.com/user-attachments/assets/3b04b109-5146-4874-88b3-d99770ea51f8" /> <img width="2880" height="800" alt="default-app__dark" src="https://github.com/user-attachments/assets/b0101b98-fce8-467a-99a6-dd40b8864da1" /> <img width="2880" height="800" alt="default-app__light" src="https://github.com/user-attachments/assets/8aa21f01-6549-4d78-b217-c5547d60ab5b" /> <img width="2880" height="800" alt="free-tier-limit__dark" src="https://github.com/user-attachments/assets/07fd7498-f44f-408f-8c79-9b5ea55e13df" /> <img width="2880" height="800" alt="free-tier-limit__light" src="https://github.com/user-attachments/assets/f38c527b-9f64-4db0-b84c-56ca48e464cc" /> <img width="2880" height="800" alt="server-attention__dark" src="https://github.com/user-attachments/assets/447a36fa-056d-4ca9-8b30-04aa0ccd6ed1" /> <img width="2880" height="800" alt="server-attention__light" src="https://github.com/user-attachments/assets/f0311d45-a218-4846-b0ac-47996e2637c5" /> <img width="2880" height="800" alt="team-invitation__dark" src="https://github.com/user-attachments/assets/cc368473-3b9f-4ab0-878a-67da993874c2" /> <img width="2880" height="800" alt="team-invitation__light" src="https://github.com/user-attachments/assets/19d52a3e-4028-46f0-8562-9bd9cef9397a" /> <img width="2880" height="800" alt="upgrade-prompt__dark" src="https://github.com/user-attachments/assets/e9d20daa-f41f-46d9-b827-a84f276e8af1" /> <img width="2880" height="800" alt="upgrade-prompt__light" src="https://github.com/user-attachments/assets/9b6250c1-6a61-40d6-a7ab-e37398d67322" /> ## What changed - `InfoBanner` exposed 8 colour-override props (`background`, `borderColor`, `textColor`, `iconColor`, `buttonColor`, `buttonTextColor`, `closeIconColor`, `buttonVariant`), so every caller invented its own look. Replaced with a closed tone set: `info` · `promo` · `warning` · `danger`. - Tone drives the whole bar — fill, border, icon and the button — so a CTA can't drift from the bar it sits on. Text is neutral in every tone; only the icon carries the tone colour. - All colour comes from `--c-*` tokens mixed over `--c-surface`, so the bars follow light and dark instead of ignoring them. The old bars were hardcoded: in dark mode the two licence warnings stayed cream-on-white. - `promo` keeps the gradient it was always meant to have, built from the existing `--c-hue-indigo`/`--c-hue-purple` stops (documented in `colors.css` as gradient hues, deliberately not accent-following), with the existing `premium` button accent on it. - Deleted the hardcoded colours from all four callers: the purple gradient (`#667eea`→`#764ba2`), the orange soup (`#FFF4E6` / `#9A3412` / `#EA580C`) duplicated across the urgent banner and the admin plan section, and the fixed dark bar (`--mantine-color-dark-7`) on the team invitation. - `UpgradeBanner|AdminPlanSection` sat on the theme linter's exemption list, which is how those colours survived the theme migration. Exemption removed, so `code-colors` now guards them. - The banner's class was colliding with `core/ui/Banner.css`'s `.sui-banner` (16 live rules), which restyled it in the app but not in Storybook — that's why the two disagreed on radius, border and tone. Renamed to `.app-banner`; the two surfaces now render identically. - Bar is square and full-bleed with a single hairline rule underneath; button labels are optically centred. - Added `--c-warning-subtle`, matching the existing `--c-danger-subtle` / `--c-success-subtle`. - New `Shared → Top bars` story renders all six bars at once, so a change to the shared component is visible against the whole set. - Unrelated one-liner: `frontend/.prettierignore` now ignores the gitignored `editor/screenshots/` capture artifacts, which were failing `format:check` locally. Happy to drop it if you'd rather keep this PR to the bars. ## Testing - `task frontend:check` — typecheck, lint (oxlint + 4 theme-lint passes + stylelint), format, 244 files / 2119 tests. - `frontend:storybook:a11y:changed` — clean in light and dark. - The a11y gate caught a real defect mid-change: giving each banner `role="region"` with the same label produced duplicate landmarks, which the app hits for real whenever two banners show at once. Landmark removed. - All six bars captured in the running editor, light and dark, and diffed against `origin/main`'s component rendered with each caller's original props. |
||
|
|
fb70fc13da |
Fix tools which crash in the Pipelines page (#7538)
# Description of Changes Overlay PDFs and Change Metadata both crashed in the Processor because they required `FilesModalContext` and `ViewerContext` respectively. Neither of those contexts make sense to provide in the Processor because there are no files in context and there is no Viewer, so redesign both tool settings to only optionally require these contexts. Their behaviour is unchanged in the Editor but they now work in the Processor (just without the extra info about the active files, since there are none). Also hooks up the Reorganise Pages settings so that it can be used from Automate. The component already existed but just wasn't being used, which just looks like an oversight. |
||
|
|
a14eec94ec |
Fix corner radius on Mantine checkboxes in Processor (#7537)
# Description of Changes ## Before <img width="314" height="311" alt="image" src="https://github.com/user-attachments/assets/93239e47-8dd4-4174-8a51-7a4a2494048f" /> ## After <img width="399" height="324" alt="image" src="https://github.com/user-attachments/assets/e2318559-006f-41e4-ac69-8c577ae60b89" /> |
||
|
|
89d8ffec5d |
Ci/environments cleanups, new envs and master to release naming (#7511)
# Description of Changes Ci/environments cleanups, new envs and master to release naming --- ## 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. |
||
|
|
526bb85e17 |
Translate the failures debug panel strings (#7500)
Follow-up to #7296, addressing a missing translation. |
||
|
|
99dda7a9f6 |
Convert Processor tables to be consistent with each other (#7312)
# Description of Changes Currently, the tables in the processor are inconsistently styled and function differently to each other because they don't all share the same table component. This is a big problem since the Processor is a largely table-based UI and most of most pages in it are tables. This PR creates a new common `DataTable` component and converts all existing tables in the Processor (other than those in the docs pages) to use it, tweaking the individual tables content as necessary so they all work the same. The `DataTable` component is designed to take minimal JSX as arguments. Instead, it takes typed data from the caller and it converts that into JSX, which makes it a lot easier to guarantee that the tables will all render the same and if we want to update the table styling in the future, we just need to do it in one place. I also added sorting capabilities to many of the tables since it was easy with the library and it was appropriate for many of the existing table columns. ## Table Comparisons <img width="2296" height="861" alt="AuditTab-comparison" src="https://github.com/user-attachments/assets/92473508-3f93-45c4-9485-ee21d0d1ecd0" /> <img width="2296" height="617" alt="DocumentExtractions-comparison" src="https://github.com/user-attachments/assets/cf194210-f4c9-42d1-bce1-5a70c0f8fdc5" /> <img width="2296" height="369" alt="InstanceHealthTable-comparison" src="https://github.com/user-attachments/assets/4b048c62-4237-4043-ae89-047df0cd7e60" /> <img width="2296" height="2304" alt="Integrations-comparison" src="https://github.com/user-attachments/assets/9d9edead-8da0-4d49-a249-253579cfdb0e" /> <img width="2296" height="521" alt="InvoicesList-comparison" src="https://github.com/user-attachments/assets/2b6d40b7-d63d-404b-a834-79d5fc62ba9d" /> <img width="2296" height="348" alt="LinkedInstancesTable-comparison" src="https://github.com/user-attachments/assets/fb65c660-baa4-4fcd-8893-05be1962fdab" /> <img width="2296" height="356" alt="PendingInvitations-comparison" src="https://github.com/user-attachments/assets/1f0105ed-b1f8-4e4e-998f-57024875a28f" /> <img width="2296" height="306" alt="PipelinesTable-comparison" src="https://github.com/user-attachments/assets/d84255bd-37f3-4245-b2b5-ef8c06c000ae" /> <img width="2296" height="652" alt="PolicyCatalogue-comparison" src="https://github.com/user-attachments/assets/55f25f20-46f0-47c0-aa40-516cbd5acab5" /> <img width="2296" height="1221" alt="ReviewQueueTable-comparison" src="https://github.com/user-attachments/assets/2206a50c-731f-48cc-958f-aad5e30e47b0" /> <img width="2296" height="344" alt="SourcesTable-comparison" src="https://github.com/user-attachments/assets/76b54efb-54ea-42a8-a0b1-b0cb21f73296" /> <img width="2296" height="659" alt="UsersDirectory-comparison" src="https://github.com/user-attachments/assets/524d1b63-efcf-4ac8-a07d-11aa1849c189" /> |
||
|
|
f15832b2bb |
chore(saas): make schema ownership explicit and enforce it (#7489)
## The problem The SaaS database has two writers and always has: the Supabase migrations in the SaaS repo, and Hibernate's `ddl-auto`. That was a convention rather than a rule, and it leaked twice. - An older `ddl-auto` run widened `team_memberships.role` to varchar(255), which needed [a dedicated migration](https://github.com/Stirling-Tools/Stirling-PDF-SaaS/blob/v3/supabase/migrations/20260804000000_fix_team_memberships_role_varchar50.sql) to repair, because RLS policies depended on the column. - `payg_instance_usage` shipped with an entity and **no migration**, and nobody noticed for months — staging already had the table from an earlier `ddl-auto` run. It surfaced only when a fresh preview branch, built from migrations alone, threw `relation does not exist`. Both are the same bug: nobody had to *say* who owned a table, so the answer got decided by accident. ## The fix `SaasSchemaOwnership` is the register — **29 migration-owned, 29 inherited** and left to Hibernate. `MigrationOwnedSchemaFilter` applies it via Hibernate's `hbm2ddl.schema_filter_provider`, wired on the **saas profile only**. Hibernate is never shown a migration-owned table, so it cannot create, alter, drop or truncate one whatever `ddl-auto` is set to. Inherited tables stay managed, so a fresh preview branch still heals itself on first boot. Self-hosted is untouched — there Hibernate rightly owns everything. **Why a filter rather than just `ddl-auto=none`:** off, and a fresh branch is missing the 29 inherited tables. On, and Hibernate can reach the other 29. The filter is what lets both be true at once. **Why per-table, not per-schema:** Hibernate's schema management runs over every mapped entity regardless of namespace. Moving SaaS tables to their own schema would *not* by itself keep Hibernate out of them — worth knowing, because that was the intuitive fix and it doesn't work. ## The part that makes it stick `SaasSchemaOwnershipTest` makes the register binding: every `@Entity` on the SaaS classpath must appear in exactly one set, so **a new entity fails the build until someone states who owns its table**. That's the forcing function that would have caught `payg_instance_usage`. I verified it bites rather than assuming it — removing a single entry fails with: ``` These entity tables are not declared in SaasSchemaOwnership, so nobody owns them. Offending tables -> entities: [policies (stirling.software.proprietary.policy.store.PolicyEntity)] ``` naming both the table and the class, which is what the next person actually needs. ## One debatable call The **validate** filter excludes them too. Letting validation through would flag drift, which is genuinely useful — but `ddl-auto=validate` fails startup, and it would fail on differences we've deliberately accepted (`ai_create_sessions` carries columns from a reverted Typst feature that nothing maps). A boot failure over a table we chose not to manage is noise. Argued in the javadoc; happy to flip it if you'd rather have the signal. ## Dependency Depends on [Stirling-PDF-SaaS#324](https://github.com/Stirling-Tools/Stirling-PDF-SaaS/pull/324), which adds migrations for the four SaaS-owned tables that had none. They're listed here as migration-owned on that basis, so #324 should land first. Companion to [#7483](https://github.com/Stirling-Tools/Stirling-PDF/pull/7483) (dev/staging profiles with per-profile `ddl-auto`). ## Verification `:saas:test` green including the 5 new tests, `spotlessCheck` green, and the mutation check above. |
||
|
|
08b08aa8a1 |
Let everyone read the failures they caused (Review Flow PR 3) (#7477)
Review Flow PR 3. Stacked on #7296. A recorded failure becomes readable by the person who caused it. ## What changes Before this, reading or triaging a failure required leader permissions: `FileRunEventController.requireFailureReviewAllowed()` returned 403 to anyone who could not edit policies. #7296 lets any user report a failure, so they could file into a queue they could never read. That gate is removed from the endpoints and the decision moves into `FileRunEventService`: | Caller | Reads and closes | |---|---| | Team leader or admin | the whole team's failures (unchanged) | | Anyone else | only failures where `actor` is them | | Team unresolvable | nothing | | Name unresolvable | nothing | `GET /kinds` is also opened. It returns static enum metadata, and a member needs it to render failures they can already see. ## Additions - An `actor` predicate on both list queries in `FileRunEventRepository`, threaded through `FileRunEventStore.list`. - `ReadScope` (permitted, teamId, actor) replacing `TeamScope`, with `wholeTeam` / `mine` / `denied` factories. - An actor filter on `dispatch`, so acting on another person's row answers **404, not 403** — the same response as an id that does not exist. ## Fixes - **`report()` filed rows under the wrong team.** It took the team from the read scope, which returns null for a caller who cannot be named, so such a report landed unteamed in the bucket every team shares. It now uses a dedicated `currentTeamId()`. - **`forgetFiles` narrows to the caller even for a leader.** File ids are minted by each client, so scoping on team alone would let one caller close a colleague's incidents by naming ids. - The controller no longer injects `PolicyManagementAuthority` or `ApplicationProperties`; with the gate gone it decides nothing. ## Team isolation Unchanged and covered by database-backed tests rather than mocks. `FileRunEventStoreDbTest` asserts that a caller with a team sees only their own team's rows and never the unteamed ones, and that the actor predicate narrows within a team without ever widening across one. Delete either clause from the JPQL and one of those tests fails. No endpoint accepts a team parameter; the team always comes from the authenticated principal. **Attribution is fixed here too, because this PR depends on it.** A failure's actor was read from the MDC audit principal, which carries the BILLING identity — for a stored policy, always its owner. Since reads are now narrowed to the rows you are the actor on, a wrong actor means the member who caused a failure and holds the document reads nothing, while the policy owner is handed incidents from runs they never triggered. The triggering user is now carried on the run, separate from the billing principal and the output owner, and is null for a trigger-fired sweep so an unattended failure stays ownerless. `PolicyFailureAttributionTest` runs the real engine, recorder, store and service together. The two sides used to assert independently — the engine's test matched the actor with `any()`, which is how this went unnoticed. ## How to test Needs a proprietary or SaaS build with login enabled and two accounts in the same team, one a leader and one not. `task dev:all` gives you the stack. 1. **As the member**, fail a tool: open a PDF and run **Remove Password** with a wrong password. 2. **Still as the member**, go to `/processor/documents` → **Failures**. Before this PR you got nothing here. Now you see your own row, and only yours. 3. **As the leader**, open the same view. You see the whole team's rows, including the member's. 4. **Member cannot reach a colleague's row.** As the leader, copy a row's id from **Show raw JSON**. As the member, `POST /api/v1/file-run-events/{thatId}/actions/DISMISS`. It answers **404**, and the row is untouched — it must not answer 403, which would confirm the row exists. 5. **Member can close their own.** Dismiss your own row as the member. It leaves the default view. 6. **Deleting a file only closes your own rows.** As the leader, delete a file in your editor. The member's incidents are untouched even if the leader's client happened to name the same ids. ## Migration None. `actor` is an existing column; this only adds predicates to existing queries. |
||
|
|
2c89f5fe52 |
fix(ci): locale path and docs (#7525)
# Description of Changes Update the TOML locale check to match the current frontend path and align comments/docs with the relocated editor and proprietary source layout. This keeps CI filtering and internal references accurate after the frontend reorganization. --- ## 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. |
||
|
|
9a90797041 |
build(deps): bump awsSdkVersion from 2.51.2 to 2.51.3 (#7529)
Bumps `awsSdkVersion` from 2.51.2 to 2.51.3. Updates `software.amazon.awssdk:s3` from 2.51.2 to 2.51.3 Updates `software.amazon.awssdk:url-connection-client` from 2.51.2 to 2.51.3 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> |
||
|
|
9c10204cb0 |
build(deps): bump Swatinem/rust-cache from 2.9.1 to 2.9.2 (#7531)
Bumps [Swatinem/rust-cache](https://github.com/swatinem/rust-cache) from 2.9.1 to 2.9.2. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/swatinem/rust-cache/releases">Swatinem/rust-cache's releases</a>.</em></p> <blockquote> <h2>v2.9.2</h2> <h2>What's Changed</h2> <ul> <li>Typofix by <a href="https://github.com/23Skidoo"><code>@23Skidoo</code></a> in <a href="https://redirect.github.com/Swatinem/rust-cache/pull/316">Swatinem/rust-cache#316</a></li> <li>fix: include target names in build/ and .fingerprint/ cleanup by <a href="https://github.com/eitsupi"><code>@eitsupi</code></a> in <a href="https://redirect.github.com/Swatinem/rust-cache/pull/317">Swatinem/rust-cache#317</a></li> <li>fix: include cdylib/rlib/dylib/staticlib targets in build and fingerprint cleanup by <a href="https://github.com/eitsupi"><code>@eitsupi</code></a> in <a href="https://redirect.github.com/Swatinem/rust-cache/pull/320">Swatinem/rust-cache#320</a></li> <li>Scan content of <code>$CARGO_HOME/bin</code> on restore instead of relying on <code>cargo install</code> metadata by <a href="https://github.com/clechasseur"><code>@clechasseur</code></a> in <a href="https://redirect.github.com/Swatinem/rust-cache/pull/325">Swatinem/rust-cache#325</a></li> <li>docs: Update checkout action version to latest by <a href="https://github.com/sondrelg"><code>@sondrelg</code></a> in <a href="https://redirect.github.com/Swatinem/rust-cache/pull/345">Swatinem/rust-cache#345</a></li> <li>Fix Windows cache path validation after Rollup migration by <a href="https://github.com/eitsupi"><code>@eitsupi</code></a> in <a href="https://redirect.github.com/Swatinem/rust-cache/pull/355">Swatinem/rust-cache#355</a></li> <li>fix: support Cargo V2 build dir layout by <a href="https://github.com/claytonwramsey"><code>@claytonwramsey</code></a> in <a href="https://redirect.github.com/Swatinem/rust-cache/pull/371">Swatinem/rust-cache#371</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/23Skidoo"><code>@23Skidoo</code></a> made their first contribution in <a href="https://redirect.github.com/Swatinem/rust-cache/pull/316">Swatinem/rust-cache#316</a></li> <li><a href="https://github.com/eitsupi"><code>@eitsupi</code></a> made their first contribution in <a href="https://redirect.github.com/Swatinem/rust-cache/pull/317">Swatinem/rust-cache#317</a></li> <li><a href="https://github.com/clechasseur"><code>@clechasseur</code></a> made their first contribution in <a href="https://redirect.github.com/Swatinem/rust-cache/pull/325">Swatinem/rust-cache#325</a></li> <li><a href="https://github.com/sondrelg"><code>@sondrelg</code></a> made their first contribution in <a href="https://redirect.github.com/Swatinem/rust-cache/pull/345">Swatinem/rust-cache#345</a></li> <li><a href="https://github.com/claytonwramsey"><code>@claytonwramsey</code></a> made their first contribution in <a href="https://redirect.github.com/Swatinem/rust-cache/pull/371">Swatinem/rust-cache#371</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/Swatinem/rust-cache/compare/v2.9.1...v2.9.2">https://github.com/Swatinem/rust-cache/compare/v2.9.1...v2.9.2</a></p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/Swatinem/rust-cache/blob/master/CHANGELOG.md">Swatinem/rust-cache's changelog</a>.</em></p> <blockquote> <h1>Changelog</h1> <h2>2.9.2</h2> <ul> <li>Fix <code>credentials.toml</code> cleanup</li> <li>Improvements to cleanup, preserving more valid targets</li> <li>Improvements to <code>cargo install</code> handling</li> <li>Correctly sort/dedupe Rust versions</li> </ul> <h2>2.9.1</h2> <ul> <li>Fix regression in hash calculation</li> </ul> <h2>2.9.0</h2> <ul> <li>Update to <code>node24</code></li> <li>Support running from within a <code>nix</code> shell</li> <li>Consider all installed toolchains for cache key</li> <li>Use case-insensitive comparison to determine exact cache hit</li> </ul> <h2>2.8.2</h2> <ul> <li>Don't overwrite env for cargo-metadata call</li> </ul> <h2>2.8.1</h2> <ul> <li>Set empty <code>CARGO_ENCODED_RUSTFLAGS</code> when retrieving metadata</li> <li>Various dependency updates</li> </ul> <h2>2.8.0</h2> <ul> <li>Add support for <code>warpbuild</code> cache provider</li> <li>Add new <code>cache-workspace-crates</code> feature</li> </ul> <h2>2.7.8</h2> <ul> <li>Include CPU arch in the cache key</li> </ul> <h2>2.7.7</h2> <ul> <li>Also cache <code>cargo install</code> metadata</li> </ul> <h2>2.7.6</h2> <ul> <li>Allow opting out of caching $CARGO_HOME/bin</li> <li>Add runner OS in cache key</li> <li>Adds an option to do lookup-only of the cache</li> </ul> <h2>2.7.5</h2> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/Swatinem/rust-cache/commit/6323deb102c322ba6fcbdcafc7e3dddab59af2b6"><code>6323deb</code></a> 2.9.2</li> <li><a href="https://github.com/Swatinem/rust-cache/commit/b16e8d71b289c3b8fc03fc09764563df03712036"><code>b16e8d7</code></a> bump rollup and rebuild</li> <li><a href="https://github.com/Swatinem/rust-cache/commit/3bf42ac996de475743278f3187c4fd89f23b8630"><code>3bf42ac</code></a> invert target/profile check in cleanup</li> <li><a href="https://github.com/Swatinem/rust-cache/commit/6e5b278ead409e28cd5a784014d7ce55007a81d2"><code>6e5b278</code></a> correctly sort and dedupe Rust versions</li> <li><a href="https://github.com/Swatinem/rust-cache/commit/5adc05f6aaa7c92756cb2e2c9b7b3c1d0df9312b"><code>5adc05f</code></a> Bump the actions group across 1 directory with 3 updates (<a href="https://redirect.github.com/swatinem/rust-cache/issues/368">#368</a>)</li> <li><a href="https://github.com/Swatinem/rust-cache/commit/66b1e9526150e74ddd7e4190356facd783fb3b44"><code>66b1e95</code></a> fix: support Cargo V2 build dir layout (<a href="https://redirect.github.com/swatinem/rust-cache/issues/371">#371</a>)</li> <li><a href="https://github.com/Swatinem/rust-cache/commit/72d126e709cad40056a62344eee609d696d62d33"><code>72d126e</code></a> Merge pull request <a href="https://redirect.github.com/swatinem/rust-cache/issues/367">#367</a> from Swatinem/dependabot/npm_and_yarn/dev-patch-2b495...</li> <li><a href="https://github.com/Swatinem/rust-cache/commit/48968d2131215f1c516b89399d23900d554f71fa"><code>48968d2</code></a> Bump the dev-patch group with 2 updates</li> <li><a href="https://github.com/Swatinem/rust-cache/commit/9f151aca7c3990bab7afe2d82ac58088d3b01074"><code>9f151ac</code></a> update dependencies, rebuild</li> <li><a href="https://github.com/Swatinem/rust-cache/commit/0e24e5dcecfbbdcea69e0f528cab00df34fbd231"><code>0e24e5d</code></a> Bump the actions group across 1 directory with 6 updates (<a href="https://redirect.github.com/swatinem/rust-cache/issues/364">#364</a>)</li> <li>Additional commits viewable in <a href="https://github.com/swatinem/rust-cache/compare/c19371144df3bb44fab255c43d04cbc2ab54d1c4...6323deb102c322ba6fcbdcafc7e3dddab59af2b6">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> |
||
|
|
beea37cb92 |
build(deps): bump step-security/harden-runner from 2.20.0 to 2.20.1 (#7466)
Bumps [step-security/harden-runner](https://github.com/step-security/harden-runner) from 2.20.0 to 2.20.1. <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.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/b09bb98e06d4d774595224525879c09bc6e98c40"><code>b09bb98</code></a> Merge pull request <a href="https://redirect.github.com/step-security/harden-runner/issues/680">#680</a> from step-security/aws-code-build</li> <li><a href="https://github.com/step-security/harden-runner/commit/35cd77bcf669054f67ffd3d2802ee54a4f13b5b6"><code>35cd77b</code></a> docs: document the Global Block List in the features list</li> <li><a href="https://github.com/step-security/harden-runner/commit/bb6dbef4bf53876cd2710acd1d36413620d20fb3"><code>bb6dbef</code></a> chore: rebuild dist with clean dependency install</li> <li><a href="https://github.com/step-security/harden-runner/commit/98f73c5a0d2b2cc518e6fb8d973a0a4dde00ba13"><code>98f73c5</code></a> chore: update eBPF agent to v1.8.14</li> <li><a href="https://github.com/step-security/harden-runner/commit/54193c17a4fa3883977217b9afe20378ebe60b19"><code>54193c1</code></a> Reapply "feat(runners): detect AWS CodeBuild-hosted runners as third-party pr...</li> <li><a href="https://github.com/step-security/harden-runner/commit/d22dd481cea4e96cedde031cfe600c248b592d54"><code>d22dd48</code></a> Revert "fix(self-hosted): flush agent events at job end when deploy-on-self-h...</li> <li><a href="https://github.com/step-security/harden-runner/commit/0ff09412fb572363b483a3c86ffe52fe61d9fd19"><code>0ff0941</code></a> fix(self-hosted): flush agent events at job end when deploy-on-self-hosted-vm...</li> <li><a href="https://github.com/step-security/harden-runner/commit/a3c333d110c8d95f34488a22e0e56742cfb1b14f"><code>a3c333d</code></a> Revert "feat(runners): detect AWS CodeBuild-hosted runners as third-party pro...</li> <li><a href="https://github.com/step-security/harden-runner/commit/bf94c00d6bba2ae7c4a479b86653039811569968"><code>bf94c00</code></a> feat(runners): detect AWS CodeBuild-hosted runners as third-party provider</li> <li><a href="https://github.com/step-security/harden-runner/commit/514522c5e449f9e28fc901f770e08a573d413e67"><code>514522c</code></a> fix(self-hosted): resolve runner user when USER env var is unset</li> <li>See full diff in <a href="https://github.com/step-security/harden-runner/compare/bf7454d06d71f1098171f2acdf0cd4708d7b5920...b09bb98e06d4d774595224525879c09bc6e98c40">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> |
||
|
|
fb0281fc80 |
build(deps-dev): bump codespell from 2.4.2 to 2.4.3 in /engine (#7456)
Bumps [codespell](https://github.com/codespell-project/codespell) from 2.4.2 to 2.4.3. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/codespell-project/codespell/releases">codespell's releases</a>.</em></p> <blockquote> <h2>v2.4.3</h2> <!-- raw HTML omitted --> <h2>What's Changed</h2> <ul> <li>Add 'radback' to dictionary with correction by <a href="https://github.com/Flo3561"><code>@Flo3561</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3883">codespell-project/codespell#3883</a></li> <li>Add 'repetirion' to dictionary corrections by <a href="https://github.com/Flo3561"><code>@Flo3561</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3885">codespell-project/codespell#3885</a></li> <li>Need to specify a version of Python version after all by <a href="https://github.com/DimitriPapadopoulos"><code>@DimitriPapadopoulos</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3887">codespell-project/codespell#3887</a></li> <li>[pre-commit.ci] pre-commit autoupdate by <a href="https://github.com/pre-commit-ci"><code>@pre-commit-ci</code></a>[bot] in <a href="https://redirect.github.com/codespell-project/codespell/pull/3889">codespell-project/codespell#3889</a></li> <li>Add cases for "modulle" -> "module" by <a href="https://github.com/utzcoz"><code>@utzcoz</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3888">codespell-project/codespell#3888</a></li> <li>Add case "auido" -> "audio" by <a href="https://github.com/utzcoz"><code>@utzcoz</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3890">codespell-project/codespell#3890</a></li> <li>Add credentilas->credentials and friends by <a href="https://github.com/peternewman"><code>@peternewman</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3895">codespell-project/codespell#3895</a></li> <li>Add the case "cubid" -> "cubic" by <a href="https://github.com/utzcoz"><code>@utzcoz</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3891">codespell-project/codespell#3891</a></li> <li>[pre-commit.ci] pre-commit autoupdate by <a href="https://github.com/pre-commit-ci"><code>@pre-commit-ci</code></a>[bot] in <a href="https://redirect.github.com/codespell-project/codespell/pull/3897">codespell-project/codespell#3897</a></li> <li>[pre-commit.ci] pre-commit autoupdate by <a href="https://github.com/pre-commit-ci"><code>@pre-commit-ci</code></a>[bot] in <a href="https://redirect.github.com/codespell-project/codespell/pull/3900">codespell-project/codespell#3900</a></li> <li>Bump codecov/codecov-action from 5 to 6 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/codespell-project/codespell/pull/3902">codespell-project/codespell#3902</a></li> <li>[pre-commit.ci] pre-commit autoupdate by <a href="https://github.com/pre-commit-ci"><code>@pre-commit-ci</code></a>[bot] in <a href="https://redirect.github.com/codespell-project/codespell/pull/3904">codespell-project/codespell#3904</a></li> <li>Add <code>magntiude->magnitude</code> by <a href="https://github.com/nathanjmcdougall"><code>@nathanjmcdougall</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3899">codespell-project/codespell#3899</a></li> <li>[pre-commit.ci] pre-commit autoupdate by <a href="https://github.com/pre-commit-ci"><code>@pre-commit-ci</code></a>[bot] in <a href="https://redirect.github.com/codespell-project/codespell/pull/3909">codespell-project/codespell#3909</a></li> <li>[pre-commit.ci] pre-commit autoupdate by <a href="https://github.com/pre-commit-ci"><code>@pre-commit-ci</code></a>[bot] in <a href="https://redirect.github.com/codespell-project/codespell/pull/3912">codespell-project/codespell#3912</a></li> <li>Add the case "instanc" -> "instance" by <a href="https://github.com/utzcoz"><code>@utzcoz</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3896">codespell-project/codespell#3896</a></li> <li>gampad -> gamepad (and plural) by <a href="https://github.com/julianstirling"><code>@julianstirling</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3906">codespell-project/codespell#3906</a></li> <li>Add typos of <code>monotonic</code> and <code>monotonicity</code> by <a href="https://github.com/nathanjmcdougall"><code>@nathanjmcdougall</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3898">codespell-project/codespell#3898</a></li> <li>Add spelling correction for multipile(s)/vulnerabities. by <a href="https://github.com/cfi-gb"><code>@cfi-gb</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3905">codespell-project/codespell#3905</a></li> <li>Add 'simpilfy -> simplify' by <a href="https://github.com/alexreinking"><code>@alexreinking</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3913">codespell-project/codespell#3913</a></li> <li>fix(packaging): prevent unwanted files and tests from being installed by <a href="https://github.com/mikelolasagasti"><code>@mikelolasagasti</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3911">codespell-project/codespell#3911</a></li> <li>Add skarhoj->SKAARHOJ to dictionary corrections by <a href="https://github.com/peternewman"><code>@peternewman</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3908">codespell-project/codespell#3908</a></li> <li>Improve the dictionary by <a href="https://github.com/algonell"><code>@algonell</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3914">codespell-project/codespell#3914</a></li> <li>Add spelling correction for accorss/accors. by <a href="https://github.com/cfi-gb"><code>@cfi-gb</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3916">codespell-project/codespell#3916</a></li> <li>Bump autofix-ci/action from 1.3.3 to 1.3.4 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/codespell-project/codespell/pull/3921">codespell-project/codespell#3921</a></li> <li>[pre-commit.ci] pre-commit autoupdate by <a href="https://github.com/pre-commit-ci"><code>@pre-commit-ci</code></a>[bot] in <a href="https://redirect.github.com/codespell-project/codespell/pull/3923">codespell-project/codespell#3923</a></li> <li>Add <code>influecer->influencer</code> and <code>influnce*</code> typos to dictionary by <a href="https://github.com/nathanjmcdougall"><code>@nathanjmcdougall</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3925">codespell-project/codespell#3925</a></li> <li>Add typos for <code>excavate</code> and variants by <a href="https://github.com/nathanjmcdougall"><code>@nathanjmcdougall</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3926">codespell-project/codespell#3926</a></li> <li>Dict: Add corrections for memoy by <a href="https://github.com/mdeweerd"><code>@mdeweerd</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3924">codespell-project/codespell#3924</a></li> <li><code>overheda -> overhead</code> by <a href="https://github.com/George-Ogden"><code>@George-Ogden</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3919">codespell-project/codespell#3919</a></li> <li><code>inclusize->inclusive</code> and variants by <a href="https://github.com/George-Ogden"><code>@George-Ogden</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3918">codespell-project/codespell#3918</a></li> <li>Add spelling corrections for authorization by <a href="https://github.com/cfi-gb"><code>@cfi-gb</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3922">codespell-project/codespell#3922</a></li> <li>[pre-commit.ci] pre-commit autoupdate by <a href="https://github.com/pre-commit-ci"><code>@pre-commit-ci</code></a>[bot] in <a href="https://redirect.github.com/codespell-project/codespell/pull/3927">codespell-project/codespell#3927</a></li> <li>Don't fix Voight by <a href="https://github.com/DimitriPapadopoulos"><code>@DimitriPapadopoulos</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3929">codespell-project/codespell#3929</a></li> <li>Add spelling corrections for interstect and interstection by <a href="https://github.com/korli"><code>@korli</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3928">codespell-project/codespell#3928</a></li> <li>[pre-commit.ci] pre-commit autoupdate by <a href="https://github.com/pre-commit-ci"><code>@pre-commit-ci</code></a>[bot] in <a href="https://redirect.github.com/codespell-project/codespell/pull/3930">codespell-project/codespell#3930</a></li> <li>Improve output in interactive mode by <a href="https://github.com/darkmattercoder"><code>@darkmattercoder</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3884">codespell-project/codespell#3884</a></li> <li>feat: support codespell:ignore-next-line directive by <a href="https://github.com/SAY-5"><code>@SAY-5</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3931">codespell-project/codespell#3931</a></li> <li>Add woork->work and formace->format and friends by <a href="https://github.com/peternewman"><code>@peternewman</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3828">codespell-project/codespell#3828</a></li> <li>shortctu -> shortcut by <a href="https://github.com/George-Ogden"><code>@George-Ogden</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3934">codespell-project/codespell#3934</a></li> <li>A couple typos by <a href="https://github.com/DimitriPapadopoulos"><code>@DimitriPapadopoulos</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3935">codespell-project/codespell#3935</a></li> <li>[pre-commit.ci] pre-commit autoupdate by <a href="https://github.com/pre-commit-ci"><code>@pre-commit-ci</code></a>[bot] in <a href="https://redirect.github.com/codespell-project/codespell/pull/3937">codespell-project/codespell#3937</a></li> <li>[pre-commit.ci] pre-commit autoupdate by <a href="https://github.com/pre-commit-ci"><code>@pre-commit-ci</code></a>[bot] in <a href="https://redirect.github.com/codespell-project/codespell/pull/3942">codespell-project/codespell#3942</a></li> <li>reclaculate->recalculate by <a href="https://github.com/adamgann"><code>@adamgann</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3936">codespell-project/codespell#3936</a></li> <li>Add spelling correction for improprt. by <a href="https://github.com/cfi-gb"><code>@cfi-gb</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3939">codespell-project/codespell#3939</a></li> <li>Dictionary plasic-plastic by <a href="https://github.com/julianstirling"><code>@julianstirling</code></a> in <a href="https://redirect.github.com/codespell-project/codespell/pull/3938">codespell-project/codespell#3938</a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/codespell-project/codespell/commit/57b21406f092110c18776e39b0bda50d37c945c8"><code>57b2140</code></a> Read only [tool.codespell] from TOML config (<a href="https://redirect.github.com/codespell-project/codespell/issues/3975">#3975</a>)</li> <li><a href="https://github.com/codespell-project/codespell/commit/23b8d940332bcff6369872b53964d4137c586728"><code>23b8d94</code></a> [pre-commit.ci] pre-commit autoupdate</li> <li><a href="https://github.com/codespell-project/codespell/commit/926c4d6ff083acc62bc04c102e0a9b2091d754f1"><code>926c4d6</code></a> [pre-commit.ci] pre-commit autoupdate</li> <li><a href="https://github.com/codespell-project/codespell/commit/820a3011e0bfe3f90789ba41e751a26656bea7ab"><code>820a301</code></a> Merge pull request <a href="https://redirect.github.com/codespell-project/codespell/issues/3967">#3967</a> from codespell-project/peternewman-patch-1</li> <li><a href="https://github.com/codespell-project/codespell/commit/9fe42c964c90f65a9a2841847af4e093c67ec817"><code>9fe42c9</code></a> Add common misspellings for reseeve->reserve to dictionary</li> <li><a href="https://github.com/codespell-project/codespell/commit/725173c815cee1b781b85ec51eb43dc4f51dcd0f"><code>725173c</code></a> [pre-commit.ci] pre-commit autoupdate</li> <li><a href="https://github.com/codespell-project/codespell/commit/86c13ee4dce0010e8d8119ded33694806e37ca8f"><code>86c13ee</code></a> [pre-commit.ci] pre-commit autoupdate</li> <li><a href="https://github.com/codespell-project/codespell/commit/7b9f36ce634c551107a3a4a5c25782a2245d7658"><code>7b9f36c</code></a> Bump actions/checkout from 6 to 7</li> <li><a href="https://github.com/codespell-project/codespell/commit/bcc1b804a83b8a146586101431b063c07cfcc699"><code>bcc1b80</code></a> Add spelling corrections for simpe and variants.</li> <li><a href="https://github.com/codespell-project/codespell/commit/89584cc1479d0f8dbfd501925673b6be6d460fe1"><code>89584cc</code></a> [pre-commit.ci] pre-commit autoupdate</li> <li>Additional commits viewable in <a href="https://github.com/codespell-project/codespell/compare/v2.4.2...v2.4.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> |
||
|
|
88db26b001 |
build(deps): bump the eclipse-temurin group across 3 directories with 1 update (#7453)
Bumps the eclipse-temurin group with 1 update in the /docker/backend directory: eclipse-temurin. Bumps the eclipse-temurin group with 1 update in the /docker/base directory: eclipse-temurin. Bumps the eclipse-temurin group with 1 update in the /docker/embedded directory: eclipse-temurin. Updates `eclipse-temurin` from `2f1da10` to `fbcf915` Updates `eclipse-temurin` from `2f1da10` to `fbcf915` Updates `eclipse-temurin` from `2f1da10` to `fbcf915` Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> |
||
|
|
0deb6fc3d5 |
build(deps): bump dorny/paths-filter from 4.0.2 to 4.0.3 (#7465)
Bumps [dorny/paths-filter](https://github.com/dorny/paths-filter) from 4.0.2 to 4.0.3. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/dorny/paths-filter/releases">dorny/paths-filter's releases</a>.</em></p> <blockquote> <h2>v4.0.3</h2> <h2>What's Changed</h2> <ul> <li>Update Outputs in readme to account for the 'every' predicate-quantifier by <a href="https://github.com/hintron"><code>@hintron</code></a> in <a href="https://redirect.github.com/dorny/paths-filter/pull/247">dorny/paths-filter#247</a></li> <li>fix: scope base-ignored warning to API path by <a href="https://github.com/saschabratton"><code>@saschabratton</code></a> in <a href="https://redirect.github.com/dorny/paths-filter/pull/319">dorny/paths-filter#319</a></li> <li>docs: add contents permission to PR example by <a href="https://github.com/134130"><code>@134130</code></a> in <a href="https://redirect.github.com/dorny/paths-filter/pull/248">dorny/paths-filter#248</a></li> <li>feat: add 'some-with-excludes' predicate quantifier by <a href="https://github.com/arxeiss"><code>@arxeiss</code></a> in <a href="https://redirect.github.com/dorny/paths-filter/pull/322">dorny/paths-filter#322</a></li> <li>Document safe handling of file list outputs in workflows by <a href="https://github.com/dorny"><code>@dorny</code></a> in <a href="https://redirect.github.com/dorny/paths-filter/pull/326">dorny/paths-filter#326</a></li> </ul> <h2>Security</h2> <ul> <li>Escape multi-line filenames in list-files shell and csv output] by <a href="https://github.com/ken-matsui"><code>@ken-matsui</code></a> and <a href="https://github.com/tjswlsgg"><code>@tjswlsgg</code></a> in <a href="https://github.com/advisories/GHSA-7hc6-8hq5-9q2m">https://github.com/advisories/GHSA-7hc6-8hq5-9q2m</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/hintron"><code>@hintron</code></a> made their first contribution in <a href="https://redirect.github.com/dorny/paths-filter/pull/247">dorny/paths-filter#247</a></li> <li><a href="https://github.com/134130"><code>@134130</code></a> made their first contribution in <a href="https://redirect.github.com/dorny/paths-filter/pull/248">dorny/paths-filter#248</a></li> <li><a href="https://github.com/arxeiss"><code>@arxeiss</code></a> made their first contribution in <a href="https://redirect.github.com/dorny/paths-filter/pull/322">dorny/paths-filter#322</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/dorny/paths-filter/compare/v4...v4.0.3">https://github.com/dorny/paths-filter/compare/v4...v4.0.3</a></p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/dorny/paths-filter/blob/master/CHANGELOG.md">dorny/paths-filter's changelog</a>.</em></p> <blockquote> <h1>Changelog</h1> <h2>v4.0.3</h2> <ul> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/326">Document safe handling of file list outputs in workflows</a></li> <li><a href="https://github.com/advisories/GHSA-7hc6-8hq5-9q2m">Escape multi-line filenames in list-files shell and csv output</a></li> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/322">Add 'some-with-excludes' predicate quantifier</a></li> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/248">Add contents permission to PR example</a></li> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/319">Scope base-ignored warning to API path</a></li> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/247">Update outputs in readme to account for the 'every' predicate-quantifier</a></li> </ul> <h2>v4.0.2</h2> <ul> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/317">Work around git dubious ownership errors in container jobs</a></li> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/303">Use rev-parse instead of branch --show-current for older git compat</a></li> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/282">Fix warning message</a></li> </ul> <h2>v4.0.1</h2> <ul> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/255">Support merge queue</a></li> </ul> <h2>v4.0.0</h2> <ul> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/294">Update action runtime to node24</a></li> </ul> <h2>v3.0.4</h2> <ul> <li><a href="https://github.com/advisories/GHSA-7hc6-8hq5-9q2m">Escape multi-line filenames in list-files shell and csv output</a></li> </ul> <h2>v3.0.3</h2> <ul> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/279">Add missing predicate-quantifier</a></li> </ul> <h2>v3.0.2</h2> <ul> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/224">Add config parameter for predicate quantifier</a></li> </ul> <h2>v3.0.1</h2> <ul> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/133">Compare base and ref when token is empty</a></li> </ul> <h2>v3.0.0</h2> <ul> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/210">Update to Node.js 20</a></li> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/215">Update all dependencies</a></li> </ul> <h2>v2.11.1</h2> <ul> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/167">Update @actions/core to v1.10.0 - Fixes warning about deprecated set-output</a></li> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/168">Document need for pull-requests: read permission</a></li> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/164">Updating to actions/checkout@v3</a></li> </ul> <h2>v2.11.0</h2> <ul> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/157">Set list-files input parameter as not required</a></li> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/161">Update Node.js</a></li> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/162">Fix incorrect handling of Unicode characters in exec()</a></li> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/163">Use Octokit pagination</a></li> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/160">Updates real world links</a></li> </ul> <h2>v2.10.2</h2> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/dorny/paths-filter/commit/ceb8a2b8f2d89434be7ff52d3de7ec3738c5cc9d"><code>ceb8a2b</code></a> Update CHANGELOG.md for v4.0.3 and v3.0.4 (<a href="https://redirect.github.com/dorny/paths-filter/issues/327">#327</a>)</li> <li><a href="https://github.com/dorny/paths-filter/commit/ef09b88f3eacdbec6ce135a7c9a193a6849545c1"><code>ef09b88</code></a> Document safe handling of file list outputs in workflows (<a href="https://redirect.github.com/dorny/paths-filter/issues/326">#326</a>)</li> <li><a href="https://github.com/dorny/paths-filter/commit/44adc5b06dc135dba334efce9bf3cf0624512d2d"><code>44adc5b</code></a> Merge commit from fork</li> <li><a href="https://github.com/dorny/paths-filter/commit/4711b7a31b4aa89103d8c6ffab2e3b8e7b6381c7"><code>4711b7a</code></a> feat: add 'some-with-excludes' predicate quantifier (<a href="https://redirect.github.com/dorny/paths-filter/issues/322">#322</a>)</li> <li><a href="https://github.com/dorny/paths-filter/commit/93c889f9e58fca66f35a0c83d8673ac7e88bb70a"><code>93c889f</code></a> fix: escape multi-line filenames in list-files shell and csv output</li> <li><a href="https://github.com/dorny/paths-filter/commit/b41dfa943b1939b9b646f67753bfe35cf6e4de03"><code>b41dfa9</code></a> docs: add contents permission to PR example (<a href="https://redirect.github.com/dorny/paths-filter/issues/248">#248</a>)</li> <li><a href="https://github.com/dorny/paths-filter/commit/9af6e5a9d010d1ae8ec570390b3d793e2b70a402"><code>9af6e5a</code></a> fix: scope base-ignored warning to API path (<a href="https://redirect.github.com/dorny/paths-filter/issues/319">#319</a>)</li> <li><a href="https://github.com/dorny/paths-filter/commit/cae9006b65a1a53044b518c68e13e835c54948a7"><code>cae9006</code></a> docs: update outputs in readme to account for the 'every' predicate-quantifie...</li> <li>See full diff in <a href="https://github.com/dorny/paths-filter/compare/7b450fff21473bca461d4b92ce414b9d0420d706...ceb8a2b8f2d89434be7ff52d3de7ec3738c5cc9d">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> |
||
|
|
42c84a1693 |
build(deps): bump base64 from 0.23.0 to 0.23.1 in /frontend/editor/src-tauri (#7460)
Bumps [base64](https://github.com/marshallpierce/rust-base64) from 0.23.0 to 0.23.1. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/marshallpierce/rust-base64/blob/master/RELEASE-NOTES.md">base64's changelog</a>.</em></p> <blockquote> <h1>0.23.1</h1> <ul> <li>Make the tests build again on non-SIMD architectures</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/marshallpierce/rust-base64/commit/069bf7067b949f5c0a92b6ceb82492920502f2c2"><code>069bf70</code></a> v0.23.1</li> <li><a href="https://github.com/marshallpierce/rust-base64/commit/6ab1fb0a5843013557a52c45c84b91f5d1bb87af"><code>6ab1fb0</code></a> Merge pull request <a href="https://redirect.github.com/marshallpierce/rust-base64/issues/310">#310</a> from musicinmybrain/test-on-non-simd-arches</li> <li><a href="https://github.com/marshallpierce/rust-base64/commit/7cffce6f971acdf48f83112cbdd63bd61125ba06"><code>7cffce6</code></a> Fix testing on architectures without unsafe SIMD support</li> <li><a href="https://github.com/marshallpierce/rust-base64/commit/e34f9a08c5c89a4641350ac22033f3fa4f5d4d97"><code>e34f9a0</code></a> Merge pull request <a href="https://redirect.github.com/marshallpierce/rust-base64/issues/308">#308</a> from atouchet/com</li> <li><a href="https://github.com/marshallpierce/rust-base64/commit/e9240c9a01e0a4934c5619e74740caa6d1f67ce9"><code>e9240c9</code></a> Remove outdated comment</li> <li>See full diff in <a href="https://github.com/marshallpierce/rust-base64/compare/v0.23.0...v0.23.1">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> |
||
|
|
e2700bf391 |
build(deps): bump go-task/setup-task from 2.0.0 to 2.1.0 (#7468)
Bumps [go-task/setup-task](https://github.com/go-task/setup-task) from 2.0.0 to 2.1.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/go-task/setup-task/releases">go-task/setup-task's releases</a>.</em></p> <blockquote> <h2>v2.1.0</h2> <h2>What's Changed</h2> <ul> <li>Replaced <code>typed-rest-client</code> with <code>@actions/http-client</code> for GitHub API calls to eliminate the Node 24 <code>DEP0169</code> deprecation warning about <code>url.parse()</code> (<a href="https://redirect.github.com/go-task/setup-task/issues/5">#5</a> by <a href="https://github.com/vmaerten"><code>@vmaerten</code></a>).</li> <li>Modernized the TypeScript tooling stack (vitest, oxlint, <code>@actions/core@2</code>, <code>@actions/io@2</code>, updated <code>@types/node</code>, <code>@vercel/ncc</code>, <code>prettier</code>, etc.) (<a href="https://redirect.github.com/go-task/setup-task/issues/5">#5</a> by <a href="https://github.com/vmaerten"><code>@vmaerten</code></a>).</li> <li>Migrated the project to ESM (sources + bundle). Aligns with the new <code>@actions/*</code> ESM-only majors and produces a ~47% smaller <code>dist/index.js</code> (<a href="https://redirect.github.com/go-task/setup-task/issues/5">#5</a> by <a href="https://github.com/vmaerten"><code>@vmaerten</code></a>).</li> <li>Upgraded <code>@actions/core</code> 2 → 3, <code>@actions/http-client</code> 2 → 4, <code>@actions/io</code> 2 → 3, <code>@actions/tool-cache</code> 2 → 4, <code>typescript</code> 5 → 6, and <code>markdownlint-cli</code> 0.47 → 0.48 (<a href="https://redirect.github.com/go-task/setup-task/issues/5">#5</a> by <a href="https://github.com/vmaerten"><code>@vmaerten</code></a>).</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/go-task/setup-task/blob/main/CHANGELOG.md">go-task/setup-task's changelog</a>.</em></p> <blockquote> <h1>Changelog</h1> <h2>Unreleased</h2> <h2>v2.2.0 - 2026-08-09</h2> <ul> <li>Added a <code>checksum</code> input to verify the SHA256 digest of the downloaded Task archive (<a href="https://redirect.github.com/go-task/setup-task/pull/16">#16</a> by <a href="https://github.com/illera88"><code>@illera88</code></a>).</li> <li>Updated development dependencies: <code>typescript</code> 6 → 7, <code>@vercel/ncc</code> 0.38 → 0.44, <code>markdownlint-cli</code> 0.48 → 0.49, and <code>oxfmt</code> 0.50 → 0.62 (<a href="https://redirect.github.com/go-task/setup-task/pull/15">#15</a>).</li> </ul> <h2>v2.1.0 - 2026-05-17</h2> <ul> <li>Replaced <code>typed-rest-client</code> with <code>@actions/http-client</code> for GitHub API calls to eliminate the Node 24 <code>DEP0169</code> deprecation warning about <code>url.parse()</code>.</li> <li>Modernized the TypeScript tooling stack (vitest, oxlint, <code>@actions/core@2</code>, <code>@actions/io@2</code>, updated <code>@types/node</code>, <code>@vercel/ncc</code>, <code>prettier</code>, etc.).</li> <li>Migrated the project to ESM (sources + bundle). Aligns with the new <code>@actions/*</code> ESM-only majors and produces a ~47% smaller <code>dist/index.js</code>.</li> <li>Upgraded <code>@actions/core</code> 2 → 3, <code>@actions/http-client</code> 2 → 4, <code>@actions/io</code> 2 → 3, <code>@actions/tool-cache</code> 2 → 4, <code>typescript</code> 5 → 6, and <code>markdownlint-cli</code> 0.47 → 0.48.</li> </ul> <h2>v2.0.0 - 2026-03-18</h2> <ul> <li><strong>BREAKING</strong>: Upgraded to Node 24. Requires a GitHub Actions runner with Node.js 24 support (<a href="https://redirect.github.com/go-task/setup-task/pull/10">#10</a> by <a href="https://github.com/vmaerten"><code>@vmaerten</code></a>).</li> </ul> <h2>v1.1.0 - 2026-03-17</h2> <ul> <li>Added configurable HTTP retry for API requests (<a href="https://redirect.github.com/go-task/setup-task/pull/7">#7</a> by <a href="https://github.com/vmaerten"><code>@vmaerten</code></a>).</li> </ul> <h2>v1.0.0 - 2025-09-12</h2> <ul> <li>Forked <a href="https://github.com/arduino/setup-task">arduino/setup-task</a> (by <a href="https://github.com/pd93"><code>@pd93</code></a>).</li> <li>Default <code>repo-token</code> to <code>{{github.token}}</code> (<a href="https://redirect.github.com/arduino/setup-task/pull/642">arduino/setup-task#642</a> by <a href="https://github.com/shrink"><code>@shrink</code></a>).</li> <li>Fixed a bug where the action would fail is Task pushed a tag without a release (<a href="https://redirect.github.com/arduino/setup-task/pull/490">arduino/setup-task#490</a>, <a href="https://redirect.github.com/arduino/setup-task/pull/1193">arduino/setup-task#1193</a> by <a href="https://github.com/trim21"><code>@trim21</code></a>).</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/go-task/setup-task/commit/54fb0b2f4e4f3b1c1e1c0b2050ab8f28d794ca5f"><code>54fb0b2</code></a> fix test</li> <li><a href="https://github.com/go-task/setup-task/commit/a3ce905e2b21a672e0f8b0109be2a38c5ffbd461"><code>a3ce905</code></a> fix test</li> <li><a href="https://github.com/go-task/setup-task/commit/533258619790ff7048a24bc82b7d097ffbfbde10"><code>5332586</code></a> fix test</li> <li><a href="https://github.com/go-task/setup-task/commit/7d25465fe82d5ceaa018b136e5117b6f8cd37eb2"><code>7d25465</code></a> fix test</li> <li><a href="https://github.com/go-task/setup-task/commit/7a0f90a08f2d4d3a3bb462b3e976240197d8925d"><code>7a0f90a</code></a> fix: fetch versions from release instead of tags</li> <li>See full diff in <a href="https://github.com/go-task/setup-task/compare/v2...01a4adf9db2d14c1de7a560f09170b6e0df736aa">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> |
||
|
|
eece9fbdf8 |
build(deps): bump commons-net:commons-net from 3.11.1 to 3.13.0 (#7517)
Bumps [commons-net:commons-net](https://github.com/apache/commons-net) from 3.11.1 to 3.13.0. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/apache/commons-net/blob/master/RELEASE-NOTES.txt">commons-net:commons-net's changelog</a>.</em></p> <blockquote> <h2>Apache Commons Net 3.13.0 Release Notes</h2> <p>The Apache Commons Net team is pleased to announce the release of Apache Commons Net 3.13.0.</p> <p>Apache Commons Net library contains a collection of network utilities and protocol implementations. Supported protocols include Echo, Finger, FTP, NNTP, NTP, POP3(S), SMTP(S), Telnet, and Whois.</p> <p>This is a feature and maintenance release. Java 8 or later is required.</p> <p>For complete information on Apache Commons Net, including instructions on how to submit bug reports, patches, or suggestions for improvement, see the Apache Commons Net website:</p> <p><a href="https://commons.apache.org/proper/commons-net/">https://commons.apache.org/proper/commons-net/</a></p> <p>Download page: <a href="https://commons.apache.org/proper/commons-net/download_net.cgi">https://commons.apache.org/proper/commons-net/download_net.cgi</a></p> <h2>New features</h2> <p>o Add DatagramSocketClient.getDefaultTimeoutDuration() and deprecate getDefaultTimeout(). Thanks to Gary Gregory. o NET-741: Add subnet IPv6 handling with SubnetUtils6 <a href="https://redirect.github.com/apache/commons-net/issues/391">#391</a>. Thanks to Maros Orsak, Gary Gregory.</p> <h2>Fixed Bugs</h2> <p>o DaytimeTCPClientTest now should now pass inside most VPNs. Thanks to Henri Biestro, Gary Gregory. o Migrate tests to JUnit5 <a href="https://redirect.github.com/apache/commons-net/issues/358">#358</a>, <a href="https://redirect.github.com/apache/commons-net/issues/359">#359</a>. Thanks to Jakub Kupczyk, Gary Gregory. o Fix malformed Javadoc comments. Thanks to Gary Gregory. o IMAPExportMbox now restores the current thread's interrupt flag when catching InterruptedException. Thanks to Gary Gregory. o IOUtil.readWrite() now restores the current thread's interrupt flag when catching InterruptedException. Thanks to Gary Gregory. o TelnetInputStream now restores the current thread's interrupt flag when catching InterruptedException. Thanks to Gary Gregory. o NET-740: FTP fails to parse listings for Linux vsftpd in Chinese or Japanese <a href="https://redirect.github.com/apache/commons-net/issues/393">#393</a>. Thanks to Jianwei Guo, Gary Gregory. o TelnetInputStream.read() doesn't preserve the original InterruptedException as the cause of its InterruptedIOException. Thanks to Gary Gregory. o FTPClient._storeFile(String, String, InputStream) doesn't always close it's internal socket when an exception is thrown early in processing. Thanks to Gary Gregory. o ListenerList.removeListener(T) now ignores null input to avoid a NullPointerException. Thanks to Gary Gregory. o ListenerList.addListener(T) now ignores null input. Thanks to Gary Gregory. o Fix typo in FTPConnectionClosedException message from FTP.getReply(boolean). Thanks to Gary Gregory. o Reimplement Util.copyReader() with IOUtils.copyLarge(). Thanks to Gary Gregory. o Reimplement Util.copyStream() with IOUtils.copyLarge(). Thanks to Gary Gregory. o Reimplement Util.copyStream() with IOUtils.copyLarge(). Thanks to Gary Gregory. o Deprecate Util.copyReader(Reader, Writer) in favor of IOUtils.copyLarge(Reader, Writer). Thanks to Gary Gregory.</p> <h2>Changes</h2> <p>o Bump org.apache.commons:commons-parent from 85 to 97 <a href="https://redirect.github.com/apache/commons-net/issues/371">#371</a>, <a href="https://redirect.github.com/apache/commons-net/issues/388">#388</a>, <a href="https://redirect.github.com/apache/commons-net/issues/389">#389</a>. Thanks to Gary Gregory, Dependabot. o Bump org.apache.commons:commons-lang3 from 3.18.0 to 3.19.0. Thanks to Gary Gregory, Dependabot.</p> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/apache/commons-net/commit/35fa0dff3e8660359832e72631ff3cf557b543a8"><code>35fa0df</code></a> Prepare for the release candidate 3.13.0 RC1</li> <li><a href="https://github.com/apache/commons-net/commit/1cc5b6e77d86bb54131742fee175e7c700bbf2ca"><code>1cc5b6e</code></a> Prepare for the next release candidate</li> <li><a href="https://github.com/apache/commons-net/commit/a4b246e085c1d3ce5936806d8f85d2e826daca8a"><code>a4b246e</code></a> Reuse IOUtils.copyLarge()</li> <li><a href="https://github.com/apache/commons-net/commit/e5ca262cea38b2f889eb003818cf9f97a6395ad6"><code>e5ca262</code></a> Javadoc</li> <li><a href="https://github.com/apache/commons-net/commit/3cb18ec82ef0b3640536137639763a682994a61e"><code>3cb18ec</code></a> Deprecate Util.copyReader(Reader, Writer) in favor of</li> <li><a href="https://github.com/apache/commons-net/commit/3373d77db2376665a034e753e3646251b3d23aa4"><code>3373d77</code></a> Reimplement Util.copyReader() with IOUtils.copyLarge()</li> <li><a href="https://github.com/apache/commons-net/commit/3be2077ccf1da69614a7883ed352037e30f3366f"><code>3be2077</code></a> Reimplement Util.copyStream() with IOUtils.copyLarge()</li> <li><a href="https://github.com/apache/commons-net/commit/7b41144008427acceea596ac74f36e716ea2586e"><code>7b41144</code></a> Javadoc</li> <li><a href="https://github.com/apache/commons-net/commit/1b584b493ffa6a1b42cbda3c7f683e073f1a3bdf"><code>1b584b4</code></a> Fix typo in FTPConnectionClosedException message from</li> <li><a href="https://github.com/apache/commons-net/commit/3792023843b95dabe60fb745287cae94c8a44be5"><code>3792023</code></a> Javadoc</li> <li>Additional commits viewable in <a href="https://github.com/apache/commons-net/compare/rel/commons-net-3.11.1...rel/commons-net-3.13.0">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> |
||
|
|
fb362f70ab |
build(deps): bump github/codeql-action/upload-sarif from 4.37.4 to 4.37.6 (#7467)
Bumps [github/codeql-action/upload-sarif](https://github.com/github/codeql-action) from 4.37.4 to 4.37.6. <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.6</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>v4.37.5</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> </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> <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> <ul> <li>Cache CodeQL CLI version information across Actions steps. <a href="https://redirect.github.com/github/codeql-action/pull/3943">#3943</a></li> <li>Reduce requests while waiting for analysis processing by using exponential backoff when polling SARIF processing status. <a href="https://redirect.github.com/github/codeql-action/pull/3937">#3937</a></li> <li>Update default CodeQL bundle version to <a href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.6">2.25.6</a>. <a href="https://redirect.github.com/github/codeql-action/pull/3948">#3948</a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/github/codeql-action/commit/5595ccaf912efad79be6eef63a5619ff05969be3"><code>5595cca</code></a> Merge pull request <a href="https://redirect.github.com/github/codeql-action/issues/4071">#4071</a> from github/update-v4.37.6-6a9359a1b</li> <li><a href="https://github.com/github/codeql-action/commit/ec9c75796a7f2cee5af0c5ffa0b81dc3bb58754b"><code>ec9c757</code></a> Add change note for PR 4070</li> <li><a href="https://github.com/github/codeql-action/commit/45c8742e17cbd668814137f95e605d925b8722a2"><code>45c8742</code></a> Update changelog for v4.37.6</li> <li><a href="https://github.com/github/codeql-action/commit/6a9359a1bd054c53cae7bb737bd8d796cfbf3014"><code>6a9359a</code></a> Merge pull request <a href="https://redirect.github.com/github/codeql-action/issues/4070">#4070</a> from github/mbg/remote-address/change-file-default</li> <li><a href="https://github.com/github/codeql-action/commit/065cdc0394d424981db720df63ebc570e41b775f"><code>065cdc0</code></a> Change <code>DEFAULT_CONFIG_FILE_NAME</code></li> <li><a href="https://github.com/github/codeql-action/commit/f99dd5aeee9cf92e92d0c700cb0aa7afd7bbf431"><code>f99dd5a</code></a> Merge pull request <a href="https://redirect.github.com/github/codeql-action/issues/4066">#4066</a> from github/dependabot/npm_and_yarn/js-yaml-5.2.2</li> <li><a href="https://github.com/github/codeql-action/commit/1804b211a343d69a6584d26fb3a68a8fe6ca39d4"><code>1804b21</code></a> Merge pull request <a href="https://redirect.github.com/github/codeql-action/issues/4068">#4068</a> from github/mergeback/v4.37.5-to-main-d1ba80a1</li> <li><a href="https://github.com/github/codeql-action/commit/3020a2f46286abb1704269b22ada83bd0e81c64f"><code>3020a2f</code></a> Rebuild</li> <li><a href="https://github.com/github/codeql-action/commit/93c3a5a40b7affbf8ea6a480767ed0db8e8d3c5c"><code>93c3a5a</code></a> Update changelog and version after v4.37.5</li> <li><a href="https://github.com/github/codeql-action/commit/d1ba80a13dd99fba24a470575428917156a28b43"><code>d1ba80a</code></a> Merge pull request <a href="https://redirect.github.com/github/codeql-action/issues/4067">#4067</a> from github/update-v4.37.5-1cd4d01d5</li> <li>Additional commits viewable in <a href="https://github.com/github/codeql-action/compare/f205ea1c3313d32999d8d6a48b4f6530d4437b38...5595ccaf912efad79be6eef63a5619ff05969be3">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> |
||
|
|
88afdd07af |
build(deps): bump awsSdkVersion from 2.44.12 to 2.51.2 (#7371)
Bumps `awsSdkVersion` from 2.44.12 to 2.51.2. Updates `software.amazon.awssdk:s3` from 2.44.12 to 2.51.2 Updates `software.amazon.awssdk:url-connection-client` from 2.44.12 to 2.51.2 Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> |
||
|
|
3bb3b721de |
build(deps): bump logback from 1.5.32 to 1.6.1 (#7339)
Bumps `logback` from 1.5.32 to 1.6.1. Updates `ch.qos.logback:logback-core` from 1.5.32 to 1.6.1 <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.1</h2> <p><strong>2026-07-28 Release of logback version 1.6.1</strong></p> <p>• In TimeBasedRollingPolicy, when the file option is set, the intermediate file renamed before asynchronous compression now receives the target archive name without the compression suffix (e.g. <code>.gz</code>, <code>.zip</code>, <code>.xz</code>). Previously it used a nanotime-based <code>.tmp</code> suffix. This makes the file easier to identify if compression fails during rollover. (See also the following paragraph.)</p> <p>• On GZ, ZIP, or XZ compression failure, the original (uncompressed) log file is no longer deleted. Compression strategies now delete the source file only after successful compression and emit a warning that the original was left intact.</p> <p>• ConsoleAppender with <!-- raw HTML omitted --> now probes JLine's org.jline.jansi.AnsiConsole first and falls back to the legacy FuseSource org.fusesource.jansi.AnsiConsole class. This keeps ANSI coloring working after Jansi moved under the JLine project. The optional org.jline:jansi-core artifact is declared as a dependency alongside the existing FuseSource jansi dependency. A preferredJansiClassName property was added for tests. This issue was reported in <a href="https://redirect.github.com/qos-ch/logback/issues/1043">issues/1043</a> by <a href="https://github.com/seonwooj0810">seonwoo_jung</a> who also provided the relevant PR.</p> <p>• LayoutWrappingEncoder now reports an error at start() when no layout is set and guards encode() against a null layout. Previously, a missing layout (for example after an ignored <!-- raw HTML omitted -->/<!-- raw HTML omitted -->/<!-- raw HTML omitted --> branch) allowed the encoder to start and then fail with a NullPointerException on every event, resulting in silent log loss. This issue was reported in <a href="https://redirect.github.com/qos-ch/logback/issues/1046">issues/1046</a> by <a href="https://github.com/seonwooj0810">seonwoo_jung</a> who also provided the relevant PR.</p> <p>• FileCollisionAnalyser now detects file collisions involving nested appenders of SiftingAppender. When the nested file or fileNamePattern does not textually reference the discriminator key (e.g. ${userId}), a warning is issued at configuration time naming the appender, the key, and the shared target. This closes a gap where statically declared file appenders were checked but sifted nested appenders were not. This enhancement was contributed in [PR <a href="https://redirect.github.com/qos-ch/logback/issues/1041">#1041</a>](<a href="https://redirect.github.com/qos-ch/logback/issues/1041">qos-ch/logback#1041</a>) by <a href="https://github.com/seonwooj0810">seonwoo_jung</a>.</p> <p>• More defensive handling in SyslogOutputStream and SyslogAppenderBase: the close() method now ensures that resources are closed, writes and flushes check that the underlying resources are in a valid state and fallback to no-op otherwise.</p> <p>• A bit-wise identical binary of this version can be reproduced by building from source code at commit 57759f433000a133088ef0441038963134437fbd associated with the tag v_1.6.1. The release was built using Java "21" 2023-10-17 LTS build 21.0.1.+12-LTS-29 under Linux Debian 11.6.</p> <p>• See <a href="https://logback.qos.ch/news.html#1.6.1">https://logback.qos.ch/news.html#1.6.1</a> for the original text.</p> <h2>Logback 1.6.0</h2> <p><strong>2026-07-23 Release of logback version 1.6.0</strong></p> <p>• Removed certain deprecated variables, methods, and classes. For the list of removed members see <a href="https://logback.qos.ch/notes/release_1.6.0.txt">release_1.6.0.txt.</a></p> <p>• In <code>AsyncAppenderBase</code>, the <code>put(ILoggingEvent)</code> method now has the protected modifier to allow access from derived classes. This change was requested by Thomas Skjølberg in <a href="https://redirect.github.com/qos-ch/logback/pull/1053">pr#1053</a>.</p> <p>• Bump SLF4J dependency to version 2.0.18.</p> <p>• <strong>See also the overview of the <a href="https://logback.qos.ch/news.html#latest_stable">1.6.x series</a>.</strong></p> <p>• A bit-wise identical binary of this version can be reproduced by building from source code at commit b07adf36019b51a10f824fdd94009985c587b1d3 associated with the tag v_1.6.0. The release was built using Java "21" 2023-10-17 LTS build 21.0.1.+12-LTS-29 under Linux Debian 11.6.</p> <h2>Logback 1.5.38</h2> <p><strong>2026-07-09 Release of logback version 1.5.38</strong></p> <p>• In <code>HardenedObjectInputStream</code>, fixed a typo preventing <code>Throwable</code> objects from being white-filtered. This issue was reported in [PR <a href="https://redirect.github.com/qos-ch/logback/issues/1045">#1045</a>](<a href="https://redirect.github.com/qos-ch/logback/pull/1045">qos-ch/logback#1045</a>) by <a href="https://github.com/t0rchwo0d">t0rchwo0d</a>.</p> <p>• A bitwise identical binary of this version can be reproduced by building from source code at commit d04984a41fce42977466f45a2f076f0ee5cc4207 associated with the tag v_1.5.38. Release built using Java "21" 2023-10-17 LTS build 21.0.1.+12-LTS-29 under Linux Debian 11.6.</p> <h2>Logback 1.5.37</h2> <p><strong>2026-06-26 Release of logback version 1.5.37</strong></p> <ol> <li>• Given the numerous vulnerabilities related to conditional configuration processing based on the evaluation of Java expressions using the Janino library, support for such expressions has been removed. Users are offered the an <a href="https://logback.qos.ch/translator/services/conditionalConfigMigrator.html">online migration service</a> or the <code><condition></code> element introduced in version 1.5.20. See the <a href="https://logback.qos.ch/manual/configuration.html#conditional">relevant documentation</a> for more details.</li> </ol> <p>• A bitwise identical binary of this version can be reproduced by building from source code at commit c1df7f522e648eec7b4ef6a12c8758fec0f00048 associated with the tag v_1.5.37. Release built using Java "21" 2023-10-17 LTS build 21.0.1.+12-LTS-29 under Linux Debian 11.6.</p> <h2>Logback 1.5.36</h2> <p><strong>2026-06-25 Release of logback version 1.5.36</strong></p> <p>• The 'condition' attribute in <code><if></code> elements now reject certain references that are associated with ACE attacks. This issue was reported by "yulate" (<a href="mailto:yulate531@gmail.com.com">yulate531@gmail.com.com</a>) and registered as <a href="https://www.cve.org/cverecord?id=CVE-2026-13006">CVE-2026-13006</a>. <strong>Please note that version 1.5.37 provides the full fix to this vulnerability.</strong></p> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/qos-ch/logback/commit/57759f433000a133088ef0441038963134437fbd"><code>57759f4</code></a> prepare release 1.6.1</li> <li><a href="https://github.com/qos-ch/logback/commit/175f99f2093ae07f4c8d44f93b800f65b03a6e19"><code>175f99f</code></a> fix imports</li> <li><a href="https://github.com/qos-ch/logback/commit/4b8773ed127fdc62b85a7c7ddaef10f25830788c"><code>4b8773e</code></a> add compressionFailureLeavesOriginalFileIntact test for XZ compression</li> <li><a href="https://github.com/qos-ch/logback/commit/cafaf1115fd20be19b2f7a4a09184446e8bbc04d"><code>cafaf11</code></a> do not delete original file if compression fails</li> <li><a href="https://github.com/qos-ch/logback/commit/ee50125b293f5a731543de9f9f5fb72756a43464"><code>ee50125</code></a> let the temporary file before compression be target file without the .gz or ....</li> <li><a href="https://github.com/qos-ch/logback/commit/5626acc301f4039537a6c668f0f2d51989472785"><code>5626acc</code></a> minor refactoring</li> <li><a href="https://github.com/qos-ch/logback/commit/d97da4fbc0de00ca901ef78d91b9fc1850ae803f"><code>d97da4f</code></a> minor refactoring</li> <li><a href="https://github.com/qos-ch/logback/commit/159c045d8f045ccf8b382775d81d83919c228cca"><code>159c045</code></a> more defensive coding in SyslogOutputStream and in SyslogAppenderBase</li> <li><a href="https://github.com/qos-ch/logback/commit/9427d6b23d5a692c8a76a994c076ef68ded7835c"><code>9427d6b</code></a> slight refactoring for clarity</li> <li><a href="https://github.com/qos-ch/logback/commit/79c4179c0b440a9dcf35bc9bda1ead2b2f90966c"><code>79c4179</code></a> slight refactoring</li> <li>Additional commits viewable in <a href="https://github.com/qos-ch/logback/compare/v_1.5.32...v_1.6.1">compare view</a></li> </ul> </details> <br /> Updates `ch.qos.logback:logback-classic` from 1.5.32 to 1.6.1 <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.1</h2> <p><strong>2026-07-28 Release of logback version 1.6.1</strong></p> <p>• In TimeBasedRollingPolicy, when the file option is set, the intermediate file renamed before asynchronous compression now receives the target archive name without the compression suffix (e.g. <code>.gz</code>, <code>.zip</code>, <code>.xz</code>). Previously it used a nanotime-based <code>.tmp</code> suffix. This makes the file easier to identify if compression fails during rollover. (See also the following paragraph.)</p> <p>• On GZ, ZIP, or XZ compression failure, the original (uncompressed) log file is no longer deleted. Compression strategies now delete the source file only after successful compression and emit a warning that the original was left intact.</p> <p>• ConsoleAppender with <!-- raw HTML omitted --> now probes JLine's org.jline.jansi.AnsiConsole first and falls back to the legacy FuseSource org.fusesource.jansi.AnsiConsole class. This keeps ANSI coloring working after Jansi moved under the JLine project. The optional org.jline:jansi-core artifact is declared as a dependency alongside the existing FuseSource jansi dependency. A preferredJansiClassName property was added for tests. This issue was reported in <a href="https://redirect.github.com/qos-ch/logback/issues/1043">issues/1043</a> by <a href="https://github.com/seonwooj0810">seonwoo_jung</a> who also provided the relevant PR.</p> <p>• LayoutWrappingEncoder now reports an error at start() when no layout is set and guards encode() against a null layout. Previously, a missing layout (for example after an ignored <!-- raw HTML omitted -->/<!-- raw HTML omitted -->/<!-- raw HTML omitted --> branch) allowed the encoder to start and then fail with a NullPointerException on every event, resulting in silent log loss. This issue was reported in <a href="https://redirect.github.com/qos-ch/logback/issues/1046">issues/1046</a> by <a href="https://github.com/seonwooj0810">seonwoo_jung</a> who also provided the relevant PR.</p> <p>• FileCollisionAnalyser now detects file collisions involving nested appenders of SiftingAppender. When the nested file or fileNamePattern does not textually reference the discriminator key (e.g. ${userId}), a warning is issued at configuration time naming the appender, the key, and the shared target. This closes a gap where statically declared file appenders were checked but sifted nested appenders were not. This enhancement was contributed in [PR <a href="https://redirect.github.com/qos-ch/logback/issues/1041">#1041</a>](<a href="https://redirect.github.com/qos-ch/logback/issues/1041">qos-ch/logback#1041</a>) by <a href="https://github.com/seonwooj0810">seonwoo_jung</a>.</p> <p>• More defensive handling in SyslogOutputStream and SyslogAppenderBase: the close() method now ensures that resources are closed, writes and flushes check that the underlying resources are in a valid state and fallback to no-op otherwise.</p> <p>• A bit-wise identical binary of this version can be reproduced by building from source code at commit 57759f433000a133088ef0441038963134437fbd associated with the tag v_1.6.1. The release was built using Java "21" 2023-10-17 LTS build 21.0.1.+12-LTS-29 under Linux Debian 11.6.</p> <p>• See <a href="https://logback.qos.ch/news.html#1.6.1">https://logback.qos.ch/news.html#1.6.1</a> for the original text.</p> <h2>Logback 1.6.0</h2> <p><strong>2026-07-23 Release of logback version 1.6.0</strong></p> <p>• Removed certain deprecated variables, methods, and classes. For the list of removed members see <a href="https://logback.qos.ch/notes/release_1.6.0.txt">release_1.6.0.txt.</a></p> <p>• In <code>AsyncAppenderBase</code>, the <code>put(ILoggingEvent)</code> method now has the protected modifier to allow access from derived classes. This change was requested by Thomas Skjølberg in <a href="https://redirect.github.com/qos-ch/logback/pull/1053">pr#1053</a>.</p> <p>• Bump SLF4J dependency to version 2.0.18.</p> <p>• <strong>See also the overview of the <a href="https://logback.qos.ch/news.html#latest_stable">1.6.x series</a>.</strong></p> <p>• A bit-wise identical binary of this version can be reproduced by building from source code at commit b07adf36019b51a10f824fdd94009985c587b1d3 associated with the tag v_1.6.0. The release was built using Java "21" 2023-10-17 LTS build 21.0.1.+12-LTS-29 under Linux Debian 11.6.</p> <h2>Logback 1.5.38</h2> <p><strong>2026-07-09 Release of logback version 1.5.38</strong></p> <p>• In <code>HardenedObjectInputStream</code>, fixed a typo preventing <code>Throwable</code> objects from being white-filtered. This issue was reported in [PR <a href="https://redirect.github.com/qos-ch/logback/issues/1045">#1045</a>](<a href="https://redirect.github.com/qos-ch/logback/pull/1045">qos-ch/logback#1045</a>) by <a href="https://github.com/t0rchwo0d">t0rchwo0d</a>.</p> <p>• A bitwise identical binary of this version can be reproduced by building from source code at commit d04984a41fce42977466f45a2f076f0ee5cc4207 associated with the tag v_1.5.38. Release built using Java "21" 2023-10-17 LTS build 21.0.1.+12-LTS-29 under Linux Debian 11.6.</p> <h2>Logback 1.5.37</h2> <p><strong>2026-06-26 Release of logback version 1.5.37</strong></p> <ol> <li>• Given the numerous vulnerabilities related to conditional configuration processing based on the evaluation of Java expressions using the Janino library, support for such expressions has been removed. Users are offered the an <a href="https://logback.qos.ch/translator/services/conditionalConfigMigrator.html">online migration service</a> or the <code><condition></code> element introduced in version 1.5.20. See the <a href="https://logback.qos.ch/manual/configuration.html#conditional">relevant documentation</a> for more details.</li> </ol> <p>• A bitwise identical binary of this version can be reproduced by building from source code at commit c1df7f522e648eec7b4ef6a12c8758fec0f00048 associated with the tag v_1.5.37. Release built using Java "21" 2023-10-17 LTS build 21.0.1.+12-LTS-29 under Linux Debian 11.6.</p> <h2>Logback 1.5.36</h2> <p><strong>2026-06-25 Release of logback version 1.5.36</strong></p> <p>• The 'condition' attribute in <code><if></code> elements now reject certain references that are associated with ACE attacks. This issue was reported by "yulate" (<a href="mailto:yulate531@gmail.com.com">yulate531@gmail.com.com</a>) and registered as <a href="https://www.cve.org/cverecord?id=CVE-2026-13006">CVE-2026-13006</a>. <strong>Please note that version 1.5.37 provides the full fix to this vulnerability.</strong></p> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/qos-ch/logback/commit/57759f433000a133088ef0441038963134437fbd"><code>57759f4</code></a> prepare release 1.6.1</li> <li><a href="https://github.com/qos-ch/logback/commit/175f99f2093ae07f4c8d44f93b800f65b03a6e19"><code>175f99f</code></a> fix imports</li> <li><a href="https://github.com/qos-ch/logback/commit/4b8773ed127fdc62b85a7c7ddaef10f25830788c"><code>4b8773e</code></a> add compressionFailureLeavesOriginalFileIntact test for XZ compression</li> <li><a href="https://github.com/qos-ch/logback/commit/cafaf1115fd20be19b2f7a4a09184446e8bbc04d"><code>cafaf11</code></a> do not delete original file if compression fails</li> <li><a href="https://github.com/qos-ch/logback/commit/ee50125b293f5a731543de9f9f5fb72756a43464"><code>ee50125</code></a> let the temporary file before compression be target file without the .gz or ....</li> <li><a href="https://github.com/qos-ch/logback/commit/5626acc301f4039537a6c668f0f2d51989472785"><code>5626acc</code></a> minor refactoring</li> <li><a href="https://github.com/qos-ch/logback/commit/d97da4fbc0de00ca901ef78d91b9fc1850ae803f"><code>d97da4f</code></a> minor refactoring</li> <li><a href="https://github.com/qos-ch/logback/commit/159c045d8f045ccf8b382775d81d83919c228cca"><code>159c045</code></a> more defensive coding in SyslogOutputStream and in SyslogAppenderBase</li> <li><a href="https://github.com/qos-ch/logback/commit/9427d6b23d5a692c8a76a994c076ef68ded7835c"><code>9427d6b</code></a> slight refactoring for clarity</li> <li><a href="https://github.com/qos-ch/logback/commit/79c4179c0b440a9dcf35bc9bda1ead2b2f90966c"><code>79c4179</code></a> slight refactoring</li> <li>Additional commits viewable in <a href="https://github.com/qos-ch/logback/compare/v_1.5.32...v_1.6.1">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> |
||
|
|
60741e305d |
Update CONTRIBUTING.md to include license information (#7512)
Added a section about licensing contributions to the project. # Description of Changes <!-- Please provide a summary of the changes, including: - What was changed - Why the change was made - Any challenges encountered Closes #(issue_number) --> --- ## 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. |
||
|
|
6143610608 |
fix(frontend): preserve pdf link targets in desktop viewer (#7235)
Same PR as #6396, just with the conflicts resolved and some fixes on top. Original commit by @saul1310 is preserved as-is; everything else is a follow-up commit. Refs #6272 ## Conflicts #6396 was written before the frontend was restructured, so all four files it touched moved (`frontend/src/**` -> `frontend/editor/src/**`) and `LinkLayer.tsx` had drifted. Cherry-picked with rename detection and re-resolved against current `main`. ## Fixes on top - **Reuse the existing platform seam instead of adding a second one.** `main` already has `@app/platform/*` seams with per-flavour implementations; #6396 added a parallel `@app/utils/openExternalUrl` core+desktop pair that re-implemented the Tauri shell call already in `desktop/platform/openExternal.ts`. Split into a pure sanitiser (`@app/utils/externalUrl`) and a platform seam (`@app/platform/openExternalTab`), with the desktop impl delegating to the existing `openExternal`. - **Kept PDF links off the `openExternal` seam.** That seam is for leave-and-return redirects (Stripe) and its saas impl is `window.location.assign` - routing PDF links through it would navigate the whole app away from the user's document. `openExternalTab` always opens alongside the app; desktop shadows it to escape the webview. - **Fixed the same defect in two sibling call sites** that #6396 didn't cover: `BookmarkSidebar` (bookmark URI / LaunchAppOrOpenFile actions) and `useAnnotationMenuHandlers` (annotation menu "go to link"). Both called `window.open` on an unsanitised PDF-supplied URI, so on desktop they trapped the link in the webview exactly like the viewer did. - **Dropped the unguarded fallback.** The old code fell back to `window.open(uri)` when `new URL()` threw, so an unparseable URI bypassed the allowlist entirely. It is now blocked. - Empty/whitespace URIs are blocked rather than silently resolving to the app's own page via the base URL. - Tests: sanitiser cases (casing, leading whitespace, `data:`, `vbscript:`, unparseable), a core seam test asserting new-tab-not-navigate, and a desktop seam regression test asserting the URL goes to the OS rather than `window.open`. - **`openExternalTab` now re-validates its own input.** Every caller sanitises first, so nothing reached it unvalidated - but it is the sink that hands a URL to `window.open` (executes `javascript:` in our origin) or to an OS handler on desktop, and its safety shouldn't depend on callers remembering. Both impls fail closed, with tests that call them directly with `javascript:`/`data:`/`file:`/`ftp:`. ## Unrelated fix included (flagged deliberately) The last commit fixes `frontend/editor/vitest.config.ts`: `testTimeout: 10000` was set on the root `test` block, but tests all run under `projects`, which do not inherit it - so the whole suite has silently been running at vitest's 5s default. This is not cosmetic. It made `task check` fail intermittently on unrelated portal specs (`demoData`, `ConnectionModal`); the ConsignO test takes 2966ms with only the portal project running, i.e. 59% of a budget it was never meant to have, so any CPU contention tips it over. Proven with an identical 6.5s probe test: times out at 5000ms on the old config, passes at 6512ms on the fixed one. Happy to split this into its own PR if preferred - it is here because the gate could not be trusted without it. ## Validation Typecheck passes for all 7 build flavours (core, proprietary, saas, desktop, cloud, prototypes, portal); ESLint, Prettier, dpdm and the full 1662-test vitest suite pass. Driven live against the dev server + backend with a PDF carrying five URI annotations (https, `javascript:`, mailto, `file:`, relative). 14/14 behavioural checks pass on this branch; 5 of them fail on `main`: | check | main | this PR | | --- | --- | --- | | safe https link exposes real href (copy-link) | `href="#"` | `https://example.com/safe-link?a=1` | | link opens in new tab / tabnabbing-proof | no `target`/`rel` | `_blank` + `noopener noreferrer` | | mailto link exposes real href | `href="#"` | `mailto:test@example.com` | | relative URI resolved against app origin | `href="#"` | resolved | | `javascript:` / `file:` never reach href | blocked | blocked | | clicking blocked link doesn't execute or navigate | ok | ok | | clicking safe link opens new tab at source URL | - | ok, app not navigated away | --- ## 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 performed a self-review of my own code - [x] My changes generate no new warnings ### Testing (if applicable) - [x] I have run `task check` to verify linters, typechecks, and tests pass - [x] I have tested my changes locally --------- Co-authored-by: Saul <saulifshin.cs@gmail.com> |
||
|
|
bff1ea916d |
Add n8n connection preset and workflow step operations (#7447)
# Description of Changes Add n8n, simple reuse of webhook call etc and custom API etc etc <img width="2104" height="1090" alt="image" src="https://github.com/user-attachments/assets/0d0df39a-31b3-4e1b-ac63-847aefa06ffe" /> <img width="2104" height="1592" alt="image" src="https://github.com/user-attachments/assets/4074cce2-0f4b-4300-813c-d49576b33940" /> <img width="1021" height="797" alt="image" src="https://github.com/user-attachments/assets/370f54f7-3066-4454-9618-9ddd2cb91b83" /> --- ## 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. |
||
|
|
2483e9f37a |
Report editor-originated failures into the same queue (Review Flow PR 2) (#7296)
Review Flow PR 2 of 5. Editor tool failures now reach the same durable queue as failures from folders, buckets and webhooks. ## What's added **A report endpoint** — `POST /api/v1/file-run-events/reports`, open to any authenticated user. Takes four fields: `operation`, `errorCode`, `fileIds`, `detail`. No team, no actor, no filename: the first two come from the session, the third is never a field. Refused with 400 above 200 file ids, and nothing is written when refused. **Automatic reporting from every tool** — wired into `useToolOperation`, so no per-tool work is needed. Client-side refusals (an unsupported format that never reaches the server) are reported too. User cancellations are not. **Error codes parsed from Blob bodies as well as JSON** — a download-typed tool call fails with a Blob, so `errorCodeOf` handles both shapes. **Source attribution for unattended runs** — `sourceId` is threaded from `PolicyRunner` through `PolicyRun` to the recorded row and out to the wire, so a folder, bucket or webhook failure names what fed it. Previously it had none. **Deleting a file closes its failures** — `FileContext.removeFiles` notifies `POST /removed-files`, which transitions those incidents to `FILE_REMOVED`. Terminal, so they leave every reviewer's queue. The rows stay for audit. **The queue can be emptied** — reads now default to open statuses only; ask for a status explicitly to see closed rows. ## Behaviour changes - **Editor failures dedup per person.** `RecordFailure.scopeRef()` includes the actor for TOOL-origin rows, so two people hitting the same failure on the same file are two incidents rather than one. Processor rows are unaffected and their dedup key is byte-identical to before. - **`UNKNOWN` offers only Dismiss.** Acknowledge is no longer offered on it. - **Background reports no longer raise a toast.** Both calls pass `suppressErrorToast`, so a failed report is silent as intended; previously a core build showed the user a "Not Found" toast on every tool failure. ## What is stored File ids only, never names. The request type has no filename field, and a `fileNames` value handed to the client reporter is accepted and ignored. One caveat to review deliberately: the free-text `detail` is stored **verbatim**. `RecordFailure` truncates it at 2000 characters and nothing else; the redaction that used to strip name-shaped text was reverted in `024899f3f6` because it made an unclassified failure impossible to act on. A backend message that embeds a filename (LibreOffice conversion errors, IO errors) will therefore persist that text and show it to a team leader. ## How to test Needs a proprietary or SaaS build with login enabled. `task dev:all` gives you one. 1. **Report a failure from a tool.** Open a PDF, run **Remove Password** on it with a wrong password. Nothing visible changes for you: reporting is silent by design. 2. **See it recorded.** Go to `/processor/documents` and scroll to **Failures** (dev builds only). A row appears titled "Password-protected document", with `Hit by <your user>`. Press **Show raw JSON** to see exactly what was stored. 3. **Confirm no filename is stored as data.** In that JSON, `fileId` is an opaque uuid and there is no name field. Note the `detail` string may contain a filename if the backend put one in its message, per the caveat above. 4. **Confirm the request is capped.** In DevTools, POST to `/api/v1/file-run-events/reports` with 201 entries in `fileIds`. It returns 400 naming the limit, and no rows are added. 5. **Deleting a file clears its failure.** Back in the editor, delete the file you just failed on. Refresh the failures list: its row is gone from the default view. Filter by `FILE_REMOVED` to see it still exists. 6. **Two people, two incidents.** Have a colleague fail the same tool on their own copy of the same file. Two rows, not one occurrence count. ## Migration `source_id` is a new column and `FILE_REMOVED` a new status value. Both are already in the SaaS migration ([Stirling-PDF-SaaS #322](https://github.com/Stirling-Tools/Stirling-PDF-SaaS/pull/322)); self-hosted picks them up from `ddl-auto`. |
||
|
|
6f2b829f72 |
Filter Pipelines page to only show what the user thinks as pipelines (#7495)
# Description of Changes Currently, the Pipelines page shows all backend Policies, which was the desired behaviour when we first designed this, but as it's come along, it doesn't feel right anymore. This adds a filter so the Pipelines table only shows things that have been defined by the user as a New Pipeline, so not Policies etc. ## Before <img width="1510" height="789" alt="image" src="https://github.com/user-attachments/assets/5aebb065-3d42-4483-be3c-253fd8918d49" /> ## After <img width="1512" height="790" alt="image" src="https://github.com/user-attachments/assets/2966a0de-ec9f-43e6-bb1d-c4aeb30dfbf8" /> |
||
|
|
588afb6306 |
Fix a11y violations in nightlies and improve a11y config (#7499)
# Description of Changes This fixes the a11y violations that are currently failing in the nightlies in dark mode. Now that we're down to 0 baseline, we can require the a11y tests to pass in PRs before they merge, so I've changed that, and I've also made it so that the nightly will report failures in both light and dark mode instead of just light mode if that fails. <img width="2560" height="838" alt="image" src="https://github.com/user-attachments/assets/b0322182-f6ff-4dea-9a1c-5a6c9c9c5439" /> |
||
|
|
0be10b2dff |
Cucumber concurrency validation plus fix (#7379)
# Description of Changes cucumber tests to run multiple threads of commands at same time --- ## 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. |
||
|
|
55087313b7 |
Processor UI snags: fat CTAs, real Infrastructure tabs, one surface style (#7497)
Five unrelated snags in the processor (portal) UI, plus fixes they turned up. No backend changes. `84 files changed, +892 / −3364` ## Fat CTA buttons - New `fat` prop on the SUI `Button`: 2.75rem tall, 1.25rem side padding, 0.75rem corners, semibold. Composes with all four variants/accents. - Applied to the page-header CTA on Sources, Documents, Pipelines, Users (both), Usage, Integrations, Infrastructure — 8 buttons, all in line with a page title. Nothing else. - `LandingActions` migrated onto the prop; `.landing-btn-primary` / `.landing-btn-secondary` and their four `!important`s deleted. The editor landing CTAs come down 4px with everything else. - Infrastructure's header CTA is now primary; its "Create key" dropped to secondary so they stop competing. <!--IMG:buttons--> ## Documents empty state - "Connect a source" opened the Sources *page*; it now opens the `SourceModal` connect flow in place, no route change. - No extra cache wiring: `SourceModal` already invalidates the sources query. <!--IMG:documents--> ## Infrastructure tabs - Only API Keys and Audit Logs hit real endpoints. Deployments, Security, Models and Storage read mock-only `/v1/infrastructure/*` that no backend serves. - Those four are now disabled: native `disabled`, out of the keyboard tab order, `aria-disabled`, with the view refusing non-enabled keys as a second guard. - Real tabs moved leftmost; API Keys is the default; `?tab=` deep links validated against the enabled set (the home flow's audit link still works). - Deleted: 4 tab components, their fetch fns and ~25 dead types, MSW handlers, fixtures (908 → 253 lines), dead CSS, unused formatters, 240 lines of `en-US` strings. Most of the −3364. - Page subtitle no longer advertises the disabled tabs. <!--IMG:infrastructure--> ## Surface consolidation - New `Surface` primitive (`sui-surface`): fill, hairline, radius, no shadow. Kept separate from `sui-nav-surface` so nav chrome can diverge later. - `Card` composes it and no longer draws its own shadow — this changes editor Card usages too, by design. - SUI primitives that are surfaces adopt it: `MetricCard`, `MetricStrip`, `NodeCard`, `Table`, `Collapsible`, `CodeBlock`. - The portal gets its own `.portal-surface` with the same three declarations, applied to 19 elements. A `sui-` class belongs to the component that emits it, so feature markup doesn't wear one. - `raised` variant = one subtle shadow for a surface in front of another surface (the flow diagram's tiles). Same fill as its parent, so nesting never shifts a region's colour. Dark has its own value. - Floating chrome (modals, drawers, dropdowns, assistant, sidebar) keeps its elevation; sunken wells stay sunken. <!--IMG:surfaces--> ## Sources list - Centred "No sources connected yet" empty state removed — it duplicated the header CTA and pushed the table down the page. The header's "Connect source" is the single way in. ## Drive-by fixes - The connect flow rendered unstyled outside the Sources view: `.portal-conn-picker__*` / `.portal-sources__connection-*` lived in `views/Sources.css`, which none of the five components rendering them imported. Moved to `components/sources/connections.css`. - Three inert custom properties (`--surface-input`, `--color-border-2`, `--text-default`) are defined nowhere in the codebase — `.portal-conn-picker__card` had no fill at all as a result. - Dead CSS removed from `Sources.css` (grep-verified unused): old expanded-row panel + its keyframes, type-card block. ## Testing - `task frontend:check` — typecheck, lint (oxlint + 4 theme-lint passes + stylelint), format, 238 files / 2063 tests. - `frontend:typecheck:all` across all 9 tsconfigs. - `frontend:storybook:a11y:changed` — 119 stories, light and dark, zero violations, no regressions vs baseline. - New tests: `Infrastructure.test.tsx` (tab order, default, disabled behaviour, deep-link filtering) and a Documents test that the empty-state CTA opens the modal without navigating. - Merged `origin/main` (#7438 replaced `PipelineHeader` with the new Create/Edit headers); full suite green at 240 files / 2072 tests after the merge. |