Redesign wizard UI with gum (charmbracelet)

- Bootstrap gum automatically on first run (Arch/Debian/RHEL/Fedora/SUSE)
- utils.sh: replace all bash color helpers with gum equivalents
  - gum input for text prompts (with value pre-fill for defaults)
  - gum choose for selection menus
  - gum confirm for yes/no
  - gum spin for long-running operations
  - gum style/log for output (catppuccin mocha palette)
  - gum style for banners and summary box
- core.sh: spinner on git clone/pull
- workflow.sh: spinner on git clone
- prereqs.sh: spinner on package installs
- wizard.sh: double-border welcome banner, rounded summary box,
  success banner with next-steps panel

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Eli 2026-03-09 13:02:42 +01:00
commit 699087f08c
6 changed files with 267 additions and 243 deletions

View file

@ -7,74 +7,24 @@ create_project_structure() {
local project_dir="$1"
local project_name="$2"
info "Creating project structure at $project_dir..."
mkdir -p "$project_dir/src"
mkdir -p "$project_dir/.devcontainer"
# .gitignore
cat > "$project_dir/.gitignore" <<'EOF'
# Dependencies
cat > "$project_dir/.gitignore" <<'GITIGNORE'
node_modules/
.pnp/
.pnp.js
# Build outputs
dist/
build/
*.AppImage
*.dmg
*.exe
# Environment
.env
.env.local
.env.*.local
# Runtime data
workflow/data/registry.db
workflow/users/*/session-history/
# Logs
*.log
npm-debug.log*
# OS
.DS_Store
Thumbs.db
EOF
# README
cat > "$project_dir/README.md" <<EOF
# $project_name
## Quick Start
### First time setup
\`\`\`bash
# Open in devcontainer (VS Code)
code .
# → Reopen in Container
# Or via CLI
docker build -t $( slugify "$project_name" ) .devcontainer/
docker run -it --rm \\
-v "\$(pwd)":/workspace \\
-v "\$HOME/.context-studio/core":/opt/context-studio/core \\
-e ANTHROPIC_API_KEY="\$ANTHROPIC_API_KEY" \\
$( slugify "$project_name" ) bash
\`\`\`
### Start Context Studio
\`\`\`bash
CS_WORKFLOW_DIR=/workspace/workflow node /opt/context-studio/core/core/start.js
\`\`\`
### Start headless (no Electron UI)
\`\`\`bash
CS_WORKFLOW_DIR=/workspace/workflow node /opt/context-studio/core/core/start.js --ui-mode=headless
\`\`\`
EOF
GITIGNORE
success "Project structure created"
}
@ -85,17 +35,11 @@ create_devcontainer() {
local slug
slug="$(slugify "$project_name")"
info "Generating devcontainer config..."
# Dockerfile
sed "s/{{PROJECT_SLUG}}/$slug/g" \
"$WIZARD_DIR/templates/Dockerfile" \
> "$project_dir/.devcontainer/Dockerfile"
# devcontainer.json
sed "s/{{PROJECT_NAME}}/$project_name/g; s/{{PROJECT_SLUG}}/$slug/g" \
"$WIZARD_DIR/templates/devcontainer.json" \
> "$project_dir/.devcontainer/devcontainer.json"
success "Devcontainer config written to $project_dir/.devcontainer/"
cp "$WIZARD_DIR/templates/Dockerfile" "$project_dir/.devcontainer/Dockerfile"
success "Devcontainer config written"
}