All notable changes to xcsh (F5 Distributed Cloud Shell) will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
New Features:
-
✨ New
--headersflag for custom HTTP headers- Format:
--headers "Key:Value"(repeatable, max 16) - Different from
--request-headers-to-remove(which removes headers) - Example:
--headers "X-API-Key:secret123" --headers "X-Debug:true"
- Format:
-
✨ New
--expected-status-codesflag with repeatable array and range support- Repeatable array syntax:
--expected-status-codes 200 --expected-status-codes 201 - Supports ranges:
--expected-status-codes 200-299 - Max 16 codes/ranges
- Repeatable array syntax:
Enhanced Documentation:
- 📝 Server defaults documented for 6 fields (jitter_percent, expected_status_codes, headers, request_headers_to_remove, use_http2, use_origin_server_name)
- 📝 Recommended production values added to flag descriptions:
--interval 15(seconds)--timeout 3(seconds)--healthy-threshold 3--unhealthy-threshold 1--jitter-percent 30
Technical Improvements:
- ⚙️ jitter_percent now correctly included in API requests
- ⚙️ Added
recommendedValuefield to type system for production best practices
- ♻️ Updated healthcheck flag descriptions with recommended values
- ✨ Simplified Healthcheck Creation: Made 4 flags optional with production-ready defaults
-
Previous behavior: Required
--interval,--timeout,--healthy-threshold,--unhealthy-thresholdon every create -
New behavior: Smart defaults applied automatically
-
Defaults:
--interval: 15 seconds--timeout: 3 seconds--healthy-threshold: 3--unhealthy-threshold: 1
-
Examples:
# Minimal command with defaults create healthcheck --name jazz --type tcp # Override specific values as needed create healthcheck --name jazz --type tcp --interval 30 --timeout 5
-
- 🔴 BREAKING: Removed
--expected-statusflag- Replaced by
--expected-status-codes(repeatable array with range support) - Migration required: See examples below
- Replaced by
--expected-status flag has been removed.
Old Syntax (no longer supported):
create healthcheck --expected-status "200,201,204" # ❌ WILL NOT WORKNew Syntax (required):
# Individual codes
create healthcheck \
--expected-status-codes 200 \
--expected-status-codes 201 \
--expected-status-codes 204
# Or with ranges
create healthcheck \
--expected-status-codes 200-299 \
--expected-status-codes 404Custom Headers (new feature):
create healthcheck \
--type http \
--name my-hc \
--interval 15 \
--timeout 3 \
--healthy-threshold 3 \
--unhealthy-threshold 1 \
--path /health \
--headers "X-API-Key:secret123" \
--headers "X-Request-ID:12345" \
--expected-status-codes 200-299- End-to-end integration testing suite (13 comprehensive tests verifying all feature phases working together)
- Cross-feature validation test suite (16 tests covering tier × category × use cases × workflows matrix)
- Tier validation helper functions for efficient domain filtering by subscription tier
- Comprehensive user guide with examples, workflows, and best practices
- Complete API reference for developers and CLI users
- Detailed architecture documentation explaining system design
- Performance benchmarking analysis with sub-millisecond operation times
- Troubleshooting guide for common issues and error resolution
- Migration guide for users upgrading from previous versions
- Refined tier system accuracy based on cross-feature validation (Professional: 36 domains, Enterprise: 42 domains)
- Improved test approach from assumption-based to data-driven assertions
- Enhanced error handling with complete error checking coverage
- Reorganized script files to eliminate package conflicts and improve maintainability
- Fixed 10 unchecked error handling issues in output operations (fmt.Fprintf)
- Fixed 4 static analysis warnings (unnecessary fmt.Sprintf, De Morgan's law optimization)
- Removed 2 unused functions reducing dead code
- Removed 3 unused imports for clean code organization
- Resolved package redeclaration errors by reorganizing tool scripts
- Verified all operations complete in sub-millisecond timeframes
- GetDomainInfo: 125 nanoseconds per operation
- ValidateTierAccess: 49.583 nanoseconds per operation
- SearchUseCases: 17.708 microseconds per search
- Complete help text generation: approximately 115 microseconds
- Identified zero performance bottlenecks; no optimization required
- Complete error handling validation and recovery
- Robust input validation for all domain and tier operations
- Secure error messages with appropriate information disclosure
- golangci-lint: 0 linting issues (100% clean code analysis)
- 100+ tests with 100% pass rate
- All features validated across tier system, categories, use cases, and workflows
- Code quality rating: Production-ready
- Ready for release with confidence
- Initial release of xcsh (F5 Distributed Cloud Shell)
- Domain-based command structure:
xcsh <domain> <operation> <resource> - Comprehensive CLI for F5 Distributed Cloud management
- Shell completions for bash, zsh, and fish
- Multiple authentication methods (P12, cert/key, API token)
- JSON and YAML output formats
- DRY configuration system for easy future rebranding
- Complete rebrand to xcsh
- Removed all legacy backward compatibility code