Releases: zhaojh329/rttys
Releases · zhaojh329/rttys
v5.5.2
Bug Fixes & Improvements
- Prevent accidental removal of existing device on duplicate ID conflict
- When a new device connection with a duplicate ID is closed, only the new (unregistered) device is removed, preserving the existing device in the registry. This ensures legitimate devices remain connected when duplicate connection attempts occur.
- HTTP connection termination notification for http proxy
- Adds notification logic for HTTP proxy connections when they are terminated.
- UI: Add banner info
- Adds banner information to the UI for better user experience.
Full Changelog: v5.5.1...v5.5.2
修复与改进
- 防止因设备ID冲突误删已存在设备
- 当有重复ID的新设备连接关闭时,仅移除新(未注册)设备,保留原有设备在注册表中。这样可确保合法设备在发生重复连接时不会被误删。
- HTTP代理支持连接断开通知
- 增加HTTP代理连接断开时的通知逻辑。
- UI:增加 banner 信息
- UI界面增加 banner 信息,提升用户体验。
完整变更记录: v5.5.1...v5.5.2
v5.5.1
Improvements
- Refactored HTTP proxy request handling for improved performance
- Added logic to set default port based on protocol in HTTP proxy
- Externalized HTTP proxy error page into a separate file
- Updated to use
github.com/zhaojh329/rtty-go/protopackage
Optimizations
- Replaced string-based keys with byte arrays for HTTP proxy in sync.Map
- Stripped default ports (80 for HTTP, 443 for HTTPS) from Host header in HTTP proxy to comply with HTTP specifications
Full Changelog: v5.5.0...v5.5.1
改进
- 重构了HTTP代理请求处理,提高了性能
- 在HTTP代理中添加了基于协议设置默认端口的逻辑
- 将HTTP代理错误页面提取到单独的文件中
- 更新为使用
github.com/zhaojh329/rtty-go/proto包
优化
- 在HTTP代理的sync.Map中用字节数组替换字符串键
- 从HTTP代理的Host头中移除默认端口(HTTP的80和HTTPS的443),以符合HTTP规范
完整变更记录: v5.5.0...v5.5.1
v5.5.0
Major Changes
- Reintroduce TLS support for device listener to preserve client IP visibility. Previously, TLS termination was moved to nginx for better separation of concerns, but this introduced an issue where all device connections appeared to originate from 127.0.0.1, masking actual device IP addresses and preventing accurate IP-based device identification.
Improvements
- Device registration parsing with robust error handling - provides clearer failure diagnostics and prevents invalid device registrations from compromising system stability.
- Optimize configuration parsing - reduce redundant code and add fault tolerance handling.
Full Changelog: v5.4.1...v5.5.0
主要变更
- 重新引入设备监听器的 TLS 支持,以保持客户端 IP 可见性。之前为了更好的关注点分离,将 TLS 终止移到了 nginx,但这导致所有设备连接都显示为来自 127.0.0.1,掩盖了实际的设备 IP 地址,阻碍了基于 IP 的设备识别和报告。
改进
- 设备注册解析增加强健的错误处理 - 提供更清晰的故障诊断,防止无效的设备注册损害系统稳定性。
- 优化配置解析 - 减少冗余代码并增加容错处理。
完整变更记录: v5.4.1...v5.5.0
v5.4.1
Major Changes
- Remove log file fallback for non-TTY output. Systemd now handles all log persistence via journald, avoiding duplication and conflicts with standard logging practices. View logs with
journalctl -u rttys. - Update Go module name to
github.com/zhaojh329/rttys/v5for compliance with Go module specifications.
New Features
- Add support for changing terminal font size via shortcut key.
- Add support for find/search in terminal.
UI Improvements
- Optimize context menu display effect.
- Optimize terminal display effect.
Full Changelog: v5.3.0...v5.4.1
主要变更
- 移除非TTY输出时的日志文件写入,日志持久化统一交由 systemd 的 journald 管理,避免重复和冲突。可用
journalctl -u rttys查看日志。 - Go module 名称更新为
github.com/zhaojh329/rttys/v5,符合 Go 语言模块规范。
新特性
- 支持通过快捷键调整终端字体大小。
- 支持终端查找/搜索功能。
UI 优化
- 优化右键菜单显示效果。
- 优化终端显示效果。
完整变更记录: v5.3.0...v5.4.1
v5.3.0
New Features
- ✨ Virtual Keyboard Support:
- Added RttyKeyboard component. On mobile, a custom virtual keyboard can be shown, supporting various key combinations.
- The virtual keyboard is draggable, greatly improving mobile experience.
- ✨ Terminal Window Split:
- Web UI now supports splitting the terminal window to display multiple terminals for multitasking.
- ✨ Web Terminal Enhancements:
- Integrated @xterm/addon-web-links, making URLs in the terminal clickable.
- Improved font size settings for more flexible terminal display.
- ✨ Context Menu & Interaction Optimization:
- Context menu now supports smart positioning and improved appearance.
- Enhanced context menu i18n and style.
- ✨ UI Overhaul:
- All Vue components migrated to Composition API for a more modern and maintainable codebase.
- Visual improvements to terminal window, error pages, loading animations, and more.
Bug Fixes & Improvements
- Fixed resource release issues when WebSocket is closed.
- Improved terminal paste experience with permission guidance.
- Fixed details in ContextMenu, RttyTerm and other components.
- Backend improvements: authentication logic, login timeout, HTTP proxy error responses, etc.
- Improved i18n, fixed some English and Chinese translations.
- Enhanced terminal scrolling and window size sync experience.
Compatibility & Configuration
- Removed redundant cookies, simplified session management.
- Added pprof performance profiling support.
- Minor adjustments to config files and service scripts.
新特性
- ✨ 虚拟键盘支持:
- 新增 RttyKeyboard 组件,移动端可弹出自定义虚拟键盘,支持多种组合键输入。
- 虚拟键盘可拖动,极大提升移动端体验。
- ✨ 终端窗口分屏:
- 支持在 Web UI 中分屏显示多个终端,提升多任务操作效率。
- ✨ Web 终端增强:
- 集成 @xterm/addon-web-links,终端内 URL 可直接点击跳转。
- 优化字体大小设置,支持更灵活的终端显示调整。
- ✨ 右键菜单与交互优化:
- 右键菜单支持智能定位,显示效果更美观。
- 优化右键菜单的多语言和样式。
- ✨ UI 全面升级:
- 所有 Vue 组件迁移为 Composition API,代码更现代、易维护。
- 终端窗口样式、错误页、加载动画等多处视觉优化。
Bug 修复与细节改进
- 修复 WebSocket 关闭时未正确释放资源的问题。
- 优化终端粘贴体验,增加权限提示。
- 修复 ContextMenu、RttyTerm 等组件的细节问题。
- 优化认证逻辑、登录超时处理、HTTP 代理错误响应等后端细节。
- 多语言完善,修正部分英文与中文翻译。
- 终端滚动、窗口尺寸同步等体验提升。
兼容性与配置
- 移除部分冗余 cookies,简化 session 管理。
- 增加 pprof 性能分析支持。
- 配置文件、服务启动脚本等小幅调整。
Full Changelog: v5.2.0...v5.3.0
v5.2.0
🎉 What's New
🔗 User Hook URL Support
- Added user hook URL support for API access validation
- Forward all original HTTP headers plus custom rttys headers:
X-Rttys-Hook: trueX-Original-Method: original request methodX-Original-URL: original request URL
- Hook must return HTTP 200 to allow API access
- Enables external services to validate and control user API access
🛠️ Bug Fixes
Command Response Handling
- Fixed command response attrs handling using
json.RawMessage - Resolves issue with error responses like
{"token":"token","attrs":{"err":1,"msg":"xx"}} - Improves compatibility with different response formats
Cross-Platform Compatibility
- Fixed Windows build failures
- Separated signal handling into platform-specific files:
signal_unix.go- Unix/Linux signal handling withSIGUSR1signal_windows.go- Windows compatibility (no-op signal handling)
- Resolved
undefined: syscall.SIGUSR1error on Windows
📋 Configuration Improvements
- Enhanced configuration file documentation
- Improved clarity and examples in
rttys.conf - Better guidance for configuration options
🔧 Development & CI/CD
📦 Package Management
- Added Debian package creation script (
build-deb.sh) - Support for creating
.debpackages for amd64 and arm64 - Improved systemd service configuration
🚀 CI/CD Enhancements
- Enhanced GitHub Actions workflows:
- Added Windows build support in CI
- Optimized build workflow to skip on tag pushes
- Improved release asset handling
- Better automation for multi-platform releases
Full Changelog: v5.1.0...v5.2.0
v5.1.0
Overview
This release focuses on improving user experience with enhanced clipboard operations
and providing better system monitoring capabilities through new API.
🚀 New Features
API Enhancements
- New
/countsAPI: Added a new API that returns the total count of connected devices across all device groups- API:
GET /counts - Response:
{"count": <total_number>} - Authentication: Requires proper authorization
- API:
UI/UX Improvements
- Direct clipboard paste functionality: Enhanced the terminal context menu with direct paste capability
- Users can now paste content directly from the right-click context menu
- Utilizes modern Clipboard API with proper browser permission handling
- Graceful fallback to keyboard shortcut instructions for unsupported browsers
- Supports both successful paste operations and permission-denied scenarios
🔧 Improvements
Message System Enhancements
- Improved user feedback: Updated clipboard operation messages for better user experience
- Changed copy message from "Already copied to clipboard" to "Copied to clipboard"
- Upgraded message types from
infotosuccessfor copy, paste, and file operation instructions
Full Changelog: v5.0.0...v5.1.0
v5.0.0
🎉 Major Architectural Changes
🔥 Breaking Changes
- Removed built-in TLS support - TLS termination is now handled exclusively by reverse proxy (e.g., Nginx)
- Removed database support - Simplified architecture by eliminating database dependencies
- Removed multi-user support - Streamlined to single-user mode for better performance
- Removed device whitelist support - Simplified device management approach
⚡ Performance Improvements
- Refactored message distribution process - Improved message handling efficiency
- Implemented TLV (Type-Length-Value) message parsing - Better protocol efficiency for device messages
- Optimized HTTP session management - Enhanced connection handling
- Optimized device registration process - Faster device connection establishment
- Improved file upload speed - Better performance for file transfer operations
- Enhanced device heartbeat mechanism - More efficient connection monitoring
🚀 New Features
🌐 Cross-Origin Support
- Added
allow-originsconfiguration option - Better CORS handling for web applications
📡 Device Management
- Added API endpoint
/dev/:devid- Retrieve specific device information - Support for heartbeat interval from rtty client - Configurable connection monitoring
- Added panic logging in daemon mode - Better error tracking and debugging
- Added device Grouping Support - Allows organizing devices into logical groups for better management
- Added show IP Address in dashboard
🖥️ UI Enhancements
- More convenient device web access - Streamlined user experience
- Enhanced terminal font size control - Better terminal customization
- Submit on Enter key in Login page - Improved user interaction
🔧 Configuration Changes
Simplified Configuration
- Replaced
dev-auth-urlwithdev-hook-url- More descriptive naming - Password no longer required for command execution - Simplified authentication flow
🛠️ Technical Improvements
Code Quality
- Updated CLI framework to
github.com/urfave/cli/v3- Modern CLI handling - Updated all packages to latest versions - Security and stability improvements
- Fixed memory leak in
httpProxyCons- Better resource management - Fixed
GenUniqueIDfunction - More reliable ID generation - Improved error handling - Close device on invalid message type
- Added expiration for HTTP proxy sessions - Better session management
- Ensured client is only closed once - Prevented race conditions
- Fixed device message length validation - Better protocol compliance
💔 Removed Features
- Built-in TLS/SSL support (use reverse proxy instead)
- Database integration
- Multi-user authentication system
- Device whitelist functionality
- Font size API endpoint
- Generate token command line option
🔄 Migration Guide
From v4.4.5 to v5.0.0
- TLS Configuration: Set up Nginx or another reverse proxy for TLS termination
- Database: Remove any database-related configurations
- Multi-user: Migrate to single-user authentication model
- Configuration: Update
rttys.confto remove deprecated options - Device Management: Update any integrations that relied on device whitelist
Note: This release focuses on simplification and performance improvements. The removal of built-in TLS, database, and multi-user support makes rttys more lightweight and easier to deploy while maintaining core functionality.
🔗 Full Changelog
For detailed commit history, see: v4.4.5...v5.0.0
v4.4.5
Features
- bump version 4.4.5 (Jianhui Zhao)
Bug Fixes
- Fix the device heartbeat detection mechanism (Jianhui Zhao)
v4.4.4
Features
- bump version 4.4.4 (Jianhui Zhao)
Bug Fixes
- prevent concurrent map access with sync.Map (Jianhui Zhao)
Performance Improvements
- optimize JSON message construction using
fmt.Appendf(Jianhui Zhao) - replace
interface{}withany(Jianhui Zhao) - replace
ioutil.ReadAllwithio.ReadAll(Jianhui Zhao)