Skip to content

🤖 fix: onboarding wizard and narrow-viewport dogfood issues#3721

Open
ibetitsmike wants to merge 4 commits into
mainfrom
mike/fix-dogfood-onboarding-issues
Open

🤖 fix: onboarding wizard and narrow-viewport dogfood issues#3721
ibetitsmike wants to merge 4 commits into
mainfrom
mike/fix-dogfood-onboarding-issues

Conversation

@ibetitsmike

Copy link
Copy Markdown
Contributor

Summary

Fixes the four issues found during the dogfood UAT pass of the onboarding wizard and narrow-viewport layout (1 low, 3 medium).

Background

A full-app dogfood session on a fresh MUX_ROOT surfaced:

  1. Wizard steps taller than the viewport made Next unclickable. At a 720px-high window, the "Multiple runtimes" step rendered an 818px dialog; the Next button's hit target fell below the viewport, so mouse clicks did nothing while Tab+Enter worked.
  2. Raw Node errno leaked into the project-add UI. Entering an uncreatable path showed Failed to create project: EACCES: permission denied, mkdir '/nonexistent', with the contradictory "Click Next to add this project." helper still visible below the error.
  3. 375px viewport with an expanded sidebar crushed the main pane. The overlay-sidebar CSS was gated on (max-width: 768px) and (pointer: coarse), so a narrow non-touch window kept the 288px sidebar in-flow, leaving ~90px for content (clipped controls, overlapping labels).
  4. Radix warned about a missing dialog description for the splash/wizard DialogContent.

Implementation

  • SplashScreen: cap the dialog at 85vh and scroll the body while the footer stays pinned (grid-rows-[auto_minmax(0,1fr)_auto]), so Next/Skip remain clickable on short viewports. Declare aria-describedby={undefined} (existing repo pattern) since splash bodies are rich content, not a description.
  • ProjectService.create: map EACCES/EPERM/EROFS/ENOTDIR failures from the stat/mkdir path into friendly messages (e.g. Cannot create folder "...": permission denied) instead of returning raw errno strings. Intentional mkdir-p auto-creation behavior is unchanged.
  • ProjectCreateForm/ProjectCloneForm/ProjectAddForm: new optional onErrorChange(hasError) callback (mirrors onIsCreatingChange); the onboarding wizard uses it to hide the "click Next" nudge while an inline error is shown.
  • globals.css/LeftSidebar: the sidebar overlay rules (fixed overlay, backdrop, off-canvas collapse, hamburger button) now gate on width only (max-width: 768px); touch-specific rules (44px targets, text-size adjust, sticky header) stay behind the coarse-pointer gate. Narrow non-touch windows now get the same overlay behavior phones already had, and the hamburger reopens the hidden sidebar.

Validation

  • Reproduced all four issues in a dev-server sandbox, then re-verified each fix live: hit-testing confirmed the Next button center went from off-viewport to hittable and mouse clicks advance the step; the friendly error renders with the helper text suppressed; at 375x812 the expanded sidebar overlays with a backdrop, content gets full width, and the hamburger reopens it; the Radix warning is gone on a fresh load.
  • Desktop regression check at 1280x800: in-flow sidebar, resize handle present, no overlay/hamburger.
  • New integration tests cover the errno mapping (permission-denied and path-through-a-file branches), asserting raw codes do not leak.

Risks

  • The width-only overlay gate changes behavior for narrow non-touch windows (previously crushed layout, now off-canvas overlay + hamburger). Touch/phone behavior and desktop-width behavior are unchanged; Chromatic phone modes use hasTouch: true and match the same width gate.

Generated with mux • Model: anthropic:claude-fable-5 • Thinking: xhigh • Cost: $79.63

- SplashScreen: cap dialog height (85vh) with scrollable body so tall wizard
  steps keep Next/Skip clickable at short viewports; declare no dialog
  description (aria-describedby={undefined}) to fix Radix a11y warning
- ProjectService.create: map EACCES/EPERM/EROFS/ENOTDIR mkdir/stat failures
  to friendly errors instead of leaking raw Node errno strings
- ProjectAddForm/wizard: report inline error state upward and hide the
  'Click Next to add this project.' nudge while an error is shown
- Sidebar overlay now gates on width (max-width: 768px) instead of width +
  coarse pointer, so a narrow non-touch window no longer crushes main content
> Mux worked on behalf of Mike.
@ibetitsmike

Copy link
Copy Markdown
Contributor Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: e5e6442042

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/browser/features/SplashScreens/OnboardingWizardSplash.tsx
@ibetitsmike

Copy link
Copy Markdown
Contributor Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Delightful!

Reviewed commit: 1b99d977c5

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

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