Repository navigation
Releases
v5.6.0
Improvements
-
Unified API prefix (breaking change)
- All HTTP API endpoints now use the
/apiprefix, including terminal WebSocket connections and device web access. Update custom integrations and reverse-proxy rules accordingly, for example/groups→/api/groupsand/connect/:devid→/api/connect/:devid.
- All HTTP API endpoints now use the
-
Device-aware authorization hooks
- User hooks now receive server-provided
X-Rttys-Device-IDandX-Rttys-Groupheaders. IncomingX-Rttys-*headers are filtered out, and hook authorization also covers serial-port discovery and share creation, listing, and deletion.
- User hooks now receive server-provided
-
Reorganized source and build layout
- The server entry point is now
cmd/rttys, build scripts are inscripts/, and deployment templates are indeploy/. Docker and release builds use the updated layout; custom source-build workflows should update their paths.
- The server entry point is now
New Features
-
Remote serial console
- Browse a device's serial ports and open a console from the Web UI with configurable baud rate, data bits, stop bits, and parity. The console reports busy ports, permission errors, unavailable ports, and unsupported clients. Requires a device client with serial support using protocol version 6 or later.
-
Temporary SSH and TCP sharing
- Share device terminals and serial consoles through SSH with a generated temporary password, or forward a server port to an IPv4 TCP service reachable from the device. Serial and TCP shares require a device client supporting the corresponding features with protocol version 6 or later.
- Create and manage shares in the Web UI, copy connection details, view connection counts, and end shares manually. Shares expire after a configurable period with no active connections; the UI offers 1, 5, 15, 30, or 60 minutes. Configure the listening address, public hostname, port range, and SSH host-key path on the server.
- TCP shares provide direct forwarding without an additional share password; access authentication is handled by the target service.
Full Changelog: v5.5.3...v5.6.0
改进优化
-
统一 API 前缀(不兼容变更)
- 所有 HTTP API 端点统一使用
/api前缀,包括终端 WebSocket 连接和设备 Web 访问。自定义集成及反向代理规则需同步调整,例如/groups→/api/groups、/connect/:devid→/api/connect/:devid。
- 所有 HTTP API 端点统一使用
-
完善授权钩子的设备信息
- 用户授权钩子现在接收由服务端设置的
X-Rttys-Device-ID和X-Rttys-Group请求头,并过滤原始请求中的X-Rttys-*请求头。授权检查同时覆盖串口列表查询,以及分享的创建、列表查询和删除。
- 用户授权钩子现在接收由服务端设置的
-
调整源码与构建目录布局
- 服务端入口移至
cmd/rttys,构建脚本移至scripts/,部署模板移至deploy/。Docker 和发布构建已适配新布局,自定义源码构建流程需同步更新路径。
- 服务端入口移至
新功能
-
远程串口控制台
- 支持在 Web UI 中查看设备串口列表并打开控制台,可配置波特率、数据位、停止位和校验方式。控制台可提示串口占用、权限不足、串口不可用及客户端不支持等问题。需要使用支持串口功能且协议版本为 6 或更高的设备客户端。
-
临时 SSH 和 TCP 分享
- 支持通过 SSH 分享设备终端和串口控制台,并生成临时密码;也可将服务端端口转发至设备可访问的 IPv4 TCP 服务。串口和 TCP 分享需要使用支持相应功能且协议版本为 6 或更高的设备客户端。
- 可在 Web UI 中创建和管理分享、复制连接信息、查看连接数及手动结束分享。分享在持续无活动连接达到设定时长后自动关闭,界面提供 1、5、15、30 或 60 分钟选项。服务端可配置监听地址、对外主机名、端口范围及 SSH 主机密钥路径。
- TCP 分享直接转发连接,不额外设置分享密码,访问认证由目标服务负责。
完整变更记录: v5.5.3...v5.6.0
v5.5.3
Bug Fixes & Improvements
- Improve file upload performance
- Allows up to 16 file blocks in flight when uploading from the browser to a device, reducing acknowledgement delays and improving throughput on high-latency connections. No device-side update is required.
- Fix file transfer cleanup and consecutive downloads
- Cleans up transfer state on cancellation, read failure, disconnection, and component teardown, preventing stale read callbacks from affecting subsequent transfers.
- Prevents delayed cleanup from a previous download from discarding data belonging to the next download.
- Clean up HTTP proxy sessions when devices disconnect
- Automatically removes associated HTTP proxy sessions when a device disconnects, preventing retained sessions from accumulating in memory.
- UI: Keep terminal windows after disconnection
- Preserves terminal windows and their output after disconnection so users can inspect the last session state.
- UI: Limit terminal splits to six panes
- Limits terminal layouts to six panes and displays a notification when the limit is reached.
Full Changelog: v5.5.2...v5.5.3
修复与改进
- 提升文件上传性能
- 浏览器向设备上传文件时,允许最多 16 个数据块在途,减少逐块等待确认的开销,改善高延迟网络下的上传性能,无需更新设备端。
- 修复文件传输清理和连续下载问题
- 在取消、读取失败、断连和组件卸载时清理传输状态,防止旧读取回调干扰后续传输。
- 避免前一次下载的延迟清理误删下一次下载的数据。
- 设备断开连接时清理 HTTP 代理会话
- 设备断开连接后自动移除关联的 HTTP 代理会话,避免残留会话持续占用内存。
- UI:连接断开后保留终端窗口
- 连接断开后保留终端窗口和输出,便于用户查看断开前的会话状态。
- UI:终端分屏最多支持六个窗格
- 将终端分屏数量限制为六个,达到上限时显示提示。
完整变更记录: v5.5.2...v5.5.3
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