Skip to content

fix(design): P0 buyer-blockers (FAB safe-gutter, mobile header, wire Brain follow-up) - #12

Merged
build-with-dhiraj merged 1 commit into
mainfrom
fix/p0-buyer-blockers
Jun 23, 2026
Merged

build-with-dhiraj merged 1 commit into
mainfrom
fix/p0-buyer-blockers

Conversation

@build-with-dhiraj

Copy link
Copy Markdown
Owner

Resolves the four P0 buyer-blockers from the LabOS design council report, plus the closely related P1-1 (same corner-overlay class). Scope is exactly the council's PR A + PR B + PR C, in one PR.

Files: Sidebar.tsx, BrainFlow.tsx, Landing.tsx, TopNav.tsx, LabSwitcher.tsx. src/lib/labs/mcclean.ts untouched. Zero em-dashes. Design system, hero headline, abstain/safety answers, and "Same primitives, stricter policy" all preserved.


P0-1 + P1-1 — corner-overlay safe-gutter

Problem: the fixed bottom-left accessibility FAB occluded the sidebar live lab-status card (hiding the bus-factor-1 count) on all four flows; the bottom-right "prototype" tag overlapped the Brain send button.
Fix: reserve a pb-24 safe gutter at the foot of the sidebar so the FAB's ~88px strike zone can never sit on the status card; lift the Brain composer with pb-16 so the tag clears the send button.
Verified (1280px, both labs, all four flows): FAB-to-card clearance 27px on setup/journey/matrix/brain for McClean and Okafor; fabIntersectsCard: false everywhere; bus-factor value visible. On Brain, the prototype tag clears the send button by 27px (tagIntersectsSendBtn: false).

P0-2 — hero clips at 380px

Problem: the hero grid track resolved to a fixed width inside a 380px viewport, clipping the headline + CTA (the blue payoff clause) under the section's overflow-x: hidden.
Fix: grid-cols-1 below lg, minmax(0,...) on the lg two-column track, and min-w-0 on both grid children so the 1fr track shrinks below intrinsic content width.
Verified (380px, both labs): full H1 renders with no clipped glyph; all CTAs within the viewport; zero horizontal overflow (scrollWidth == 380).

P0-3 — lab switcher missing on mobile

Problem: the lab switcher was hidden md:flex, so the core McClean→Okafor demo was unreachable on a phone.
Fix: a compact avatar-only LabSwitcher variant in the mobile header (flex md:hidden); tightened the mobile header (smaller logo below sm, gaps, CTA padding) so it fits. Desktop treatment unchanged (full switcher display:flex, compact display:none).
Verified (380px): switcher is present and in-viewport on the landing page and flow pages; opening it and selecting Okafor switches the whole app (?lab=okafor, graph chrome → "Okafor Lab Knowledge Graph") with no page freeze (LBX-01 scroll-lock fix held); zero header overflow.

P0-4 + P1-4 — dead Brain follow-up

Problem: the follow-up button's onClick was () => {} — the click that proves "an honest gap becomes a routed action" did nothing, and no live affordance remained after the first answer.
Fix: wired onClick to append a variant-aware routed confirmation row (capture vs escalation), derived from the clicked follow-up's own copy so it works for either lab without touching the per-lab scripts; the follow-up is consumed (no double-fire); suggested questions + input stay live.
Verified (both labs): clicking "Capture this gap, route to the PI" (McClean abstain) renders a green Routed card: "Logged as an open knowledge gap and added to the capture queue…"; clicking "Escalate to Dr. Ada Okafor" (Okafor safety) renders "Owner notified. They will confirm the verified step before you proceed…". Four suggested-question chips + enabled input remain after each answer.


CI status

  • tsc --noEmit: clean (exit 0)
  • next build: clean (9/9 static pages, lint + types passed)
  • Browser console: 0 errors across the whole verification session

Before/after screenshots captured during verification (mobile landing at 380px, mobile switcher open, Brain abstain before/after follow-up, desktop landing).

Do not merge, do not deploy — for review only. A production deploy is live on this repo's main checkout.

🤖 Generated with Claude Code

…Brain follow-up)

Resolves the four P0 buyer-blockers the LabOS design council flagged, plus the
closely related P1-1 (same corner-overlay class).

P0-1 + P1-1 (corner-overlay safe-gutter): reserve a pb-24 safe gutter at the
foot of the sidebar so the fixed bottom-left accessibility FAB can never sit on
the live lab-status card and hide the bus-factor-1 count; lift the Brain
composer (pb-16) so the bottom-right "prototype" tag clears the send button.
Verified: 27px clearance on all four flows for both labs; bus-factor stat
visible everywhere; tag no longer intersects the Brain send button.

P0-2 (hero clips at 380px): make the hero grid track responsive
(grid-cols-1 below lg, minmax(0,...) on the lg two-column track) and add
min-w-0 to both grid children so the 1fr track shrinks below intrinsic content
width. Verified: no H1/CTA clipping and zero horizontal overflow at 380px for
both labs.

P0-3 (lab switcher missing on mobile): add a compact avatar-only LabSwitcher
variant in the mobile header (flex md:hidden) so the core McClean/Okafor demo
is reachable on a phone; tighten the mobile header (smaller logo, gaps, CTA
padding) so it fits with zero overflow. Desktop treatment unchanged. Verified:
switcher opens and switches McClean -> Okafor at 380px with no page freeze.

P0-4 + P1-4 (dead Brain follow-up): wire the follow-up button onClick to append
a routed-action confirmation row (variant-aware: capture vs escalation), derived
from the clicked follow-up's own copy so it works for either lab without
touching the per-lab scripts; keep the suggested questions + input live after
each answer. Verified: clicking "Capture this gap, route to the PI" and
"Escalate to Dr. Ada Okafor" each renders a visible Routed confirmation.

CI: tsc --noEmit clean, next build clean (9/9 pages). Zero em-dashes.
src/lib/labs/mcclean.ts untouched. Design system, hero headline, abstain/safety
answers, and "Same primitives, stricter policy" preserved.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@build-with-dhiraj
build-with-dhiraj merged commit 330df51 into main Jun 23, 2026
1 check passed
@build-with-dhiraj
build-with-dhiraj deleted the fix/p0-buyer-blockers branch June 23, 2026 17:02
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