v1.9.5
What's Changed
New Features
- Tray: a system tray icon with left-click show/hide and a menu (show window, hide to tray, reset window position, open settings, about, quit), an OS-global show/hide hotkey (default Ctrl+M, configurable in the keyboard settings), and single-instance locking — launching a second instance focuses the running window instead.
- Workspace overhaul: workspaces are now built by pointing and clicking — an "open in workspace" context-menu entry (multi-select aware) and an empty workspace with a drag-here placeholder; connections dragged onto a panel connect and split at the drop position. A workspace can be dissolved (members return to the tab bar as live tabs, broadcast and AI lock preserved) and saved as a "workspace"-type connection that rebuilds the live workspace on open. Connections can also be dragged onto the tab bar to open a tab at that position.
- SSH: per-connection algorithm modes — compatible (default, full support set with security-leaning ordering), secure (modern algorithms only: no SHA-1 exchanges, CBC ciphers or DSA host keys) and custom (four editable, ordered preference lists for key exchange, ciphers, MACs and host keys, validated against a closed candidate pool). Compatible mode completes the AES-CBC family (aes192-cbc / aes256-cbc) and prefers plain RSA host keys, so legacy devices and servers with malformed ECDSA P-521 keys still connect; negotiation failures carry mode-specific guidance.
- SSH: "duplicate channel" — open a new tab as a fresh session channel on the source session's already-authenticated connection: no re-dial, no re-authentication (handy behind a jump host with 2FA). (@surenwuyuwuqiu)
- Terminal: sixel and iTerm2 (OSC 1337) image support for remote terminals — images render directly in the terminal.
- Terminal: remote programs (vim, tmux, multi-hop SSH chains) can write to the local clipboard via OSC 52, and applications can drive a tab progress indicator via OSC 9;4, rendered as a thin bar along the tab's bottom edge (percentage / error / indeterminate / paused).
- Terminal: the text highlighting engine is rewritten — SGR re-injection is upgraded to overlay highlighting that recolors cells directly in the xterm buffer without touching the output stream, completely fixing cases where highlighting did not take effect and the garbled output caused by injection errors; highlighting also now applies to all terminal types (local, WSL, serial, k8s, container, telnet, SSH) instead of SSH only.
- Terminal: "reset terminal output" and "clear terminal scrollback" actions in the terminal / tab / panel context menus. Reset wipes the screen and the scrollback history and redraws the prompt (like MobaXterm's screen-cleaning); clear-scrollback drops only the rows above the viewport, leaving the screen and any half-typed command intact. Line numbers restart after either action. (@surenwuyuwuqiu)
- Terminal search: the first match is anchored at the bottom of the buffer (closest to the prompt) instead of the top of scrollback; Enter searches upward and Shift+Enter downward; the search bar gains case-sensitive, regex and whole-word toggles that persist across open/close.
- Import: SPICE/VNC
.vvconnection files used by Virt-Viewer (the one-shot desktop-session files downloaded from hypervisor VM console pages) can be imported, mapping type, host, port, username and password.
Improvements
- SSH: the silent cwd-reporting hook is now always injected invisibly after the shell starts, sessions start as plain shells again (sshd prints its own MOTD), and the per-connection toggle is removed — "follow terminal path" is a display-side switch.
- SFTP / SCP transfers are now pipelined — concurrent offset-addressed requests overlap round trips instead of stop-and-wait. A 4 MiB transfer over an 80 ms link drops from ~10.7 s to ~0.6 s (upload) and ~6.1 s to ~1.2 s (download); progress, pause and cancel semantics are unchanged.
- SFTP / SCP: standalone SFTP and SCP tabs gain an "open terminal" tab-context action, and SSH-derived file tabs gain it too — a file tab can now reach a shell on the same host and vice versa. (@surenwuyuwuqiu)
- Monitor: the process list now includes every process (previously the top 30 by CPU) with progressive loading as you scroll, so search finds all of them.
- Monitor: polling is robust against hosts whose script output leaves a variable empty (each numeric field defaults, raw output is logged on parse failure), df is guarded with a timeout so stale NFS mounts cannot wedge the poll loop, the disk list now includes every mounted filesystem (overlay, tmpfs, bind mounts) alongside block devices, and monitor table columns are drag-resizable.
- Native file pickers now open at a useful directory: the private-key picker starts at ~/.ssh, kubeconfig at ~/.kube, SFTP upload / "download to" at the local pane's directory — and hidden files are shown so dot-directories are reachable. (@surenwuyuwuqiu)
- Settings: the settings category sidebar is collapsible (auto-collapses on narrow windows) and setting cards stack vertically below phone widths, so settings are usable on small screens.
- New settings for the host list menu style (button or right-click only) and tab shortcut hints; the tab tooltip always shows the shortcut.
- Themes: a terminal theme submenu in the main menu (follow-app, built-in themes grouped dark/light, custom themes) applied live on click. The app theme now defaults to "system" (follows the OS color scheme) instead of dark, and theme / language / terminal-theme picks no longer close the menu, so options can be flipped through and previewed in place.
- Element-plus scrollbars stay visible and are styled like the native ones (no pointer cursor, instant hover highlight).
- UI: the app window gained a 1px outer frame with divider lines under the title bar and along both sidebar edges, staying visible on fractional-DPI displays; decorative gradient lines were removed from the title bar and sidebar, and the keyboard-settings table columns are unified.
Bug Fixes
- Terminal: pressing Enter in local sessions no longer resets mouse tracking, fixing wheel scrolling in fullscreen TUIs like vim. (@sonnartliao)
- Terminal: device query responses (cursor position, device status, window ops) are now passed through to the PTY. Apps that query the terminal and block on the answer — any
docker composeconfirmation prompt built on the survey library — previously froze the terminal completely, with no echo and a dead Ctrl-C. - Terminal: select-copy and right-click paste are self-healing — clipboard writes pick the best path per platform with a timeout and fall back to the other path, reads retry once to ride out transient clipboard locks, and re-selecting the same text copies again after a failed copy.
- Terminal: MAC addresses no longer highlight as clock times (the HH:MM:SS rule now requires time-like boundaries), and the keyword rules gained fatal / critical / exception / panic / abort (error) and bare warn / caution (warning).
- SSH: wrong-password failures surface faster — a rejected password reaches the interactive prompt in a single handshake, each re-challenge prints a denial line (matching the OpenSSH client), and auth-type failures open the credential dialog immediately instead of after two more reconnects.
- AI: command output from background panels is read correctly. Keep-alive-frozen panels previously returned stale or empty output and timed out; a headless mirror terminal now parses the session stream continuously and serves as the read source while the panel is inactive.
- AI: a command confirmed by the user is replayed on the panel the model targeted — in multi-panel mode it could previously run on the wrong terminal — and the confirmation card shows the target panel. (@surenwuyuwuqiu)
- AI: fixed a compatibility issue where the AI sidebar composer could not be clicked or typed into on WebKit shipped with older macOS versions. (@zhangsir1211)
- UI: AI lock is signalled by turning the tab and panel icons warning-coloured instead of tinting the whole tab surface, which read muddy on dark themes.
- Tabs: dragging to reorder no longer steals the selection to the neighbouring tab, and the tab merge drop-zone indicator matches the workspace split style.
- WSL: sessions start in the distro user's home directory instead of a /mnt/c path under the app's own working directory.
- Windows: the WebView2 autofill-wallet feature is disabled — WebView2 152/153 runtimes call LogonUser with an invalid password once per environment creation at startup (a Chromium regression), producing a 4625 failed-logon event per launch that can trip account lockout policies.
- Settings: tab shortcut hints and host list menu style persist across restarts (they silently reset before), and the system title bar choice survives a relaunch.
- Linux: the .desktop launcher path matches the packaged binary, so launching from the application menu works after installing the deb/rpm package. (@surenwuyuwuqiu)
- SFTP: the max concurrent transfers setting is shown for standalone SFTP connections (the backend applied it, but the form hid the field).
- UI: the connection form resets only after the dialog's close transition finishes, so default values no longer flash while the dialog fades out.
- UI: batch fixes — custom window controls stay drawn until the native title bar setting takes effect after a relaunch, the chmod octal input is a plain text field again, multi-file SFTP drags show a drag ghost, and the tab strip end-drop indicator no longer pushes the add button to the far right.
- SSH:
~in private key paths is expanded at import and connect time.
Notes
- As this open-source software has not purchased a code-signing certificate, the unsigned executable may trigger false positives in some antivirus engines (e.g. Windows Defender). This is a known issue with Go/Wails applications (see wailsapp/wails#3308). You can add an exclusion rule in your antivirus to allow it. Please download only from the official open-source channels — GitHub and Gitee. If you are still concerned about malware, you can download the source code and build and run it locally yourself.
Thanks to @surenwuyuwuqiu, @zhangsir1211 and @sonnartliao for their contributions to this release.
更新内容
新功能
- 托盘:新增系统托盘图标,左键单击显示/隐藏窗口,菜单包含 显示窗口、隐藏到托盘、重置窗口位置、打开设置、关于、退出;支持系统级全局显隐快捷键(默认 Ctrl+M,可在键盘设置中修改);应用单实例锁定——再次启动会唤起已运行的窗口而不是开新进程。
- 工作区大改版:工作区支持点选创建——右键菜单「在工作区中打开」(支持多选)以及带拖放占位的空工作区;连接拖入面板即连接并按落点位置分屏。工作区可解散(成员以实时终端标签回到标签栏,广播与 AI 锁定保留),也可保存为「工作区」类型连接,再次打开即重建整个工作区。连接还可拖到标签栏的任意位置直接在该处打开标签。
- SSH:连接级算法模式——兼容(默认,完整支持集、安全优先排序)、安全(仅现代算法:不含 SHA-1 交换、CBC 密码套件与 DSA 主机密钥)与自定义(密钥交换 / 密码套件 / MAC / 主机密钥四组可编辑的有序优先列表,限定封闭候选池)。兼容模式补全 AES-CBC 家族(aes192-cbc / aes256-cbc),并优先使用普通 RSA 主机密钥,老旧设备与 ECDSA P-521 主机密钥异常的服务器也能连上;协商失败时给出按模式定制的提示。
- SSH:新增「复制通道」——在已认证的源会话连接上开一个新的会话通道:无需重新拨号、无需重新认证(经 2FA 跳板机时尤其方便)。(@surenwuyuwuqiu)
- 终端:远程终端支持 sixel 与 iTerm2(OSC 1337)图片,图像直接在终端中渲染。
- 终端:远程程序(vim、tmux、多跳 SSH 链)可通过 OSC 52 写入本地剪贴板;应用可通过 OSC 9;4 驱动标签进度指示,沿标签底边渲染一条细进度条(百分比 / 错误 / 不定进度 / 暂停)。
- 终端:文本高亮方案重构——SGR 重注入升级为覆盖式高亮,直接对 xterm 缓冲区单元格重新着色,不触碰输出流,彻底解决部分场景高亮不生效以及注入错误导致的乱码问题;同时高亮从仅 SSH 扩展到所有终端类型(本地、WSL、串口、k8s、容器、telnet、SSH)。
- 终端:终端 / 标签 / 面板右键菜单新增「重置终端输出」与「清空终端回滚」。重置会清空屏幕与回滚历史并重绘提示符(类似 MobaXterm 的清屏);清空回滚只删除视口上方的行,屏幕与正在输入的命令保持不动。两种操作后行号都从 1 重新开始。(@surenwuyuwuqiu)
- 终端搜索:首个匹配定位到缓冲区底部(紧邻提示符)而不是回滚区顶部;Enter 向上搜索,Shift+Enter 向下搜索;搜索栏新增 区分大小写、正则、全字匹配 三个开关,开关状态在关闭再打开后保留。
- 导入:支持导入 Virt-Viewer 的 SPICE/VNC
.vv连接文件(从虚拟化管理台控制台页下载的一次性桌面会话文件),映射类型、主机、端口、用户名与密码。
改进
- SSH:静默的 cwd 上报钩子改为 shell 启动后始终无感注入,会话恢复为普通 shell 启动(sshd 自行打印 MOTD 欢迎信息);移除按连接开关,「跟随终端路径」变为纯显示侧开关。
- SFTP / SCP 传输改为流水线式——并发的按偏移寻址请求重叠往返,替代停止等待。80ms 时延链路上传输 4 MiB:上传从约 10.7s 降到约 0.6s,下载从约 6.1s 降到约 1.2s;进度、暂停与取消语义不变。
- SFTP / SCP:独立的 SFTP 与 SCP 标签页新增「打开终端」标签右键菜单项,SSH 衍生的文件标签页同样支持——文件页签与同一主机的 shell 互通。(@surenwuyuwuqiu)
- 监控:进程列表改为全量进程(原先只有 CPU 前 30),随滚动渐进加载,搜索可找到全部进程。
- 监控:脚本输出变量为空不再导致整个 JSON 失效(数值字段逐一兜底,解析失败时记录原始输出);df 加了超时保护,陈旧的 NFS 挂载不再卡死轮询;磁盘列表涵盖所有挂载文件系统(overlay、tmpfs、bind 挂载)及块设备;监控表格支持拖拽调整列宽。
- 原生文件选择器从有用的目录打开:私钥选择器从 ~/.ssh、kubeconfig 从 ~/.kube、SFTP 上传 /「下载到」从本地面板当前目录开始,并显示隐藏文件,点目录可达。(@surenwuyuwuqiu)
- 设置:设置分类侧栏可折叠(窄窗口自动折叠),窄屏下设置卡片改为纵向堆叠,小屏幕上设置页也可正常使用。
- 新增 主机列表菜单样式(按钮或仅右键)与 标签快捷键提示 两个设置;标签 tooltip 始终显示快捷键。
- 主题:主菜单新增终端主题子菜单(跟随应用、内置主题按深浅色分组、自定义主题),点击即时生效。应用默认主题改为「跟随系统」(跟随操作系统配色,原为深色);主题 / 语言 / 终端主题选择后不再关闭菜单,可连续切换预览。
- Element-plus 滚动条常驻显示,样式与原生滚动条一致(无 pointer 光标、悬停即时高亮)。
- 界面:应用窗口新增 1px 外边框,标题栏下方与两侧边栏带分隔线,分数缩放(高 DPI)下边框保持可见;移除标题栏与侧栏的装饰性渐变线,键盘设置表格列样式统一。
Bug 修复
- 终端:本地会话中按 Enter 不再重置鼠标追踪,修复 vim 等全屏 TUI 中滚轮退化为方向键的问题。(@sonnartliao)
- 终端:设备查询应答(光标位置、设备状态、窗口操作)现在会透传给 PTY。此前凡是查询终端并阻塞等待应答的程序——所有基于 survey 库的
docker compose确认提示——都会把终端彻底卡死:无回显、Ctrl-C 失效。 - 终端:选中即复制与右键粘贴可自愈——剪贴板写入按平台选择最优路径并带超时,失败回退另一条路径;读取在空结果/出错后重试一次以渡过其他进程的瞬时剪贴板锁;复制失败后重新选中同一段文本也能再次复制。
- 终端:MAC 地址不再被当作时间高亮(HH:MM:SS 规则增加时间样式边界判定),关键词新增 fatal / critical / exception / panic / abort(错误级)与 warn / caution(警告级)。
- SSH:错误密码更快得到反馈——被拒绝的密码一次握手即到达交互提示;每次重新质询前先打印一条拒绝提示(与 OpenSSH 客户端一致);认证方式类失败立即弹出凭据对话框,而不是再重连两次后才出现。
- AI:后台面板的命令输出读取正确。此前被 KeepAlive 冻结的面板会返回过期或空输出并超时;现在每个会话有一个持续解析会话流的无头镜像终端,面板不活跃时以它为读取来源。
- AI:用户确认的命令会回放到模型指定的面板——多面板模式下此前可能在错误的终端上执行——确认卡片上显示目标面板。(@surenwuyuwuqiu)
- AI:修复 AI 侧栏输入框在老版本 macOS 的 WebKit 上无法点击定位光标与输入的兼容性问题。(@zhangsir1211)
- 界面:AI 锁定改为将标签与面板图标染成警示色,取代原先将整个标签表面着色的方式(深色主题下显得浑浊)。
- 标签:拖拽排序不再把选中抢到相邻标签;标签合并的落区指示样式与工作区分屏保持一致。
- WSL:会话从发行版用户的主目录启动,而不是落到应用自身工作目录对应的 /mnt/c 路径。
- Windows:禁用 WebView2 自动填充钱包特性——WebView2 152/153 运行时在启动创建环境时会用当前账户和错误密码调用一次 LogonUser(Chromium 回归),每次启动产生一条 4625 失败登录事件,可能触发账户锁定策略。
- 设置:标签快捷键提示与主机列表菜单样式在重启后保留(此前每次重启静默重置);系统标题栏选择在重启后生效。
- Linux:.desktop 启动器路径与安装的二进制一致,安装 deb/rpm 包后可从应用菜单正常启动。(@surenwuyuwuqiu)
- SFTP:独立 SFTP 连接显示最大并发传输数设置(后端已生效,但表单未显示该字段)。
- 界面:连接表单在对话框关闭过渡动画结束后才重置,淡出过程中不再闪烁默认值。
- 界面:批量修复——重启后原生标题栏设置生效前保留自绘窗口控件;chmod 八进制输入恢复为纯文本框;SFTP 多文件拖拽显示拖拽幻影;标签栏末尾落区指示不再把新增按钮挤到最右侧。
- SSH:私钥路径中的
~在导入与连接时展开。
说明
- 由于本开源软件未购买代码签名证书,未签名的可执行文件可能被部分杀毒引擎(如 Windows Defender)误报。这是 Go/Wails 应用的已知问题(见 wailsapp/wails#3308)。可在杀毒软件中添加排除规则放行。请仅从官方开源渠道 GitHub 与 Gitee 下载。如仍有顾虑,可下载源码自行构建运行。
感谢 @surenwuyuwuqiu、@zhangsir1211、@sonnartliao 在本版本的贡献。