Add per-item regen in the release editor
-
Add per-item regen in the release editorAdd 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 itemsEnable 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 AccountAdd 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 subscribersShow 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 settingsAdd 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 itemsRender 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 repositoriesAllow 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 flowsIntroduce 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 endpointAllow 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 previewsServe 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 dashboardGive 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 themesExpose 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 flowsShow 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.
-
Ignore push events from non-tracked branchesPushes 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 downloadRestore 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).
-
Rewrite Pricing as a feature matrix and surface coupon bannersReplace 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 checkoutAccept 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 UIAdd 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 pagesWhen 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 branchScheduled/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 branchChanging 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 jobsRun 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 existFinish 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 ActionRemove 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 locationUnify 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 inAdjust 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 displayShow 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 endpointInstall 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 overrideAllow 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 defaultHave 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.