# UX Audit — Browser Walkthrough 2026-07-04 Method: real browser session (headless Chromium, 1440×900) against dev build (sidecar :3333 + vite :8080), walked as a first-time user via `?forceWizard=true`. Screenshots in session scratchpad `ux-01`..`ux-16`. ## The first-run interruption stack (the P0 story) A new user's first 90 seconds today: 1. Onboarding ends with **"Let's go!"** — but the first task is **never sent**; it sits prefilled in the composer (broken promise). *(F2)* 2. The instant the workspace loads, a **"Your 15-day trial has ended" modal** covers everything. *(F1)* 3. Dismissing it immediately reveals a **4-step coach-mark carousel** over the welcome panel. *(F5)* 4. Sending the message manually then fails: **"API key is invalid or expired"** — even though onboarding's model step showed a green **"You have a working model — you're ready to go."** *(F3)* 5. The error is dead-end small text: no Retry, no link to the settings screen it names. *(F4)* ## Findings | # | Sev | Finding | Evidence | |---|-----|---------|----------| | F1 | P0 | Trial-ended paywall modal re-fires on EVERY route navigation; "Continue with Free" dismissal is not persisted (fired 3× in 10 min: post-onboarding, `/`, `/memory`) | ux-07, ux-11, ux-12 | | F2 | P0 | Onboarding final step "Let's go!" navigates to chat but does NOT send the chosen first task; text sits in composer | ux-08 | | F3 | P0 | Model-gate step claims "You have a working model — you're ready to go" from key presence only; first real call 401s. Probe exists server-side (`llm-key-probe.ts`) but the claim isn't probe-backed | ux-03 vs ux-10 | | F4 | P1 | Chat LLM error is inline small text, no Retry button, no link to "Settings > API Keys" it references | ux-10 | | F5 | P1 | Coach-mark carousel fires immediately on first landing, stacking on top of the paywall dismissal; suppress on first-run landing / show later | ux-08 | | F6 | P2 | Onboarding polish: (a) disabled "English (US)" pill looks clickable; (b) duplicate Back controls (header ← Back + footer Back); (c) all 8 "help with" chips preselected → zero signal; (d) template picker ignores stated role — no "Recommended" ranking (Strategy Consultant → no consulting-flavored guidance); (e) final step loses Back + step counter; (f) final-step suggestion chips not template/role-tailored (PRD/campaign chips inside Research Hub) | ux-01..06 | | F7 | P2 | IA naming drift: sidebar "Agents & tasks" → page "Agent Center" (no tasks visible anywhere on it); sidebar "Library" → page/URL "Artifacts"; section label "EVERYTHING ELSE" is filler copy | ux-13, ux-14 | | F8 | P2 | Sidebar active-state wrong on workspace Overview (highlights "Chat") | ux-15 | | F9 | P3 | Welcome-back panel on a fresh workspace: "Here's where you left off … across 0 sessions"; should have a first-visit variant | ux-08 | | F10 | P3 | ⌘K palette: ESC chip collides with close ✕ icon | ux-16 | | F11 | P3 | Working-step accordion duplicates ("Worked across your memory, web & files" ×2 for one turn) | ux-10 | | F12 | P3 | Agent Center: single row floats over a vast honeycomb void — needs a richer empty/sparse state (template suggestions) | ux-13 | ## What's already good (don't regress) - Welcome hero: calm, single CTA, on-device trust line. - Live greeting preview in who-are-you step. - "Claude Code detected — 495 items — Import my history" one-click harvest. - Chat working-state transparency (Auto Recall chip, timing). - ⌘K palette structure (Jump to / Do). - Trial modal's honest "You keep / You lose" framing (the content, not the timing). ## Wave plan - Wave 1 (this session): F1, F2, F3/F4 (probe + actionable error), F5, F8, F9, F10. - Wave 2: F6 (onboarding polish set), F7 (IA naming — product naming decision), F11, F12.