Skip to content

Releases: blacknon/lssh

Version 0.9.0

12 Apr 11:08

Choose a tag to compare

v0.9.0

lssh-suite 0.9.0 is a substantial update that expands the project from a TUI-first SSH client into a broader multi-command SSH operations suite. This release adds new tools for diff, mount, and pipe-oriented workflows, improves configuration compatibility with OpenSSH, and strengthens packaging, completion, and test coverage across the project.

Highlights

  • Added lsdiff: a synchronized TUI diff viewer for comparing remote files across multiple SSH hosts.

  • Added lsshfs: a single-host SSH mount command with OS-specific local mount backends.

    • Linux uses FUSE
    • macOS uses NFS
    • Windows is not supported in 0.9.0
  • Added lspipe: a persistent pipe-oriented runner that keeps a selected host set in the background and reuses it from local shell pipelines.

  • Added OpenSSH config import and --generate-lssh-conf support to help bootstrap lssh config from existing ~/.ssh/config.

  • Expanded conditional config matching for more context-aware host selection and overrides.

  • Improved installation, packaging, shell completions, and release layout for the full suite.

New commands

lsdiff

Compare the same remote path across multiple hosts, or compare explicit @host:/path targets in a synchronized multi-pane TUI.

lsshfs

Mount one remote directory from one selected host using the same inventory and host-selection flow as lssh. In 0.9.0, supported client platforms are:

  • Linux: FUSE
  • macOS: NFS
  • Windows: unsupported

lspipe

Create a reusable background session for a chosen host set, then execute commands or bridge local workflows through pipes/FIFOs.

Configuration improvements

  • Added generation of minimal lssh config from OpenSSH host entries.
  • Added fallback flow when an lssh config file does not exist.
  • Improved conditional matching and config resolution behavior.
  • Kept parser/generator behavior aligned by using the vendored ssh_config fork internally.

Packaging and installation

This release provides both a full suite package and split packages:

  • lssh_*: full suite
  • lssh-core_*: lssh
  • lssh-transfer_*: transfer/diff/mount tools
  • lssh-monitor_*: lsmon
  • lssh-sysadmin_*: lsshell, lsmux, lspipe

Shell completions for bash, zsh, and fish are included.

Compatibility notes

  • lsshfs is supported on Linux and macOS in 0.9.0.
  • lsshfs is not supported on Windows in 0.9.0 and is excluded from Windows release packaging.

Quality and test coverage

This release also adds broader regression coverage for:

  • build/install layout
  • CLI version/help metadata
  • lspipe session and execution behavior
  • lsshfs runner/background/unmount behavior
  • config fallback and OpenSSH import behavior

Packaging and release artifact fixes

This release also fixes packaging gaps from earlier artifacts.

For example, the v0.8.0 darwin_arm64 package did not include lssync in bin/, even though lssync was part of the intended build/install command set for that release.

In v0.9.0, the release workflow and package layout were updated so the expected command set is bundled more consistently across platforms and package types. This also includes newer suite commands such as lsmux, lsdiff, lspipe, and lsshfs where supported, with platform-specific exclusions applied where necessary, such as lsshfs on Windows.

Thanks

Thanks to everyone testing the new workflows and especially the real-machine validation around lsshfs before release.

Version 0.8.0

08 Apr 17:23
1c262e7

Choose a tag to compare

lssh v0.8.0

v0.8.0 is a larger minor release from v0.7.1, bringing together several major feature additions.
This release introduces the new TUI multiplexer lsmux and the new one-way sync command lssync. It also includes many practical improvements for day-to-day operations, such as conditional config switching, opening terminals directly from lsmon, and launching the mux UI from lssh.

Highlights

  • Added lsmux

    • Introduces a tmux-like pane-based SSH client
    • Lets you view and operate on multiple hosts at the same time
    • Supports command panes, broadcast input, and pane-local file transfer
    • Reuses the existing lssh host inventory as-is
  • Added lssync

    • Introduces a one-way sync command built on SSH/SFTP
    • Supports local-to-remote, remote-to-local, and remote-to-remote sync without requiring rsync on the remote side
    • Supports deleting destination-only entries with --delete
  • Added conditional config overrides with match / when.*

    • You can now switch settings based on local IP, OS, terminal type, environment variables, and more
    • This makes it easier to handle things like proxy switching by network or hiding hosts depending on where you are connecting from

Improvements

  • Enhanced lsmon

    • You can now open a terminal for the selected host from the top-style viewer with Ctrl + T
    • --share-connect allows terminal sessions to reuse the monitor connection
  • Enhanced lssh

    • Added -P to launch the lsmux-compatible mux UI directly from lssh
    • Added support for --hold and --allow-layout-change to improve multi-host command workflows
  • Enhanced lsshell

    • Added %sync, allowing one-way sync operations directly from inside the shell
  • Improved transfer workflows

    • Refined path resolution and transfer handling around lscp, lsftp, and lssync
  • Updated documentation and packaging

    • Reworked the README to make command roles clearer
    • Updated package layout to make installation by use case easier

Notes

  • lssh, lscp, and lsftp are considered stable
  • lssync, lsmon, lsshell, and lsmux are currently considered beta
  • lsmux and lssync are the main additions in this release, so feedback is especially welcome

Thanks

Main changes included in this release:

  • Added lsmux
  • Added lssync
  • Added conditional configuration with match / when
  • Added terminal integration to lsmon
  • Added lssh -P
  • Updated documentation and demo environment

Version 0.7.1

06 Apr 13:46
f80e42e

Choose a tag to compare

v0.7.1

This release is a bugfix release focused on stability improvements around ControlMaster, forwarding, CI, and the demo environment.

Fixes

  • Fixed forwarding behavior when ControlMaster is enabled
  • Fixed local forward (-L) under ControlMaster-enabled connections
  • Fixed dynamic forward / SOCKS5 (-D) under ControlMaster-enabled connections
  • Fixed remote forward (-R) handling and added demo coverage for it
  • Fixed forwarding-related behavior by updating bundled go-sshlib
  • Fixed SFTP/subsystem handling used by ControlMaster-based forwarding paths
  • Fixed demo E2E coverage by adding ControlMaster forwarding scenarios
  • Fixed vendored dependency state so demo builds use the updated go-sshlib
  • Fixed GitHub Actions setup to use the Go version declared in go.mod
  • Fixed GitHub Actions warnings by updating deprecated Node 20-based actions
  • Fixed GitHub Actions cache restore instability by disabling setup-go built-in cache in workflows
  • Fixed demo sshd-based containers to include nc for easier diagnostics and checks

CI / Workflow Updates

  • Updated actions/checkout to v5
  • Updated actions/setup-go to v6
  • Updated actions/upload-artifact to v6
  • Updated actions/download-artifact to v7
  • Updated jdx/mise-action to v4
  • Replaced actions/create-release@v1 with gh release create

Demo / Test Updates

  • Added ControlMaster-enabled demo targets
  • Added demo checks for:
    • local forwarding
    • dynamic forwarding
    • remote forwarding

Notes

  • This release is recommended for users relying on ControlMaster
  • Especially recommended if you use port forwarding or SOCKS proxy mode

Version 0.7.0

05 Apr 08:19

Choose a tag to compare

Release Highlights

This release brings a major update across the lssh suite, with new demo and test infrastructure, stronger SSH session reuse, better proxy support, and substantial improvements to lsshell, lsftp, and lscp.
Additionally, the sub-projects lsmon and lsshell have been integrated.

Added

  • Added a full Docker Compose based demo environment under demo/
  • Added end-to-end tests for the demo environment
  • Added examples for:
    • password authentication
    • public key authentication
    • SSH proxying
    • HTTP proxying
    • SOCKS5 proxying
    • nested proxy chains
    • bastion-style access
    • local_rc based shell customization
  • Added ControlMaster / ControlPersist support
  • Added tunnel support with --tunnel
  • Added background execution support with -f
  • Added new mise tasks for demo usage and testing
  • Added CI workflows for release, tests, and demo E2E verification

Improved

  • Improved lsshell with process substitution support and better local command integration
  • Improved lsshell completion and duplicate server handling
  • Improved lsftp command set, including copy-related operations
  • Improved lscp stability, including parallel copy behavior
  • Improved proxy routing support, including multi-hop SSH/HTTP/SOCKS combinations
  • Improved OpenSSH config handling and ControlPersist integration
  • Improved Windows build compatibility across the project
  • Reworked and expanded the documentation across the main README, command READMEs, and demo guide

Fixed

  • Fixed several lsshell issues around outexec, server completion, and command behavior
  • Fixed lscp / lsftp issues related to Windows support
  • Fixed ControlPersist and proxy route handling in SSH connections
  • Fixed multiple demo and CI issues discovered while adding E2E coverage
  • Bugfix #146, #105

Notes

  • This release includes substantial internal refactoring across command entrypoints, configuration loading, SSH connection handling, monitor support, and vendored dependencies.
  • The demo environment is now one of the easiest ways to validate real-world connection patterns locally before using them in production.

Version 0.6.14

21 Mar 16:06

Choose a tag to compare

  • Upgrade packages
  • Add knownhost check

Version 0.6.13

09 Sep 14:35
105ec27

Choose a tag to compare

  • bugfix: when selecting a server from the second page onwards using the mouse.
  • bugfix: Corrected to disconnect if ssh connection is made using Proxy when ssh connection fails.
  • update go-sshlib. v0.1.16 to v0.1.18

Version 0.6.12

23 Aug 05:18
c64840c

Choose a tag to compare

Version 0.6.11

11 Aug 02:15
a742f2b

Choose a tag to compare

  • Debug. where keys in Server config were not inherited when they were of int type.

Version 0.6.10

10 Aug 15:22
12b2e90

Choose a tag to compare

  • update go-sshlib (bugfix)

Version 0.6.9

10 Jul 14:34
190bbba

Choose a tag to compare

  • update go-sshlib
  • bugfix #137