Releases: dkmnx/kairo
Releases · dkmnx/kairo
Release list
v1.2.2
Fixed
- Audit errors: Audit logger failures now log to stderr instead of being silently ignored
- Fixes potential data loss when audit logging fails (permission errors, disk full, etc.)
- Added
logAuditEvent()helper function for centralized error handling
- Thread safety: Fixed global variable race conditions in concurrent scenarios
- Added mutex-protected accessors:
getVerbose(),setVerbose(),setConfigDir() - Updated all production code to use thread-safe accessors for
verboseflag reads - Updated all tests to use thread-safe accessors for global variable access
- Added race condition tests in
cmd/race_test.go
- Added mutex-protected accessors:
- Lock optimization: Reduced lock hold time in
getConfigDir()by releasing beforeenv.GetConfigDir() - Duplicate binding: Removed duplicate
verboseflag binding incmd/audit.go- Persistent flags in
cmd/root.goare automatically inherited by all subcommands
- Persistent flags in
- Flag parsing: Removed redundant manual
--configparsing inExecute()function- Cobra's persistent flag binding already handles this correctly
Changed
- Code quality: Removed unused
getConfigDirRaw()function (YAGNI)
v1.2.1
Fixed
- Shell completion: Fixed
kairo completion fishand other shell completion commands- The
__completeand__completeNoDeschidden Cobra commands were being intercepted and treated as provider names - Added check in
cmd/root.goto allow these completion commands to pass through unchanged - Fish completions now properly list all subcommands and providers
- The
Documentation
- Updated documentation for audit feature and architecture
- Added
docs/guides/audit-guide.mdwith comprehensive audit log usage documentation - Updated
cmd/README.mdwith new command reference, architecture diagrams, and audit integration docs - Updated
docs/architecture/README.mdwith audit logging architecture, error handling patterns, and design principles
v1.2.0
Added
- Audit logging: New
kairo auditcommand to track all configuration changeskairo audit list- Human-readable list showing timestamp, provider, action, and changeskairo audit export -o file.csv- Export to CSV format with changes columnkairo audit export -o file.json -f json- Export to JSON format- API keys masked in logs (e.g.,
sk-an********mnop) - Tracks: config, default, reset, rotate, setup, and switch commands
v1.1.1
Added
- Provider shorthand: Use
kairo <provider>instead ofkairo switch <provider>for quicker provider switching- Arguments after provider name are passed through to Claude (e.g.,
kairo anthropic --help) - Unknown provider names now show "not configured" error instead of "unknown command"
- All existing subcommands remain unaffected
- Arguments after provider name are passed through to Claude (e.g.,
Fixed
- Race conditions: Fixed test flakiness caused by shared flag state in CLI tests
- Test pollution: Prevented argument handling from affecting subsequent tests
- Code formatting: Added auto-formatting to
make lintfor automatic gofmt fixes before checking - Style cleanup: Fixed formatting in root_test.go
v1.1.0
Added
- Provider shorthand: Use
kairo <provider>instead ofkairo switch <provider>for quicker provider switching- Arguments after provider name are passed through to Claude (e.g.,
kairo anthropic --help) - Unknown provider names now show "not configured" error instead of "unknown command"
- All existing subcommands remain unaffected
- Arguments after provider name are passed through to Claude (e.g.,
v1.0.2
Fixed
- Update command: Fixed checksum file download error by correcting filename construction
- Script was using version with 'v' prefix (e.g.,
kairo_v1.0.1_checksums.txt) - Actual release asset uses format without prefix (e.g.,
kairo_1.0.1_checksums.txt) - Added version prefix stripping logic to match actual GoReleaser naming
- Script was using version with 'v' prefix (e.g.,
- Install script: Fixed shellcheck warnings for safer script execution
- Changed
trapcommand to use single quotes to prevent early variable expansion - Fixed PATH export statement for proper variable display
- Changed
v1.0.1
Added
- Structured error handling: Implemented
internal/errorspackage with typed errors (ConfigError, CryptoError, ValidationError, ProviderError, NetworkError, FileSystemError) - Error context: All errors now include structured context and helpful hints for debugging
- Comprehensive user guides: Added new documentation:
- Error handling examples (
docs/guides/error-handling-examples.md) - Advanced configuration scenarios (
docs/guides/advanced-configuration.md) - Claude Code integration examples (
docs/guides/claude-integration-examples.md)
- Error handling examples (
- Enhanced troubleshooting: Added 7 advanced troubleshooting scenarios to
docs/troubleshooting/README.md - Setup helper tests: Added tests for prompt functions (promptForProvider, promptForAPIKey, promptForBaseURL)
- Update command tests: Added tests for getEnvFunc, getLatestRelease, and versionGreaterThan
- Helper function tests: Added tests for parseIntOrZero, parseProviderSelection, validateCustomProviderName
Changed
- Internal refactoring: Extracted 8 helper functions from
cmd/setup.gofor better maintainability:validateCustomProviderName,buildProviderConfig,getSortedSecretsKeysformatSecretsFileContent,saveProviderConfigFile,validateAPIKey,validateBaseURL
- Improved error messages: All config and crypto errors now use structured types with context
- Better test coverage: cmd package coverage increased from 35.2% to 40.5%
- Added tests for edge cases and error paths in update.go
- Increased coverage for version comparison from 71.4% to 100%
- Increased coverage for getLatestRelease from 78.9% to 89.5%
- README improvements: Added usage examples, reorganized documentation section, added Direct Query Mode (
--) documentation
Fixed
- Documentation: Fixed 15 markdownlint errors across new documentation files
- Error handling tests: internal/errors package coverage improved from 78.1% to 100%
v1.0.0
[1.0.0] - 2025-12-28
Added
- Production-ready release with complete feature set
- Comprehensive documentation suite (User Guide, Development Guide, Architecture, Troubleshooting, Contributing, Deployment Guide)
- 80%+ test coverage across all packages
- Multi-platform binary releases (Linux, macOS, Windows amd64/arm64)
- Homebrew tap support for easy installation
- Automated CI/CD pipeline with testing, linting, and releasing
Changed
- Stabilized CLI interface for production use
- Standardized configuration format (YAML) for backward compatibility
- Achieved comprehensive test coverage across all modules
Security
- Age (X25519) encryption for all API keys
- Automatic key rotation with
kairo rotatecommand - 0600 file permissions on sensitive files (config, secrets.age, age.key)
- Secrets decrypted in-memory only
- No plaintext API keys stored in configuration files
v0.5.3
Added
- Version tests: Added
internal/version/version_test.gowith 5 tests for version parsing and validation - UI output tests: Added
internal/ui/prompt_test.gowith comprehensive tests for all Print functions - cmd package tests: Expanded test coverage from 29% to 36.3% with new tests for:
ensureConfigDirectory,loadOrInitializeConfig,loadSecretsparseProviderSelection,configureAnthropiccheckForUpdates(update notification logic)
- Semver dependency: Added
github.com/Masterminds/semver/v3for proper version comparison
Changed
- Semver parsing: Replaced fragile string comparison with proper
Masterminds/semverlibrary- Fixes edge cases:
v0.9.0vsv0.10.0, pre-release versions, multi-digit version numbers
- Fixes edge cases:
- getEnvValue(): Implemented using
os.Getenv()to enableKAIRO_UPDATE_URLenvironment variable override
Fixed
- UI constants: Removed unused lowercase duplicate constants, all functions now use uppercase constants (Green, Yellow, Red, etc.)
- Code cleanup: Updated CODE_REVIEW.md to reflect all completed items
v0.5.2
Fixed
kairo update: Fixed install script execution so it properly runs instead of just printing to terminal