Revoke API keys on downgrade
-
Revoke API keys on downgradeAPI keys are now hard‑revoked when a team is downgraded to Free and must be re-issued after re-upgrade, preventing soft-disabled credentials from remaining valid.
-
Fix immediate downgrade when cancelling subscriptionStop revoking Pro features the moment someone clicks Cancel; the team now stays on Pro until the paid period ends and is only downgraded at period‑end.
-
Add Teams & plans admin toolsAdd a searchable Admin "Teams & plans" table that shows resolved plan, owner, counts and over‑cap flags and lets admins Make‑Pro or Force‑Free teams via a reason‑required modal backed by a server endpoint that flips a team's plan.
-
Add cancel modal with downgrade-impact preview and Resume bannerShow a live "what you'd lose" preview when cancelling and render a prominent "Pro until <date>, then Free" banner with Resume and Manage billing buttons so owners keep Pro features through the paid period and can easily undo a cancellation.
-
Add resume-subscription endpoint and customer portal linkAllow owners to resume a pending cancellation while still in the paid period and add a Billing action that opens the Lemon Squeezy customer portal so customers can manage card details and invoices directly.
-
Clamp Pro-only product settings on downgrade and preserve previous valuesWhen a team drops to Free, Pro-only product settings are clamped to Free-allowed values (e.g. multi-repo trimmed, grouping forced to daily, tone reset to neutral, poll interval raised to ≥24h) while the original values are saved so they can be restored after an upgrade.
-
Soft-revoke extra members and products on downgrade without deleting dataMembers beyond the Free cap are marked revoked (they lose dashboard access) and extra products are made non-public while all data is retained so owners can re-enable or restore on re-upgrade.
-
Cap subscriber notification fan‑out to Free limitsSubscriber records are preserved after downgrade, but release email fan‑out is capped to the Free tier limit (oldest confirmed subscribers first) so Free teams can't trigger large email sends.
-
Update billing UI and docs to explain scheduled downgrades and impact previewClarify in-app and docs messaging that cancelling schedules a downgrade at the period end (you keep Pro until then), explain what is auto‑restored vs preserved vs hard‑revoked, and power the cancel modal's live impact preview with a new API.
-
Mark custom domains as coming soon and disable direct configurationHide the custom domain field in Product Settings, change pricing/docs/UI copy to "coming soon", and make server endpoints return a clear "custom_domain_coming_soon" error until edge routing and TLS are implemented.
-
Restore key product state automatically on re-upgradeOn upgrading back to Pro we automatically unrevoke memberships and restore preserved multi-repo attachments and clear any scheduled downgrade markers, while leaving credential and explicit publish choices for the owner to re-enable manually.
-
Add dismissible toast notifications in the dashboardReplace blocking alert() dialogs with a top-right, auto-dismissing toast system (success/error/info) and wire it into admin and team pages for non-blocking, styled feedback on actions.
-
Set descriptive browser tab titles across the appSet document.title per page (Account, Dashboard, Product pages, Settings, etc.) so browser tabs reflect the current screen and make multi-tab usage clearer.
-
Add a web app manifest, touch icon, and theme colorInclude a manifest.json, apple-touch-icon, theme-color and description meta so browsers can provide a better installable/app-like experience and show appropriate UI colour and previews.
-
Show a friendly styled 'not found' page for public changelogsWhen a public changelog URL is missing (/c/:slug), render a styled 404 page with helpful copy and a CTA to the public showcase instead of returning plain text.
-
Render branded subscription confirmation and unsubscribe pagesSubscription confirmation and unsubscribe flows now show contextual, branded confirmation cards with product-aware copy and back-links to the changelog or the showcase.
-
Serve neutral, brand‑free 404 pages on unmatched custom domainsIf a customer's custom domain points to Patchpen but no product matches, visitors now see a neutral, brand‑stripped 404 page (no Patchpen chrome) to avoid exposing platform branding on the customer's domain.
-
Prefill Contact email subjects on Pro changelogsThe Contact link on Pro changelog pages now opens a mailto with the subject pre-filled as “Re: <product>” so incoming messages are automatically scoped to the changelog.
-
Improve invite acceptance error and loading statesReplace the one-line invite error and blank loading states with clearer icons, headlines, explanatory text and CTAs to help users recover from expired invites or sign in.
-
Make the Product page empty state actionableWhen a product has no releases, show a friendly card that either offers a 'Generate now' button (if a repo is connected) or an 'Open settings' CTA to connect a repository and start backfilling.