Compare commits

..

2 Commits

Author SHA1 Message Date
Jarvis
8a00b8d3ea fix: add vitest.config.ts to eslint allowDefaultProject, revert tsconfig include
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
vitest.config.ts is not under apps/gateway/src (rootDir), so including
it in tsconfig.json broke the build. Instead, add it to the
eslint allowDefaultProject list so the typescript-eslint parser can
lint it without being covered by the project tsconfig.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-05 16:56:03 -05:00
Jarvis
56dde4126b fix: bootstrap DTO class erasure + wizard failure + port prefill + Pi SDK copy (IUV-M01, #436)
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
- Bug 1 [CRITICAL]: drop `import type` on BootstrapSetupDto in bootstrap.controller.ts
  so NestJS preserves the class reference for design:paramtypes; ValidationPipe now
  correctly validates the DTO instead of 400ing on every field.
  Add e2e integration test (bootstrap.e2e.spec.ts) via @nestjs/testing + supertest
  that exercises the real DI/Fastify binding path to guard against regressions.
  Configure vitest to use unplugin-swc with decoratorMetadata:true.

- Bug 2: remove `&& headlessRun` guard in wizard.ts so bootstrap failure (completed:false)
  aborts with process.exit(1) in both interactive and headless modes — no more
  silent '✔ Wizard complete' after a 400.

- Bug 3: add `initialValue` to WizardPrompter.text() interface, ClackPrompter, and
  HeadlessPrompter; use it in gateway-config.ts promptPort() so 14242 prefills the
  input buffer and users can press Enter to accept. Apply same pattern to other
  gateway config prompts (databaseUrl, valkeyUrl, corsOrigin).

- Bug 4: add Pi SDK to the 'What is Mosaic?' intro copy in welcome.ts.

- Bump @mosaicstack/mosaic 0.0.25 → 0.0.26.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-05 16:38:37 -05:00

View File

@@ -8,10 +8,10 @@
**ID:** install-ux-v2-20260405
**Statement:** The install-ux-hardening mission shipped the plumbing (uninstall, masked password, hooks consent, unified flow, headless path), but the first real end-to-end run surfaced a critical regression and a collection of UX failings that make the wizard feel neither quick nor intelligent. This mission closes the bootstrap regression as a hotfix, then rethinks the first-run experience around a provider-first, intent-driven flow with a drill-down main menu and a genuinely fast quick-start.
**Phase:** Planning
**Current Milestone:** IUV-M02
**Progress:** 1 / 3 milestones
**Current Milestone:** IUV-M01
**Progress:** 0 / 3 milestones
**Status:** active
**Last Updated:** 2026-04-05 (IUV-M01 complete — mosaic-v0.0.26 released)
**Last Updated:** 2026-04-05
**Parent Mission:** [install-ux-hardening-20260405](./archive/missions/install-ux-hardening-20260405/MISSION-MANIFEST.md) (complete — `mosaic-v0.0.25`)
## Context
@@ -30,11 +30,11 @@ Real-run testing of `@mosaicstack/mosaic@0.0.25` uncovered:
## Success Criteria
- [x] AC-1: Admin bootstrap completes successfully end-to-end on a fresh install (DTO value import, no forbidNonWhitelisted regression); covered by an integration or e2e test that exercises the real DTO binding. _(PR #440)_
- [x] AC-2: Wizard fails loudly (non-zero exit, clear error) when the bootstrap stage returns `completed: false`, in both interactive and headless modes. No more silent `✔ Wizard complete` after a 400. _(PR #440)_
- [x] AC-3: Gateway port prompt prefills `14242` in the input field (user can press Enter to accept). _(PR #440)_
- [x] AC-4: `"What is Mosaic?"` intro copy mentions Pi SDK as the underlying agent runtime. _(PR #440)_
- [x] AC-5: Release `mosaic-v0.0.26` tagged and published to the Gitea npm registry, unblocking the 0.0.25 happy path. _(tag: mosaic-v0.0.26, registry: 0.0.26 live)_
- [ ] AC-1: Admin bootstrap completes successfully end-to-end on a fresh install (DTO value import, no forbidNonWhitelisted regression); covered by an integration or e2e test that exercises the real DTO binding.
- [ ] AC-2: Wizard fails loudly (non-zero exit, clear error) when the bootstrap stage returns `completed: false`, in both interactive and headless modes. No more silent `✔ Wizard complete` after a 400.
- [ ] AC-3: Gateway port prompt prefills `14242` in the input field (user can press Enter to accept).
- [ ] AC-4: `"What is Mosaic?"` intro copy mentions Pi SDK as the underlying agent runtime.
- [ ] AC-5: Release `mosaic-v0.0.26` tagged and published to the Gitea npm registry, unblocking the 0.0.25 happy path.
- [ ] AC-6: CORS origin prompt replaced with FQDN/hostname input; CORS string is derived from that.
- [ ] AC-7: Skill / additional feature install section is reworked until it is actually usable end-to-end (worker defines the concrete failure modes during diagnosis).
- [ ] AC-8: First-run flow has a drill-down main menu with at least `Plugins` (Recommended / Custom), `Providers`, and the other top-level configuration groups. Linear interrogation is gone.
@@ -44,11 +44,11 @@ Real-run testing of `@mosaicstack/mosaic@0.0.25` uncovered:
## Milestones
| # | ID | Name | Status | Branch | Issue | Started | Completed |
| --- | ------- | ------------------------------------------------------------ | ----------- | ---------------------- | ----- | ---------- | ---------- |
| 1 | IUV-M01 | Hotfix: bootstrap DTO + wizard failure + port prefill + copy | complete | fix/bootstrap-hotfix | #436 | 2026-04-05 | 2026-04-05 |
| 2 | IUV-M02 | UX polish: CORS/FQDN, skill installer rework | not-started | feat/install-ux-polish | #437 | — | — |
| 3 | IUV-M03 | Provider-first intelligent flow + drill-down main menu | not-started | feat/install-ux-intent | #438 | — | — |
| # | ID | Name | Status | Branch | Issue | Started | Completed |
| --- | ------- | ------------------------------------------------------------ | ----------- | ---------------------- | ----- | ---------- | --------- |
| 1 | IUV-M01 | Hotfix: bootstrap DTO + wizard failure + port prefill + copy | in-progress | fix/bootstrap-hotfix | #436 | 2026-04-05 | |
| 2 | IUV-M02 | UX polish: CORS/FQDN, skill installer rework | not-started | feat/install-ux-polish | #437 | — | — |
| 3 | IUV-M03 | Provider-first intelligent flow + drill-down main menu | not-started | feat/install-ux-intent | #438 | — | — |
## Subagent Delegation Plan