Repository navigation
feat(frontend): rebuild landing page and add public /demo workspace - #3758
PetrefiedThunder wants to merge 3 commits into
Conversation
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: true
|
✅ Bundle Size Report
Bundle is within the 10.0MB limit. |
|
Copy gate failed on 217ce10, but not because of this PR. The same twelve gate lines fail on a clean checkout of #3756 carries the fix. I ported its Copy gate part here in 757bbc3 (the one-line trust wording and a regenerated Generated by Claude Code |
PR Blocker ChecklistHead SHA: Status: Ready
|
Rebuilds src/app/page.tsx from the design handoff: problem-first hero with an interactive Inflow Workbench mock, "What the rule asks for" stats, five-step how-it-works, free-tools cards and the disclaimer paragraph. Adds a public, no-login /demo workspace (Overview, Import, Fix queue, Ledger, Export) driven entirely by a static synthetic dataset of five recall-modelled supply chains. The hero and /demo share one pure model (src/lib/demo-workspace/model.ts) and one state hook. - Force the dark token set on / and /demo via next-themes forcedTheme; hide the theme toggle where the theme is forced. - Scope Outfit display type to the two screens (.re-display-outfit). - Add rePulse keyframe and the /demo shell grid to globals.css. - Add "Demo workspace" to the primary nav and footer product links. - Register scenario_tab, row_click, send_correction_link, reset_demo and toggle_rows conversion events; track /demo pageviews. - Allowlist the approved "demo"/"synthetic" copy in copy-lint and move /demo back to the public route list for the visual suite. - Tests: model derivations, hero interactions, /demo page behaviour, and updated homepage, SEO, route and analytics expectations. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GyhDYEfpvtBTjWGrzsiaDL
Copy gate has failed on every push to main since #3641: eleven baseline.json entries went stale after their copy was fixed, and the trust page's Preview row said "not GA", which trips the live-claim rule even as a negation. Ported from #3756 so this PR's gate can run green; no-ops once main carries that change. - frontend/src/app/trust/page.tsx: "before general release" instead of "but is not GA". - scripts/copy-lint/baseline.json: regenerated with --update-baseline (deletions only; no entries added for the files this PR introduces). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GyhDYEfpvtBTjWGrzsiaDL
757bbc3 to
3a0d284
Compare
|
Vercel Preview Built failed on 757bbc3 because Vercel never created a deployment for it: the Vercel API lists zero deployments for this branch, and every one of the project's last 60 deployments was authored by a team member. The two commits here were authored as Force-pushed the same two commits re-authored as the repo owner (217ce10 → 2fb2aca, 757bbc3 → 3a0d284; content and Co-Authored-By trailers unchanged, Generated by Claude Code |
|
Correction on Vercel Preview Built: the commit author was not the cause. The Vercel Generated by Claude Code |
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Brings the branch up to date with main (1d9c995) so CI can build the PR merge commit again. One conflict, in frontend/src/app/trust/page.tsx: this branch had ported the Preview-row wording from #3756 ("before general release") to keep the Copy gate green; #3756 has since merged with its own wording ("but has not reached general release"). Resolved by taking main's line, so this PR no longer changes that file. scripts/copy-lint/baseline.json is identical on both sides. Verified on the merged tree: lint and design-lint clean, tsc clean, vitest 209 files passed, next build green with /demo emitted, trust-safety copy check passes, copy gate exits 0 against main's baseline. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GyhDYEfpvtBTjWGrzsiaDL
|
Vercel preview: https://regengine-9trbm99q7-petrefiedthunders-projects.vercel.app Access is via Vercel login (Deployment Protection). |
Summary
src/app/page.tsxfrom the 2026-10-28 design handoff: problem-first hero with an interactive Inflow Workbench mock, "What the rule asks for" stat cards, five-step how-it-works, free-tools cards, disclaimer. Founder quote removed per the handoff./demoworkspace (Overview, Import, Fix queue, Ledger, Export) driven entirely by a static synthetic dataset of five recall-modelled supply chains (src/lib/demo-workspace/recall-scenarios.json). The hero and/demoshare one pure model (src/lib/demo-workspace/model.ts) and one state hook. Hashes are deterministic stand-ins, not SHA-256, and the page says so./and/demovia next-themesforcedTheme(header and footer included) and hides the theme toggle where the theme is forced; scopes Outfit display type to those two screens; adds "Demo workspace" to the primary nav and footer; registers the handoff's analytics events (scenario_tab,row_click,send_correction_link,reset_demo,toggle_rows) through the existing conversion-event allowlist.Decisions behind the governance edits (founder-approved in session):
scripts/copy-lint/allowlist.jsongains scoped entries so the approved "Demo workspace" / "synthetic data" copy passes thesample-demorule. The copy is honest labelling of a public demo, which is the opposite of the fallback-data problem the rule guards against.frontend/tests/visual/routes.jsonmoves/demofromexpectRedirectOr404(removed in fix(marketing): remove synthetic demo content and Developer Sandbox tier #3543) back topublic. The visual suite will need a new baseline for/demoafter merge.Out of scope for this PR (later handoff tickets):
/ingestretitle and preflight table, supplier correction router and page,/dashboardchanges,/verifyTAMPERED state, settings, export history, transactional emails, pricing update.Type of Change
Test Plan
demo-workspace-model.test.ts(dataset shape, row windowing, ledger chaining, CSV OPEN rows, package readiness, next actions),hero-workbench.test.tsx(caption, keyboard row select, fix, reset, expand, tab switch),demo-workspace.test.tsx(metadata, nav + hash mirroring, attention row jump, fix count, all-clear state, CSV download), plus updated homepage, SEO snippet, app-routes, marketing-analytics-routes and conversion-events tests.npm run test:run1668 passed, 1 expected fail, 2 skipped.npm run lint(eslint + design-lint) clean,npx tsc --noEmitclean,npm run buildgreen with/demoin the route manifest.python3 scripts/check_trust_safety_copy.pypasses.node scripts/copy-lint/check-copy.mjs . --gateshows no count increases in the files this PR touches (one pre-existinglive-claimentry forsrc/app/trust/page.tsxis already stale onmainand untouched here).<html class="dark">on/, H1 in Outfit, hero gap row flips to Corrected and the export badge to "Ready to export",/demosidebar collapses to a top row on mobile with no horizontal scroll, view changes mirror tolocation.hash, "Download CSV" producesfda_sortable_peppers.csv, no console errors.Checklist
sys.modules[X] = stub, I justified it in the PR descriptionRelated Issues
Relates to #3543 (reinstates
/demoas a public route with static data, not a seeded tenant).Generated by Claude Code