Skip to content

v1.5.0

Pre-release
Pre-release

Choose a tag to compare

@inureyes inureyes released this 18 Dec 09:08
· 180 commits to main since this release

v1.5.0 Release

This release introduces comprehensive pdsh compatibility mode, hostlist expressions, and TUI improvements.

New Features

  • pdsh Compatibility Mode (Issues #100-103, #105, #107, #110)

    • Full pdsh-style command line compatibility when invoked as pdsh or with --pdsh-compat
    • -w hosts option mapped to -H hosts for target host specification
    • -x hosts option mapped to --exclude hosts for host exclusion
    • -f N option mapped to --parallel N for fanout control
    • -l user option for remote username
    • -t N option mapped to --connect-timeout N for connection timeout
    • -u N option mapped to --timeout N for command timeout
    • -N option mapped to --no-prefix for disabling hostname prefix in output
    • -b option mapped to --batch for single Ctrl+C termination
    • -k option mapped to --fail-fast for stop on first failure
    • -q query mode to show target hosts and exit
    • -S option mapped to --any-failure for returning largest exit code
  • Hostlist Expressions (Issue #107)

    • pdsh-style range expansion: node[1-5] → node1, node2, node3, node4, node5
    • Zero-padded ranges: node[01-05] → node01, node02, node03, node04, node05
    • Comma-separated values: node[1,3,5] → node1, node3, node5
    • Cartesian product: rack[1-2]-node[1-3] → 6 hosts
    • Domain suffix support: web[1-3].example.com
    • User and port preservation: admin@db[01-03]:5432
    • File input with ^/path/to/hostfile
  • In-TUI Log Panel (Issue #106)

    • Toggle visibility with l key
    • Color-coded by level: ERROR (red), WARN (yellow), INFO (white), DEBUG (gray)
    • Configurable buffer size via BSSH_TUI_LOG_MAX_ENTRIES (default: 1000, max: 10000)
    • Panel height adjustable from 3-10 lines with +/- keys
    • Scroll with j/k keys, toggle timestamps with t
  • --fail-fast Option (Issue #103)

    • -k / --fail-fast flag to stop immediately on first failure
    • Compatible with pdsh -k option
    • Cancels pending commands when any node fails
    • Can be combined with --require-all-success for strict error handling
  • --batch Option (Issue #102)

    • -b / --batch flag for single Ctrl+C termination
    • Compatible with pdsh -b option
    • Useful for non-interactive scripts and CI/CD pipelines
  • --exclude Option (Issue #100)

    • --exclude / -x for host exclusion
    • Supports wildcards, glob patterns, and hostlist expressions
    • Applied after --filter option
  • --no-prefix Option (Issue #101)

    • -N / --no-prefix for disabling hostname prefix in output
    • Compatible with pdsh -N option
    • Works with both stream mode and file mode
  • --connect-timeout Option

    • Separate connection timeout from command execution timeout
    • Default: 30 seconds, minimum: 1 second
    • Useful for fast failure detection on unreachable hosts

Improvements

  • CI workflow simplification by merging jobs into single pipeline

Bug Fixes

  • --timeout 0 Handling (Issue #112)

    • Fixed --timeout 0 to correctly treat as unlimited execution time
    • Previously the 0 value was being ignored, causing unexpected timeout behavior
    • Added explicit CLI test to prevent regression
  • Environment Variable Test Race Conditions

    • Added #[serial] attribute to env var tests to prevent race conditions
    • Tests now run sequentially when accessing shared environment state
  • Connect Timeout Propagation

    • Fixed connect_timeout not being propagated through all SSH connection paths

CI/CD Improvements

  • Simplified CI workflow by merging multiple jobs into single pipeline

Technical Details

  • pdsh compatibility layer core infrastructure
  • Comprehensive hostlist expression parser with cartesian product support
  • Added explicit CLI test for --timeout 0 behavior

Dependencies

None

Breaking Changes

None

Known Issues

None

What's Changed

  • feat: Add --no-prefix option to disable hostname prefix in output (pdsh -N compatibility) by @inureyes in #101
  • feat: Add --exclude option for host exclusion (pdsh -x compatibility) by @inureyes in #100
  • feat: Add --batch option for single Ctrl+C termination (pdsh -b compatibility) by @inureyes in #102
  • feat: Add --fail-fast option to stop on first failure (pdsh -k compatible) by @inureyes in #103
  • feat: Implement pdsh compatibility layer core infrastructure by @inureyes in #105
  • feat: Add in-TUI log panel to prevent log messages from breaking layout by @inureyes in #106
  • feat: Add pdsh-style hostlist expression support by @inureyes in #107
  • docs: Add pdsh compatibility mode documentation and installation scripts by @inureyes in #110
  • docs: Restructure ARCHITECTURE.md into modular documentation by @inureyes in #111

Full Changelog: v1.4.2...v1.5.0