fix(design): P0 buyer-blockers (FAB safe-gutter, mobile header, wire Brain follow-up) - #12
Merged
Merged
Conversation
…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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.tsuntouched. 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-24safe 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 withpb-16so 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: falseeverywhere; 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-1belowlg,minmax(0,...)on thelgtwo-column track, andmin-w-0on 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
LabSwitchervariant in the mobile header (flex md:hidden); tightened the mobile header (smaller logo belowsm, gaps, CTA padding) so it fits. Desktop treatment unchanged (full switcherdisplay:flex, compactdisplay: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
onClickwas() => {}— the click that proves "an honest gap becomes a routed action" did nothing, and no live affordance remained after the first answer.Fix: wired
onClickto 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)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