← All patchpen.dev updates
Changelog

patchpen.dev

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

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.