All notable changes to the A.R.C. CLI project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- UI engine with TUI and JSON modes (
engine.Render) - 15+ views: Dashboard, Services, Workspace, Theme, Profile, Version
ARC_USE_LEGACY_UI=1environment variable for legacy rollback- Border rendering bug fixes (
lipgloss.Widthreplaceslenin panel/border calculations) - Component library: Badge, Breadcrumb, Progress, SplitPane, StatusBar, SearchBar
engine.ViewContextfor passing profile/theme/dimensions to viewsengine.JSONExporterinterface for--jsonoutput modeengine.RenderModeFromFlagshelper for consistent flag-to-mode mapping
This release introduces a comprehensive profile system that allows users to customize tier naming throughout the A.R.C. CLI with themed profiles.
-
10 Themed Profiles: Built-in profiles with custom ASCII logos and tier names
enterprise- Professional corporate naming (Starter → Pro → Ultra)saiyan- Dragon Ball Z transformations (Super Saiyan → Super Saiyan Blue → Ultra Instinct)shinobi- Naruto ninja ranks (Genin → Jonin → Hokage)pirate- One Piece pirate ranks (Rookie → Supernova → Yonko)pokemon- Pokemon evolution stages (Basic → Stage 1 → Stage 2)triforce- Legend of Zelda virtues (Courage → Wisdom → Power)crystal- Final Fantasy job classes (Warrior → Knight → Paladin)jedi- Star Wars Force ranks (Padawan → Knight → Master)bending- Avatar mastery levels (Bender → Avatar → Cosmic)horcrux- Harry Potter wizard ranks (Student → Auror → Headmaster)
-
Config Commands: Profile management through CLI
arc config list-profiles- List all available profiles with tier namesarc config set-profile <id>- Set active profile (persists to state)arc config get-profile- Show current profile with details
-
Custom Profile Support: Users can create custom profiles
- User profiles in
~/.config/arc/profiles/*.yaml - Override embedded profiles with same ID
- Full schema validation (required: id, name, description, tier_names, theme_id, logo)
- Custom tier names (must have exactly 3)
- Custom ASCII logos (must spell "A.R.C.")
- Optional custom colors (primary_color, secondary_color)
- User profiles in
-
Profile Resolution System: Intelligent profile loading
- User-defined profiles take priority over embedded profiles
- Embedded profiles loaded from binary (10 profiles included)
- Validation on load with descriptive error messages
- Fallback to default profile on validation failure
-
Theme Integration: Each profile maps to a color theme
cyan-purple- Professional blues and purplesfire- Bold oranges and redsgruvbox- Earthy browns and orangesocean- Deep blues and tealsrainbow- Bright multi-color palettesolarized- Balanced warm/cool tonesmonokai- Rich purples and pinksnord- Cool blues and graysdracula- Dark purples and reds
-
State Persistence: Profile selection persists across sessions
- Stored in
~/.arc/state.json - Survives terminal sessions and system reboots
- Applied globally to all
arccommands
- Stored in
-
Comprehensive Integration Tests: E2E tests in
tests/integration/profiles/- Profile lifecycle testing (list → set → get → verify)
- User-defined profile loading and validation
- Tier name verification across all profiles
- Theme mapping validation
- Profile validation (required fields, tier count, logo presence)
- State persistence across sessions
- Profile switching preserves other state values
-
Validation System: Robust profile validation
- Required fields enforcement
- Exactly 3 tier names validation
- Valid theme ID verification
- Non-empty logo validation
- Hex color format validation (optional fields)
- User-friendly error messages
-
User Guide: Complete profile documentation (
docs/user-guides/profiles.md)- What profiles are and how they work
- All 10 profiles with tier names and descriptions
- Command reference (list, set, get)
- Creating custom profiles with schema reference
- Logo guidelines and font recommendations
- Theme mapping table
- Troubleshooting guide
- Integration examples
-
README Updates: Profile system section added
- Quick reference table of all profiles
- Command examples
- Custom profile creation example
- Link to full documentation
-
New Packages:
pkg/ui/profiles/- Profile system implementationprofile.go- Profile data structureloader.go- YAML file loadingresolver.go- Profile resolution (user + embedded)validator.go- Profile validationembedded/- 10 embedded profile YAML files
pkg/cli/config/- Config command groupconfig.go- Command group setupprofile.go- Profile subcommands (list, set, get)
-
State Integration: Profile storage in preferences
internal/preferences/preferences.go- Profile get/set methods- Profile persisted in state.json
- Default profile: "enterprise"
-
Visual Feedback: Rich output for profile commands
- Colored profile listings with tier name preview
- Active profile marker (▶) in list view
- Detailed profile information in get-profile
- Success/error messages for set-profile
-
Workspace Integration: Profiles affect workspace tier naming
- Workspace operations use active profile tier names
- Seamless integration with workspace commands
- Consistent naming across all CLI output
This release brings smooth, delightful animations to the A.R.C. CLI while maintaining excellent performance and automatic degradation for non-interactive environments.
-
Smart Animation Control: Animations automatically disabled in CI/CD, pipes, and non-TTY environments
--no-animationflag for per-command controlARC_NO_ANIMATIONenvironment variable for persistent settings- Respects
NO_COLORstandard - Intelligent TTY and terminal width detection
- Configurable via
~/.arc/config/animation.yaml
-
Spring Physics Animations: Smooth, natural motion using Harmonica library
- 60 FPS banner color transitions
- Configurable damping and stiffness parameters
- Adaptive frame rates for terminal performance
- Zero CPU overhead when disabled
-
Animated Banner: Smooth color transitions on CLI launch
- Spring-based color interpolation
- Theme-aware gradient animations
- Character-by-character rainbow mode
- Instant fallback to static rendering
-
Spinner Indicators: Visual feedback for operations
- Bubble Tea integration for smooth animations
- Multiple spinner styles (dot, line, dots, etc.)
- Automatic display for operations >200ms
- Used in
arc infocommand
-
Theme Transitions: Smooth animated theme switching
- Color interpolation between themes
- Looping preview animations
- Waterfall effects for theme lists
- Enhanced
arc theme previewandarc theme setcommands
-
Animation API: Easy-to-use animation utilities
animations.ShouldAnimate()- Centralized animation decision logicanimations.WithSpinner()- Wrap operations with spinnersanimations.WithProgress()- Progress bar wrapper (ready for future use)animations.InterpolateColor()- Smooth color transitionsanimations.AnimateTransition()- Theme transition helper
-
Configuration System: Flexible animation settings
LoadConfig()with fallback to embedded defaults- Per-animation-type settings (banner, spinner, progress, theme)
- FPS, duration, and spring physics tuning
- Validation with sensible limits
-
User Guide: Complete animation documentation (
docs/ANIMATIONS.md)- How to control and disable animations
- Configuration options and examples
- Troubleshooting guide
- Performance characteristics
-
API Reference: Developer documentation (
docs/api/ANIMATIONS_API.md)- Complete API reference with examples
- Integration patterns with Bubble Tea
- Best practices and performance tips
- Testing strategies
-
arc info: Now with animated spinner during data collection- Non-animated fallback when TTY unavailable
- Removed debugging delay for instant response
- JSON output option for scripting
-
arc theme set: Smooth animated theme transitions- Color interpolation from old to new theme
- Visual feedback during switch
- Instant mode with
--no-animation
-
arc theme preview: Animated theme demonstrations- Looping color animations
- Character-by-character rainbow effects
- Static preview fallback
-
arc(root command): Animated banner on launch- Smooth gradient color transitions
- Spring physics for natural motion
- Theme-aware animations
-
Comprehensive Testing: 50+ unit tests, 10 integration tests
control_test.go: Animation decision logic (8 tests + benchmark)config_test.go: Configuration loading (10 tests + benchmark)spinner_test.go: Spinner utilities (7 tests + benchmark)color_test.go: Color interpolation (15 tests + 4 benchmarks)transition_test.go: Theme transitions (5 tests + 2 benchmarks)progress_test.go: Progress bars (6 tests + benchmark)banner_benchmark_test.go: Performance benchmarks (6 benchmarks)- Integration tests for E2E validation (10 test cases)
-
Zero Race Conditions: All tests pass with
-raceflag -
Performance Validated: All benchmarks meet targets
-
Linting Clean: Zero golangci-lint warnings
- Fixed: TTY detection causing failures in non-interactive environments
- Info command now properly falls back to non-animated mode
- No more
/dev/tty: device not configurederrors in tests
- Fixed: Removed debugging delay (500ms) from info command
- Fixed: Animation cleanup on Ctrl+C interruption
- Performance: <1% CPU usage during animations
- Memory: Efficient buffer reuse in animation loops
- Compatibility: Graceful degradation across all terminal types
- Reliability: Context-aware cancellation for clean shutdown
This major release transforms the CLI into a modern, interactive experience with smooth animations, comprehensive logging, and intelligent terminal adaptation.
-
Terminal Detection System: Auto-detect terminal capabilities
- Color profile detection (TrueColor, 256-color, 16-color, NoColor)
- TTY detection with proper fallbacks
- Terminal size detection with responsive layouts
- Environment variable support (NO_COLOR, CLICOLOR_FORCE, COLORTERM, TERM)
-
Structured Logging Framework: Production-ready logging system
- Charm Log integration with beautiful output
- File rotation (10MB max, 5 backups) using lumberjack
- Secret redaction for sensitive data (tokens, passwords, keys)
- Context-based logging with key-value pairs
- Log levels: DEBUG, INFO, WARN, ERROR, FATAL
- Dual output: formatted console + JSON file logs
-
Animation System: Smooth 60fps animations
- Spring physics using Harmonica library
- Configurable parameters (damping, stiffness, duration)
- Adaptive frame rate based on terminal performance
- Auto-skip for fast operations (<200ms)
- Graceful degradation in non-TTY environments
US1: Interactive Info Command ✅
arc info- Display system information with animated spinners- Shows: CLI version, Go version, OS/Arch, state DB info, current theme
arc info --json- Machine-readable output for scripting- Responsive table layouts adapting to terminal width
US2: Animated Branding ✅
- Smooth color transitions with spring-based physics
- Banner animation on theme switches
- Character-by-character rainbow animation
- <300ms animation target for responsiveness
US3: Structured Logging ✅
--verboseflag for debug output--log-levelflag (debug/info/warn/error/fatal)- Logs stored in
.arc/logs/arc.logwith automatic rotation - Colored console output with emoji indicators
- Integrated throughout all commands
US4: Progress Indicators ✅
- Animated spinners: dot, line, globe, moon, meter, hamburger
- Progress bars with percentage, rate, and ETA
- Multi-progress layout for parallel operations
- Auto-hide for operations completing in <200ms
- Integrated into state operations
US5: Enhanced Theme System ✅
arc theme preview <name>- Animated theme demonstrationsarc theme list- Shows inline previews for all themesarc theme set <name> --no-animation- Instant theme switching- Live style examples (success, error, info, warning)
- Smooth transition animations between themes
US6: Enhanced Layout Components ✅
- Reusable Panel component with configurable borders and styling
- Enhanced Table component with auto-sizing columns
- Per-column alignment support
- Responsive width handling (minimum 80 columns)
- Consistent formatting across all commands
US7: Shell Completion ✅
arc completion bash|zsh|fish|powershell- Generate completionsarc completion --interactive- Interactive setup wizard- Auto-detection of current shell
- Installation instructions for each shell
- 22 comprehensive test files covering all components
- Terminal detection tests
- Branding and system info tests
- Logging infrastructure tests (logger, writer, redactor)
- Animation framework tests
- UI component tests (panel, progress, spinner, table)
- Layout and markdown rendering tests
- Style system tests (emoji, output formatting)
- CLI command tests (all 7 user stories)
- >80% code coverage across the project
- Zero variable shadowing issues
- Full golangci-lint compliance
- Consistent code formatting with gofumpt
- Comprehensive error handling
- Graceful degradation in limited environments
- NO_COLOR and ARC_NO_ANIMATION environment variable support
arc theme list --preview- Inline color previews- Smooth theme transition animations
--no-animationflag for instant switching- Animated style examples (success, error, info, warning)
US6: Improved Layout Components ✅
- Panel component with titled content and borders
- Enhanced Table with auto-sizing columns
- Per-column alignment support
- Responsive width handling
- Refactored
arc state showto use table component - Refactored
arc historyto use panel component
US7: Completion Command Enhancement ✅
arc completioncommand for shell completion- Support for bash, zsh, fish, PowerShell
- Interactive setup wizard with
--interactiveflag - Auto-detection of current shell
- Platform-specific installation instructions
New Packages:
internal/terminal/detect.go- Terminal capability detectionpkg/log/- Structured logging system (logger, writer, redactor)pkg/ui/components/animator.go- Animation frameworkpkg/ui/components/panel.go- Panel componentpkg/ui/components/progress.go- Progress indicatorspkg/ui/components/spinner.go- Spinner animationspkg/ui/components/table.go- Enhanced tablespkg/cli/completion.go- Completion command
Enhanced Packages:
pkg/ui/layout/layout.go- Added responsive width functionspkg/ui/styles/colors.go- Added CodeStyle for code snippetspkg/cli/info.go- Animated system information displaypkg/cli/theme.go- Theme preview and animationpkg/cli/state.go- Table/panel-based display
New Environment Variables:
ARC_NO_ANIMATION=1- Disable all animationsARC_ANIMATION_FPS=30- Set target FPS (default: 60)ARC_LOG_LEVEL- Set log level (debug, info, warn, error, fatal)ARC_LOG_FILE- Custom log file pathARC_STATE_DIR- Custom state directory
New Config Files:
configs/animation.yaml- Animation configurationconfigs/logging.yaml- Logging configuration
- Refactored state display to use enhanced table component
- Refactored history display to use panel component
- Updated theme command with preview capabilities
- Enhanced info command with animations
Dependencies Added:
github.com/charmbracelet/harmonica- Spring physics animationsgithub.com/charmbracelet/log- Structured logginggithub.com/natefinch/lumberjack- Log rotation
Architecture:
- Animation system supports 60 FPS with spring physics
- Adaptive performance based on terminal capabilities
- Auto-hide fast operations to avoid flicker
- Responsive layouts adapt to terminal width (80-120 columns)
- Updated README.md with new commands and environment variables
- Added environment variable documentation section
- Updated command examples with new features
0.1.0 - 2024-12-XX (Previous Release)
- Initial CLI foundation with Cobra
- ASCII art banner with gradient themes
- Theme management system (
arc theme list/set/show) - State management and persistence
- Basic styling and emoji system
- 6 built-in themes (cyan-purple, rainbow, fire, ocean, matrix, character-rainbow)
- NO_COLOR support for CI/CD
- Version and help commands
- Cross-platform support (macOS, Linux, Windows)
Each release includes:
- Added: New features and capabilities
- Changed: Changes to existing functionality
- Deprecated: Features that will be removed
- Removed: Features that were removed
- Fixed: Bug fixes
- Security: Security improvements