Remove AI-based published-release localization (language switcher and ?lang pages)
-
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.
-
Add a language switcher to the marketing header that navigates per-language URLsA 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 bundlesThe 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 settingsA 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.
-
Detect language from the URL path on hard loadsLanguage 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 linksThe 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 inaccuraciesSeven /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 rulesThe 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 flowRole 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 formatSubscriber 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 defaultReleases 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 guidanceWebhook 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 behaviourRSS 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 mergingEach 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 formattingX-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 generationThe 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 featureBuilt-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 ProFree 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 connectionsLegacy 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.