diff --git a/AGENTS.md b/AGENTS.md index 777bff2..1557403 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -125,6 +125,28 @@ your own Atlassian account, and export it in your own shell/agent config your tooling) — never use someone else's token on their behalf, and never paste a token into a commit, a PR description, or a file this repo tracks. +## Update the changelog in the same PR, not after + +`src/lib/marketing/changelog.ts` feeds the public `/changelog` page, and it +drifts the same way `README.md`'s "Vercel Cron" claim did — quietly, until +someone notices it's stale. It went unmaintained for a week in practice: five +real shipped changes (a new plan, a reliability fix, three new pages, several +bug fixes) landed across five separate PRs with none of them touching this +file, and it took a dedicated catch-up pass to close the gap. Don't leave that +for someone else to notice later. + +**If a PR changes what a signed-in customer or a visitor can see or do, add a +changelog entry in that same PR** — new pages, new plans or pricing, a +customer-visible bug fix, a real behavior change. Follow the file's own doc +comment for what to leave out (internal refactors with no visible effect, +abandoned experiments) and match its existing voice: product language, not +engineering language ("A campaign sending a photo or video over WhatsApp no +longer fails silently", not "fixed BulkMessageContentDto schema mismatch"). +Group under today's real date; add a new date block at the top of the array +rather than editing an old one. This is the same discipline as +`src/lib/openapi.ts` — new routes documented in the commit that adds them, not +backfilled in a batch later. + ## Where to look first - `src/proxy.ts` — the single auth chokepoint (Next 16's replacement for diff --git a/src/lib/marketing/changelog.ts b/src/lib/marketing/changelog.ts index 19f4b13..cd2657b 100644 --- a/src/lib/marketing/changelog.ts +++ b/src/lib/marketing/changelog.ts @@ -30,6 +30,56 @@ export interface ChangelogRelease { } export const CHANGELOG: ChangelogRelease[] = [ + { + date: "2026-09-08", + title: "A Lite plan", + changes: [ + { + kind: "new", + text: "Lite (₹1,999/mo): every analytics module, no WhatsApp. For a store that wants the numbers without the messaging — upgrade to Go or Plus any time campaigns, flows or a shared inbox become worth it.", + }, + ], + }, + { + date: "2026-09-07", + changes: [ + { + kind: "improved", + text: "The dashboard, inbox and product picker load meaningfully faster for stores with a large order history — the caching that already sped up smaller stores wasn't actually taking effect once a store grew past a certain size.", + }, + ], + }, + { + date: "2026-09-03", + title: "About, Terms & Privacy", + changes: [ + { + kind: "new", + text: "About, Terms of Service and Privacy Policy pages, linked from the footer.", + }, + { + kind: "fixed", + text: "A magic sign-in link from email now signs you in correctly, instead of silently landing on the home page.", + }, + { + kind: "fixed", + text: "The WhatsApp order-confirmation message now waits for a payment to actually go through before sending, instead of firing the instant checkout is submitted — a pending UPI or card order no longer gets a \"thank you\" before it's actually paid for.", + }, + { + kind: "fixed", + text: "A campaign sending a photo or video over WhatsApp no longer fails silently for every recipient.", + }, + ], + }, + { + date: "2026-09-02", + changes: [ + { + kind: "new", + text: "A public changelog page, linked from the footer.", + }, + ], + }, { date: "2026-09-01", title: "A 14-day free trial",