Skip to content

feat: interactive onboarding wizard for first-time setup#192

Merged
nextlevelshit merged 7 commits intomainfrom
163-onboarding-wizard
Feb 28, 2026
Merged

feat: interactive onboarding wizard for first-time setup#192
nextlevelshit merged 7 commits intomainfrom
163-onboarding-wizard

Conversation

@nextlevelshit
Copy link
Collaborator

Summary

  • Implements an interactive onboarding wizard that guides users through first-time setup of Wave
  • Covers 5 onboarding steps: dependency verification, test command configuration, pipeline selection, adapter configuration, and model selection
  • Gates pipeline execution on onboarding completion — users must complete setup before running pipelines
  • Persists onboarding state to avoid re-running the wizard on subsequent invocations
  • Supports wave init --reconfigure to re-run the wizard when configuration changes are needed

Closes #163

Changes

  • cmd/wave/commands/init.go — Extended the init command with the interactive onboarding wizard flow, replacing the previous heuristic-only approach
  • cmd/wave/commands/do.go / cmd/wave/commands/run.go — Added onboarding completion gate checks before pipeline execution
  • cmd/wave/commands/helpers.go — Added shared helper for onboarding state checks
  • internal/onboarding/onboarding.go — Core wizard orchestrator that drives the step-by-step onboarding flow
  • internal/onboarding/steps.go — Implementation of all 5 onboarding steps with heuristic defaults and interactive confirmation
  • internal/onboarding/state.go — Onboarding state persistence (load/save/check completion)
  • internal/onboarding/onboarding_test.go / state_test.go / steps_test.go — Comprehensive test coverage for the onboarding package
  • internal/pipeline/types.go — Added Release field to pipeline metadata for experimental classification
  • internal/tui/pipelines.go — Added display support for experimental pipeline markers
  • specs/163-onboarding-wizard/ — Specification, plan, and task artifacts

Test Plan

  • Unit tests added for all onboarding package components (onboarding_test.go, state_test.go, steps_test.go)
  • Tests cover state persistence, step execution, wizard flow orchestration, and edge cases
  • Manual verification: wave init triggers interactive wizard, wave do/wave run blocked without completed onboarding

Specification covering accurate per-step token counts, total tokens
in run list, real-time SSE updates, and TUI/WebUI consistency.
- Add formatTokens template function and JS equivalent with k/M/B
  thresholds mirroring FormatTokenCount in Go
- Show total tokens in run list rows and run detail summary header
- Display per-step token counts for running/completed/failed steps
- Update SSE handler to push real-time token count updates to step cards
- Extend FormatTokenCount to handle M and B thresholds with tests
- Always show token count in CLI pipeline completion summary

Closes #98
…etup

Add an interactive onboarding wizard to `wave init` that guides users
through 5 setup steps: dependency verification, test command
configuration, pipeline selection, adapter configuration, and model
selection. Pipeline execution is gated on onboarding completion.

New package `internal/onboarding` with:
- State persistence via .wave/.onboarded JSON marker file
- WizardStep interface with 5 implementations (DependencyStep,
  TestConfigStep, PipelineSelectionStep, AdapterConfigStep,
  ModelSelectionStep)
- RunWizard orchestrator supporting interactive and non-interactive modes
- Reconfigure mode (--reconfigure) that pre-fills from existing manifest

Command integration:
- `wave run` and `wave do` gated on onboarding completion
- Existing projects grandfathered (wave.yaml present = skip gate)
- `--force` flag bypasses the onboarding gate on `wave run`
- `--yes` flag runs wizard non-interactively with defaults
- Pipeline metadata Category field for grouped selection

Comprehensive test coverage: 24 unit tests for onboarding package,
all existing tests continue to pass with race detector.
… in manifest

buildManifest() was missing the personas section entirely, causing
executor to fail finding personas. Model was also written at the
adapter level instead of persona level where the executor reads it.

Rewrite buildManifest() to iterate PersonaConfigs and emit a proper
personas block with model at the persona level. Add PersonaConfigs
field to WizardConfig struct.
Pass PersonaConfigs from init assets into WizardConfig in both
runWizardInit() and runReconfigure(). Add removeDeselectedPipelines()
to prune .wave/pipelines/ files the user deselected in the wizard.
…model

Add ollama to knownAdapters with llama3.1, codellama, deepseek-coder
models. Add "Other (type manually)" option for both adapter and model
selection. Unknown adapters now prompt for free-text model name instead
of skipping the step entirely.
Add ollama install instructions to quickstart. Replace incorrect
model-at-adapter-level example with persona-level model config.
Add model field to persona fields table in manifest reference.
@nextlevelshit nextlevelshit merged commit d53e9d9 into main Feb 28, 2026
6 checks passed
@nextlevelshit nextlevelshit deleted the 163-onboarding-wizard branch February 28, 2026 23:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: interactive onboarding wizard for first-time setup

1 participant