Reece Browne and GitHub
b68b406a2a
Fix rotate failing on large documents ( #5917 )
2026-03-12 17:57:43 +00:00
James Brunton and GitHub
8674765528
Add system for managing env vars ( #5902 )
...
# Description of Changes
Previously, `VITE_*` environment variables were scattered across the
codebase with hardcoded fallback values inline (e.g.
`import.meta.env.VITE_STRIPE_KEY || 'pk_live_...'`). This made it
unclear which variables
were required, what they were for, and caused real keys to be silently
used in builds where they hadn't been explicitly configured.
## What's changed
I've added `frontend/.env.example` and `frontend/.env.desktop.example`,
which declare every `VITE_*` variable the app uses, with comments
explaining each one and sensible defaults where applicable. These
are the source of truth for what's required.
I've added a setup script which runs before `npm run dev`, `build`,
`tauri-dev`, and all `tauri-build*` commands. It:
- Creates your local `.env` / `.env.desktop` from the example files on
first run, so you don't need to do anything manually
- Errors if you're missing keys that the example defines (e.g. after
pulling changes that added a new variable). These can either be
manually-set env vars, or in your `.env` file (env vars take precedence
over `.env` file vars when running)
- Warns if you have `VITE_*` variables set in your environment that
aren't listed in any example file
I've removed all `|| 'hardcoded-value'` defaults from source files
because they are not necessary in this system, as all variables must be
explicitly set (they can be set to `VITE_ENV_VAR=`, just as long as the
variable actually exists). I think this system will make it really
obvious exactly what you need to set and what's actually running in the
code.
I've added a test that checks that every `import.meta.env.VITE_*`
reference found in source is present in at least one example file, so
new variables can't be added without being documented.
## For contributors
New contributors shouldn't need to do anything - `npm run dev` will
create your `.env` automatically.
If you already have a `.env` file in the `frontend/` folder, you may
well need to update it to make the system happy. Here's an example
output from running `npm run dev` with an old `.env` file:
```
$ npm run dev
> [email protected] dev
> npm run prep && vite
> [email protected] prep
> tsx scripts/setup-env.ts && npm run generate-icons
setup-env: see frontend/README.md#environment-variables for documentation
setup-env: .env is missing keys from config/.env.example:
VITE_GOOGLE_DRIVE_CLIENT_ID
VITE_GOOGLE_DRIVE_API_KEY
VITE_GOOGLE_DRIVE_APP_ID
VITE_PUBLIC_POSTHOG_KEY
VITE_PUBLIC_POSTHOG_HOST
Add them manually or delete your local file to re-copy from the example.
setup-env: the following VITE_ vars are set but not listed in any example file:
VITE_DEV_BYPASS_AUTH
Add them to config/.env.example or config/.env.desktop.example if they are required.
```
If you add a new `VITE_*` variable to the codebase, add it to the
appropriate `frontend/config/.env.example` file or the test will fail.
2026-03-12 13:03:44 +00:00
ConnorYoh and GitHub
d5d03b9ada
Manage state of price-lookup calls ( #5915 )
...
Now calls stripe-price-lookup once when prices are required rather then
bombarding on every rerender
2026-03-11 13:53:49 +00:00
James Brunton and GitHub
fa8c52b2be
Add SaaS frontend code ( #5879 )
...
# Description of Changes
Adds the code for the SaaS frontend as proprietary code to the OSS repo.
This version of the code is adapted from 22/1/2026, which was the last
SaaS version based on the 'V2' design. This will move us closer to being
able to have the OSS products understand whether the user has a SaaS
account, and provide the correct UI in those cases.
2026-03-11 11:53:54 +00:00
ConnorYoh and GitHub
8bc37bf5ae
Desktop: Fallback to local backend if self-hosted server is offline ( #5880 )
...
* Adds a fallback mechanism so the desktop app routes tool operations to
the local bundled backend when the user's self-hosted Stirling-PDF
server goes offline, and disables tools in the UI that aren't supported
locally.
* `selfHostedServerMonitor.ts` independently polls the self-hosted
server every 15s and exposes which tool endpoints are unavailable when
it goes offline
* `operationRouter.ts` intercepts operations destined for the
self-hosted server and reroutes them to the local bundled backend when
the monitor reports it offline
* `useSelfHostedToolAvailability.ts` feeds the offline tool set into
useToolManagement, disabling affected tools in the UI with a
selfHostedOffline reason and banner warning
- `SelfHostedOfflineBanner `is a dismissable (session-only) gray bar
shown at the top of the UI when in self-hosted mode and the server goes
offline. It shows:
2026-03-10 10:04:56 +00:00
James Brunton and GitHub
6d9fc59bc5
Get rid of bad description for file association on Windows ( #5905 )
...
# Description of Changes
Explorer currently shows this on Windows:
<img width="380" height="43" alt="image"
src="https://github.com/user-attachments/assets/a892d827-8e0a-4f85-a035-52a454eaadd8 "
/>
This PR just removes the description for the file association so we use
the default behaviour. This string is only used on Windows according to
the [Tauri docs](https://v2.tauri.app/reference/config/#description-1 ).
2026-03-09 15:02:10 +00:00
ff31b2f9ca
Posthog-fixes ( #5901 )
...
PostHog is now initialized with persistence: 'memory' so no cookies are
written on first load. Consent is handled in a PostHogConsentSync
component that switches to localStorage+cookie persistence only when the
user accepts, using the official @posthog/react package (cherry-picked
from 14aaf64)
---------
Co-authored-by: James Brunton <[email protected] >
2026-03-09 12:13:09 +00:00
Brian Banerjee and GitHub
81596f0299
Limit PostHog cookie to Stirling PDF's subdomain only ( #5882 )
2026-03-08 21:03:10 +00:00
Reece Browne and GitHub
63d38e382d
Chore/v2/transforms as root ( #5868 )
...
Any task that changes file type or produces more/fewer files than the
input are now consumed as root files not incremented versions of the
input.
2026-03-06 13:46:40 +00:00
Anthony Stirling and GitHub
a57e336675
Add searchable settings selector to AppConfigModal and improve nav behavior ( #5873 )
2026-03-06 11:11:17 +00:00
Anthony Stirling and GitHub
456106195e
translations and version bump ( #5878 )
2026-03-06 11:09:18 +00:00
Anthony Stirling and GitHub
7c1eb4183b
stop enabling english ( #5874 )
2026-03-06 10:09:51 +00:00
7d640e9ce6
option to hide google drive and add settings ( #5863 )
...
Co-authored-by: EthanHealy01 <[email protected] >
2026-03-06 10:09:33 +00:00
ConnorYoh and GitHub
cafcee6c99
Add the production billing portal link for static plan page ( #5860 )
2026-03-06 10:08:38 +00:00
ConnorYoh and GitHub
7fdd100abf
Fix signatures not showing ( #5872 )
2026-03-06 00:43:29 +00:00
Anthony Stirling and GitHub
6c83da6417
Audit fixes and improvements ( #5835 )
2026-03-05 22:00:44 +00:00
Anthony Stirling and GitHub
879ffc066f
tauri notifications ( #5875 )
2026-03-05 18:30:20 +00:00
Anthony Stirling and GitHub
0f7ee5c5b0
settings menu reworks ( #5864 )
2026-03-05 16:20:20 +00:00
Anthony Stirling and GitHub
ba2d10a75b
Persist Tauri window state between launches ( #5871 )
2026-03-05 16:18:25 +00:00
2f2ced321a
🤖 format everything with pre-commit by stirlingbot ( #5775 )
...
Co-authored-by: stirlingbot[bot] <195170888+stirlingbot[bot]@users.noreply.github.com>
2026-03-03 21:51:44 +00:00
93d7919c4c
Fix split tooltips ( #5847 )
...
Co-authored-by: EthanHealy01 <[email protected] >
2026-03-03 13:49:05 +00:00
ConnorYoh and GitHub
c4c43593e6
fallback for /api/v1/config/endpoints-availability ( #5842 )
2026-03-02 22:03:23 +00:00
fd1b7abc83
refactor(merge,split,json): adopt streaming approach and standardize types, address gradle warnings ( #5803 )
...
Co-authored-by: Anthony Stirling <[email protected] >
Co-authored-by: Balázs <[email protected] >
2026-03-02 21:55:07 +00:00
ConnorYoh and GitHub
afda066579
Frontend and Desktop audit fixes ( #5840 )
2026-03-02 15:44:05 +00:00
012bd1af92
hardening ( #5807 )
...
Co-authored-by: Claude Haiku 4.5 <[email protected] >
2026-03-02 13:56:39 +00:00
Anthony Stirling and GitHub
8b25db37ad
fix split cuased by defaultParameters breaking dynamic endpoint tools ( #5838 )
2026-03-02 13:55:58 +00:00
Balázs Szücs and GitHub
c244edf8b7
feat(annotation): add moveAnnotation API for efficient repositioning of annotations, and bump embed to 2.7.0 ( #5809 )
2026-03-01 15:45:44 +00:00
Reece Browne and GitHub
213f136882
lint ( #5802 )
2026-02-25 18:20:24 +00:00
James Brunton and GitHub
c9dafc85fd
Switch to use ESLint 10 ( #5794 )
2026-02-25 14:30:40 +00:00
5c39acecd8
Desktop connection SaaS: config, billing, team support ( #5768 )
...
Co-authored-by: James Brunton <[email protected] >
Co-authored-by: James Brunton <[email protected] >
2026-02-25 14:13:07 +00:00
eab84a13d0
Change to use dpdm for circular import scanning ( #5788 )
...
Co-authored-by: Anthony Stirling <[email protected] >
2026-02-24 23:05:23 +00:00
James Brunton and GitHub
24128dd318
Sync up Tauri versions ( #5789 )
2026-02-24 18:43:40 +00:00
James Brunton and GitHub
5b467d19c3
Update frontend minor package versions ( #5787 )
2026-02-24 14:40:19 +00:00
6000a2aaed
feat(viewer): handle keyboard shortcuts for print, save, undo, etc. ( #5748 )
...
Co-authored-by: James Brunton <[email protected] >
2026-02-23 23:12:23 +00:00
eaa01a5c23
Update Backend 3rd Party Licenses ( #5781 )
...
Co-authored-by: stirlingbot[bot] <195170888+stirlingbot[bot]@users.noreply.github.com>
Co-authored-by: Anthony Stirling <[email protected] >
2026-02-23 23:09:43 +00:00
Reece Browne and GitHub
4f4d93d028
If in viewer load latest file in viewer ( #5784 )
2026-02-23 22:33:43 +00:00
Reece Browne and GitHub
d3494e3287
Fix export ( #5782 )
2026-02-23 22:15:32 +00:00
9b0610b2cc
feat: split pdf into small chunks by pdfbox ( #5718 )
...
Co-authored-by: Ubuntu <[email protected] >
Co-authored-by: Anthony Stirling <[email protected] >
2026-02-23 21:15:27 +00:00
James Brunton and GitHub
73213901d1
Fix cookie consent reappearing on desktop builds ( #5780 )
...
# Description of Changes
Fix #5779 . Cookie consent persistance doesn't work on desktop (on Mac at
least, not sure about Windows) because of permission differences with
Tauri. We are allowed to store things in local storage fine, so this
switches the cookie consent module to store in local storage for
desktop, and leaves it alone for web, where it already worked correctly.
2026-02-23 20:53:31 +00:00
Balázs Szücs and GitHub
91b4a3484c
feat(conversion): add PDF to Excel (XLSX) conversion ( #5778 )
2026-02-23 20:47:24 +00:00
Balázs Szücs and GitHub
549f796e47
feat(form-fill): add CSV and XLSX extraction for form fields, improve file ID handling ( #5776 )
2026-02-23 20:17:58 +00:00
Balázs Szücs and GitHub
340224b40b
refactor(link-layer): migrate to EmbedPDF v2.6.2 annotation state for link rendering and improve link handling ( #5760 )
2026-02-23 13:34:05 +00:00
7631b222bd
🤖 format everything with pre-commit by stirlingbot ( #5675 )
...
Auto-generated by [create-pull-request][1] with **stirlingbot**
[1]: https://github.com/peter-evans/create-pull-request
---------
Signed-off-by: stirlingbot[bot] <stirlingbot[bot]@users.noreply.github.com>
Co-authored-by: stirlingbot[bot] <195170888+stirlingbot[bot]@users.noreply.github.com>
Co-authored-by: Anthony Stirling <[email protected] >
2026-02-20 22:41:29 +00:00
Anthony Stirling and GitHub
f3f56d1d01
translations ai (please override as you see fit) ( #5770 )
...
# 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/devGuide/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 tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/DeveloperGuide.md#6-testing )
for more details.
2026-02-20 22:36:13 +00:00
Anthony Stirling and GitHub
83169ed0f4
Move Forms location ( #5769 )
...
# 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/devGuide/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 tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/DeveloperGuide.md#6-testing )
for more details.
2026-02-20 22:35:35 +00:00
46d511b8f6
Translate various terms in Italian localization ( #5749 )
...
Co-authored-by: Anthony Stirling <[email protected] >
2026-02-20 21:33:14 +00:00
Hugomaulwurf and GitHub
fd039b8649
Update de translation.toml ( #5736 )
...
Vollständige Übersetzung der fehlenden englischen Texte ins Deutsche:
- Schwärzungsfunktionen (Redactions)
- Mobile Upload/Scanner-Einstellungen
- Telegram-Bot-Konfiguration
- Benutzerkontoeinstellungen
- Stempel-Vorlagen und Tooltips
- API-Fehlermeldungen
- Verschiedene UI-Texte
Insgesamt 146 Strings übersetzt.
# 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
- [x] 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/devGuide/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 tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/DeveloperGuide.md#6-testing )
for more details.
2026-02-20 21:31:31 +00:00
Anthony Stirling and GitHub
9a10fcb590
authclient ( #5761 )
...
# 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/devGuide/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 tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/DeveloperGuide.md#6-testing )
for more details.
2026-02-20 12:08:47 +00:00
Anthony Stirling and GitHub
031477b7b5
fix publishing for tauri author ( #5757 )
...
# 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/devGuide/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 tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/DeveloperGuide.md#6-testing )
for more details.
2026-02-19 16:11:10 +00:00
Anthony Stirling and GitHub
8725ba66bb
ruler support ( #5758 )
...
# Description of Changes
<img width="266" height="228" alt="image"
src="https://github.com/user-attachments/assets/bcc6ec11-bd9e-4b83-a081-62149dd92f2a "
/>
<img width="882" height="335" alt="image"
src="https://github.com/user-attachments/assets/b86dbf13-6bcf-4b28-81a6-8c405358a58e "
/>
<img width="1050" height="399" alt="image"
src="https://github.com/user-attachments/assets/6a4468ed-d0f9-44ab-978a-c640d490da8b "
/>
on hover
<img width="380" height="196" alt="image"
src="https://github.com/user-attachments/assets/ba3755b3-4823-48dc-b6aa-3a0f9b0517a3 "
/>
---
## 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/devGuide/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 tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/DeveloperGuide.md#6-testing )
for more details.
2026-02-19 15:58:03 +00:00