← All patchpen.dev updates
Changelog

patchpen.dev

Automatically build and publish readable public changelogs from your Git repositories.

2026-05-24 24 May 2026

Revoke API keys on downgrade

🔒Security
  • Revoke API keys on downgrade
    API 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.
🐛Fixes
  • Fix immediate downgrade when cancelling subscription
    Stop 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.
New
  • Add Teams & plans admin tools
    Add 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 banner
    Show 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 link
    Allow 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.
Improvements
  • Clamp Pro-only product settings on downgrade and preserve previous values
    When 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 data
    Members 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 limits
    Subscriber 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 preview
    Clarify 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 configuration
    Hide 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-upgrade
    On 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 dashboard
    Replace 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 app
    Set 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 color
    Include 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 changelogs
    When 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 pages
    Subscription 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 domains
    If 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 changelogs
    The 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 states
    Replace 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 actionable
    When 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.