PackageTrack
Sign in Get early access

github.com/derekg/ts-ssh

v0.8.1 #4085 most downloaded on Go modules derekg/ts-ssh

What this package is like to depend on

Last release 2 months ago

30 May 2026

Ships fairly regularly

a new release about every 3 months

Nearly every release is documented

notes for 7 of 7 stable releases

Nothing withdrawn

no release was ever pulled

1 years old

11 releases · first in 2025

4 releases in the last 12 months

see the full history below

Release timeline

11 releases · Jun 2025 to May 2026
2026
Release Pre-release

Releases

latest 11
  1. v0.8.1 30 May 2026
    Release notes

    ts-ssh v0.8.1 - Bug Fix Release

    Release Date: May 2026

    Patch release fixing auth URL visibility, SOCKS5 protocol correctness, and an IPv6 bind address parsing bug.

    Bug Fixes

    Auth URL Always Displayed on Re-authentication

    The UserLogf filter that surfaces Tailscale authentication URLs was matching only login.tailscale.com. Re-auth URLs from custom control servers were silently dropped, leaving the user with a hung connection and no URL to visit. The filter now matches any https:// URL in the user-facing log channel.

    SOCKS5 Protocol Correctness

    • TCP fragmentation: Raw Read() calls assumed the entire SOCKS5 greeting and CONNECT request arrived in a single TCP segment. Replaced with io.ReadFull for each protocol segment so fragmented messages are handled correctly under real network conditions.
    • IPv6 bind address: ts-ssh -D [::1]:1080 now parses correctly. The old strings.Split approach failed on IPv6 addresses; replaced with net.SplitHostPort which handles bracket notation properly.
    • Dead context removed: context.WithCancel in setupDynamicForward was only ever cancelled by the goroutine's own defer — unreachable from the caller. Removed and replaced with errors.Is(err, net.ErrClosed) for the listener shutdown check.
    • IPv6 target address: net.JoinHostPort is now used when constructing the SOCKS5 dial target so IPv6 destination addresses get correct bracket notation.

    Audit Log Version Fixed

    Security audit logs were recording version 0.4.0 regardless of the actual binary version. The internal/security package now receives the build-time version via security.SetVersion() called from main.

    CLI Syntax (unchanged)

    # SOCKS5 with IPv6 bind (now works correctly)
    ts-ssh -D [::1]:1080 hostname
    
    # Standard usage unchanged
    ts-ssh hostname
    ts-ssh user@hostname
    ts-ssh -D 1080 hostname
    ts-ssh -scp file.txt hostname:/tmp/

    Downloads

    Platform-specific Binaries

    • Linux AMD64: ts-ssh-v0.8.1-linux-amd64
    • Linux ARM64: ts-ssh-v0.8.1-linux-arm64
    • macOS Intel: ts-ssh-v0.8.1-darwin-amd64
    • macOS Apple Silicon: ts-ssh-v0.8.1-darwin-arm64
    • Windows AMD64: ts-ssh-v0.8.1-windows-amd64.exe
    • Windows ARM64: ts-ssh-v0.8.1-windows-arm64.exe
    • FreeBSD AMD64: ts-ssh-v0.8.1-freebsd-amd64
    • OpenBSD AMD64: ts-ssh-v0.8.1-openbsd-amd64

    Verification

    Each binary includes a .sha256 checksum file:

    sha256sum -c ts-ssh-v0.8.1-linux-amd64.sha256

    Commits

    • 2af2c1b - fix: auth URL display and SOCKS5 protocol correctness
    • 0cd4051 - fix: use net.SplitHostPort for SOCKS5 bind address parsing

    Upgrade Notes

    Drop-in replacement for v0.8.0. No CLI changes.


    Full Changelog: v0.8.0...v0.8.1

    Open source →
  2. v0.8.0 12 Jan 2026
    Release notes

    ts-ssh v0.8.0 - SOCKS5 Proxy & Enhanced Compatibility

    Release Date: January 2026

    This release adds SOCKS5 dynamic port forwarding, PTY control, and improved username validation.

    New Features

    SOCKS5 Dynamic Port Forwarding (-D flag)

    Full SOCKS5 proxy support for tunneling traffic through your Tailscale connection:

    # Start SOCKS5 proxy on localhost:1080
    ts-ssh -D 1080 hostname
    
    # Bind to specific address (with security warning)
    ts-ssh -D 0.0.0.0:1080 hostname
    
    # Use with curl
    curl --socks5 localhost:1080 http://internal-service.example.com

    VSCode Remote SSH Compatible - Use ts-ssh as a SOCKS proxy for VSCode Remote SSH connections to your Tailnet.

    PTY Allocation Control (-T flag)

    Disable pseudo-terminal allocation for non-interactive commands:

    # Disable PTY for scripted commands
    ts-ssh -T hostname "cat /etc/hostname"
    
    # Useful for piping data
    ts-ssh -T hostname "cat /var/log/app.log" | grep error

    Flexible Username Validation

    Usernames with dots are now fully supported:

    ts-ssh first.last@hostname
    ts-ssh -l john.doe hostname

    CLI Syntax

    # SSH with SOCKS5 proxy
    ts-ssh -D 1080 hostname              # SOCKS proxy on localhost:1080
    ts-ssh -D 0.0.0.0:1080 hostname      # Bind to all interfaces
    
    # Disable PTY
    ts-ssh -T hostname command           # No pseudo-terminal
    
    # All options combined
    ts-ssh -v -D 1080 -T user@hostname command

    Downloads

    Platform-specific Binaries

    • Linux AMD64: ts-ssh-v0.8.0-linux-amd64
    • Linux ARM64: ts-ssh-v0.8.0-linux-arm64
    • macOS Intel: ts-ssh-v0.8.0-darwin-amd64
    • macOS Apple Silicon: ts-ssh-v0.8.0-darwin-arm64
    • Windows AMD64: ts-ssh-v0.8.0-windows-amd64.exe
    • Windows ARM64: ts-ssh-v0.8.0-windows-arm64.exe
    • FreeBSD AMD64: ts-ssh-v0.8.0-freebsd-amd64
    • OpenBSD AMD64: ts-ssh-v0.8.0-openbsd-amd64

    Verification

    Each binary includes a .sha256 checksum file:

    sha256sum -c ts-ssh-v0.8.0-linux-amd64.sha256

    Technical Details

    SOCKS5 Implementation

    • Full SOCKS5 protocol (RFC 1928)
    • IPv4, IPv6, and domain name resolution
    • No authentication required (local use)
    • Context-based lifecycle management
    • Security validation for bind addresses

    Code Stats

    • Total: ~5,250 lines (including comprehensive tests)
    • Test coverage: SOCKS5 functionality fully tested

    Commits

    • 276ceef - Enhanced SOCKS5 implementation and username validation improvements (#35)

    Upgrade Notes

    This is a backwards-compatible release. All v0.7.0 commands continue to work.


    Full Changelog: v0.7.0...v0.8.0

    Open source →
  3. v0.7.1-0.20251107043735-276ceef5fcbb 07 Nov 2025 pre-release

    Nothing published for this version

  4. v0.7.0 04 Nov 2025
    Release notes

    ts-ssh v0.7.0 - Major CLI Simplification

    Release Date: November 4, 2025

    This release represents a major simplification of ts-ssh, transforming it from a complex multi-modal CLI to a simple, SSH-like command.

    🎯 Design Philosophy

    "Simplicity over features" - This tool does one thing well: SSH and SCP over Tailscale networks, with a familiar, SSH-like interface.

    📊 Major Changes

    Code Reduction

    • From: ~15,000 lines of code
    • To: ~4,656 lines of code
    • Reduction: 69% smaller codebase

    Simplified CLI

    Now mimics standard SSH command syntax - no subcommands, no complexity.

    Before (v0.5.0):

    ts-ssh connect hostname
    ts-ssh --multi host1,host2,host3
    ts-ssh --exec "uptime" --list
    ts-ssh --copy file.txt --list

    After (v0.7.0):

    ts-ssh hostname
    ts-ssh hostname uptime
    ts-ssh -scp file.txt hostname:/tmp/

    Removed Features

    • ❌ Dual CLI modes (modern/legacy)
    • ❌ 11-language internationalization system
    • ❌ Multi-host operations (--list, --multi, --exec, --copy, --pick)
    • ❌ Tmux integration
    • ❌ Charmbracelet UI frameworks (Fang, Lipgloss, Huh, Cobra)
    • ❌ Complex subcommand structure

    ✅ What Remains

    All core functionality is preserved:

    • ✅ SSH connections with standard syntax
    • ✅ SCP file transfers
    • ✅ Tailscale tsnet integration (userspace networking)
    • ✅ All security features and validation
    • ✅ Post-quantum cryptography support
    • ✅ Host key verification
    • ✅ Multiple authentication methods
    • ✅ Cross-platform support (Linux, macOS, Windows, BSD)

    🚀 CLI Syntax

    SSH Operations

    # Connect to a host
    ts-ssh hostname
    ts-ssh user@hostname
    ts-ssh user@hostname:2222
    
    # Execute remote command
    ts-ssh hostname uptime
    ts-ssh user@hostname "ls -la /tmp"
    
    # Options
    ts-ssh -v hostname                  # Verbose mode
    ts-ssh -p 2222 hostname            # Custom port
    ts-ssh -l alice hostname           # Specify username
    ts-ssh -i ~/.ssh/custom_key hostname  # Custom key

    SCP Operations

    # Upload file
    ts-ssh -scp file.txt hostname:/tmp/
    
    # Download file
    ts-ssh -scp hostname:/tmp/file.txt ./
    
    # With specific port/user
    ts-ssh -p 2222 -scp file.txt user@hostname:/tmp/

    Help & Version

    ts-ssh --help
    ts-ssh --version

    ⚠️ Breaking Changes

    This is a BREAKING release. If you rely on removed features:

    Migration Guidance

    Multi-host operations → Use shell loops:

    # Old: ts-ssh --exec "uptime" --multi host1,host2,host3
    # New:
    for host in host1 host2 host3; do
      ts-ssh $host uptime
    done

    Parallel execution → Use GNU parallel or xargs:

    # Parallel command execution
    echo "host1 host2 host3" | xargs -P 3 -n 1 ts-ssh -c uptime
    
    # Or with GNU parallel
    parallel ts-ssh {} uptime ::: host1 host2 host3

    Internationalization → English only

    • Non-English users should stay on v0.5.0 or use terminal translation tools

    Tmux integration → Use tmux directly

    • Launch tmux manually and run ts-ssh within it

    📦 Downloads

    Platform-specific Binaries

    • Linux AMD64: ts-ssh-v0.7.0-linux-amd64
    • Linux ARM64: ts-ssh-v0.7.0-linux-arm64
    • macOS Intel: ts-ssh-v0.7.0-darwin-amd64
    • macOS Apple Silicon: ts-ssh-v0.7.0-darwin-arm64
    • Windows AMD64: ts-ssh-v0.7.0-windows-amd64.exe
    • Windows ARM64: ts-ssh-v0.7.0-windows-arm64.exe
    • FreeBSD AMD64: ts-ssh-v0.7.0-freebsd-amd64
    • OpenBSD AMD64: ts-ssh-v0.7.0-openbsd-amd64

    All Platforms Archive

    • All platforms: ts-ssh-v0.7.0-all-platforms.tar.gz (127 MB)

    Verification

    Each binary includes a .sha256 checksum file. Verify downloads:

    sha256sum -c ts-ssh-v0.7.0-linux-amd64.sha256

    🧪 Testing

    • ✅ All tests passing (440+ tests)
    • ✅ Cross-platform builds verified
    • ✅ Security features validated
    • ✅ Test coverage: 35.5%

    🏗️ Technical Details

    Removed Dependencies

    • github.com/charmbracelet/fang
    • github.com/charmbracelet/lipgloss
    • github.com/charmbracelet/huh
    • github.com/spf13/cobra
    • 11-language translation files
    • TUI frameworks and dependencies

    Code Structure (Simplified)

    ts-ssh/
    ├── main.go              # ~457 lines - main CLI logic
    ├── constants.go         # ~52 lines
    ├── main_test.go         # ~256 lines
    ├── main_e2e_test.go     # ~410 lines
    └── internal/
        ├── client/          # SSH and SCP clients
        ├── config/          # Configuration
        ├── crypto/pqc/      # Post-quantum cryptography
        ├── errors/          # Error handling
        ├── platform/        # Platform-specific code
        └── security/        # Security validation
    

    Total: ~4,656 lines (down from ~15,000)

    🔐 Security

    All security features maintained:

    • Host key verification
    • Secure TTY handling for passwords
    • Input validation (SQL injection, command injection protection)
    • Post-quantum cryptography support
    • Secure file transfers with atomic operations

    📝 Commits

    • 56da8af - chore: Remove dead code and cleanup codebase (#30)
    • a600998 - Simplify CLI to mimic standard SSH command (#29)
    • 8f108b4 - Design Simplified SSH Command Implementation (#28)

    🙏 Acknowledgments

    This simplification was driven by the principle that tools should do one thing well. By focusing on core SSH/SCP functionality over Tailscale, ts-ssh is now more maintainable, easier to understand, and more aligned with Unix philosophy.


    Full Changelog: v0.5.0...v0.7.0

    Open source →
  5. v0.6.0 04 Jul 2025
    Release notes

    ts-ssh v0.6.0 Release Notes

    Release Date: July 4, 2025
    Previous Version: v0.5.0

    🌟 Major Features & Improvements

    🌍 Complete Translation System Consolidation

    • Unified Internationalization: Consolidated 4 separate translation systems into a single, coherent architecture
    • Enhanced Language Support: Full support for 11 languages (English, Spanish, Chinese, Hindi, Arabic, Bengali, Portuguese, Russian, Japanese, German, French)
    • Complete Coverage: 170+ translation keys covering all user-facing messages
    • Thread-Safe Implementation: Robust concurrent access handling with proper synchronization
    • Technical Debt Elimination: Removed duplicate T() functions across internal packages

    🔐 Authentication & Connection Improvements

    • Fixed Authentication URL Display: Resolved critical issue where Tailscale authentication URLs weren't visible in non-verbose mode
    • Enhanced User Experience: Users now always see authentication prompts when needed
    • Better Error Handling: Improved connection failure reporting with translated messages
    • Streamlined Connection Flow: Refactored connection initialization for better reliability

    🏗️ Code Quality & Architecture

    • Function Decomposition: Broke down large, complex functions into focused, maintainable helpers
    • Security Enhancements: Improved input validation and security checks
    • Format String Safety: Fixed all go vet warnings for safer string formatting
    • Better Error Messages: Enhanced error reporting with proper context and translations

    📋 Technical Changes

    Translation System Overhaul

    • Created centralized internal/i18n package for internal modules
    • Added 18 new translation keys for Security, SSH, and SCP operations
    • Implemented thread-safe concurrent access with proper synchronization
    • Achieved 100% translation coverage with comprehensive testing

    Authentication Flow Fixes

    • Fixed tsnet.Server.UserLogf to use dedicated stderr logger
    • Authentication URLs now display correctly in both verbose and non-verbose modes
    • Improved distinction between debug logging and user-facing messages

    Code Quality Improvements

    • Enhanced Cobra/Fang integration with better help text rendering
    • Fixed all go vet warnings for safer string formatting
    • Improved error messages with proper context and translations
    • Updated documentation with architectural insights and debugging workflows

    🔧 Quality & Testing

    • Test Coverage: All tests passing (100+ test cases)
    • Build Verification: Cross-platform compilation confirmed
    • Code Quality: Zero go vet warnings, proper formatting
    • Security: Enhanced input validation and secure file operations

    🛠️ Migration Notes

    • Backwards Compatibility: All existing functionality preserved
    • New Languages: Automatic language detection with proper fallbacks
    • For Developers: Use T() for main package, i18n.T() for internal packages

    📦 Downloads & Installation

    This release supports all major platforms with optimized binaries:

    • Linux AMD64: ts-ssh-linux-amd64
    • macOS ARM64: ts-ssh-darwin-arm64
    • macOS Intel: ts-ssh-darwin-amd64
    • Windows x64: ts-ssh-windows-amd64.exe

    🙏 Acknowledgments

    This release represents a significant step forward in ts-ssh's evolution, with major improvements to internationalization, user experience, and code quality. The comprehensive testing and quality assurance process ensured a stable, reliable release.

    The translation system consolidation eliminates duplicate code and technical debt while providing a robust foundation for future multilingual expansion. The authentication flow improvements resolve critical user experience issues with tsnet URL display.


    Full Changelog: v0.5.0...v0.6.0
    Commit Range: View Changes

    🤖 Generated with Claude Code

    Co-Authored-By: Claude [email protected]

    Open source →
  6. v0.5.1-0.20250704041922-5a976734c01f 04 Jul 2025 pre-release

    Nothing published for this version

  7. v0.5.0 30 Jun 2025
    Release notes

    ts-ssh v0.5.0 Release Notes

    🎉 Major User Experience Improvements

    ✨ Clean SSH Connection Experience

    Problem Solved: Eliminated verbose, distracting tsnet logging that cluttered SSH connections

    • Before: 2025/06/30 20:19:36 tsnet running state path /home/derek/.config/ts-ssh/tailscaled.state
    • Before: 2025/06/30 20:25:11 AuthLoop: state is Running; done
    • After: Clean, professional connection output

    🛠️ Technical Fixes

    • Suppress verbose tsnet logging: All internal library noise eliminated in normal operation
    • Fix undefined logger references: Corrected multiple CLI commands with proper logger initialization
    • Improve terminal formatting: Optimized escape sequence message placement
    • Preserve debugging capabilities: Full verbose logging still available with -v flag

    📚 Comprehensive Feature Set

    🌍 Multi-Language Support (11 Languages)

    Complete internationalization covering 4+ billion speakers worldwide:

    • English, Spanish, Chinese, Hindi, Arabic, Bengali, Portuguese, Russian, Japanese, German, French
    • All CLI help text, commands, and interface elements fully translated
    • Smart language detection from environment or --lang flag

    🔒 Enterprise-Grade Security

    • Post-quantum cryptography (PQC) support with FIPS 140-2 compliance
    • Modern SSH key prioritization (Ed25519 over RSA)
    • Comprehensive host key verification
    • Security audit logging and monitoring
    • Cross-platform security implementations

    💪 Powerful Multi-Host Operations

    • Real tmux integration for multiple SSH sessions
    • Batch command execution across hosts (sequential or parallel)
    • Multi-host file distribution with automatic SCP handling
    • Interactive host picker with enhanced UX
    • Fast host discovery with online/offline status

    🎨 Modern CLI Experience

    • Dual CLI modes: Modern (Fang/Cobra) and Legacy for backward compatibility
    • Beautiful styling with consistent colors and formatting
    • Enhanced help system with organized subcommands
    • Automatic CLI detection for optimal user experience

    🚀 Installation

    Pre-built Binaries

    Download the appropriate binary for your platform:

    # Linux AMD64
    curl -L -o ts-ssh https://github.com/derekg/ts-ssh/releases/download/v0.5.0/ts-ssh-v0.5.0-linux-amd64
    chmod +x ts-ssh
    
    # macOS Apple Silicon
    curl -L -o ts-ssh https://github.com/derekg/ts-ssh/releases/download/v0.5.0/ts-ssh-v0.5.0-darwin-arm64
    chmod +x ts-ssh
    
    # macOS Intel
    curl -L -o ts-ssh https://github.com/derekg/ts-ssh/releases/download/v0.5.0/ts-ssh-v0.5.0-darwin-amd64
    chmod +x ts-ssh
    
    # Windows AMD64
    curl -L -o ts-ssh.exe https://github.com/derekg/ts-ssh/releases/download/v0.5.0/ts-ssh-v0.5.0-windows-amd64.exe

    Go Install

    go install github.com/derekg/[email protected]

    ✅ Verification

    Verify download integrity with checksums:

    curl -L https://github.com/derekg/ts-ssh/releases/download/v0.5.0/checksums.sha256
    sha256sum -c checksums.sha256

    🧪 What's Tested

    • ✅ All existing functionality preserved
    • ✅ Cross-platform builds (Linux, macOS, Windows - AMD64/ARM64)
    • ✅ Comprehensive test suite (73+ tests)
    • ✅ Security features validated
    • ✅ Multi-language support verified
    • ✅ Clean SSH connection experience confirmed

    🔧 For Developers

    Build from Source

    git clone https://github.com/derekg/ts-ssh.git
    cd ts-ssh
    go build -o ts-ssh .

    Cross-Compilation

    # See CLAUDE.md for detailed cross-compilation examples
    CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -o ts-ssh-darwin-arm64 .

    Full Changelog: v0.4.0...v0.5.0

    Open source →
  8. v0.4.0 22 Jun 2025
    Release notes

    ts-ssh v0.4.0 - Security Hardening and Post-Quantum Cryptography

    This release focuses on security enhancements, post-quantum cryptography preparation, and code quality improvements.

    🔒 Security Enhancements

    Enterprise-Grade Security Hardening

    • Modern SSH Key Discovery: Ed25519 prioritized over legacy RSA keys
    • TTY Security: Multi-layer validation preventing hijacking attacks
    • Process Protection: Credential masking in process lists and environment
    • Atomic File Operations: Race condition prevention in file handling
    • Host Key Verification: Enhanced verification against ~/.ssh/known_hosts
    • Cross-Platform Security: Platform-specific implementations for Windows/macOS/Linux

    Critical Vulnerability Fixes

    • CVE-TS-SSH-001: Host key verification bypass protections added
    • CVE-TS-SSH-002: Credential exposure in process lists eliminated
    • CVE-TS-SSH-003: File permission race conditions resolved
    • CVE-TS-SSH-004: Unsafe TTY access vulnerabilities fixed

    🔮 Post-Quantum Cryptography Preparation

    Quantum-Resistant Infrastructure

    • Algorithm Support: Foundation for [email protected] and other PQC algorithms
    • Algorithm Agility: Framework for seamless cryptographic transitions
    • Monitoring System: PQC usage tracking and reporting capabilities
    • Command-Line Flags: --pqc, --pqc-level, --pqc-report for quantum cryptography control

    🌍 Internationalization

    Multi-Language Support

    • Spanish Language: Complete CLI translation (--lang es)
    • Language Detection: Automatic detection from environment variables (LANG, TS_SSH_LANG)
    • Extensible Framework: Ready for additional language support

    🛠️ Technical Improvements

    Code Quality and Architecture

    • Modular Refactoring: Clean separation with internal/ package structure
    • Security Package: Dedicated internal/security/ for security operations
    • PQC Package: New internal/crypto/pqc/ for quantum cryptography
    • Comprehensive Testing: Enhanced test coverage with security-focused scenarios
    • Cross-Platform Compatibility: Improved Windows/macOS/Linux support

    Documentation Updates

    • Realistic Claims: Removed inconsistent numerical scores from documentation
    • Security Architecture: Comprehensive security documentation
    • Project Guidelines: Added guidance for quality assessment practices

    📊 Technical Metrics

    • 80+ Tests: Comprehensive test suite including security scenarios
    • 5 Internal Packages: Modular architecture for maintainability
    • Cross-Platform: Full Windows/macOS/Linux compatibility
    • Security Events: Comprehensive audit logging and monitoring

    🚨 Breaking Changes

    None - this release maintains full backwards compatibility with existing ts-ssh usage.

    📝 Installation

    # Using go install (recommended)
    go install github.com/derekg/[email protected]
    
    # Build from source
    git clone https://github.com/derekg/ts-ssh.git
    cd ts-ssh
    git checkout v0.4.0
    go build -o ts-ssh .

    🆕 New Usage Examples

    Multi-Language Support

    # Use Spanish interface
    ts-ssh --lang es --list
    
    # Set permanent language preference
    export TS_SSH_LANG=es
    ts-ssh --help

    Post-Quantum Cryptography (Preparation)

    # Enable PQC monitoring (when available)
    ts-ssh --pqc-report
    
    # Future: PQC algorithm selection
    ts-ssh --pqc-level 2 your-server  # (when PQC is fully implemented)

    📋 Full Changelog

    Security:

    • Comprehensive security hardening with CVE fixes
    • Modern SSH key discovery (Ed25519 priority)
    • TTY security and process protection enhancements
    • Atomic file operations and race condition prevention

    Features:

    • Spanish language support and i18n framework
    • Post-quantum cryptography infrastructure
    • Enhanced cross-platform compatibility

    Quality:

    • Major code quality improvements and refactoring
    • Comprehensive test coverage expansion
    • Modular internal package architecture

    Documentation:

    • Removed inconsistent quality scores
    • Enhanced security architecture documentation
    • Realistic security implementation claims

    This release positions ts-ssh as a secure, future-ready SSH client with enterprise-grade security features and quantum-cryptography readiness.

    Open source →
  9. v0.3.1-0.20250622040231-b425767e3ffe 22 Jun 2025 pre-release

    Nothing published for this version

  10. v0.3.1-0.20250622011107-c7683e604b78 22 Jun 2025 pre-release

    Nothing published for this version

  11. v0.3.0 21 Jun 2025
    Release notes

    v0.3.0 - Architecture Improvements and i18n

    ⚠️ Note: This project now follows Semantic Versioning. Since the API is still evolving, we're using 0.x.y versions:

    • 0.x.Y (minor) - new features, improvements (backward compatible)
    • 0.x.y (patch) - bug fixes (backward compatible)
    • X.y.z (major) - will be used for first stable API (v1.0.0+)

    🎯 New Features

    🌍 Spanish Language Support

    • Complete Spanish localization for CLI help, usage examples, and error messages
    • Multiple language detection methods: --lang, TS_SSH_LANG, LANG, LC_ALL
    • Dynamic help display that respects language preferences
    • Extensible i18n framework for future language additions

    ⚡ Power CLI Features

    • Multi-host operations with parallel execution support
    • Built-in tmux session management for concurrent connections
    • Advanced file transfer operations across multiple hosts
    • Host discovery and interactive selection (--pick)

    🏗️ Major Improvements

    🧹 Code Architecture Cleanup

    • Removed 180+ lines of dead TUI code and dependencies
    • Eliminated unused dependencies: github.com/rivo/tview, github.com/gdamore/tcell/v2
    • Consolidated 85+ lines of duplicated SSH connection logic
    • Modular code organization with focused helper functions

    🐛 Critical Bug Fixes

    • FIXED: Password prompts now display correctly (user@host instead of garbled text)
    • FIXED: i18n formatting issues throughout the application
    • FIXED: Race conditions in parallel authentication and terminal management
    • FIXED: Windows cross-compilation compatibility

    🧪 Enhanced Testing & Quality

    • Comprehensive test suite: 14.5% → 22% coverage improvement
    • New test files: i18n_test.go, ssh_helpers_test.go, terminal_state_test.go
    • Race condition testing: Concurrent access validation for critical components
    • Thread safety: Improved synchronization and mutex usage

    🔧 Cross-Platform Support

    Pre-built binaries for all major platforms:

    • Linux: AMD64, ARM64
    • macOS: AMD64 (Intel), ARM64 (Apple Silicon)
    • Windows: AMD64, ARM64

    💾 Installation

    Quick Install (Linux/macOS)

    # Linux AMD64
    curl -L -o ts-ssh https://github.com/derekg/ts-ssh/releases/download/v0.3.0/ts-ssh-linux-amd64
    chmod +x ts-ssh && sudo mv ts-ssh /usr/local/bin/
    
    # macOS (detect architecture automatically)
    curl -L -o ts-ssh https://github.com/derekg/ts-ssh/releases/download/v0.3.0/ts-ssh-darwin-$(uname -m  < /dev/null |  sed 's/x86_64/amd64/')
    chmod +x ts-ssh && sudo mv ts-ssh /usr/local/bin/

    Windows

    Download the appropriate .exe file:

    Build from Source

    git clone https://github.com/derekg/ts-ssh.git
    cd ts-ssh
    go build -ldflags "-X main.version=v0.3.0" .

    🚀 Usage Examples

    Spanish Interface

    # Use Spanish interface
    ts-ssh --lang es --help
    ts-ssh --lang es --list
    
    # Set via environment  
    LANG=es ts-ssh --help

    Multi-Host Operations

    # Interactive host selection
    ts-ssh --pick
    
    # Parallel command execution
    ts-ssh --exec "uptime" host1,host2,host3 --parallel
    
    # Multi-host file transfer
    ts-ssh --copy "localfile host1,host2:/remote/path"

    📈 Impact

    Code Quality Metrics:

    • Removed: 568 lines (dead code elimination)
    • Added: 796 lines (tests + improvements)
    • Net Result: Cleaner, more maintainable, better tested codebase

    User Experience:

    • Fixed critical formatting bugs affecting daily usage
    • Enhanced error messages and troubleshooting
    • Multi-language support for international users
    • Better cross-platform compatibility

    🔄 Migration from Previous Versions

    • No breaking changes - all existing functionality preserved
    • Improved reliability - better error handling and user feedback
    • Enhanced features - new multi-host and i18n capabilities

    Semantic Versioning: This release follows semver.org guidelines. Thanks to the Hacker News community for the feedback on proper versioning practices!

    Full Changelog: v0.2.0...v0.3.0

    Open source →
    Release notes

    Date: 2025-06-18

    Major Improvements

    • 🧹 Complete TUI Code Cleanup
      Removed all dead terminal UI code and dependencies (180+ lines removed):

      • Eliminated unused connectToHostFromTUI function
      • Removed tuiMode parameter throughout codebase
      • Cleaned TUI dependencies: github.com/rivo/tview, github.com/gdamore/tcell/v2
      • Updated documentation to reflect streamlined CLI-only architecture
    • 🔧 SSH Code Consolidation
      Major refactoring of SSH connection logic:

      • Extracted shared executeCommandOnHost helper (~85 lines of duplication removed)
      • Standardized SSH connection patterns across all modules
      • Created comprehensive SSH helper functions in ssh_helpers.go
      • Thread-safe authentication with proper mutex protection
    • 🐛 Critical i18n Formatting Fixes
      Resolved double-formatting issues affecting user experience:

      • Fixed: Password prompts now display derek@bar instead of %!!(string=derek)s(MISSING)@%!!(string=bar)s(MISSING)
      • Fixed: Error messages with proper argument substitution
      • Improved: Consistent T() function usage patterns across codebase
    • 🧪 Enhanced Test Coverage
      Comprehensive test suite expansion (14.5% → 22% coverage):

      • New: i18n_test.go - Race condition testing for concurrent translations
      • New: ssh_helpers_test.go - SSH connection and authentication testing
      • New: terminal_state_test.go - Thread-safe terminal state management
      • Enhanced: main_test.go with additional utility function coverage

    Architecture Improvements

    • 📁 Modular Code Organization
      Split monolithic functions into focused, maintainable modules:

      • main_helpers.go - Command-line argument parsing and operation routing
      • ssh_helpers.go - Standardized SSH connection establishment
      • terminal_state.go - Thread-safe terminal state management
      • constants.go - Centralized application constants and configuration
    • 🏗️ Race Condition Fixes
      Comprehensive thread safety improvements:

      • Thread-safe i18n system with proper mutex protection
      • Concurrent SSH authentication with shared mutex for password prompts
      • Terminal state management with atomic operations
    • 📚 Enhanced Documentation
      Comprehensive documentation for all public functions:

      • Detailed parameter descriptions and return value documentation
      • Usage examples and workflow explanations
      • Updated CLAUDE.md with current architecture overview

    Performance & Quality

    • ⚡ Build Improvements

      • Removed unused imports and dependencies
      • Centralized magic numbers into named constants
      • Improved function naming for clarity and consistency
    • 🔒 Better Error Handling

      • Consistent error patterns across all modules
      • Enhanced error context with better user-facing messages
      • Proper resource cleanup and defer patterns

    Breaking Changes

    • None - All changes are backward compatible
    • Users will notice improved password prompt formatting
    • CLI behavior and flags remain unchanged

    Technical Details

    Files Added:

    • constants.go - Application-wide constants
    • main_helpers.go - Refactored CLI argument handling
    • ssh_helpers.go - SSH connection utilities
    • terminal_state.go - Thread-safe terminal management
    • *_test.go - Comprehensive test suites

    Dependencies Removed:

    • github.com/rivo/tview (TUI framework)
    • github.com/gdamore/tcell/v2 (Terminal cell library)
    • Related indirect dependencies automatically cleaned

    Code Metrics:

    • Removed: 568 lines (dead code elimination)
    • Added: 796 lines (tests + architectural improvements)
    • Net Result: Improved maintainability, better test coverage, cleaner codebase

    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive