Skip to content
This repository was archived by the owner on May 26, 2026. It is now read-only.

Latest commit

 

History

History
174 lines (130 loc) · 5.84 KB

File metadata and controls

174 lines (130 loc) · 5.84 KB

Changelog

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.

[Unreleased]

Added - Healthcheck Enhancements (API Spec v2.0.31)

New Features:

  • ✨ New --headers flag 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"
  • ✨ New --expected-status-codes flag 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

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 recommendedValue field to type system for production best practices

Changed

  • ♻️ 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-threshold on 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

Removed - BREAKING CHANGES

  • 🔴 BREAKING: Removed --expected-status flag
    • Replaced by --expected-status-codes (repeatable array with range support)
    • Migration required: See examples below

Migration Guide

⚠️ BREAKING CHANGE: The --expected-status flag has been removed.

Old Syntax (no longer supported):

create healthcheck --expected-status "200,201,204"  # ❌ WILL NOT WORK

New 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 404

Custom 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

[5.1.0] - 2025-12-24

Added

  • 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

Changed

  • 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

  • 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

Performance

  • 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

Security

  • Complete error handling validation and recovery
  • Robust input validation for all domain and tier operations
  • Secure error messages with appropriate information disclosure

Internal

  • 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

[5.0.0] - Previous Release

Added

  • 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

Changed

  • Complete rebrand to xcsh
  • Removed all legacy backward compatibility code