Parent mission install-ux-hardening-20260405 shipped at mosaic-v0.0.25 but a real-run test uncovered a critical bootstrap regression plus a cluster of first-run UX failings. New mission install-ux-v2-20260405 closes the regression as a hotfix (M01 → mosaic-v0.0.26), polishes CORS/skill installer UX (M02), then rethinks the flow around a drill-down main menu with a provider-first intent intake and real quick-start (M03 → mosaic-v0.0.27). Linked issues: #436 (M01), #437 (M02), #438 (M03) Archives install-ux-hardening-20260405 under docs/archive/missions/ Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
7.6 KiB
7.6 KiB
Tasks — Install UX v2
Single-writer: orchestrator only. Workers read but never modify.
Mission: install-ux-v2-20260405 Schema:
| id | status | description | issue | agent | branch | depends_on | estimate | notes |Status values:not-started|in-progress|done|blocked|failed|needs-qaAgent values:codex|sonnet|haiku|opus|—(auto)
Milestone 1 — Hotfix: bootstrap DTO + wizard failure + port prefill + copy (IUV-M01)
| id | status | description | issue | agent | branch | depends_on | estimate | notes |
|---|---|---|---|---|---|---|---|---|
| IUV-01-01 | not-started | Fix apps/gateway/src/admin/bootstrap.controller.ts:16 — switch import type { BootstrapSetupDto } to a value import so Nest's @Body() binds the real class |
#436 | sonnet | fix/bootstrap-hotfix | — | 3K | one-character fix; repro is real-run mosaic wizard against 0.0.25 |
| IUV-01-02 | not-started | Add integration / e2e test that POSTs /api/bootstrap/setup with {name,email,password} against a real Nest app instance and asserts 201 — NOT a mocked controller unit test |
#436 | sonnet | fix/bootstrap-hotfix | IUV-01-01 | 10K | must fail before the fix and pass after; guards against the class-erasure regression recurring |
| IUV-01-03 | not-started | packages/mosaic/src/wizard.ts:147 — propagate !bootstrapResult.completed as a wizard failure in interactive mode too (not only headless); non-zero exit + no ✔ Wizard complete line |
#436 | sonnet | fix/bootstrap-hotfix | IUV-01-02 | 5K | |
| IUV-01-04 | not-started | Gateway port prompt prefills 14242 in the input buffer — investigate why promptPort's defaultValue isn't reaching the user-visible input |
#436 | sonnet | fix/bootstrap-hotfix | IUV-01-03 | 5K | likely WizardPrompter adapter or @clack/prompts initialValue vs defaultValue mismatch |
| IUV-01-05 | not-started | "What is Mosaic?" intro copy updated to mention Pi SDK as the underlying agent runtime (alongside Claude Code / Codex / OpenCode) |
#436 | sonnet | fix/bootstrap-hotfix | IUV-01-04 | 2K | |
| IUV-01-06 | not-started | Tests + code review + PR merge + tag mosaic-v0.0.26 + Gitea release + npm registry republish |
#436 | sonnet | fix/bootstrap-hotfix | IUV-01-05 | 10K | bump packages/mosaic/package.json to 0.0.25 → 0.0.26 |
Milestone 2 — UX polish: CORS/FQDN, skill installer rework (IUV-M02)
| id | status | description | issue | agent | branch | depends_on | estimate | notes |
|---|---|---|---|---|---|---|---|---|
| IUV-02-01 | not-started | Replace CORS origin prompt with FQDN / hostname input; derive the CORS value internally; default to localhost with clear help text |
#437 | sonnet | feat/install-ux-polish | IUV-01-06 | 10K | |
| IUV-02-02 | not-started | Diagnose and document the concrete failure modes of the current skill / additional feature install section end-to-end | #437 | sonnet | feat/install-ux-polish | IUV-02-01 | 8K | needs real-run reproduction |
| IUV-02-03 | not-started | Rework the skill installer so it is usable end-to-end (selection, install, verify, failure reporting) | #437 | sonnet | feat/install-ux-polish | IUV-02-02 | 20K | |
| IUV-02-04 | not-started | Tests + code review + PR merge | #437 | sonnet | feat/install-ux-polish | IUV-02-03 | 10K |
Milestone 3 — Provider-first intelligent flow + drill-down main menu (IUV-M03)
| id | status | description | issue | agent | branch | depends_on | estimate | notes |
|---|---|---|---|---|---|---|---|---|
| IUV-03-01 | not-started | Design doc: new first-run state machine — main menu (Plugins / Providers / …), Quick Start vs Custom paths, provider-first flow, intent intake + naming loop | #438 | opus | feat/install-ux-intent | IUV-02-04 | 15K | scratchpad + explicit non-goals |
| IUV-03-02 | not-started | Implement drill-down main menu (Plugins: Recommended / Custom, Providers, …) as the top-level entry point of mosaic wizard |
#438 | opus | feat/install-ux-intent | IUV-03-01 | 25K | |
| IUV-03-03 | not-started | Quick Start path: curated minimum question set — define the exact baseline, delete everything else from the fast path | #438 | opus | feat/install-ux-intent | IUV-03-02 | 15K | |
| IUV-03-04 | not-started | Provider-first natural-language intake: user describes intent → agent expounds → agent proposes a name (confirmable / overridable) — OpenClaw-style | #438 | opus | feat/install-ux-intent | IUV-03-03 | 25K | offline fallback required (deterministic default name + path) |
| IUV-03-05 | not-started | Preserve backward-compat: headless path (MOSAIC_ASSUME_YES=1 + env vars) still works end-to-end; tools/install.sh --yes unchanged |
#438 | opus | feat/install-ux-intent | IUV-03-04 | 10K | |
| IUV-03-06 | not-started | Tests + code review + PR merge + mosaic-v0.0.27 release |
#438 | opus | feat/install-ux-intent | IUV-03-05 | 15K |