jason.woltje
Sun, 05 Apr 2026 20:53:26 +0000

@mosaicstack/mosaic 0.0.25 — install UX hardening

Closes the install-ux-hardening-20260405 mission. All 7 acceptance criteria satisfied across three feature PRs.

New features

mosaic uninstall (PR #429)

Top-level command that cleanly reverses every mutation made by tools/install.sh — framework data, npm CLI, nested stack deps, runtime asset injections in ~/.claude/, and npmrc scope mapping

Flags: --framework, --cli, --gateway, --all, --keep-data, --yes, --dry-run

New install manifest at ~/.config/mosaic/.install-manifest.json drives deterministic reversal; heuristic fallback for installs that predate the manifest

Shell fallback: curl … | bash -s -- --uninstall works without a functioning CLI

Wizard remediation (PR #431)

Password entry is now masked in raw mode with a confirmation prompt (no plaintext echo)

New hooks-preview stage shows exactly which Claude hooks will be installed and captures explicit consent

New mosaic config hooks list|enable|disable subcommands for post-install management

Headless install path: MOSAIC_ASSUME_YES=1 + MOSAIC_ADMIN_NAME/EMAIL/PASSWORD lets CI/automation complete the wizard without a TTY

Unified first-run wizard (PR #433)

mosaic wizard and mosaic gateway install are collapsed into a single cohesive flow with shared in-memory state

Gateway config + admin bootstrap are now terminal stages 11 & 12 of runWizard

The fragile 10-minute $XDG_RUNTIME_DIR/mosaic-install-state.json session bridge has been removed

mosaic gateway install still works standalone (thin wrapper over the same stages) for users who already went through the wizard

state.hooks.accepted === false now propagates end-to-end via MOSAIC_SKIP_CLAUDE_HOOKS — declining hooks actually skips hook installation

Stats

24 test files, 219 tests passing (+15 net new since 0.0.24)

4 rounds of independent codex code review applied across the milestones

Upgrade

npm i -g @mosaicstack/mosaic@0.0.25

Alpha — stays in 0.0.x until GA.