Skip to content

launch: dashboard — D1-A semantic status + §F foundation (app.ainfera.ai)#96

Draft
hizrianraz wants to merge 6 commits into
mainfrom
launch/dashboard
Draft

launch: dashboard — D1-A semantic status + §F foundation (app.ainfera.ai)#96
hizrianraz wants to merge 6 commits into
mainfrom
launch/dashboard

Conversation

@hizrianraz
Copy link
Copy Markdown
Contributor

@hizrianraz hizrianraz commented Jun 3, 2026

Launch branch for app.ainfera.ai (dashboard). Cut from feat/dashboard-brand-latest-spec (#92) HEAD, rebased current on main (globals.css taken from upstream; git auto-dropped 13 already-upstream commits). Per AINFERA-WEB-LAUNCH-READY-SUPERPROMPT.md. Draft — not for merge until §F green + contact-sheet approved. No self-merge.

Verified headlessly

Gate Result
/login 200 (bypassed preview)
computed-style (accent #57A0EF · radius 9/14px · IBM Plex Sans)
palette gate (no default-palette / no inline hex)

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).
  • scoped :root alias block kept (do-not-delete; covers --amber/--warm/--ok/--warn), revalued to the semantic palette.
  • Guard passed: status tokens == {#66BB8A,#E8B968,#E0607A no-provisional} · brand tokens (accent/radius/surfaces/ink/hairlines) unchanged · marketing globals.css untouched.

⛔ 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-lived PREVIEW_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.css ink tweaks affect both apps’ muted text contrast slightly.

Overview
Locks D1-A semantic status on the dashboard launch branch: @theme and the scoped :root alias block in apps/dashboard/app/globals.css move from monochrome (ok/live → accent, pending → ink-faint) to green / amber / cool negative (#66BB8A, #E8B968, #E0607A), drop provisional G3 wording, and bump --color-ink-muted to 0.56 for AA. Comments now state dashboard status matches marketing semantics while accent chrome stays single-blue.

Shared tokens: packages/ui/src/brand.css raises --ink-muted (and --ink-faint in the shared file) to 0.56 for a cross-app a11y alignment note; dashboard @theme still keeps faint at 0.30 per the diff comment.

Preview automation: verify-preview.mjs sends only x-vercel-protection-bypass (removes x-vercel-set-bypass-cookie) to avoid a redirect loop that hung page.goto.

Docs / hygiene: Adds docs/AINFERA-WEB-CONTENT-PROPOSAL.md (launch content spine: bundle brand, savings-share, BYOK removal, honest-data gates). .gitignore duplicates 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.

hizrianraz and others added 5 commits June 3, 2026 13:36
…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>
@vercel
Copy link
Copy Markdown

vercel Bot commented Jun 3, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
ainfera-dashboard Ready Ready Preview, Comment Jun 3, 2026 8:12am
ainfera-marketing Ready Ready Preview, Comment Jun 3, 2026 8:12am

Request Review

@supabase
Copy link
Copy Markdown

supabase Bot commented Jun 3, 2026

This pull request has been ignored for the connected project dftfpwzqxoebwzepygzl because there are no changes detected in supabase directory. You can change this behaviour in Project Integrations Settings ↗︎.


Preview Branches by Supabase.
Learn more about Supabase Branching ↗︎.

…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>
Copy link
Copy Markdown

@cursor cursor Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

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.

Comment thread packages/ui/src/brand.css
--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. */
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit ccf3ae9. Configure here.

hizrianraz added a commit that referenced this pull request Jun 3, 2026
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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant