- 30-02-SUMMARY.md: checkpoint section updated to reflect visual verification approved - STATE.md: status changed from verifying to complete, session updated
78 lines
4 KiB
Markdown
78 lines
4 KiB
Markdown
---
|
|
phase: 30-hardware-detection-mode-selection
|
|
plan: "02"
|
|
subsystem: ui
|
|
tags: [onboarding, hardware-detection, mode-selection, react-query, wizard]
|
|
dependency_graph:
|
|
requires: ["30-01"]
|
|
provides: ["hardware-api-client", "mode-selector-ui", "hardware-summary-ui", "3-step-wizard"]
|
|
affects: ["ui/src/components/NexusOnboardingWizard.tsx"]
|
|
tech_stack:
|
|
added: []
|
|
patterns: ["useQuery for hardware probe", "multi-step wizard with step state", "non-blocking hardware probe"]
|
|
key_files:
|
|
created:
|
|
- ui/src/api/hardware.ts
|
|
- ui/src/hooks/useHardwareInfo.ts
|
|
- ui/src/components/onboarding/ModeSelector.tsx
|
|
- ui/src/components/onboarding/HardwareSummaryStep.tsx
|
|
modified:
|
|
- ui/src/components/NexusOnboardingWizard.tsx
|
|
- ui/src/lib/queryKeys.ts
|
|
decisions:
|
|
- "Hardware probe is non-blocking — wizard step 1 always has an enabled Continue button regardless of probe outcome"
|
|
- "Mode save on wizard completion is wrapped in try/catch — failure is silent, defaults to 'both'"
|
|
- "Pre-existing AgentConfigForm.tsx TypeScript error is out-of-scope; documented here for awareness"
|
|
metrics:
|
|
duration: 15
|
|
completed_date: "2026-04-02"
|
|
tasks_completed: 3
|
|
files_changed: 6
|
|
---
|
|
|
|
# Phase 30 Plan 02: Hardware Detection UI + 3-Step Wizard Summary
|
|
|
|
**One-liner:** Three-step onboarding wizard with hardware probe display (GPU/Apple Silicon/CPU-only), three-card mode selector, and settings persistence via PATCH /api/nexus/settings.
|
|
|
|
## What Was Built
|
|
|
|
### Task 1: API client, hook, ModeSelector, and HardwareSummaryStep
|
|
- `ui/src/api/hardware.ts` — typed fetch wrappers: `fetchHardwareInfo`, `fetchNexusSettings`, `updateNexusSettings`, plus `HardwareInfo`, `HardwareTier`, `NexusMode`, `NexusSettings` types (local copy — not imported from server)
|
|
- `ui/src/hooks/useHardwareInfo.ts` — `useHardwareInfo(enabled)` hook wrapping `useQuery` with 5-minute staleTime and retry: 1
|
|
- `ui/src/lib/queryKeys.ts` — added `hardware: { info: ["hardware", "info"] as const }` key
|
|
- `ui/src/components/onboarding/ModeSelector.tsx` — three vertical cards with `border-primary bg-primary/5` selected state; modes: Personal AI Assistant, Project Builder, Both (recommended)
|
|
- `ui/src/components/onboarding/HardwareSummaryStep.tsx` — skeleton loading (3 rows), error state (non-destructive copy), and success state with tier-appropriate labels (Unified memory for Apple Silicon, GPU VRAM for GPU tier, System RAM for CPU-only), plus privacy frame for local AI tiers
|
|
|
|
### Task 2: Wire multi-step wizard
|
|
- `ui/src/components/NexusOnboardingWizard.tsx` refactored from single-step to 3-step wizard
|
|
- Step indicator `Step {step} of 3` shown above content
|
|
- Step 1: hardware detection heading changes from "Detecting your hardware..." to "Your hardware" when probe resolves; HardwareSummaryStep displayed; Continue always enabled
|
|
- Step 2: ModeSelector with "both" pre-selected; Continue and Back buttons
|
|
- Step 3: existing root directory form preserved; Back button added; Get Started submit
|
|
- `updateNexusSettings({ mode: selectedMode })` called after company creation, before navigate — wrapped in try/catch (non-blocking)
|
|
- Reset effect expanded to also reset `step` to 1 and `selectedMode` to "both" on wizard close
|
|
|
|
## Checkpoint: Visual Verification
|
|
|
|
Task 3 (`checkpoint:human-verify`) — **Approved by user on 2026-04-02.**
|
|
|
|
Visual verification of the complete 3-step onboarding wizard flow was approved. No issues reported.
|
|
|
|
## Deviations from Plan
|
|
|
|
None — plan executed exactly as written.
|
|
|
|
## Known Stubs
|
|
|
|
None — all data paths are wired. `useHardwareInfo` fetches from `/api/system/providers` (implemented in 30-01). `updateNexusSettings` PATCHes `/api/nexus/settings` (implemented in 30-01).
|
|
|
|
## Self-Check: PASSED
|
|
|
|
Files created/modified:
|
|
- FOUND: /opt/nexus/ui/src/api/hardware.ts
|
|
- FOUND: /opt/nexus/ui/src/hooks/useHardwareInfo.ts
|
|
- FOUND: /opt/nexus/ui/src/components/onboarding/ModeSelector.tsx
|
|
- FOUND: /opt/nexus/ui/src/components/onboarding/HardwareSummaryStep.tsx
|
|
- FOUND: /opt/nexus/ui/src/components/NexusOnboardingWizard.tsx
|
|
|
|
Commits: f4423546, e1bdb9a8
|