🚀 Features & Enhancements
- UDP Datagram-Only Mode: Added
DialUDPDatagramOnlyfor strict UDP send semantics, dropping packets that exceed the budget or arrive during reconnection instead of falling back to reliable streams. This allows tunneled protocols (like QUIC) to properly run path MTU discovery (#44). - Transport Statistics: Exposed per-connection transport stats via
SshUdpClient.GetTransportStats(), providing QUIC/KCP metrics (RTT, retransmits, byte/packet counts) for client UIs (#44). - Health Event Hooks: Added
SshUdpClient.OnHealthEventto push heartbeat timeout and recovery transitions to embedding apps, eliminating the need to pollGetLastActiveTime(#44). - Go 1.26 Upgrade: Upgraded project environment and GitHub Actions CI to Go 1.26.
- Improved Logging: The server now logs the UDP network and address.
🐛 Bug Fixes
- Session Output Loss: Fixed an issue where
cmd.Waitprematurely closed pipe readers, causing buffered output to drop if forwarding was slower than the process exit (#45). - Memory Leak in Attachable Mode: Fixed a
tsshdsession memory leak by moving from per-session reconnect callbacks to a server-level callback, allowing completed sessions to be garbage collected (#40). - Background Stderr Handling: Fixed
tsshdbackground process stderr handling (Resolves trzsz/trzsz-ssh#283).
🧰 Maintenance & Refactoring
- Replaced
strings.ToLowerequality checks withstrings.EqualFold. - Updated project dependencies.
Full Changelog: v0.1.9...v0.1.10