This release contains some cool updates but mostly backend enabler work for features to come as well as enabling us to redeploy our online https://stirling.com/app back to a familiar UI.
This release also contains:
- MCP page (WIP)
- Support for ctrl A selection in PDF viewer
- New US language (now default)
- Improved my files UI and file deletion menus
- Open Graph previews (web links)
And bug fixes for:
- Bug fix for text selection on laptops/touchscreen devices
- Bug fix for ultra-lite docker not merging
What's Changed
Bug Fixes (please note most of these are related to SaaS not OSS product, we will be making the separation in notes clearer in next release)
- Fix Teams and MCP settings pages by @jbrunton96 in #6605
- MCP OAuth discovery fix + Supabase consent page by @Frooodle in #6608
- fix(saas): block accepting an invite when it would orphan a paid team by @ConnorYoh in #6616
- fix(payg): gate + charge AI document tools and AI Create sessions by @ConnorYoh in #6617
- fix(payg): run the entitlement guard before the charge interceptor by @ConnorYoh in #6622
- fix(payg): land usage-limit modal CTAs on the Plan section by @ConnorYoh in #6630
- fix(payg): fire the usage-limit modal when an AI agent run hits the limit by @ConnorYoh in #6638
- Fix SaaS mobile scanner being auth-gated under /app base path by @Frooodle in #6642
- Policies: centre the collapsed-rail policy button between its dividers by @reecebrowne in #6646
- Fix CI errors in SaaS by @jbrunton96 in #6662
- Fix PDF text selection locked out on touch devices by @Frooodle in #6656
- Fix failing Playwright test in SaaS by @jbrunton96 in #6688
- fix(viewer): wire Ctrl+A to select all text in the PDF by @Frooodle in #6517
Enhancements
- Delete dead translations by @jbrunton96 in #6581
- Feature/v2/smartfolders rebuild by @reecebrowne in #6480
- changes to the login and signup, similar to in the saas repo by @EthanHealy01 in #6577
- show chat progress and other UX improvements by @EthanHealy01 in #6576
- Add SaaS MCP usage tab by @Frooodle in #6590
- drop type-aware ESLint to stop the lint OOM by @reecebrowne in #6602
- Move agent section to fab by @EthanHealy01 in #6597
- Add team settings to SaaS by @jbrunton96 in #6601
- feat(policies): backend-driven policy enforcement (frontend) by @reecebrowne in #6598
- Policies: enforce on upload or export by @reecebrowne in #6604
- PAYG: pay-as-you-go billing — metered automation/AI/API + one-time free grant by @ConnorYoh in #6589
- fe(payg): remove em dashes from Plan page copy by @ConnorYoh in #6610
- Policies: enforce on upload or export by @reecebrowne in #6614
- update saas onboarding by @EthanHealy01 in #6619
- add popups for free limit hit and spend cap hit by @EthanHealy01 in #6623
- Change default language to en-US and add US language by @Frooodle in #6621
- UI ux/move footer links to settings by @EthanHealy01 in #6606
- feat(policies): org-wide policies with admin-only editing by @reecebrowne in #6625
- Policies: enforce input on uploads only; badge follows edited files by @reecebrowne in #6627
- fe(payg): show the usage-limit modal when the limit is hit (direct + policy) by @ConnorYoh in #6626
- Policies: scope to the owning team; editing restricted to team leaders by @reecebrowne in #6632
- i18n(policies): route policy UI strings through i18n (English only) by @reecebrowne in #6628
- UI ux/add ai warning and change style by @EthanHealy01 in #6633
- Policies: let team leaders configure policies in the UI by @reecebrowne in #6634
- Update SaaS to latest main by @jbrunton96 in #6636
- Properly sync US and GB translation files by @EthanHealy01 in #6635
- Policies: summon the guest sign-up banner when a guest clicks a policy by @reecebrowne in #6644
- Feature/v2/guest action gating by @Frooodle in #6643
- Route mobile scanner API and vendor loads through the app base path by @Frooodle in #6648
- refactor: replace legacy Paths usage with Path.of by @Ludy87 in #6441
- chore(build): upgrade Gradle wrapper and Docker build images to 9.5.1 by @Ludy87 in #6501
- chore(frontend): make Vite allowed hosts configurable by @Ludy87 in #6354
- Scope signing user picker to team for multi-tenant SaaS by @Frooodle in #6583
- Portal: full mock-driven surfaces, demonolithed components, backend-ready mocks by @reecebrowne in #6686
- Fix inverted link toolbar in rotated PDFs (#6518) by @MattSaito in #6684
- Skip flaky Playwright test by @jbrunton96 in #6698
- refactor(fe): share the SaaS PAYG experience with desktop via a cloud/ layer by @ConnorYoh in #6649
- MCP token rejection reason and stop logging the raw tokens by @Frooodle in #6700
- feat(desktop): show the AI assistant in SaaS mode via the cloud kill switch by @ConnorYoh in #6666
- refactor(saas): remove the legacy credits engine (FE + Java) by @ConnorYoh in #6687
- fix agent overlay chat position when workbench size changes by @EthanHealy01 in #6682
- set z-index on config dropdowns so they render above the modal by @Frooodle in #6674
- allow drag and drop onto left files section and make top bar slightly smaller by @EthanHealy01 in #6711
- Update Italian translations by @albanobattistella in #6713
- Portal: unified-design surfaces (Policies, Users, Components, Agent Builder, Editor deploy) + Settings rebuild by @reecebrowne in #6696
- Add cloud-aware delete and version history to My Files by @Frooodle in #6704
- Fix all top-level dev tasks treating engine as enabled by @jbrunton96 in #6705
- fix theme issues, remove dead rainbow mode code, standardize theme us… by @EthanHealy01 in #6668
- add prerendered Open Graph previews and OG card generator by @Frooodle in #6661
- Give SaaS users their own team and harden the user list endpoint by @Frooodle in #6717
- Update Backend 3rd Party Licenses by @StirlingBot[bot] in #6719
- Clean up update dialog UI and fix desktop external links by @Frooodle in #6727
Minor Enhancements
- chore(saas): remove dead ErrorTrackingService island + credits path exclusion by @ConnorYoh in #6718
Docker Updates
- build(deps): bump docker/metadata-action from 6.0.0 to 6.1.0 by @dependabot[bot] in #6490
- build(deps): bump go-task/setup-task from 2.0.0 to 2.1.0 by @dependabot[bot] in #6429
- Use glibc base for ultra-lite and bundle per-arch JPDFium natives by @Frooodle in #6706
Translation Changes
Development Tools
- Redesign pre-commit commands to run through Task by @jbrunton96 in #6670
Other Changes
- PR-S4: shadow-mode hardening (review follow-ups) by @ConnorYoh in #6523
- Improve search logic by @jbrunton96 in #6637
- De-AI the onboarding prose by @jbrunton96 in #6641
- Policies: drop the Pro-license gate from the policy API by @reecebrowne in #6645
- build(taskfile): use platform-specific Gradle wrapper command by @Ludy87 in #6355
- SaaS tidying by @jbrunton96 in #6665
- Update SaaS to latest main by @jbrunton96 in #6667
- build(deps): bump actions/stale from 10.2.0 to 10.3.0 by @dependabot[bot] in #6487
- build(deps): bump depot/build-push-action from 1.17.0 to 1.18.0 by @dependabot[bot] in #6488
- Cleanup of SaaS code by @jbrunton96 in #6669
- SaaS fixes by @Frooodle in #6578
- Revert "SaaS fixes" by @Frooodle in #6693
- Fix SaaS issues by @Frooodle in #6694
- Add JUnit tests for common and core module coverage by @Frooodle in #6675
- Add JUnit tests for saas module coverage by @Frooodle in #6699
- Prefer JBoss mirror over shibboleth repo for opensaml by @Frooodle in #6701
Full Changelog: v2.12.0...v2.13.0
What's Changed
Bug Fixes
- Fix Teams and MCP settings pages by @jbrunton96 in #6605
- fix(payg): cancelled subscription left team gated as subscribed by @ConnorYoh in #6611
- Kill off agents pane now that we have FAB by @jbrunton96 in #6613
- fix(saas): show team invitation banner in SaaS web build by @ConnorYoh in #6612
- fix(payg): attribute policy runs to the owner so usage is charged by @ConnorYoh in #6620
- MCP OAuth discovery fix + Supabase consent page by @Frooodle in #6608
- fix(saas): block accepting an invite when it would orphan a paid team by @ConnorYoh in #6616
- fix(payg): gate + charge AI document tools and AI Create sessions by @ConnorYoh in #6617
- fix(payg): run the entitlement guard before the charge interceptor by @ConnorYoh in #6622
- fix(payg): land usage-limit modal CTAs on the Plan section by @ConnorYoh in #6630
- fix(payg): fire the usage-limit modal when an AI agent run hits the limit by @ConnorYoh in #6638
- Fix SaaS mobile scanner being auth-gated under /app base path by @Frooodle in #6642
- Policies: centre the collapsed-rail policy button between its dividers by @reecebrowne in #6646
- Fix CI errors in SaaS by @jbrunton96 in #6662
- Fix PDF text selection locked out on touch devices by @Frooodle in #6656
- Fix failing Playwright test in SaaS by @jbrunton96 in #6688
- fix(viewer): wire Ctrl+A to select all text in the PDF by @Frooodle in #6517
Enhancements
- Delete dead translations by @jbrunton96 in #6581
- Feature/v2/smartfolders rebuild by @reecebrowne in #6480
- changes to the login and signup, similar to in the saas repo by @EthanHealy01 in #6577
- show chat progress and other UX improvements by @EthanHealy01 in #6576
- Add SaaS MCP usage tab by @Frooodle in #6590
- drop type-aware ESLint to stop the lint OOM by @reecebrowne in #6602
- Move agent section to fab by @EthanHealy01 in #6597
- Add team settings to SaaS by @jbrunton96 in #6601
- feat(policies): backend-driven policy enforcement (frontend) by @reecebrowne in #6598
- Policies: enforce on upload or export by @reecebrowne in #6604
- PAYG: pay-as-you-go billing — metered automation/AI/API + one-time free grant by @ConnorYoh in #6589
- fe(payg): remove em dashes from Plan page copy by @ConnorYoh in #6610
- Policies: enforce on upload or export by @reecebrowne in #6614
- update saas onboarding by @EthanHealy01 in #6619
- add popups for free limit hit and spend cap hit by @EthanHealy01 in #6623
- Change default language to en-US and add US language by @Frooodle in #6621
- UI ux/move footer links to settings by @EthanHealy01 in #6606
- feat(policies): org-wide policies with admin-only editing by @reecebrowne in #6625
- Policies: enforce input on uploads only; badge follows edited files by @reecebrowne in #6627
- fe(payg): show the usage-limit modal when the limit is hit (direct + policy) by @ConnorYoh in #6626
- Policies: scope to the owning team; editing restricted to team leaders by @reecebrowne in #6632
- i18n(policies): route policy UI strings through i18n (English only) by @reecebrowne in #6628
- UI ux/add ai warning and change style by @EthanHealy01 in #6633
- Policies: let team leaders configure policies in the UI by @reecebrowne in #6634
- Update SaaS to latest main by @jbrunton96 in #6636
- Properly sync US and GB translation files by @EthanHealy01 in #6635
- Policies: summon the guest sign-up banner when a guest clicks a policy by @reecebrowne in #6644
- Feature/v2/guest action gating by @Frooodle in #6643
- Route mobile scanner API and vendor loads through the app base path by @Frooodle in #6648
- refactor: replace legacy Paths usage with Path.of by @Ludy87 in #6441
- chore(build): upgrade Gradle wrapper and Docker build images to 9.5.1 by @Ludy87 in #6501
- chore(frontend): make Vite allowed hosts configurable by @Ludy87 in #6354
- Scope signing user picker to team for multi-tenant SaaS by @Frooodle in #6583
- Portal: full mock-driven surfaces, demonolithed components, backend-ready mocks by @reecebrowne in #6686
- Fix inverted link toolbar in rotated PDFs (#6518) by @MattSaito in #6684
- Skip flaky Playwright test by @jbrunton96 in #6698
- refactor(fe): share the SaaS PAYG experience with desktop via a cloud/ layer by @ConnorYoh in #6649
- MCP token rejection reason and stop logging the raw tokens by @Frooodle in #6700
- feat(desktop): show the AI assistant in SaaS mode via the cloud kill switch by @ConnorYoh in #6666
- refactor(saas): remove the legacy credits engine (FE + Java) by @ConnorYoh in #6687
- fix agent overlay chat position when workbench size changes by @EthanHealy01 in #6682
- set z-index on config dropdowns so they render above the modal by @Frooodle in #6674
- allow drag and drop onto left files section and make top bar slightly smaller by @EthanHealy01 in #6711
- Update Italian translations by @albanobattistella in #6713
- Portal: unified-design surfaces (Policies, Users, Components, Agent Builder, Editor deploy) + Settings rebuild by @reecebrowne in #6696
- Add cloud-aware delete and version history to My Files by @Frooodle in #6704
- Fix all top-level dev tasks treating engine as enabled by @jbrunton96 in #6705
- fix theme issues, remove dead rainbow mode code, standardize theme us… by @EthanHealy01 in #6668
- add prerendered Open Graph previews and OG card generator by @Frooodle in #6661
- Give SaaS users their own team and harden the user list endpoint by @Frooodle in #6717
- Update Backend 3rd Party Licenses by @StirlingBot[bot] in #6719
- Clean up update dialog UI and fix desktop external links by @Frooodle in #6727
Minor Enhancements
- chore(saas): remove dead ErrorTrackingService island + credits path exclusion by @ConnorYoh in #6718
Docker Updates
- build(deps): bump docker/metadata-action from 6.0.0 to 6.1.0 by @dependabot[bot] in #6490
- build(deps): bump go-task/setup-task from 2.0.0 to 2.1.0 by @dependabot[bot] in #6429
- Use glibc base for ultra-lite and bundle per-arch JPDFium natives by @Frooodle in #6706
Translation Changes
Development Tools
- Redesign pre-commit commands to run through Task by @jbrunton96 in #6670
Other Changes
- PR-S4: shadow-mode hardening (review follow-ups) by @ConnorYoh in #6523
- Improve search logic by @jbrunton96 in #6637
- De-AI the onboarding prose by @jbrunton96 in #6641
- Policies: drop the Pro-license gate from the policy API by @reecebrowne in #6645
- build(taskfile): use platform-specific Gradle wrapper command by @Ludy87 in #6355
- SaaS tidying by @jbrunton96 in #6665
- Update SaaS to latest main by @jbrunton96 in #6667
- build(deps): bump actions/stale from 10.2.0 to 10.3.0 by @dependabot[bot] in #6487
- build(deps): bump depot/build-push-action from 1.17.0 to 1.18.0 by @dependabot[bot] in #6488
- Cleanup of SaaS code by @jbrunton96 in #6669
- SaaS fixes by @Frooodle in #6578
- Revert "SaaS fixes" by @Frooodle in #6693
- Fix SaaS issues by @Frooodle in #6694
- Add JUnit tests for common and core module coverage by @Frooodle in #6675
- Add JUnit tests for saas module coverage by @Frooodle in #6699
- Prefer JBoss mirror over shibboleth repo for opensaml by @Frooodle in #6701
Full Changelog: v2.12.0...v2.13.0