mirror of
https://github.com/Stirling-Tools/Stirling-PDF.git
synced 2026-09-03 05:10:16 +03:00
Copy only. No behaviour, no lookup keys, no licence semantics, no backend. ## Current state Every surface that sells the paid self-hosted tier offers **"unlimited seats"** for **"$99/server/mo"**, and the portal's free plan badges **"Unlimited users"** and **"SSO included"** as free-tier facts. ## Problem Both claims are now enforceably false. [#7492](https://github.com/Stirling-Tools/Stirling-PDF/pull/7492) makes the licence carry a real user cap, and [Stirling-PDF-SaaS#325](https://github.com/Stirling-Tools/Stirling-PDF-SaaS/pull/325) sells capacity in blocks of 100 users. An admin reading "unlimited seats" and then hitting a 409 at the invite screen is the worst version of this. The demo has already dropped both claims; ours were the last ones standing. ## Solution | Surface | Was | Now | |---|---|---| | Onboarding licence slide | "Stirling Server plan, **unlimited seats** … $99/server/mo" | "Stirling Team plan, **100 users** … $99/mo" | | Plan comparison table | `unlimitedUsers` = "Unlimited users" | `usersIncluded` = "100 users included" | | Plan card highlights | "Unlimited users" | "100 users included" | | Static plan section | `name: "Server"`, `maxUsers: "Unlimited users"` | `plan.team.name`, `plan.team.maxUsers` | | Upgrade banner | "Upgrade to Server Plan" / "unlimited users" | "Upgrade to the Team plan" / "100 users, SSO" | | Portal free plan | "Editor" + "SSO included" + "Unlimited users" | "Editor" + "Every PDF tool" + "Web, desktop & self-hosted" | The i18n keys are **renamed** (`unlimitedUsers` to `usersIncluded`) rather than just revalued, so the key name cannot outlive the claim. Also drops "per server" from `plan.licenseWarning` — we price a block of 100 users and count the provisioned roster, never nodes. And deletes the orphaned `[settings.planBilling.tier]` block: zero source references, and it described a retired model (50 credits/mo free, 500 included plus overage billing). ## Deliberately unchanged **"Processor" stays the name of the product surface.** The demo names each plan for its price tier (Editor = $0, Team = $99/mo, Credits = 1¢ each) while keeping Processor as the surface a plan unlocks. Renaming the surface here would conflate the two, so the plan-name split is left for the explicit plan catalogue. The free plan also gains no "500 free credits monthly" badge yet: that is true in the demo but not in our backend, which still grants a one-time lifetime pool. ## How to test Self-hosted, as an admin over the free user limit: Settings → Plan should offer the Team plan at "100 users included", and the onboarding licence slide should no longer promise unlimited seats. On the portal billing page, the free plan should read "Free" with no SSO or unlimited-users badge. Green locally: 4/4 i18n audits (missing, unused, structure, translation), 876 tests across 110 files, oxlint, prettier, and all four typecheck variants (core, proprietary, saas, portal).