Repository navigation
Releases: MoeShinX/Z-SSH
Release list
Z-SSH v0.2.13
改进
- 凭据移到右上角:标题栏「文件」和「快捷命令」之间新增凭据按钮(钥匙图标,同样大小),点开 / 收起凭据面板;主机页顶部原来的「凭据」按钮移除。任何界面都能打开,不只是主机页。
- 凭据面板:私钥文件的路径能用「浏览…」从文件管理器选;列表按创建时间倒序,新建的在最上面。
修复
- AI 面板用户消息气泡换行:长命令、长网址不再把气泡撑得比面板宽(窄时被裁掉、拉宽才显示全),现在自动折行。
Z-SSH v0.2.12
改进
-
opencode、Claude Code、Codex 遇到额度用完、限流、服务过载时,AI 面板会提示在重试,最多重试 3 次:以前这些智能体在这些情况下会悄悄带退避地重试,面板上只剩一直转的「思考中」,看不出出了什么事。现在「思考中」下面会多一行小字,例如「遇到问题,正在重试(第 2 次,最多 3 次):请求太频繁,被服务商限流了,约 8 秒后重试」,原因会翻成人话(额度用完 / 请求太频繁被限流 / 服务商暂时忙不过来);重试成功继续出字,或这一轮结束,提示就消失(Codex 不会告诉我们下次重试的时间,所以只显示次数和原因)。连续重试到第 3 次还失败,就自动停掉这一轮并说明原因(「重试了 3 次仍然失败:……已停止这一轮,可以稍后再试或换一个模型」),不会再无限转圈;三个智能体规则一致。
-
主机页的卡片和列表更紧凑:同样大的窗口一屏能多放几台。卡片内边距、图标、按钮都小了一档,没有标签的卡片不再占单独一行,「编辑」「连接」直接放在名字那一行右边;列表每行高度大约砍掉四成,按钮也用了小号。主机页顶部多了一个「紧凑 / 舒适」按钮,点一下切换;觉得太挤就切回「舒适」,那就是以前的样子。默认紧凑,这个选择只记在本机。
-
主机页右边的卡片 / 列表也能手动排序了:顶部多了排序方式按钮(手动 / 最近打开 / 名称,点一下轮换,默认「手动」,只记在本机)。「手动」时右边的顺序和左边的树完全一致(先分组及其子分组、再其中的主机,没分组的在最后),在卡片或列表行上按住拖到另一台主机上,网格里按左半 / 右半、列表里按上半 / 下半显示插入线,松手就调整,和在树里拖是同一套顺序;拖到别的分组的主机上,会把它移到那个分组并插在那个位置,拖动时提示标签会写明去向(比如「db-1 → 东京机房」);右键菜单里也有「上移」「下移」。搜索中不能拖;切到「最近打开」或「名称」时不响应拖动并提示一次,上移 / 下移置灰,悬停会说明要先切到手动排序。另外,选中某个分组时右边现在会连同它的子分组里的主机一起显示(和树里分组旁边的数字一致);拖动时整张卡片(或整行)的影子会跟着指针走,原来那张变淡留在原地,不再只是光标旁边一个小标签。
-
「未分组」文件夹可以用一条线代替:设置 → 外观 → 主机树里多了一个开关,打开后主机树里不显示「未分组」这一行,没有分组的主机排在所有分组下面,中间用一条细线隔开(线两边都有内容才画)。新装的用户默认就是这种样子;已经有主机的老用户升级后一切照旧,需要时自己在设置里打开,打开后「未分组」里原来的主机就是顶层主机,不用移动任何东西。这个开关和「重命名「未分组」」是同一个设置,你明确打开或关上的选择会跟着同步;新装用户的默认样子只记在本机,不会写进同步设置,和别的电脑合并时不会冲突。
-
终端底部新增撰写栏(简化版的 Xshell 撰写栏):顶栏快捷命令按钮旁边多了一个「撰写栏」按钮,点一下在终端底部(快捷命令栏下面、状态栏上面)显示 / 隐藏一个输入框,先在里面把命令写好、改好,再发进终端。
Enter发到当前窗格,Ctrl+Enter发到这个标签的所有分屏,Shift+Enter换行;输入法选字时的 Enter 不会误发送;Esc把键盘交回终端。输入框默认一行、随内容长到约 5 行再滚动;栏的上沿有一条拖动条,上下拖动可以自由调整撰写栏的高度(最矮一行,最高到终端区域的 60%,固定高度下输入框撑满、内容超出在框内滚动,发送后高度保持),双击拖动条恢复默认的自动增高,高度只记在本机;输入法跟随你自己的中英文状态(只有终端里自动切英文)。右边的小开关可以选Enter和「发送」按钮发到「当前窗格」还是「所有分屏」(只在当前运行期间有效)。↑/↓翻最近发过的 50 条(输入框是空的,或光标在第一行 / 最后一行时才响应,多行内容里光标照常移动),历史只放在内存里,不写磁盘、不同步,退出就没了。发送沿用快捷命令的同一套流程:内容当作回车执行的命令,多行内容先确认,窗格没连上时提示并保留内容;发送成功后清空,光标留在输入框里方便连着写。显示与否只记在本机,默认关闭。
修复
- AI 输入框里用中文输入法选字时,按 Enter 不再误发送:以前打到一半、按 Enter 选候选字,没选完的内容会被直接当成消息发给 AI;现在选字期间的 Enter 只交给输入法,选完后再按 Enter 才发送。
- AI 自动重试停止后的回合隔离:opencode 超限停止后立即撤销旧会话的工具授权,下次发送会建立新会话并重新授权,旧模型迟到的命令和文件操作也会被拒绝;历史消息保留,并提示旧上下文只供回看。Codex 会隔离多个已结束的回合,只有明确的启动通知或对应响应才能确认新回合,旧记录被淘汰后迟到的结束通知也不会误伤新一轮;同时校验迟到的启动响应和中止任务所属的回合。启动请求超时或应答异常时,因为无法确认服务端状态,这个对话会一直提示「新开一个对话」直到用户新开(新开对话不受影响)。
Z-SSH v0.2.11
改进
- SFTP 远端栏可以右键压缩、解压:远端栏选中文件或文件夹(可多选)右键「压缩为」→
.tar.gz或.zip,压缩包生成在当前目录,名字跟着选中的那一个(选多个用当前目录名),重名自动加 (1)、(2),不会覆盖已有文件;右键压缩包(.tar.gz.tgz.tar.tar.xz.txz.tar.bz2.tbz2.zip)可以「解压到「同名文件夹」」或「解压到当前目录」。压缩、解压都直接在服务器上执行,数据不经过本机,进行中底部显示「压缩中 / 解压中」和取消按钮,取消会真的停掉服务器上的命令并清理临时文件。解压前先检查压缩包,里面有绝对路径或含..的条目会整个拒绝;目标里已有同名文件时弹窗让你选「覆盖」「跳过已有文件」或取消,完成后告诉你解出多少、跳过多少。.zip要服务器自己装了zip(压缩)/unzip(解压)才能用,很多精简系统默认没装(Debian / Ubuntu 用apt install zip unzip,CentOS / Rocky 用yum install zip unzip装上即可);.tar.gz用的tar几乎所有 Linux 都自带,推荐优先用它。服务器上缺哪个命令,对应菜单项就置灰并写明原因;登录 shell 不是 POSIX(例如 Windows 服务器)时不显示这些菜单。本地栏暂不支持。 - 几处字号调小:SFTP 文件面板的右键菜单和其他菜单统一成同样的小字号;对话框标题和说明、右下角的通知、下拉框的选项也都小了一号,不再显得特别大。
- 「未分组」改名之后,不分组的主机直接排在树的最下面:右键「未分组」→「重命名(建成分组)」之后,主机树里不再有「未分组」这一行;没有分组的主机(以后新建时不选分组的也一样)直接排在所有分组的下面,和分组同一缩进,排序、拖动、右键上移 / 下移都照常,右键这些主机还有「按名字重新排序(顶层主机)」。把主机拖到树的空白处就是移到顶层,右键「移动到分组」的第一项和主机详情里的分组下拉也改叫「顶层」「(顶层)」,不再出现「未分组」。这个设置会跟着同步;没改过名的用户一切照旧。
- AI 面板右上角的关闭按钮改用 × 图标:以前用的是垃圾桶图标,容易被当成「删除对话」;它的作用一直是关闭面板,对话不会被删。
修复
- SFTP 压缩 / 解压的几处修正:解压前会检查目标文件夹里已有的符号链接,包里的路径经过这样的链接(或条目本身就是链接)时整包拒绝,不会再顺着链接写到目标文件夹之外;Windows 打的 zip(路径用反斜杠)现在能正确发现同名文件;检查出没有同名文件时改用「跳过已有文件」解压,检查之后才出现的同名文件不会被悄悄覆盖,只有在冲突对话框里明确选了「覆盖」才会覆盖;压缩 / 解压进行中关闭 SFTP 标签、停靠面板或退出程序,也会先确认(以前只数传输队列);检查压缩包用到的临时文件只用
mktemp创建,服务器上没有mktemp时直接报错,不再退回/tmp下固定名字的文件(多用户服务器上别人可能提前放一个同名的符号链接)。 - 复制密码 / 连接信息的几处修正:密码在剪贴板里 30 秒后自动清除,现在靠写入时附带的一个只有 Z-SSH 认识的标记来认出「还是我复制的那份」,期间你复制了别的东西就不会被误清(之前用剪贴板序号判断,Windows 关闭剪贴板时会再改序号,对不上);复制出来的 ssh 命令改成
ssh -p 端口 -l 用户名 地址,用户名带空格、反斜杠、单引号时会加上单引号(bash、zsh 里直接可用;PowerShell 遇到含单引号的用户名、cmd 遇到带特殊字符的用户名,粘贴前需要自己改一下引号),地址以-开头时前面加--,不会被当成 ssh 的选项。
Z-SSH v0.2.10
改进
- 主机卡片的「编辑」「连接」常驻显示,挪到右下角:以前悬停才出现、放在名字右边会把名字挤短;现在固定在卡片右下角(标签那一行的右边),同一排卡片的按钮对齐。列表视图的「连接」也改成常驻。
- 主机树底部的属性面板改成表格样式:像 Xshell 会话管理器那样带外框、行间横线,标题列和值之间一条竖线。
- 主机右键可以复制密码和连接信息:主机右键菜单(主机页的树、卡片、列表,终端界面的主机树)多了两项。「复制密码」只在这台主机是密码登录、用的是密码类凭据、并且凭据里存了密码时才出现;「复制连接信息」所有主机都有,一次复制名称、地址、端口、用户名、密码(没存密码写「未保存」,密钥登录写凭据名,不带任何私钥内容)、跳板机、代理,最后一行是可以直接用的
ssh -p 端口 用户名@地址命令。密码由程序直接写进系统剪贴板,不经过界面;写入时标记为不进剪贴板历史(Win+V)、不同步到云剪贴板,30 秒后如果剪贴板里还是它(期间你没复制过别的)就自动清空。不带密码的连接信息就是普通文字,不会自动清除。
Z-SSH v0.2.9
改进
- 快捷命令按钮可以设颜色:编辑快捷命令时多了一行「颜色」,可以选红、橙、黄、绿、青、蓝、紫、粉其中一种(也可以保持「默认」),键盘上用方向键就能切换。设了颜色的命令在底部命令栏里显示成淡色底加细边框、彩色小图标的按钮,文字颜色不变,深色和浅色皮肤下都看得清;管理面板的列表里名字前面也有对应颜色的小圆点。颜色跟着配置一起同步;老版本会忽略这个颜色,在老版本里编辑并保存那条命令时颜色会丢掉。
修复
- 系统和应用一个深色一个浅色时,部分提示的配色用反了:提示框、更新说明里的标签、AI 面板里的文件改动等处的配色以前跟着 Windows 系统的深浅色走,现在跟着应用自己的深浅色设置。
- 设置 → AI:「自动 / 手动指定」开关拨不到手动:以前手动模式只看有没有存过路径,没存过时开关一拨就弹回「自动」,填路径的输入框也出不来,opencode、Codex、Claude Code 都一样。现在拨到「手动指定」先出输入框,填好点「检测并保存」,检测通过才保存;拨回「自动」清空路径。
- 两处小交互:从分组的展开箭头上开始拖动排序,松手时不会再顺带把这个分组展开 / 收起;快捷命令管理面板搜索时分组标题不能再点折叠(以前点了看不到变化,清空搜索后才突然折起来)。
- 主机页单击右边的卡片 / 列表,左边树底部的属性面板跟着显示这台:以前只高亮选中,属性面板还停在上一台;现在跟着换,再点同一台不会收起。
Z-SSH v0.2.8
改进
- 顶栏左上角改成主机树的「抬头」:以前左上角跟着主机树一样宽,但「主机」标签只有字那么宽,右边空着一截。现在左上角和下面的主机树连成一列,分隔线从顶栏一直通到底;「主机」是一枚撑满的小圆角按钮,在主机页是实底、在终端界面只有细边框,终端标签从分隔线右边隔开一点起排,不再贴在一起。主机树收起时仍是原来的标签样式。
- 主机和分组可以手动调整顺序:主机树里同一层的主机、同一个分组下的子分组,现在可以自己排上下顺序:拖动到另一行的上半部分 / 下半部分,出现一条线,松手就插到它前面 / 后面(把主机拖到另一个分组里的两台主机之间,会同时换分组;分组只能在同一层调整);也可以右键「上移 / 下移」。右键分组、「未分组」里的「按名字重新排序」会把那一层恢复成按名字排。没调整过的仍然按名字排,调整过的以你的顺序为准,新加的主机和分组排在这一层末尾;顺序会随同步带到其他电脑;搜索框里有字时不能排序拖动。主机页和终端界面的主机树都一样。
- 主机页也能添加快捷命令:右上角的 ⌘「快捷命令栏」按钮以前只是开关终端底部的命令栏,在主机页点了看不到任何变化,要添加快捷命令得先连上一台服务器。现在在主机页点它会在右侧打开快捷命令管理面板(新建、编辑、排序、删除),再点一下关上;在终端里点它仍是显示 / 隐藏底部的命令栏。
- 主机页左边的树:单击显示属性,不再弹出主机详情:以前在主机页单击树里的主机会在右边打开主机详情(编辑面板),只想看一眼地址也要再关掉。现在和终端界面的树一样:单击高亮并在树底部展开只读的属性面板(再点一下收起),双击连接,要修改用右键「编辑」。右边的主机卡片 / 列表也是一样(见下面「修复」)。
- 快捷命令:入口更清楚,管理面板更好找:① 底部命令栏左边的「管理」按钮换成列表图标(和顶栏右上角显示 / 隐藏命令栏的 ⌘ 区分开),旁边新增一个「+」按钮直接新建(命令再多、滚动或换行也一直在左边看得见);没有命令时的提示点一下也是直接新建。② 面板开着时再点「管理」按钮就关上(新建 / 编辑状态下也一样),开着时按钮显示成按下的样子。③ 编辑表单里的「分组」改成可输入的下拉框:能直接敲新分组名,也能从已有分组里点选(↑↓ 选、Enter 填入、Esc 收起),样式跟随深色 / 浅色主题,不再是浏览器自带的下拉。④ 管理面板的列表顶部加了搜索框(按名称、命令内容、分组过滤,不分大小写),并按分组折叠(标题显示条数,未分组放最后;搜索时有匹配的分组自动展开);上移 / 下移只在同一分组内移动,搜索时禁用,命令栏里同一分组的顺序就是这里组内的顺序。
修复
- 主机页切成「列表」后重启又变回卡片:卡片 / 列表的选择以前只记在内存里,现在记在本机设置里(不同步到别的电脑),重启后保持上次选的。
- 终端旁的文件面板还在连接中就关掉终端,会留下一个看不见的 SFTP 连接:以前面板正在连接时关掉这台主机的全部终端,面板条目会留着,连上之后就成了界面上看不到、也关不掉的连接,退出时还会被算进「还有 N 个连接」。现在连接中的面板也会随终端一起收掉,晚到的连接结果直接关闭。
- 主机页右边的卡片 / 列表:单击只选中,双击连接时不再闪一下编辑窗口:以前单击卡片或列表行会打开主机详情(编辑面板),双击连接时第一下单击先把它弹出来、第二下连接后再关掉,界面会闪一下。现在和左边的树一样:单击只选中(和树里选中的是同一台,两边联动高亮),双击连接;要看或改详情,用右键「编辑」,或点卡片 / 行上新增的铅笔按钮;选中后按 Enter 连接、F2 打开详情。连不上时仍会自动打开这台主机的详情。
Z-SSH v0.2.7
改进
- 输入法:只在终端里切英文,其余地方跟随你自己的状态:0.2.6 改成了「除 AI 对话框外处处默认英文」,搜索框、表单、编辑器也被切成英文;现在回到只在终端里切英文,离开终端进 AI 对话框、搜索框、编辑器等任何输入框都恢复你原来的中英文状态。设置项名称改回「终端里自动切到英文输入」。
- 退出前确认还有多少连接会被断开(托盘「退出」和点 × 退出一样):以前托盘右键「退出」只检查未保存的编辑和进行中的传输,终端还连着、端口转发还在跑也会直接退出,所有 SSH 连接一起断掉。现在只要还有已连接或正在连接的终端、正在运行的端口转发、或者 SFTP 标签、终端旁的文件面板(终端断开后它也可能还连着)、Z-SFTP 窗口里打开着的 SFTP 连接,就会先弹确认:「还有 N 个连接(3 个终端、1 个端口转发),退出会全部断开。确定退出?」,按钮是「退出」和「取消」。和未保存的编辑、传输中同时存在时合成一个对话框,把几类原因列在一起,不会连弹两个。什么都没有的时候托盘「退出」直接退出,不再先把主窗口叫到前面闪一下。设置里选了「点 × 退出程序」时,点 × 走同一套判断;默认的「点 × 缩到托盘」不变(连接都还在,所以不问)。
- 默认外观改成深色 + Dracula + Tokyo Night 终端,关键词高亮默认打开:新装(或从没改过这些设置)的默认值变了:外观模式从「跟随系统」改为「深色」,深色皮肤从 Graphite 改为 Dracula,终端配色从「跟随皮肤」改为「Tokyo Night(深色)」;终端「关键词高亮」的总开关默认开,内置的五条常用规则(错误红、警告橙、成功绿、IP 地址紫、网址蓝)也都默认启用(以前只开错误、警告两条,其余三条要自己打开)。设置里改过这些项的人保持原来的值,已存的高亮规则(包括你关掉的几条)和自己关掉的高亮总开关都不动;从旧版本升级上来、只存过旧「界面主题」的人,明暗仍按旧主题判断。选了浅色主题而终端仍是 Tokyo Night 时,设置页会提示明暗不一致,可一键改回跟随皮肤。
- opencode 模型列表:免费模型排最前,其余按名字 A→Z:以前按服务商返回的顺序排,免费模型夹在中间不好找。现在 opencode 自带的免费模型(名字带 -free 的,以及标价为 0 的如 Big Pickle)排在「默认模型」下面最前,其余所有模型按显示名 A→Z 排(不分大小写);每个模型的思考等级仍紧跟在它后面。自定义服务商的模型即使没填价格也不算免费。
- AI 对话输入框默认高一点:默认(也是最小)高度从约两行调到原来的 1.5 倍、约三行。以前没拖过高度的会自动变高;拖高过的保持你拖的高度,双击输入框上沿的拖动条回到新的默认。
- 凭据页顶部按钮和 AI 输入框的字稍小一点:凭据页右上角「凭据 / 代理 / 转发」等按钮和 AI 对话输入框的字号略微调小,看起来不那么挤。
修复
- AI 对话框离开终端后回不到中文(百度拼音等第三方输入法):以前切英文 / 恢复用的是 Windows 的「转换模式」,微软拼音认,但百度拼音等第三方输入法自己管中英文、不理会它,进过一次终端之后 AI 对话框就一直是英文。现在改成在终端里关闭输入法(按键直接是英文)、离开终端时打开回来(回到中文),这些输入法都认;第三方输入法有时回得慢,等待时间也放宽了。要在终端里临时打中文,按 Ctrl+空格 或点输入法图标。
Z-SSH v0.2.6
改进
- 内置编辑器:Ctrl+/ 切换行注释也能用在配置文件上:Ctrl+/ 本来就是加 / 去行注释,但 nginx 配置、
.conf/.ini/sshd_config这类文件和认不出类型的纯文本没有声明注释符号,按了什么都不发生;现在这些文件按#注释,代码文件仍按各自语言的注释符号(如 JavaScript 的//)。 - 快捷命令栏空白处双击或右键可以直接新建:在命令按钮之间或后面的空白处双击、右键,直接打开「新建命令」,不用先点左边的管理按钮。命令按钮上的单击、右键菜单不变。
- 终端里的网址:单击选中整条、双击用默认浏览器打开:以前单击链接会在 WebView 里直接弹出新窗口,容易误触、也不是你的默认浏览器。现在悬停仍显示下划线,单击把整条链接选中(折行的长链接也整条选中),可以直接 Ctrl+C 复制,开了「选中即复制」就和普通选中一样自动复制;双击用系统默认浏览器打开,双击时选区保留,不会变成选中一个词;右键链接弹出「打开链接 / 复制链接」,不在链接上右键仍是原来的右键粘贴。终端程序输出的超链接(显示文字和目标网址不同的那种)也一样:单击选中显示文字,双击和右键「打开链接 / 复制链接」用的是目标网址。双击按系统的点击计数判断(没有另设固定的时间限制,Windows 里把双击速度调慢也能正常打开),屏幕上两处相同的网址各点一下不会误开浏览器。只允许打开 http:// 和 https:// 网址,其他协议、带空格或控制字符、超长的一律拒绝。
- 双击终端标签 = 复制标签页:和右键「复制标签页」是同一个动作;SFTP 标签、编辑器标签和「主机」标签双击什么都不做,双击标签上的关闭按钮也不会触发复制。
- 右键菜单更紧凑:全应用共用的右键菜单字号从 14px 降到 12px,行高收紧,图标统一 14px 并和文字垂直居中,分隔线变淡;「删除」「关闭所有标签页」这类危险项保持红色,选中时是淡红底而不是反白。
- 终端界面的主机树:单击展开属性面板:单击一台主机,树底部展开一块只读的属性表(名称、主机、用户名、协议、端口,有跳板机或指定了代理时再加一行显示名字),地址旁有复制按钮,右上角 × 收起;再单击同一台收起(会等一个系统双击时间再收,Windows 里调慢了双击速度也不会闪),点另一台切换内容,双击仍是连接且面板不会来回闪。不显示密码等凭据;展开的是哪台只在本次运行内记住。主机页的单击仍是打开详情。
- 新建主机默认不使用代理:以前新建主机的代理默认「跟随默认代理」,设了全局默认代理的人,新建的主机会自动走那个代理。现在新建时默认「不用代理」;编辑已有主机、导入和同步来的主机保持原来的设置,「跟随默认代理」这个选项和全局默认代理本身不变。
- AI 在别的主机上执行时看得见、一键能过去:对话里有不止一个目标主机时,AI 的命令和文件工具卡片会标明在哪台主机执行,卡片上多了「查看终端」,点一下切到实际执行命令的那个终端的标签和窗格(还没连上、正在连也可以切过去看连接过程;原来「在标签 xxx 执行」的跳转并入了这个按钮,文件工具的卡片同样可以点)。卡片上的主机、「查看终端」、审批卡片里的执行位置和标签上的活动点,都以 Z-SSH 执行时实际选中的目标和终端为准,不是界面自己猜的:比如切到空白标签、没有「当前」主机时,AI 省略目标会落在目标列表的第一台,卡片照样写明是哪台;同一台主机开了多个终端时,跳到的就是执行命令的那一个。确实没有可用目标时卡片写明「执行目标未确定」。对话里只有一个当前目标时不显示主机名。AI 正在没在看的标签里执行命令时,那个标签上出现一个闪动的紫色小点(和绿/黄/红的连接状态点分开),执行完你还没看过时变成静态紫点,切过去就清掉;AI 为 @ 的主机自动新开的后台连接标签同样适用。
- 对话中切走终端,AI 的作用范围不丢:以前切到别的标签,原来的「当前」主机会从 AI 的目标里掉出去(切标签还会直接结束对话)。现在已经聊起来的对话里,切走焦点时原来的当前主机自动变成一个可以点 × 移除的标签留在范围里,新焦点成为「当前」;切回去合并成一个。对话还没开始(没发过消息)时仍然是当前跟着焦点走、不累积。保留下来的终端关掉后会自动消失。
- 输入法:除 AI 对话输入框外默认英文输入,AI 对话框保持你自己的中英文状态(设置里可关):以前只在终端里切英文,离开终端就恢复。现在反过来:整个程序里焦点进可输入的地方(终端、主机页搜索框、文件面板的路径框和过滤框、各种表单输入框、内置编辑器、设置里的输入框,Z-SFTP 文件窗口里的也一样)都默认切到英文,只有 AI 助手发送消息的输入框保持你原来的中文 / 英文状态。要打中文按 Shift 切换;点按钮、空白处不改变状态。设置项还是原来那个开关,名字改成「默认使用英文输入」,关掉就完全不动输入法。
- 主机树顶部加了搜索框(像 Xshell 的会话管理器):在「新建主机」和「全部主机」之间,输入即过滤,不区分大小写,匹配名称、地址、用户名和标签;只显示匹配的主机和它所在的分组路径,分组自动展开(你自己的展开状态不动,清空搜索后恢复原样),分组名匹配时显示该分组下的全部主机;匹配的文字高亮,靠地址 / 用户名 / 标签匹配到的主机会在行尾标出匹配的那一项;分组旁的数字是过滤后的数量;没有结果显示「没有匹配的主机」。在框里按 ↓ / ↑ 在结果间移动高亮,Enter 连接高亮的那台(没有高亮就连第一台),Esc 清空搜索(已经空了就让输入框失焦),有内容时右侧有 × 一键清空。主机页和终端界面的主机树都有,各记各的搜索词(只在本次运行里保留)。主机页右侧原来的大搜索框(搜索卡片、
user@host:port快速连接)不变,两个搜索框互不影响(以前大搜索框的文字会同时过滤左边的树,现在树只听自己的搜索框)。
修复
-
凭据面板点「新建」没有反应:以前点「新建」后编辑表单反而收起,新建不了凭据,只能先「生成密钥」再改;现在点「新建」出现空表单,填好保存即可。
-
设置 → AI 里各智能体的按钮和上面的说明文字贴在一起:加了间距。
-
同一台主机不再变成两个 AI 目标:以前当前终端的主机又被 @ 了(或者 @ 的主机后来被打开成当前标签),AI 的目标列表里是两条同名的;同一台主机开了两个终端标签(或分屏),对话中来回切换后同样会变成两个目标,AI 可能在同一台机器上跑两遍或分不清用哪个。现在按主机算:一台主机只有一个目标,不管它开了几个终端、对话中怎么切换,AI 看到的目标 ID 都不变;执行时落在你当前聚焦的那个终端上(这台主机不是当前时,落在它最近一次聚焦过的、还开着的终端上),那个终端关了就找这台主机别的已连终端,都没有再自动连接。在当前主机上 @ 它不再新增标签,只提示「已经在对话里了」。
-
opencode 的免费模型现在可以在 AI 助手里用了(需要 opencode 1.18 以上):以前 Z-SSH 为了不让 AI 碰你的电脑,把 opencode 读本机文件的工具整个关掉了,OpenCode 的免费服务发现这个工具不在就拒绝服务,免费模型一直报「只能在 opencode 自己的界面里用」。现在这个工具留在列表里,但对任何路径都一律拒绝(工作目录里的、目录外的、
~开头的、用..跳出去的都实测读不到),AI 仍然读不到你电脑上的文件,读服务器上的文件走 Z-SSH 自己的文件工具。opencode 版本太旧或免费服务拒绝时,提示也改成了能照着做的说明。 -
空白处右键不再弹出带「刷新」的浏览器菜单:以前在面板空白处、按钮、普通文字这些没有自己右键菜单的地方右键,会弹出 WebView 自带的「后退 / 刷新 / 另存为 / 打印」菜单,点了「刷新」会把整个界面重新加载,所有连接、终端和传输都断掉;按 F5 或 Ctrl+R(不在终端里时)也一样。现在这些地方右键什么都不弹,刷新快捷键也不再重新加载界面;输入框(含只读的)、编辑器、终端里,以及在选中的文字上右键,仍然可以用右键菜单,菜单里也只剩剪切、复制、粘贴、全选这类编辑操作,不再带「刷新」「另存为」「检查」等;选区之外的地方右键,不会再因为别处选着字而弹出菜单。终端里的 Ctrl+R(搜索历史命令)和文件面板的 F5(刷新目录)照常。
Z-SSH v0.2.5
改进
- 文件面板的本地栏可以收起:终端旁的文件面板里,本地栏工具条最右边多了一个 ×(提示「关闭本地栏」),点了只剩远端栏和传输队列,远端栏占满高度;面板标题栏会出现「本地」按钮,点一下把本地栏请回来。收起的状态记在本机、所有主机的面板共用、不随同步。独立 SFTP 标签页和 Z-SFTP 窗口里的双栏不变。收起后从资源管理器拖进来上传、远端栏右键下载这些照常可用,下载的目标目录仍是本地栏原来所在的目录。
- 「跟随终端目录」默认关闭:新打开文件面板时不再自动跟着终端 cd 换目录(以前会把正在看的目录突然拉走),需要的话自己勾上;勾上之后的行为、在面板里手动换目录会自动关掉的逻辑都不变。
- 同名文件对话框默认选中「覆盖」:上传、下载遇到目标已存在仍然弹窗,但默认选中的是「覆盖」(以前能续传时默认「续传」),焦点在「确定」上,直接按回车就是覆盖;「续传」仍可手动选。复制粘贴的同名对话框默认仍是「重命名」。
- 传输队列可以右键,已跳过的也能重试:队列里每一项右键弹出菜单,按状态显示「重试」「暂停」「继续」「取消」,和这一项右边的按钮一一对应;以前只有失败、已取消的能重试,现在「已跳过」的也能重试,重试时会重新问一次同名文件怎么处理。等同名文件的回答时,状态显示「等待处理同名文件」,不再一直写「准备中」让人以为卡住了。
- 主机树宽度可以拖,顶部标签和它对齐:主机页和终端界面左边的主机树,现在拖它的右边缘就能调宽度(最窄 180px,最宽 480px 或窗口宽的 40%,窗口缩小时自动收窄;终端界面右边开着 AI / SFTP 面板时,最宽会相应收窄,给终端和面板留够位置;双击恢复默认 224px),两处共用同一个宽度,记在本机、不随同步。主机树展开时,顶栏左边的 logo、侧栏开关和「主机」标签正好占主机树那么宽,终端标签从主机树右边缘开始排,和下面的终端区域左边缘对齐,拖动时这条线实时跟着动;收起主机树后标签仍紧挨着「主机」排。
修复
- 先点到别处再点 AI 输入框时,输入法没有恢复成原来的中文状态:「终端里自动切英文」以前在离开终端后 80ms 就恢复,如果这时焦点落在按钮、面板空白处、标签这类不能输入的地方,输入法没有可作用的对象,恢复写进去等于没写,程序却当成已经恢复;之后点进 AI 输入框,输入法还停在英文。现在离开终端只记「待恢复」,等焦点真正进了可输入的元素(AI 输入框、表单、编辑器……)、稍等 40ms 让输入法关联好再恢复;中途回到终端就取消,什么都不发。恢复和切英文写完都会读回核对:恢复没生效就当失败,下一次焦点进输入框时再补一次;切英文后读不回状态时按「可能已经切了」处理,离开终端时照样恢复。切到别的程序时仍照旧处理,不会丢掉待恢复。
- 同名文件选「重命名」时,自动起的名字不再撞上已有的文件:以前选「重命名」又没手动给名字(包括勾了「全部应用」之后的其余文件),一律直接用
名字 (2)(复制粘贴是名字 - 副本),不看这个名字是不是也被占了,被占的话这个文件就传输失败;反复往同一处传同一批文件、每次都选重命名,第二次起就会撞上。现在会依次往后找(名字 (2)、名字 (3)…,复制粘贴是名字 - 副本、名字 - 副本 2…)第一个没被占用的,本地和远端都一样,最多试 1000 个,全被占了就报清楚的错误;对话框里预填的建议名也会跳过已被占用的名字。同一时刻几个文件都想改成同一个空名字时,谁先选中谁占住,其余的自动往后再找,不会互相覆盖。你在对话框里手动输入的新名字如果也已存在,这个文件会失败并提示「新名字 xxx 也已存在」,不会覆盖它,也不会悄悄换成别的名字。 - 一次传多个同名文件时,勾「全部应用」现在对这一批都生效:以前一次上传 / 下载选了很多个同名文件,每个文件是一个独立任务,在第一个对话框里勾了「对后续所有冲突都这样处理」只管这一个任务,其余任务照样一个个弹。现在同一次提交(一次上传 / 下载、一次粘贴)的所有任务算一个批次,批次里任何一个勾了「全部应用」,后面撞上同名的直接按它处理,已经在排队等回答的同批次提问也一并按同一个动作回答掉,不再弹;对话框里的选项改成「本次其余同名文件都这样处理」,同批次还在排队的提问数显示在后面(如「(还有 3 个)」)。选「重命名」时你输入的新名字只用在当前这个文件,其余各自用自动名字(复制粘贴是「名字 - 副本」)。「取消(按跳过)」仍然只跳过当前这一个。重试的任务重新问,不受批次里旧的选择影响。
- 同名文件的提问不再丢:队列项不会无故卡在「准备中」再变成「已跳过」:以前几个文件同时撞上同名(一批上传、粘贴)时,后到的提问把先到的盖掉,被盖掉的那一条没人回答,后端等满 2 分钟按「跳过」处理;关掉文件面板或切到另一台主机的终端后,面板里的提问监听跟着没了,也是同样的结局。这段等待里队列还一直显示「准备中 0%」,期间再传同一个文件会因为目标被占用而失败。现在每个窗口(主窗口、Z-SFTP 窗口)用一个统一的入口收下所有同名提问,按先后顺序逐个弹出,不管文件面板在不在屏幕上;后端已经放弃的提问会自动撤掉并提示。
- 编辑器重新载入后按 Ctrl+Z 不会再撤回到丢掉的修改:以前「重新载入」(或远端冲突后放弃本地修改)换成磁盘 / 服务器上的内容后,撤销历史还留着,按 Ctrl+Z 会把刚放弃的修改又找回来,并标成未保存。现在重新载入会清空撤销历史,之后的新输入照常可以撤销。
Z-SSH v0.2.4
修复
- 安全:「只读自动」不再放行能写文件、改系统的写法:以前只读自动模式靠「列出已知的危险选项」判断,GNU 命令允许把长选项缩写(
sort --out=文件就是--output)、短选项可以直接带值(date -s2020-01-01是改系统时间)、子命令也能缩写(ip l s dev eth0 down就是ip link set),hostname --file=…则是从文件设主机名,这些写法会被当成只读直接执行。现在反过来:对有参数筛选的命令(sort、uniq、rg、tree、file、ss、blkid、lastlog、dmesg、journalctl、date、hostname、ip、systemctl等)只放行明确列出的只读选项,长选项必须写全,不认识的参数、缩写、合并写法里没列出的字母一律要你确认;ip只放行对象加缺省命令或完整的show/list/ls。选项的值冒充子命令(如systemctl -p show restart x、docker --config ps rm x)、echo x >/dev/null.log这类写到名字相近文件的重定向也一并堵上。参数里带$变量、$'…'、花括号、通配符这类要 shell 展开后才知道真实内容的写法(sort $'\x2do' out、sort {-o,out} in展开后就是sort -o),以及历史展开!(!!、!$会在解析前拼入以前的命令)、printf -v改 shell 变量,也一律要你确认;cat /var/log/*.log、ls $HOME这类不看参数的命令和写在引号里的'*.log'不受影响。常见的只读用法(sort -k2 file、date +%F、hostname -I、ip a、ip -br link等)照常自动执行。 - AI 读文件时目标被移出对话,不会再继续读:
list_dir、stat、read_file以前在等连接期间如果这台服务器被移出对话(或用户点了停止),请求仍会连上去读并把内容交给智能体;写文件和执行命令早就有这道核对。现在三个读工具在连接返回后、读之前,以及读完、返回内容之前各核对一次,已被移出的直接拒绝;移出后又加回同一台服务器,旧请求也不会重新变有效。 - SFTP 传输出错时不再漏关远端文件句柄:以前目标文件打不开、批量读取出错、写后 fsync 失败时,已经打开的源 / 目标句柄不会发关闭请求,句柄一直占在复用的 SFTP 通道上,反复失败可能耗尽服务器允许的句柄数。现在拿到第一个句柄之后,完成、暂停、取消、读错、写错、目标打开失败、fsync 失败都会统一收尾并尽力关掉已经打开的句柄;返回的仍是最先发生的错误,关闭失败不会盖掉它,出错后截回已确认前缀、删临时文件的续传逻辑不变。
- 编辑器「重新载入」期间输入的字不会再被吞掉:以前本地文件保存冲突时点「重新载入」(或远端冲突后放弃本地修改),等待读回内容的这段时间里编辑器仍可输入,结果回来后新输入被整个覆盖,还被标成已保存,关标签时也不再提示。现在载入期间编辑器临时只读(状态栏显示「正在重新载入…」,保存按钮暂不可用),载入完成或失败后恢复;发起时记下文档版本,结果回来时版本已变就不覆盖,保留你的文字和未保存标记并提示「重新载入期间内容有改动,没有覆盖」;载入失败保留原文。新内容、编码换行和未保存标记在同一次状态变化里更新。
- 服务器拒绝打开终端时不再显示「已连接」:以前开终端时发出分配终端(PTY)和 shell 的请求后不等服务器回复,服务器拒绝了界面也照样显示已连接。现在会等回复:shell 被拒会直接提示「服务器拒绝打开 shell」并回到断开状态;服务器在这一步关闭连接或 20 秒没回复,也会给出明确原因。分屏复制走同一条路,一并生效。等待期间关掉窗格会关闭这条通道,服务器在回复前发送过多数据或消息会断开。
- 服务器不给分配终端(PTY)时以无终端模式继续:git 托管账号、
authorized_keys里写了no-pty的账号会拒绝 PTY;现在不再当成连接失败,终端最前面会显示一行提示,然后照常打开 shell,服务器随后发来的说明文字也能看到。 - 断线后迟到的输出不再记到重连后的新会话:断线之后、重连之前才从旧连接送到的输出仍会正常显示,但不会再被当成新会话的输出回报确认。