feat(retro): features, metadata, about, privacy drafts and the claims register (#300) - #327
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Review of #327Reviewed the diff (about/features/pricing copy extraction, site metadata, privacy drafts, claims-register expansion). Overall this is a clean, well-organized refactor: hardcoded strings are consistently extracted into Nit: duplicated CTA button styling loses visual hierarchyIn both This is inconsistent with the Hero section in both files, which correctly pairs a primary style ( Also, Nit: About hero reuses
|
… register (#300) /features is one page with two anchored sections, `#planning-poker` and `#retro`; its title and Open Graph title drop "Planning Poker". The retro section says only what the storage backs: six formats, cards written in parallel and before the meeting, anonymous or named per team, dots and the discussion walk, action items that carry over, history kept by the team with Markdown and JSON export, join by link. The roadmap lists Retros as shipped; "Smart Analytics" is rewritten under the words rule. Site default title becomes "Free Planning Poker & Retros Online | AgileKit", with the description and social cards to match, read from `lib/site-copy.ts`; keywords are untouched, SEO being out of scope. The About page takes the position: "the free, open-source way for distributed Scrum teams to estimate and reflect in writing, everyone at once, with nothing forgotten between sprints." The pricing page's comparison and hero lose "insights"; the blog subtitle too. Every register-checked string on these pages moves into plain copy modules (`app/features/copy.ts`, `app/about/copy.ts`, `app/pricing/copy.ts`, `lib/site-copy.ts`) and the node test `lib/claims-register.test.ts` now reads all of them, the pricing page included. The retro rules are sentence-scoped, so a mixed metadata line may describe poker's analytics in one sentence and the retro in the next; the roadmap lists Retros as shipped. The privacy policy drafts (spec §20) land as an exported, unrendered `PRIVACY_POLICY_DRAFTS` constant beside the live sections in the privacy content module, keyed by section title, with the reviewer step and the `[N]` backup-retention placeholder named in its comment. Nothing on the live page changes. Manual step, not in this commit: capture the retro board, light and dark, and commit the images; the app-preview retro slot ships with the poker image until then. Claude-Session: https://claude.ai/code/session_01G9bjAL6awe9ayTe8X2MnqS
957bee7 to
2f09176
Compare
ReviewSolid PR — the copy-extraction pattern (id-keyed data in A few things worth a look: Test coverage
Minor consistency nit
Design nit (non-blocking)
Verified by reading, not execution (sandbox blocked running Nothing here blocks merging — the manual follow-ups called out in the description (privacy draft review, retro screenshots) are the real gating items. |
Part (b) of #300, stacked on #326. Spec: docs/spec/retro.md §18.3–§18.4, §20, §21.1; ADR-0014, ADR-0019, ADR-0020, ADR-0024.
What changed
#planning-pokerand#retro, with a retro section of eight facts. The page title drops "Planning Poker". Copy lives insrc/app/features/copy.ts.src/lib/site-copy.ts.src/app/about/copy.ts.src/app/pricing/copy.ts; "insights" replaced per the words rule.src/lib/claims-register.test.ts, node project) now walks every exported line of the six copy modules: no AI, no workspace/org product, no outcome claims, no anonymity claims, no effect sizes, no "X% of action items", no retro pricing tiers, no team-measuring numbers, "Retro" in UI labels, "Session" only inside planning poker, "notification"/"insights" never, "ceremony" docs-only. A fixture self-check proves each rule bites.PRIVACY_POLICY_DRAFTSexported, unrendered, keyed by section title, with a reviewer note. Nothing on the live privacy page changes.Manual follow-up
[N]backup-retention figure in the Data Retention draft must be checked against Convex documentation before any of it is published.Verification
tsc --noEmitand eslint clean.Closes #300.
https://claude.ai/code/session_01G9bjAL6awe9ayTe8X2MnqS