vShell 0.2.0 发布:新界面
新版本主要做了三件事:把整个界面重写成「岛式(Islands)」设计语言;修掉一个多开终端时会「连坐断开」的 Bug;第一次提供了三大平台的安装包。下面挨个说说。
一、界面重写:窗口是画布,面板是岛
新版本把整个窗口当作一张画布,所有内容面板 —— 终端区、左侧连接树、底部的 SFTP 与监控 —— 都是浮在画布上的圆角岛,岛与岛之间统一留 6px 接缝。工具栏、左条、状态栏则与画布同色,融为一体,只做低调的外框。
不只是换个圆角,背后是一套完整的规范,捡几条说:
工具优先,内容至上 —— 铬框低调,焦点留给终端会话与文件操作;
一切皆 Token —— 颜色、度量全部出自单一事实源,浅色 / 深色镜像命名,切换主题零结构变化;
灰阶为主体,单一品牌蓝做强调 —— 彩色只用于选中、焦点、链接和连接状态;
会话是一等公民 —— 标签即会话,切换不丢缓冲,连接状态点常显;
连接状态可视化 —— connecting / online / offline / error 四态,在连接树、标签、状态栏三处同色出现,一眼可辨。
这套设计语言以 IntelliJ IDEA 的灰阶体系和 Token 纪律为源头,再针对 SSH 客户端形态定制。完整规范已发布在文档站「设计规范 → 设计语言」,往后界面怎么改都有章可循。
二、多开终端「连坐断开」的 Bug,修了
先说现象:对同一个连接反复「打开」,开到第 10 个左右的标签时,前面所有终端同时断开,只剩最新那一个能用。
它和 SSH 多路复用有关:
vShell 里,同一连接的所有终端复用一条 SSH 连接(多路复用,这是省资源的好设计);
但 OpenSSH 服务端默认
MaxSessions = 10—— 单条连接上最多 10 个会话通道,每个终端标签占 1 个,SFTP 面板还要占 1 个;超限时,服务端会拒绝建立新会话(
administratively prohibited);旧版代码把一切「新建会话失败」都当作「这条连接已经死了」,于是关闭旧连接、重新拨号;
结果:旧连接一关,上面所有终端被服务端顺手断开 —— 全部「连坐」,而新连接只服务最新的那个标签。
修复思路是给错误分类:
连接级错误(EOF、连接重置、传输层死亡):保留原有的「驱逐重拨」自愈逻辑 —— 正是它让服务端空闲断开后能无缝重连;
服务端拒绝新会话:不关连接、不重拨,直接弹窗告知「服务端 MaxSessions 限制」,已打开的终端毫发无伤。
三、终于有安装包了
新版本配好了 GitHub Actions 自动打包,Release 页面直接下载:
macOS:通用二进制(Apple Silicon / Intel 一份包通吃)
Windows:NSIS 安装包 + 便携版
Linux:deb / rpm / 便携版
一个提醒:macOS 包暂未做公证,首次打开若被拦截,右键 App →「打开」,或执行:
xattr -d com.apple.quarantine /Applications/vshell.app四、其他
Wails v3 升级至 v3.0.0-beta.28;
文档站:新增「更新记录」页;首页与导航加入下载入口;补齐 HTTPS 证书管理指南(acme.sh 远程签发 / 续签);设计语言规范上线。
下载与链接
最后照例介绍一句:vShell 是一个纯本地的桌面 SSH 客户端(Wails 3 = Go + Vue 3),终端、SFTP、服务器监控、远程文件编辑、SSH 密钥管理、端口转发、HTTPS 证书管理都有 —— 无云端、无账号、无遥测。如果你在找一个 FinalShell 的替代品,可以试试。
有问题欢迎在 GitHub Issues 反馈。
CrazyAirhead