Skip to content

v0.1.7

Latest

Choose a tag to compare

@lonnywong lonnywong released this 03 May 00:51
· 6 commits to main since this release
7a0d945

What's Changed

This release brings several major features and architectural improvements, enhancing connection flexibility, compatibility, and extensibility for developers.

🌟 Major Features

  • Support UDP Port Forwarding: Fully supports UDP local and remote port forwarding. You can now route UDP traffic using the -L udp/... or -R udp/... CLI options, or via UdpLocalForward and UdpRemoteForward in your config. Forwarding via unixgram sockets is also supported.
  • Support Rootshell Client & Session Attach: Removed the local listener mechanism and introduced the ability to re-attach to an existing server session after a client app relaunch or device reboot. This "attach" capability was specifically implemented to provide first-class support for the rootshell client (a free, Metal-accelerated terminal emulator for iPhone, iPad, Vision Pro, and Mac).
  • Middleware Framework for Custom SSH Business Logic: Introduced a powerful middleware framework. Developers can now easily inject custom interactive logic into SSH sessions, leveraging tsshd's underlying capabilities to quickly build custom SSH servers with built-in seamless roaming and low-latency features.

🛠 Configuration & OpenSSH Compatibility

  • Priority Configuration File: tsshd now uses $XDG_CONFIG_HOME/tsshd/sshd_config (defaults to ~/.config/tsshd/sshd_config) as the highest-priority configuration file. If present, it takes precedence over the system's OpenSSH configuration.
  • OpenSSH-Aligned AcceptEnv Support: Fully implemented AcceptEnv support to align with OpenSSH behavior. It now defaults to accepting LANG and LC_* for better cross-distro compatibility. Additionally, DISPLAY and SSH_AUTH_SOCK are correctly passed to the session environment.
  • Honor StreamLocalBindMask and StreamLocalBindUnlink: Aligned Unix Socket remote forwarding behavior with OpenSSH. It now safely unlinks existing sockets before binding and utilizes an inode/dev identity check during exit cleanup to prevent accidentally deleting another process's socket.

🐛 Enhancements & Fixes

  • Network & Transport:
    • Added support for custom UDP MTU sizes.
    • Delegated KCP crypto to the proxy layer and fixed stale packet encryption issues across rekeys.
    • Implemented traffic sampling and playback to accelerate QUIC/KCP state recovery.
    • Introduced proactive dummy packet injection to prevent connection deadlocks during re-authentication.
  • Connection Stability:
    • Supported per-session discardPendingInput and simplified the discard callback logic.
  • Observability & Refactoring:
    • Improved keepalive logging to provide better diagnostics for reconnections and connection stabilization.
    • Suppressed noisy logs generated upon client-initiated UDP connection closures.
    • Optimized error handling and improved overall code readability.

New Contributors

Full Changelog: v0.1.6...v0.1.7