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
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
## @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
```bash
npm i -g @mosaicstack/[email protected]
```
Alpha — stays in 0.0.x until GA.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
@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)tools/install.sh— framework data, npm CLI, nested stack deps, runtime asset injections in~/.claude/, and npmrc scope mapping--framework,--cli,--gateway,--all,--keep-data,--yes,--dry-run~/.config/mosaic/.install-manifest.jsondrives deterministic reversal; heuristic fallback for installs that predate the manifestcurl … | bash -s -- --uninstallworks without a functioning CLIWizard remediation (PR #431)
mosaic config hooks list|enable|disablesubcommands for post-install managementMOSAIC_ASSUME_YES=1+MOSAIC_ADMIN_NAME/EMAIL/PASSWORDlets CI/automation complete the wizard without a TTYUnified first-run wizard (PR #433)
mosaic wizardandmosaic gateway installare collapsed into a single cohesive flow with shared in-memory staterunWizard$XDG_RUNTIME_DIR/mosaic-install-state.jsonsession bridge has been removedmosaic gateway installstill works standalone (thin wrapper over the same stages) for users who already went through the wizardstate.hooks.accepted === falsenow propagates end-to-end viaMOSAIC_SKIP_CLAUDE_HOOKS— declining hooks actually skips hook installationStats
Upgrade
Alpha — stays in 0.0.x until GA.