launch: dashboard — D1-A semantic status + §F foundation (app.ainfera.ai)#96
launch: dashboard — D1-A semantic status + §F foundation (app.ainfera.ai)#96hizrianraz wants to merge 6 commits into
Conversation
…ass) apps/dashboard/scripts/verify-preview.mjs (Playwright devDep). Reads PREVIEW_URL + optional PREVIEW_SESSION_TOKEN from env (never committed/logged). Global checks run on /login (loads globals.css): accent-soft ≠ pressed, accent default-palette/hex classes, computed control radius. Tenant routes (T1–T10) are visited only with a real scoped session and screenshotted to .verify-out/ (gitignored); WITHOUT a session they report UNVERIFIED rather than pass silently. Session minting is founder decision D-A — no auth bypass added. Co-Authored-By: Claude <noreply@anthropic.com>
…-bypass + honest 401 Two run-time realities surfaced against the live preview: - networkidle never settles (Vercel live-feedback holds connections open) → switch to domcontentloaded + an 800ms settle (CSS is in <head>). - the preview is Vercel deployment-protected, so EVERY route 401s headlessly (not just tenant routes). Add VERCEL_PROTECTION_BYPASS support (the standard "Protection Bypass for Automation" header — env only, never committed) and treat 401/403 as an honest UNVERIFIED skip (exit 0), not a brand FAIL. Result today: UNVERIFIED — preview Vercel-protected. Brand fixes (F1/F2) are proven at the artifact level via compiled CSS; this harness goes green once the bypass secret (+ a scoped session for tenant routes) is provided — decision D-A. Co-Authored-By: Claude <noreply@anthropic.com>
Stage the per-page content spec the launch build needs (governing doc: AINFERA-WEB-LAUNCH-READY-SUPERPROMPT.md), without touching any build code: - docs/AINFERA-WEB-CONTENT-PROPOSAL.md — content spec (dashboard §3 + marketing §2), reconstructed verbatim from CLAUDE.md; byte-identical to the marketing base copy. Reference input only. Verifier apps/dashboard/scripts/verify-preview.mjs already present (will be extended in §F). Bundle visual system stays marketing-only; dashboard brand tokens live in packages/ui/src/brand.css. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…cked 2026-06-03) Apply decision D1-A to apps/dashboard/app/globals.css (dashboard-scoped only; marketing stays semantic and untouched; shared brand.css already holds the values): - @theme: --color-positive #66BB8A · --color-warning #E8B968 · --color-negative #E0607A (blessed, "provisional (G3)" tag dropped). - scoped :root alias block (kept, not deleted — it provides --amber/--warm/--ok/ --warn coverage): revalued to semantic — --positive/--ok #66BB8A · --warning/ --amber/--warn #E8B968 · --warm/--negative/--danger/--color-danger #E0607A. Guard: status tokens == {#66BB8A,#E8B968,#E0607A no-provisional} ✓ · brand tokens (accent #57A0EF / radius 9·14 / surfaces / ink / hairlines) unchanged ✓ · marketing globals.css unchanged ✓. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…rect loop) Drop x-vercel-set-bypass-cookie from the persistent per-request headers; the x-vercel-protection-bypass header alone authenticates each request (200, no redirect). Without this, page.goto hung in an infinite cookie-set 307 loop. Verified: /login 200 + brand/palette gate green against the launch/dashboard preview. Tenant routes remain honest-UNVERIFIED pending a scoped PREVIEW_SESSION_TOKEN (decision D-A). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
This pull request has been ignored for the connected project Preview Branches by Supabase. |
…pp value) Counsel audit C3: lift --ink-muted to the AA-passing value marketing already uses, so the shared packages/ui/src/brand.css ink-dims are identical cross-branch (--ink-muted + --ink-faint = 0.56) and dashboard globals.css --color-ink-muted matches. No other dashboard change; D1-A status + brand tokens unchanged; tenant a11y verification stays parked on decision D-A. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
Bugbot Autofix is ON. A cloud agent has been kicked off to fix the reported issue.
Reviewed by Cursor Bugbot for commit ccf3ae9. Configure here.
| --ink-muted: rgba(232, 237, 245, 0.48); /* was #8A9AB8 */ | ||
| --ink-faint: rgba(232, 237, 245, 0.30); /* was #4D5A78 */ | ||
| --ink-muted: rgba(232, 237, 245, 0.56); /* C3: 0.48→0.56 (AA, one cross-app value — identical to launch/marketing's shared brand.css) */ | ||
| --ink-faint: rgba(232, 237, 245, 0.56); /* C3: 0.30→0.56 to keep the SHARED brand.css byte-identical cross-branch (marketing a11y bump). Decorative faint stays 0.30 via per-app exception where used. */ |
There was a problem hiding this comment.
Ink faint equals muted
Medium Severity
--ink-faint and --ink-muted are both set to rgba(232, 237, 245, 0.56) in shared brand.css, so any UI using var(--ink-faint) vs var(--ink-muted) loses its two-step hierarchy. The comment says faint stays at 0.30 per app, but the dashboard :root block only updates status aliases—not --ink-faint—while @theme still defines a separate --color-ink-faint at 0.30.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit ccf3ae9. Configure here.
Marketing launch surface to prod: all 17 §B routes verified (200 / computed-style / copy-gate / cv-motif / honest-zero / WCAG AA 0-blocking), brand-conformance audit C1–C3 (route scale unified to bundle, CTA glow, token reconciles). Founder-authorized prod merge (override of no-self-merge). Dashboard #96 held pending decision D-A.


Launch branch for
app.ainfera.ai(dashboard). Cut fromfeat/dashboard-brand-latest-spec(#92) HEAD, rebased current onmain(globals.css taken from upstream; git auto-dropped 13 already-upstream commits). PerAINFERA-WEB-LAUNCH-READY-SUPERPROMPT.md. Draft — not for merge until §F green + contact-sheet approved. No self-merge.Verified headlessly
/login200 (bypassed preview)D1-A semantic status (this PR's code change) —
apps/dashboard/app/globals.css@theme:--color-positive #66BB8A·--color-warning #E8B968·--color-negative #E0607A(blessed; "provisional (G3)" dropped).:rootalias block kept (do-not-delete; covers--amber/--warm/--ok/--warn), revalued to the semantic palette.globals.cssuntouched.⛔ Blocker for "verify everything" — needs decision D-A
The 9 tenant routes (
/dashboard /agents /wallet /audit /inferences /models /keys /billing /settings …) — the bulk of §C, and D1-A's own visual proof — are honest-UNVERIFIED: headless verification of authenticated routes needs a real, scoped, short-livedPREVIEW_SESSION_TOKEN, and how that session is minted is founder decision D-A. Not faked, not skipped silently. Also gates the §C auth/signup launch-funnel resolution.Remaining for §F-complete
Tenant-route verify (post-D-A) + axe + breakpoints → folded into the ONE combined contact sheet.
🤖 Generated with Claude Code
Note
Low Risk
Visual/token and dev-script changes only; no auth, billing, or API logic. Shared
brand.cssink tweaks affect both apps’ muted text contrast slightly.Overview
Locks D1-A semantic status on the dashboard launch branch:
@themeand the scoped:rootalias block inapps/dashboard/app/globals.cssmove from monochrome (ok/live → accent, pending → ink-faint) to green / amber / cool negative (#66BB8A,#E8B968,#E0607A), drop provisional G3 wording, and bump--color-ink-mutedto 0.56 for AA. Comments now state dashboard status matches marketing semantics while accent chrome stays single-blue.Shared tokens:
packages/ui/src/brand.cssraises--ink-muted(and--ink-faintin the shared file) to 0.56 for a cross-app a11y alignment note; dashboard@themestill keeps faint at 0.30 per the diff comment.Preview automation:
verify-preview.mjssends onlyx-vercel-protection-bypass(removesx-vercel-set-bypass-cookie) to avoid a redirect loop that hungpage.goto.Docs / hygiene: Adds
docs/AINFERA-WEB-CONTENT-PROPOSAL.md(launch content spine: bundle brand, savings-share, BYOK removal, honest-data gates)..gitignoreduplicates the.verify-out/block (likely accidental).Reviewed by Cursor Bugbot for commit ccf3ae9. Bugbot is set up for automated code reviews on this repo. Configure here.