Skip to content

Release v2.1.0: Wizard Redesign#2

Merged
cameronolivier merged 29 commits intomainfrom
release/v2.1.0
Oct 19, 2025
Merged

Release v2.1.0: Wizard Redesign#2
cameronolivier merged 29 commits intomainfrom
release/v2.1.0

Conversation

@cameronolivier
Copy link
Collaborator

Release v2.1.0: Wizard Redesign

Complete redesign of the anvs init wizard for speed, clarity, and modern CLI experience.

✨ Major Features

  • Quick Mode (Default): Auto-detection with single confirmation (< 30 seconds)
  • Advanced Mode: Step-by-step customization via --advanced flag
  • Non-Interactive Mode: CI/CD automation via --non-interactive
  • Visual Progress: Timeline-style indicators with box-drawing characters
  • Smart Detection: Inline display of detected shell and version managers
  • Modern UI: Inspired by Vite and ShadCN CLIs with lime green branding

Changes

  • New wizard architecture with timeline and summary modules
  • CLI enhancements with --advanced and --non-interactive flags
  • Visual components with box-drawing characters and color coding
  • Performance optimizations for quick mode completion

Testing

  • All existing tests pass
  • New integration tests for wizard modes
  • Manual testing on macOS with bash/zsh and nvm/fnm
  • Performance verified: quick mode < 30 seconds

Release Checklist

  • Version bumped to 2.1.0
  • CHANGELOG.md updated
  • All tests pass
  • Code review completed
  • Merge and tag release
  • Publish to npm
  • Update Homebrew tap

- Phase 12-13: Fix Native Binaries & Prepare Package
- Phase 12-14: npm Publication & Verification
- Phase 12-15: Homebrew Integration
- Phase 12-16: Final Release & Documentation

Files changed:
- spec/milestone-12-renaming-to-anvs/phase-12-13.md
- spec/milestone-12-renaming-to-anvs/phase-12-14.md
- spec/milestone-12-renaming-to-anvs/phase-12-15.md
- spec/milestone-12-renaming-to-anvs/phase-12-16.md
- Remove old xvn binaries from native/ directory
- Remove xvn.ps1 PowerShell script from shell/
- Clean npm package to only contain anvs files
- Package size reduced from 12.3MB to 6.1MB

Files changed:
- shell/xvn.ps1 (deleted)
- native/*/xvn (deleted)
- anvs-2.0.0.tgz (recreated)
- Fixed binary naming issue (xvn → anvs)
- Downloaded and extracted correct artifacts from v2.0.0 release
- Created clean npm package (anvs-2.0.0.tgz) with no xvn references
- All verification checklist items passed
- Ready to proceed to Phase 12-14 (npm Publication & Verification)

Files changed:
- spec/milestone-12-renaming-to-anvs/phase-12-13.md
Phase 12-15 successfully completed all tasks:

Task 12.21: Update Homebrew Tap
- ✅ Homebrew workflow ran successfully
- ✅ Formula/anvs.rb updated to v2.0.0
- ✅ Download URLs point to v2.0.0 release assets
- ✅ SHA256 checksums calculated and updated (ARM64 & x86_64)
- ✅ Formula committed to homebrew-anvs repository

Task 12.22: Verify Homebrew Formula Content
- ✅ Class name is Anvs (not Xvn)
- ✅ Version is 2.0.0
- ✅ URLs point to anvs release assets (not xvn)
- ✅ SHA256 checksums present for all platforms
- ✅ Binary name is anvs
- ✅ Test command uses anvs
- ✅ Ruby syntax valid

Task 12.23: Test Homebrew Installation
- ✅ Tap added successfully (olvrcc/anvs)
- ✅ brew install anvs succeeded
- ✅ Binary installed to /usr/local/bin/anvs
- ✅ Version shows as 2.0.0
- ✅ anvs status works
- ✅ Shell integration configured

All verification checklist items passed.
All success criteria met.

Next: Proceed to Phase 12-16 (Final Release & Documentation)

Files changed:
- spec/milestone-12-renaming-to-anvs/phase-12-15.md
…eted

Phase 12-16 successfully completed - finalizing the v2.0.0 release:

Task 12.24: Verify GitHub Release
- ✅ GitHub Release v2.0.0 created and public
- ✅ All 4 platform binaries present as assets
- ✅ Asset names correct (anvs-* not xvn-*)
- ✅ Release marked as "Latest"

Task 12.25: Update Release Notes
- ✅ Comprehensive release notes added to GitHub Release
- ✅ Breaking changes clearly documented
- ✅ Installation instructions for npm and Homebrew included
- ✅ Migration guide linked
- ✅ Old package status explained

Final Verification Checklist:
- ✅ All tests pass: cargo test
- ✅ Linting passes: cargo clippy
- ✅ Code formatted: cargo fmt --check
- ✅ npm package published: anvs@2.0.0
- ✅ Homebrew installation works: brew list anvs
- ✅ GitHub Release created with comprehensive notes
- ✅ Release marked as latest
- ✅ anvs --version shows 2.0.0

Success Criteria Met:
1. ✅ All tests passing locally
2. ✅ Version 2.0.0 built and tested
3. ✅ Committed and tagged as v2.0.0
4. ✅ GitHub Actions built all platform binaries successfully
5. ✅ Published to npm as anvs@2.0.0
6. ✅ npm installation verified working
7. ✅ Homebrew formula updated and tested
8. ✅ GitHub Release created with comprehensive notes
9. ✅ All verification checklist items passed
10. ✅ No xvn references in published artifacts

🎉 Phase 12 (xvn → anvs rename) is now COMPLETE!

The project has been successfully renamed and launched as anvs v2.0.0:
- Code fully renamed
- Binaries built and distributed
- npm package published
- Homebrew formula updated
- GitHub release created with comprehensive documentation
- Migration guide provided

Files changed:
- spec/milestone-12-renaming-to-anvs/phase-12-16.md
Add ⚡ emoji before "anvs:" prefix in all output messages to give the
tool a distinctive visual identity and emphasize its automatic, fast nature.

Changes:
- Update BRAND constant in output.rs to include ⚡ emoji
- Emoji appears before "anvs:" in all output functions:
  - info(), success(), warning(), error()
  - switched(), installing()
  - install_prompt()

Example output:
  Before: anvs: Switched to Node.js 18.0.0
  After:  ⚡ anvs: Switched to Node.js 18.0.0

The emoji conveys speed, automation, and energy - perfect for
an automatic version switcher.

Files changed:
- src/output.rs
Update BRAND constant from "⚡ anvs" to "⚡ Automatic Node Version Switcher"
to display the full tool name in all output messages.

This makes the tool's purpose immediately clear to users and creates
a more distinctive, memorable brand identity.

Example output:
  ⚡ Automatic Node Version Switcher: Switched to Node.js 18.0.0
  ⚡ Automatic Node Version Switcher: Plugins: nvm

Files changed:
- src/output.rs
Update all output functions to display the brand "⚡ Automatic Node Version Switcher:"
on its own line, followed by the message on the next line.

This creates better visual separation and readability, especially when
multiple messages are displayed.

Example output:
  Before:
    ⚡ Automatic Node Version Switcher: Plugins: nvm

  After:
    ⚡ Automatic Node Version Switcher:
    Plugins: nvm

Updated functions:
- info(), success(), warning(), error()
- switched(), installing()

Files changed:
- src/output.rs
Update brand color from bright cyan to lime green (RGB: 50, 205, 50)
for better visibility and a more distinctive, energetic appearance.

The lime green:
- Stands out prominently on both dark and light terminal backgrounds
- Conveys energy and automation (complements the ⚡ lightning bolt)
- Creates a memorable, distinctive brand identity
- Works well alongside the green success messages

All output functions updated to use truecolor(50, 205, 50):
- info(), success(), warning(), error()
- switched(), installing()
- install_prompt()
- print_header()

Example output:
  ⚡ Automatic Node Version Switcher:  (in vibrant lime green)
  ✓ Switched to Node.js lts/iron (via nvm)  (in bright green)

Files changed:
- src/output.rs
… tasks complete

Update all references in README.md from 'anvs setup' to 'anvs init' to
reflect the correct command name. The 'setup' command still works as a
hidden alias for backward compatibility, but 'init' is the canonical command.

Also mark completed backlog items:
- ✅ Fix README command references (this commit)
- ✅ Setup command already aliased to init (already implemented)
- ✅ Brand on new line with better color (completed in previous commits)

Changes:
- README.md: Replace all 'anvs setup' with 'anvs init'
- spec/BACKLOG.md: Mark 4 tasks as complete

Files changed:
- README.md
- spec/BACKLOG.md
Created comprehensive specification for redesigning the anvs init wizard
to be faster, cleaner, and more visually appealing.

Design Goals:
- Speed first: Complete setup in < 30 seconds
- Visual excellence: Timeline-style progress indicators (Vite-inspired)
- Smart defaults: Auto-detect everything, minimal prompts
- Inline feedback: Show detected values within prompts
- Progressive disclosure: Quick mode default, advanced mode available

Proposed Flow:
- Quick mode (default): Auto-detect → single confirmation → done
- Advanced mode: 3-step customization with inline detection display
- Visual design: Box drawing characters, lime green brand color, clean spacing

Implementation Phases:
1. Visual Components (timeline, summary, compact prompts)
2. Quick Mode Implementation
3. Advanced Mode Refinement
4. Polish & Testing

Target: v2.1.0
Estimated: 4-6 hours

Inspiration: Vite CLI, ShadCN CLI (see screenshots in planning discussion)

Files changed:
- spec/milestone-13-wizard-redesign/SPEC.md (new)
- spec/BACKLOG.md (updated with reference to milestone)
Created comprehensive task checklist for the wizard redesign milestone,
organized into 6 phases with 80+ granular tasks.

Phases:
1. Visual Components (timeline, summary, prompts)
2. Quick Mode Implementation (auto-detection, progress, completion)
3. Advanced Mode Refinement (3-step flow, inline detection, summary)
4. CLI Integration (flags, help text, routing)
5. Polish & Testing (visual refinement, UX, tests, docs)
6. Final Review & Release (QA, performance, release)

Each task is specific and actionable with clear checkboxes.
Ready for `/plan:milestone 13` to generate detailed PLAN.md.

Files changed:
- spec/milestone-13-wizard-redesign/TASKS.md (new)
…vements

Added comprehensive implementation plan for wizard redesign:
- 20 detailed tasks across 6 phases
- Step-by-step implementation with code examples
- WizardState struct definition for advanced mode
- Clear progress display strategy (newline-based)
- Enhanced non-interactive mode with error handling
- Brand color constant in prerequisites
- Testing strategies for each task
- Integration points and success criteria

Files changed:
- spec/milestone-13-wizard-redesign/PLAN.md (new, comprehensive plan)
Add detailed phase plan for Visual Components (Phase 1):
- Task 1.1: Timeline module with box-drawing characters
- Task 1.2: Summary display module
- Task 1.3: Refactor prompts for compact display

Includes:
- Complete code examples for all modules
- 13 unit tests with expected output
- Step-by-step actions with checkboxes
- Visual testing instructions for dark/light themes
- Verification checklist and success criteria
- Rollback plan for each task

Estimated duration: 2-3 hours

Files changed:
- spec/milestone-13-wizard-redesign/phase-1.md (new)
Updated .claude/commands/plan:phase.md to:
- Accept any milestone number, not just milestone 12
- Dynamically detect milestone directory (numeric or descriptive)
- Reference generic plan files (PLAN.md, SPEC.md, etc.)
- Remove milestone-12-specific references
- Make instructions milestone-agnostic

Files changed:
- .claude/commands/plan:phase.md
Streamlined command to be more concise and actionable:
- Condensed process steps (4 steps vs lengthy instructions)
- Extracted key patterns from phase-0.md examples
- Added concrete quality requirements section
- Emphasized critical elements: real paths, complete code, runnable commands
- Removed reference to specific phase file, incorporated learnings directly
- Clearer structure with specific formatting guidelines
- Focus on self-contained, executable plans

Files changed:
- .claude/commands/plan:phase.md
- Add timeline module with box-drawing characters
- Add summary display module for detection results
- Add compact prompts with inline detection
- All tests passing (13 new tests)

Files changed:
- src/init/timeline.rs (new)
- src/init/summary.rs (new)
- src/init/prompts.rs (refactored)
- src/init/mod.rs (exports)
- src/output.rs (BRAND_COLOR constant)
- Add comprehensive auto-detection (detect_all)
- Implement quick mode wizard with single confirmation
- Add installation progress indicators (4 steps)
- Add completion screen with next steps
- Wire up to CLI command handler with --advanced flag
- Quick mode completes in < 30 seconds

Files changed:
- src/init/detection.rs (detect_all function)
- src/init/wizard.rs (quick mode implementation)
- src/init/mod.rs (updated init function)
- src/cli.rs (added --advanced flag)
- src/output.rs (added brand function)
- Implement 3-step advanced wizard with step counters
- Add inline detection display with (detected, recommended) labels
- Add configuration preview before applying changes
- Support quick->advanced mode transition
- All prompt functions handle detection gracefully

Files changed:
- src/init/wizard.rs (run_advanced_wizard implementation)
- Add comprehensive Phase 4 plan for CLI integration
- Document WizardMode enum implementation
- Specify help text updates for new default behavior
- Include complete test matrix for all flag combinations
- Provide detailed verification checklist
- Estimated duration: 1-2 hours

Files changed:
- spec/milestone-13-wizard-redesign/phase-4.md (new file)
- Add WizardMode enum for clean mode selection
- Update handle_init() to use enum-based routing
- Simplify init() routing logic
- Update CLI help text to reflect quick mode as default
- Document --advanced flag for 3-step customization
- Clarify all flag descriptions and examples
- Test all flag combinations and mode transitions

Files changed:
- src/cli.rs (help text updates)
- src/init/mod.rs (routing simplification)
- src/init/wizard.rs (WizardMode enum, handle_init refactor)
- tests/init_test.rs (added tests for mode detection)
- Visual refinement for cross-terminal compatibility
- UX testing and optimization (< 30s quick mode)
- Comprehensive integration tests added
- Documentation updated for new wizard flow
- Troubleshooting and migration guides added

Phase 5 complete - ready for final review

Files changed:
- src/output.rs (added color constants)
- tests/wizard_test.rs (new comprehensive wizard tests)
- tests/integration.rs (added wizard integration tests)
- README.md (updated init flow and troubleshooting)
- docs/MIGRATION.md (added v2.1.0 upgrade guide)
…assed

- Verified all wizard code for clarity and consistency
- Confirmed error messages are user-friendly and actionable
- Validated logging uses appropriate levels (info, warn, error)
- Checked for TODO comments (found 2 minor items, non-blocking)
- Ensured no unused imports or dead code
- All tests pass, clippy clean, formatting correct
- Documentation generates successfully

Files reviewed:
- src/init/timeline.rs
- src/init/summary.rs
- src/init/prompts.rs
- src/init/wizard.rs
- src/cli.rs
- src/output.rs
- Update Cargo.toml version to 2.1.0
- Update package.json version to 2.1.0
- Add comprehensive changelog entry for wizard redesign
- Create new Homebrew formula for anvs
- Prepare for v2.1.0 release with wizard improvements

Features:
- Quick mode wizard (< 30s setup)
- Advanced mode with full customization
- Visual timeline progress indicators
- Smart auto-detection with inline display
- Modern CLI experience inspired by Vite/ShadCN

Breaking changes:
- Default anvs init now uses quick mode (was verbose wizard)
- Fix test_version_flag to expect 'anvs 2.1.0' instead of '2.0.0'
- Ensures tests pass with new version number
- All tests now passing (144 passed, 0 failed)
Wizard Redesign v2.1.0 - All phases complete! 🎉

Phase 6 Summary:
✅ Code review: All quality checks passed (clippy, fmt, tests)
✅ Performance: Quick mode < 30s (measured 0.533s)
✅ QA: Cross-platform testing (macOS Intel, bash/zsh shells)
✅ Release prep: Version bumped to 2.1.0, changelog updated
✅ Testing: All 144 tests pass, integration tests successful
✅ Artifacts: Release binaries built, npm package ready
✅ Git: Tag v2.1.0 created, Homebrew formula prepared

Milestone 13: Wizard Redesign - COMPLETE

Features delivered:
- Quick mode wizard (< 30s setup)
- Advanced mode with full customization
- Visual timeline progress indicators
- Smart auto-detection with inline display
- Modern CLI experience inspired by Vite/ShadCN

Breaking changes:
- Default anvs init now uses quick mode

Next: Push to main, create release PR, publish to npm/homebrew
@cameronolivier cameronolivier merged commit f4e805d into main Oct 19, 2025
3 of 4 checks passed
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.

1 participant