Changelog

patchpen.dev

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

10 results in “Improvements” · Clear
2026-06-15 15 June 2026

Fix language switching so English selection persists

🐛Fixes
  • Fix language switching so English selection persists
    Switching back to English now reliably updates the site and URL so the selected language sticks for visitors; this fixes an issue where English would be reverted by a stale language prefix.
New
  • Add translations for the Landing page banner, featured card and demo gallery
    The Landing page's launch banner, "Featured this week" card and demo gallery have been localized so visitors see those sections in their selected language.
  • Translate marketing pages and add a language switcher to the marketing nav
    Pricing, Showcase, Login, Terms, Privacy and other marketing pages now include localized text and a language selector in the top navigation so visitors can read marketing content in their language.
  • Translate the dashboard and logged-in UI and add a language switcher to the dashboard
    The logged-in surface (dashboard, product pages, release editor, settings, billing, team pages, and shared widgets) has been localized so signed-in users can use the app in their language, and a language selector has been added to the dashboard top bar.
  • Add localized docs content and language-prefixed docs routing
    Docs content has been translated and is now served under language-prefixed URLs so readers can browse the docs in their chosen language with sidebar and prev/next links preserving the language.
Improvements
  • Improve docs SEO with hreflang, per-language canonical URLs and sitemap variants
    Docs pages now include hreflang tags, per-language self-canonical links and language-specific sitemap variants to improve indexing and discovery of localized documentation.
2026-06-14 14 June 2026

Remove AI-based published-release localization (language switcher and ?lang pages)

️ Breaking Changes
  • Remove AI-based published-release localization (language switcher and ?lang pages)
    The feature that auto-translated published releases (product-level localization settings, ?lang query pages, language switcher chips on public changelogs, release.translations storage, and the translation service) has been removed by product decision; the AI writer that drafts items in the commit language remains unchanged.
New
  • Add a language switcher to the marketing header that navigates per-language URLs
    A language dropdown now appears in the marketing nav and, on marketing pages, switches the site by navigating to /<lang>/<path> so each language has its own indexable URL; the switcher still uses a cookie preference (no URL change) on dashboard, login, and docs pages.
  • Add translated marketing copy for 11 languages and lazy-load locale bundles
    The marketing site (nav, hero, footer, CTAs) now includes translated copy for 11 languages (AI-generated), and non-English locales are lazy-loaded so the initial page JavaScript stays small.
  • Add an opt-in Commit attribution setting to product settings
    A new product setting (off by default) lets maintainers enable a small per-item "by Author · #PR" byline on public release items; source-commit SHA links continue to be shown regardless of this setting.
Improvements
  • Detect language from the URL path on hard loads
    Language detection now checks the URL path before cookies or the browser preference so loading a prefixed marketing URL (for example /de/pricing) renders in the correct language immediately.
  • Emit language-prefixed marketing URLs in the sitemap and add per-language canonical links
    The sitemap now includes language-prefixed variants of marketing pages and server-side SEO helpers emit per-language canonical/hreflang metadata so search engines can index language-specific marketing pages correctly.
  • Rewrite in-app documentation to remove internal implementation detail and correct inaccuracies
    Seven /docs pages were rewritten to be purely user‑facing and factually accurate; internal DB/field/function names and infra/AI internals were removed from the in-app docs so the guidance matches actual server behaviour. This is a docs-only change and does not alter application behaviour.
  • Clarify weekly digest contents and sending rules
    The weekly team digest is documented to include releases from the last 7 days, new subscribers, new visitor feedback, pending drafts, and lifetime reaction totals, and it is only sent when there is something to report; it is toggled under Dashboard → Team.
  • Clarify team roles and invitation flow
    Role permissions were clarified: there is one owner per team, admins manage themes/embed/subscribers/webhooks and approve releases, editors can edit/submit/generate and upload media but cannot change product settings or billing, and invites are emailed as a unique link that adds or seats users in your team.
  • Clarify subscriber email branding, sender and CSV export format
    Subscriber emails are sent from [email protected] with the From name shown as Patchpen (not your account email), the email body is plain and does not render your product logo, the footer is the same on Free and Pro, and CSV exports include the email plus the date they subscribed. Free plans are capped at 100 subscribers and the public subscribe endpoint returns a 402 plan_limit when the cap is hit.
  • Document that manually authored releases skip subscriber emails by default
    Releases you create by hand or via the create-release API are flagged as hand-authored and skip the subscriber notification by default so subscribers don't receive duplicate emails when an auto-generated release arrives for the same shipment.
  • Document webhook delivery retry behaviour and registration guidance
    Webhook deliveries use a short inline burst of fast retries followed by durable retries spread over hours (examples documented), and webhook registration failures are usually due to missing admin rights — the settings page shows a warning and re-saving retries registration.
  • Clarify RSS and public-page visibility behaviour
    RSS item titles include the product name plus the version label and descriptions list the release's public items only, and toggling a product's public changelog page now hides the entire public surface (rendered page, .json export, permalinks, RSS, reactions and subscribe endpoints) while authenticated APIs and outgoing webhooks continue to operate.
  • Clarify per-run commit caps and late-commit merging
    Each generation run processes up to a plan cap (Free: 25 commits, Pro: 500 commits); later runs that target the same version label dedupe against the existing release and merge novel items in, preserving the release's audit trail of source commits.
  • Clarify API rate-limit semantics and error formatting
    X-RateLimit-Reset is documented as the number of seconds until the window resets (0–60) rather than a Unix timestamp, responses include a stable machine-readable error code (the message may be omitted), and server errors are documented as server_error rather than an internal_error with a request id.
  • Document create-release / CI range behaviour and background generation
    The create-release/CI range flow generates drafts in the background and returns a 202 with a background job payload (ok, jobId, status); consumers are directed to track progress on the product dashboard because there is no public GET /api/jobs/<id> polling endpoint, and CI range runs do not move the normal processing cursor.
  • Document that view counts are a Pro feature
    Built-in per-release and per-product view counts are only recorded on Pro plans; Free plans do not record view counts.
  • Clarify embedding and frame policy differences between Free and Pro
    Free public pages block being iframed (X-Frame-Options: DENY and a strict CSP), while Pro pages relax the frame policy when ?embed=1 is present so the page can load inside an iframe for embedding.
  • Clarify GitHub App migration and legacy OAuth connections
    Legacy OAuth connections continue to work and show as "Legacy OAuth" in Account; installing the GitHub App upgrades the connection silently and repo changes are picked up within a minute or two after installation changes.
2026-06-09 9 June 2026

Add a weekly digest email for team owners and admins

New
  • Add a weekly digest email for team owners and admins
    Owners and admins now receive a weekly summary email per team listing releases published in the last 7 days, new email subscribers, lifetime reaction totals, and drafts waiting for approval; quiet weeks send nothing. The digest is on by default and can be toggled per team from Dashboard → Team (owners/admins only).
  • Add a bell-mode embed launcher with per-visitor unread badge
    The embed widget gains a new bell mode that shows a per-visitor unread-count badge (stored in the visitor's browser localStorage) and clears when they open the drawer; it also supports mounting inline via data-target, flipping corner with data-position, and a programmatic API (window.PatchpenWidget.open/close/refresh). This launcher mode and snippet are exposed from the dashboard Embed page (Pro-only).
  • Add anonymous release reactions (👍 🎉 ❤️) on public changelogs
    Public changelog pages now show an anonymous reaction row under each release (Thumbs up / Celebrate / Love); reactions are optimistically updated in the UI with per-visitor localStorage dedupe and visitors can undo their own reaction. Tallies are stored on the release and shown in the dashboard and public APIs, and a per-product toggle in Product settings (default on) can disable the UI.
  • Add Terms of Service and Privacy Policy pages
    Patchpen now publishes /terms and /privacy pages (linked from marketing footers) describing accounts, billing, AI-generated content, data retention, subprocessors, and user rights. Both pages are integrated into the site shell and included in the sitemap so they are discoverable from the site.
Improvements
  • Improve SEO and social metadata for marketing, docs, and the SPA shell
    The server now injects per-route <title>, meta description, canonical and Open Graph/Twitter tags into the SPA shell so crawlers and unfurlers see route-specific content; private dashboard/invite routes are marked noindex and unknown URLs return a real 404. The sitemap, robots.txt, static OG image and touch icons were also added to improve discovery and link previews.
  • Add a daily catch-up sweep to recover missed webhook pushes
    Webhook-mode products are now re-checked once per day and a scheduled-style generation is enqueued to fetch commits since lastProcessedSha, so pushes lost while the server was unreachable are self-healed within ~24 hours; the sweep is a no-op when nothing was missed. The change is documented in the Generation Modes docs.
  • Reduce marketing bundle size by code‑splitting the SPA shell
    The client now lazy-loads dashboard, docs, and legal pages so marketing pages ship a much smaller initial JavaScript bundle and get faster first paint. Legal and docs content are loaded on demand while marketing routes remain eager for instant load.
2026-05-29 29 May 2026

Add Pause/Enable control for webhooks

New
  • Add Pause/Enable control for webhooks
    Add a Pause/Enable button to each webhook so you can stop deliveries without deleting the webhook and resume them later; pausing also cancels any in‑flight retries and enabling does not replay events missed while paused.
  • Add manual Redeliver for webhook delivery rows
    Add a Redeliver action in the delivery log so owners/admins can re‑fire any non‑success delivery on demand; redeliver rebuilds the payload if needed and restarts the retry budget so a long‑failed delivery can be retried.
  • Add per‑webhook health dot to the webhook list
    Show a small status dot beside each webhook name that summarises recent delivery health (green = delivered, red = failed, amber = retrying, grey = no deliveries yet) so you can spot broken endpoints without opening each log.
  • Add webhook delivery KPIs to the Admin overview
    Surface platform‑wide webhook health on the founder Admin overview with tiles for recent failed deliveries (7d) and the current pending‑retry backlog so platform operators can spot cross‑team delivery outages early.
🐛Fixes
  • Fix Free team member cap by counting memberships
    Fix the invite limit check to count team memberships (not the legacy users.teamId field) so Free teams are correctly prevented from exceeding the member cap when members join via invites.
  • Fix owner/admin detection for notifications and plan resolution
    Fix owner/admin lookup to use the memberships model so release approval emails go to the correct people and the founder‑owned team bypass for Pro correctly applies when a founder is an owner on any team.
Improvements
  • Improve webhook reliability with durable retries
    Make webhook delivery durable: events get a short inline retry burst and — if still failing — are queued for hours‑scale retries so receivers that are down for minutes or hours have another chance to receive the event; dashboard rows show retrying state and each attempt now times out after 10s.
  • Limit subscriber email concurrency to avoid provider rate limits
    Limit concurrent subscriber sends (small pool) during release fan‑out to avoid hammering email providers and reduce lost sends, and update the fan‑out log to report real sent/failed counts.
  • Add central product slug validation with reserved‑word blocking
    Centralise and lock down product slug rules (shape, length, reserved words) used by the slug check and product creation flows; founders can still claim reserved slugs for internal/demo products, and mixed‑case slugs are rejected rather than silently lowercased.
2026-05-26 26 May 2026

Add a Showcase page that lists live customer changelogs

New
  • Add a Showcase page that lists live customer changelogs
    Introduce a new /showcase SPA that displays a grid of public customer changelogs (logo, name, description and latest release) with loading and empty states, and matches the site’s normal header/footer styling.
  • Add a 'Featured Patchpen of the Week' card on the Landing page
    Showcase a single eligible customer product on the homepage each week (public product with at least one published release), preferring customer projects over founder-team projects and falling back to founders only when no customers qualify; the card links to the product changelog and a full showcase.
🐛Fixes
  • Fix full-bleed Launch FOUNDER50 banner on the Landing page
    Fix a visual bug that left a thin white sliver at the right edge of the top launch-deal strip so the banner now extends cleanly to the viewport edge without causing a horizontal scrollbar.
  • Fix branch selector crash on product settings page
    Prevent the product settings page from crashing when the branch selector is still initializing by treating an uninitialized branch list as loading and showing the spinner instead of attempting to render the select.
Improvements
  • Trim the Landing page and replace the hero CTA with 'See live changelogs'
    Remove several marketing sections (three-step how-it-works, feature triplet, mock changelog preview and a CTA card) to simplify the page and swap the removed 'See how it works' CTA for a 'See live changelogs' link to the new Showcase.
  • Open Docs in a new tab from the site and dashboard nav
    Make top-level Docs links (marketing header/footer, pricing, and dashboard sidebar/drawer) open in a new browser tab so users keep their current page while reading reference docs; the dashboard shows a small external glyph for these links.
  • Add a direct Support email link in the dashboard footer and troubleshooting docs
    Add a visible 'Support' mailto ([email protected]) to the dashboard footer and update troubleshooting docs to include the direct support address and guidance for what details to include when reporting issues.
2026-05-25 25 May 2026

Add per-item regen in the release editor

New
  • Add per-item regen in the release editor
    Add a Regenerate button on each draft item so you can re-run the AI for a single item (it saves pending edits first and replaces just that item), with inline progress and success/failure feedback.
  • Add drag‑and‑drop and ↑/↓ controls to reorder draft items
    Enable drag handles plus up/down buttons in the Release editor so you can reorder items within or across categories and persist the new ordering with Save.
  • Add a Pro 'Download your data' export in Account
    Add a Pro-gated one‑click JSON export on Account → Your data that downloads everything Patchpen stores for your team (products, releases, subscribers, themes, webhooks, API key metadata) as patchpen-<team-slug>-<YYYY-MM-DD>.json using the existing GET /api/v1/team/export endpoint.
  • Add a 'Resend confirmation' button for unconfirmed subscribers
    Show a Resend button for subscribers stuck in Unconfirmed that mints a fresh confirmation token and re-sends the email, with a one-send-per-5‑minutes rate limit and user-facing error toasts when blocked.
  • Add a "Notify me" custom-domain waitlist on Product settings
    Add a small waitlist form on the product's Custom domain card so maintainers can provide an optional domain hint and join a launch notify list; the card switches to a "You're on the waitlist" pill after joining.
  • Show commit author and PR byline on public changelog items
    Render a small 'by <Author> · #PR' byline under each release item on all public templates (Cards / Editorial / Timeline / Patch Notes) and make SHA chips link to the correct repo/commit so visitors can trace items back to code and PRs.
  • Add per-repo branch selection for tracked repositories
    Allow maintainers to choose which branch to track per repository (primary and additional); leaving the branch blank preserves the old behaviour of tracking all branches.
  • Add a BranchPicker control in the product creation and settings flows
    Introduce a BranchPicker UI used in the Product creation wizard, the Add Repo dialog, and Product settings so users can pick from the repo's branches or type a branch name when the list is unavailable or very large.
  • Add a CI/CD range trigger to the generation endpoint
    Allow CI systems to request a draft for a specific commit range by POSTing fromSha/toSha or fromTag/toTag to /api/v1/products/:slug/generate; the run uses the provided range and does not advance the product's normal push cursor so CI-driven drafts and push webhooks can coexist.
  • Add per-release OG images for social previews
    Serve a server-rendered 1200×630 SVG at /c/:slug/og.svg (optionally ?rid=…) and use it in page meta so social platforms get a branded image for changelog pages and releases.
  • Add a job-queue view to the Admin dashboard
    Give founders a live Jobs card in the Admin screen that shows running slots, queued jobs and recently finished runs — including a Pro-vs-Free breakdown and progress indicators so operators can watch the backlog drain.
  • Add explicit light/dark variants for Cards and Editorial themes
    Expose Light and Dark tiles for Cards and Editorial in Product > Theme and persist the customer's choice (product.theme.mode) so the chosen mode is what every visitor sees; Timeline and Patch Notes remain dark-only.
  • Surface the FOUNDER50 launch deal across marketing and billing flows
    Show the FOUNDER50 50%‑off launch strip on the landing page, a claim card on Pricing, a clickable strip on Billing (that pre-fills the coupon), and a pill + prefilled Billing link from the Dashboard upgrade card so customers can apply the promotion without needing the code up front.
🐛Fixes
  • Ignore push events from non-tracked branches
    Pushes to branches other than the configured branch are no longer processed; this prevents duplicate drafts and double-processing when feature branches are pushed and later merged.
  • Fix the account data export to use a session-authenticated download
    Restore the browser-download flow by adding a session-authenticated /api/team/export route the Account page can call (same payload shape and a Content-Disposition header so the browser saves a patchpen-<slug>-<date>.json file).
Improvements
  • Rewrite Pricing as a feature matrix and surface coupon banners
    Replace the two-card pricing view with a row-per-feature comparison table and show an emerald banner when ?coupon=X is present so customers see the discount will be applied at checkout; CTA links preserve the coupon query string.
  • Thread optional coupon codes through checkout
    Accept an optional coupon code on Billing and forward it into Lemon Squeezy's checkout_data so marketing links and the Billing form can pre-fill discounts; unknown/invalid codes are ignored at checkout (no error shown).
  • Validate webhook URLs and email lists inline in the UI
    Add client-side validation on the Webhooks page to reject malformed HTTP(S) URLs and invalid email addresses on blur, surface field‑level errors, and block creation until corrected.
  • Emit per-product favicon/apple-touch-icon on public pages
    When a product has an uploaded logo, the public changelog head now includes link rel="icon" and rel="apple-touch-icon" pointing at it so browsers show the product favicon instead of a generic default.
  • Make scheduled and manual generation target the configured branch
    Scheduled/manual runs and branch-push processing now fetch commits from the selected branch (or the repo default when unset) so analysis and backfills operate on the branch you asked to track.
  • Reset the ingestion cursor when changing the tracked branch
    Changing the product's primary branch resets the ingestion cursor so the next generation starts fresh on the new branch; the Settings UI shows a warning about this behaviour.
  • Improve generation throughput and prioritise Pro jobs
    Run up to 5 generation jobs concurrently per host and stamp queued jobs with priority so stamped Pro work is picked before Free within the concurrency budget, reducing wait time for paying teams.
  • Mark the onboarding subscribers/webhook step complete when counts exist
    Finish the onboarding checklist step automatically when any product shows subscriber or webhook counts (the products list now includes stats.subscribers and stats.webhooks so the UI can surface completion correctly).
  • Make CI integration docs recommend direct curl calls instead of a maintained Action
    Remove the first-party GitHub Action wrapper and replace it with copy-paste curl examples and a multi-repo snippet so customers invoke POST /api/v1/products/:slug/generate directly from their CI runner using a Pro API key.
  • Merge and clean the public docs into a single /docs location
    Unify the marketing and knowledge-base docs under /docs, add a public DocsLayout and redirect old /dashboard/docs links so customers can deep-link docs without signing in, and remove operator-only details from customer-facing pages.
  • Improve Pricing when users are signed in
    Adjust CTAs and header links for signed-in visitors so Free goes to Dashboard, Pro links go straight to /dashboard/billing (coupon query strings are preserved), and the header shows a Dashboard button instead of Sign in.
  • Add an annual billing toggle and yearly price display
    Show an optional Monthly/Annual segmented toggle on Billing (auto-hidden when no annual variant is configured) and display the annual price and a "save 20%" subline in the pricing matrix.
  • Add a lightweight client error reporter and server endpoint
    Install a small client-side reporter that sendBeacon/fetches window errors and unhandled rejections to /api/client-errors; the server logs them and forwards to Sentry when configured so both client and server errors land in the same operator stream without bundling @sentry/react.
  • Add a Pro-only per-product AI prompt override
    Allow Pro teams to provide a free-form 'team voice' override (up to 2KB) in Product Settings that is inserted verbatim into the AI prompt to steer writing style while preserving the public/internal classification rules.
  • Make public pages use the product OG card by default
    Have page metadata always point at the new /c/:slug/og.svg so social previewers reliably scrape a branded image instead of falling back to a missing image.
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.
2026-05-15 15 May 2026

Fix webhook Test button to send service-specific payloads and show remote errors

🐛Fixes
  • Fix webhook Test button to send service-specific payloads and show remote errors
    The Test button now routes each webhook test through the same per-service payload builders used for real publishes so Discord/Slack/Teams no longer return 400 during tests. Test responses also return and log the remote error body for easier diagnosis in the dashboard and browser devtools.
New
  • Add a public System Status page at /status
    Provide a server-rendered status page that checks API, MongoDB, OpenAI, the GitHub App, email, Lemon Squeezy, generation queue and webhook deliveries and is available as HTML or JSON (cached briefly to bound load).
  • Add AI tone and custom category controls in Product settings (Pro)
    Allow Pro teams to pick a generation tone (neutral, punchy, formal, playful) and optionally supply a custom ordered category list that the generator will use instead of the default buckets.
  • Add a team data export endpoint for Pro teams
    Provide a GET /api/v1/team/export endpoint that returns a full JSON dump of the team's products, releases (including internal items), subscribers, webhooks, themes and API keys for GDPR portability and backups.
  • Add cross-product keyboard search (⌘/Ctrl+K) to the Dashboard
    Add a global search in the dashboard hero that finds products and releases, supports keyboard navigation and quick jump-to-product or jump-to-release flows.
  • Add bulk release operations on the Product page
    Enable a Select mode to check multiple releases and run bulk Approve / Publish / Reject / Delete actions from the product UI to speed maintenance workflows.
  • Add a first-run Onboarding checklist on the Dashboard
    Show a derived checklist (create product, connect repo, generate & publish first release, subscribers/webhook and custom domain for Pro) that automatically disappears when steps are completed.
  • Add a public Showcase page of recent public changelogs
    Publish a /showcase gallery that surfaces up to the 30 most-recent public changelogs with logo, name, description and latest version as a marketing reel.
Improvements
  • Update public Status page to customer-friendly wording and site chrome
    The public /status page now uses user-facing phrases (e.g. 'Operational', 'Minor disruption', 'Disruption in progress'), hides unconfigured/operator-only rows and raw queue/latency/count details, and adds site header/footer so the page matches the marketing site chrome.
  • Use provider Statuspage feeds for email health checks and avoid probing send endpoints
    Email health now defers to the provider's Statuspage feed rather than calling send/list endpoints that require privileged keys; the public row is vendor-anonymous and falls back to a benign 'Operational'/'Not in use' state so customers see clearer status information.
  • Add an action identifier to the Slack "View changelog" button
    Outgoing Slack messages now include an action_id on the View changelog button to make the interactive button payload well-formed for Slack integrations.
  • Add System status links in the dashboard and docs
    Surface a discreet “System status” link in the dashboard sidebar and docs footer and add a contextual link from failed generation cards so maintainers can jump to the status page when things fail.
  • Limit the dashboard recent activity feed to 5 items
    Reduce the default activity feed returned to the dashboard so the overview stays scannable at a glance (limit reduced from 20 to 5).
  • Improve social link previews and add Pro RSS link for changelogs
    Emit canonical, Open Graph and Twitter Card tags (and JSON-LD for the newest release) on public changelog pages so links render rich previews, and include an alternate RSS link for Pro pages.
  • Add sitemap.xml listing public changelogs for search engines
    Expose /sitemap.xml that enumerates every public changelog (using verified custom domains when available) to help search engines discover pages.
  • Add a simple Write / Preview markdown editor for descriptions and AI context
    Replace free-form textareas with a Markdown Write/Preview component (supports inline code, bold, italic and links) when editing public descriptions and private AI context so maintainers can preview content before saving.
  • Add robots.txt to allow public changelogs and block API/dashboard crawlers
    Serve a robots.txt that permits crawling of public changelogs while disallowing /api/ and /dashboard/ and points crawlers to the sitemap.
  • Clarify Two-factor authentication in the Account page
    Add an explainer to the Account sign-in methods card noting that Patchpen relies on GitHub's 2FA for code-contributing accounts and how to revoke sessions.
🔒Security
  • Add security.txt and /.well-known/security.txt for vulnerability contact
    Publish RFC 9116-compliant security.txt at both /security.txt and /.well-known/security.txt with a contact email and a rolling one-year Expires header so security researchers know how to report issues.
2026-05-14 14 May 2026

Add a Pro backfill window to the product creation wizard

New
  • Add a Pro backfill window to the product creation wizard
    When creating a Pro product, the wizard now asks how far back to backfill (options from 1 day up to All time, default 7 days) and records that choice so history backfill runs according to the selected window.
  • Add an optional public contact email during product creation
    You can now enter a public contact email in the create-wizard; it is saved to the product and shown as a mailto: link in the public changelog footer if provided.
  • Migrate GitHub integration to a GitHub App
    Sign-in and repository access are now consolidated onto a Patchpen GitHub App; the dashboard surfaces an "Install Patchpen App" CTA, shows per-account install badges and live granted‑repo counts, and the account/install flow supports installing the App on multiple accounts/orgs.
  • Add a founders-only Admin dashboard
    Founders get a new Admin screen showing platform health, AI-run history, Cloudflare traffic, and tools to inspect AI inputs/outputs for debugging and cost analysis.
  • Run generation as background jobs with live progress
    Generation is now enqueued as background jobs; the system writes per-step progress and the UI polls active jobs so you see live drafting progress both in a sticky dashboard status bar and inline on a product's Releases list.
  • Show in-progress jobs inline on product pages
    When generation is running for a product, an in-progress row appears at the top of that product's Releases list so you can watch drafting finish without leaving the page.
🐛Fixes
  • Fix generation failing for App-only repo connections
    Products created after the GitHub App migration (which lack a legacy OAuth snapshot token) could be rejected with an 'no_repo' error; the product/repo plumbing now accepts either an encrypted OAuth token or an App connection so App-only products ingest and generate correctly.
  • Enable Generate now and always show repo filter in repo pickers
    The repo picker now always displays a filter input when the parent wires filtering, and the dashboard correctly treats App-installed connections as connected so the Generate now button is no longer disabled for App-only products.
Improvements
  • Rate-limit Pro backfills so history lands incrementally
    Pro backfills are processed in chunked windows (the UI explains they are rate-limited to roughly 200 commits/hour) so large historical backfills no longer run as one large burst and releases appear over time instead of all at once.
  • Refresh product releases live during generation progress
    Product pages now refetch releases on intermediate job progress changes so individual releases appear as the system finishes drafting them rather than waiting for the entire job to complete.
  • Show a rough ETA on in-progress generation jobs
    Job progress cards now display a rough "~Xs left" estimate computed from current progress so users get a moving ETA while generation is running.
  • Show an elapsed seconds counter and softening hint while analyzing repos
    The create-wizard's "Reading repos and recent commits…" step now shows an elapsed-seconds timer and, after 30s, a helper message like "larger repos can take 30–60s" so the spinner feels less frozen.
  • Soften backfill copy to remove AI‑budget framing
    Backfill explanatory copy no longer mentions OpenAI cost protection and instead uses neutral wording that history processing is rate-limited to roughly 200 commits/hour.
  • Show clearer Install / connection status in Account and product flows
    Account → Git connections now shows whether a connection is an App installation or a legacy OAuth connection, displays repo counts, and surfaces contextual CTAs (install the App, manage the App on GitHub) and install-request messages so it's clear what to do when an org needs approval.
  • Enqueue a backfill job when creating a product and add scheduled polling
    Creating a product now enqueues a one-shot backfill job so recent history is drafted immediately, and products can opt into scheduled polling (plan-gated minimum interval) to have Patchpen poll for new commits on a timer instead of relying on webhooks.
  • Add a private AI context field for products
    Products now include a private aiContext field (separate from the public description) that is fed to the AI to help it distinguish user‑facing changes from internal plumbing; the Product wizard and settings surface this input.
  • Support grouping by tag and GitHub Release (Pro)
    Webhook parsing and grouping logic were extended so products can be grouped by Git tag or by published GitHub Release (Pro features), with an optional tagPattern to filter which tags trigger drafting.
  • Revamp dashboard chrome and mobile navigation
    The dashboard received a refreshed responsive shell: sticky left sidebar on desktop, mobile top bar + bottom nav + slide-in drawer, improved product list, quick actions, stat cards and activity feed to make common tasks faster.
  • Improve job progress reporting and status polling cadence
    Job progress now includes phase/step metadata (fetch → filter → group → draft → save) and the client polls active jobs more frequently while any job is running so progress updates are smoother.
  • Add in-app setup docs for the GitHub App
    New documentation for registering and wiring the Patchpen GitHub App was added and the old OAuth setup doc was retired and redirected to the new App guidance.
  • Improve repository pickers with inline filtering
    Repo pickers in the product wizard and repository-add controls gained a typed filter so you can quickly narrow lists even when only a few repos are shown.
🗑️ Deprecated
  • Deprecate the old GitHub OAuth App setup docs
    The previous OAuth App setup documentation has been retired and replaced with GitHub App setup guidance; sign-in still works but repo access is now recommended via the Patchpen GitHub App.
2026-05-13 13 May 2026

Add a Pro read-only JSON API with per-team API keys

New
  • Add a Pro read-only JSON API with per-team API keys
    Pro teams can create API keys in the dashboard to fetch published releases programmatically (endpoints: GET /api/v1/products/:slug, /releases and /releases/:id); responses contain only public items and include rate-limit headers (60 req/min per key).
  • Add OAuth-based Git provider connections (GitHub, GitLab, Bitbucket)
    Maintain your repo connections via OAuth instead of pasting tokens — the dashboard can start an OAuth flow and persist provider connections for repo selection and webhook registration.
  • Allow per-product logo uploads and use them as Open Graph images
    You can upload a product logo (stored and served by the server) and it will be used for og:image and dashboard previews so shared links show your product branding.
  • Add manual or automatic generation mode per product
    Products can be set to 'Automatic' (draft on every push) or 'Manual' (only draft when you click Generate now) from Product settings so teams control when AI runs.
  • Add dashboard Embed page and copyable snippets
    Pro teams get an Embed screen that provides iframe and JS widget snippets (with theme/accent controls) and a direct JSON endpoint example for pulling releases into external sites.
Improvements
  • Make the public changelog respect the owner's theme instead of forcing dark mode
    Public pages no longer override the site owner's configured background with the visitor's OS dark preference; the renderer derives card/border tones from the configured background so themes render consistently and form controls use the right color-scheme.
  • Redesign landing, pricing and dashboard with fresher visuals and a mock changelog preview
    Landing and dashboard surfaces received visual polish (softer shadows, hero glow, rounded surfaces, a mock changelog on the landing page, improved pricing cards with a "Recommended" badge, and a sticky sidebar with an upgrade nudge on Free).
  • Improve dashboard product cards, empty states and release search/filter
    Product list cards now show connection status, public/draft/pending badges and better truncation; the dashboard adds search/status filters and improved empty states and stats panels.
  • Show clearer generation results and auto-publish status in the product UI
    When you click Generate the product page now shows informative messages (no-new-commits, draft created, drafted with items) and surfaces whether a draft was auto-published.
  • Improve theme editor live preview and color-aware rendering
    Theme preview uses intelligent color detection to pick card/border tones for better contrast and the live preview reflects those changes immediately so you can see how a theme will look on the public page.
🐛Fixes
  • Stop double-counting or leaking internal-only items in public output
    Rendering and generation logic were tightened so only items explicitly marked public are shown on the public page and the API; internal items can optionally be reported as a count but their content never leaks.
  • Fix background logo serving and OG image caching
    Product logos are now stored and served with proper ETag and immutable caching headers so social previews and dashboard previews update reliably when you change the logo.
  • Clean up cascade deletes in the background sweeper
    The scheduled-team sweeper now captures related product/user IDs before deleting parent docs so child collections (subscribers, refresh tokens, pending commits) are cleaned correctly instead of deleting unrelated records.