177 Commits
Author SHA1 Message Date
okooo 552d55777d release workflow 暂时只打 Windows 包
macOS 和 Linux 的 job 关掉,另行通知后再打开。
v0.1.8-win
2026-10-11 09:59:39 +08:00
okooo 6674a47662 快捷键允许 Shift 加 Insert、Delete、Home、End、Page Up、Page Down
这些键不挡打字,终端粘贴可以录成 Shift+Insert。单独按仍给终端和列表。
2026-10-11 09:57:07 +08:00
XuzandClaude Opus 5.5 9799f88ade 版本号改为 0.1.8
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
v0.1.8
2026-10-10 23:22:26 +08:00
XuzandClaude Opus 5.5 dc5adddd06 启动后不久检查更新时,下好的新版本在重启时找不到
更新程序启动 30 秒后清理旧的暂存,原来会删掉所有 .ShellRS.app.update-*(Linux 是
.<AppImage>.update-*),包括启动后手动检查、切换渠道刚下载暂存好的新版本,于是「重启并
安装」报找不到文件,重试才从下载目录重新暂存。现在清理只删不比当前版本新的暂存,和下载
目录的规则一致。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 23:21:47 +08:00
XuzandClaude Opus 5.5 db0a0faf05 发布流程:lipo -verify_arch 的参数顺序写反了,macOS 两个架构都在构建后失败
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
v0.1.8-beta.1
2026-10-10 22:49:57 +08:00
XuzandClaude Opus 5.5 026e0d44d8 版本号改为 0.1.8-beta.1
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 22:34:46 +08:00
bigtan e91bab0d09 macOS 按 Apple Silicon 和 Intel 分别发布安装包
发布流程改为按 aarch64、x86_64 构建矩阵,分别签名、公证并上传 DMG 和升级 ZIP,
不再合成 universal 应用。两个任务使用独立缓存和产物名称,发布时收集全部架构。

更新清单保留原有平台键,分别记录对应架构包的地址、大小和 SHA-256。
已有 universal 客户端按运行架构升级;Rosetta 下的 Intel 版仍接收 Intel 包。
同步更新中英文下载说明、发布文档和示例清单,增加双架构校验与错包拒绝断言。

验证:52 项更新模块测试通过,Clippy、格式、YAML 和 shell 语法检查通过。
2026-10-10 22:33:22 +08:00
XuzandClaude Opus 5.5 5ca6e53366 设置 › 终端新增「终端交互」:选中复制、右键行为
「选中复制」打开后,鼠标选中的文字在松开时进入系统剪贴板,单击没选中东西时剪贴板不变;
默认关闭。「右键行为」可选无动作、粘贴、显示菜单,默认显示菜单;右键从不交给要求鼠标的
程序。设置存在 settings.json 的 terminal_interaction,终端经全局量 TerminalInteraction
读取,改动立即作用于已打开的终端。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 19:24:04 +08:00
XuzandClaude Opus 5.5 0aa1d4452d ESXi 等只在键盘交互式认证里收密码的主机,用保存的密码自动登录
ESXi 的 sshd 关了 password 方式,只开 publickey 和 keyboard-interactive。保存的密码只走
password 方式,于是测试连接报「服务器要求键盘交互式认证」,外部 CLI 和端口转发连不上,
在应用里每次连接都要手输。

现在「密码」登录遇到键盘交互式认证的第一个单独的隐藏问题,就用保存的密码(测试连接时是
对话框里填的)回答,同 WinSCP 默认的「用密码响应第一个提示」。一次登录里保存的密码只发
一次;密码之后的验证码等问题照样问人。被拒或没有密码时,不能询问的连接报缺的是密码,应用
里的询问写明保存的密码被拒。没有问题的一轮直接回空,不再弹框。外部 CLI 遇到密码以外的问题
不再让人「保存密码」。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 17:12:19 +08:00
XuzandClaude Opus 5.5 5fdfce239a 版本号改为 0.1.7
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
v0.1.7
2026-10-10 15:18:22 +08:00
XuzandClaude Opus 5.5 3a9e72eab3 版本号改为 0.1.7-beta.2
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
v0.1.7-beta.2
2026-10-10 13:47:24 +08:00
XuzandClaude Opus 5.5 27822e7315 SFTP 文件列表点列名即可排序,换目录后列宽和排序箭头不再复位
gpui-kit 只给列标题右边的箭头挂了排序,标题本身的点击用来选列,而文件列表关掉了选列,
所以只能点箭头。现在点列名和点箭头一样:降序、升序、恢复按名称。

表格每次 refresh(每读一次目录)都从委托重新取列,原来拖宽的列会弹回默认宽度,箭头也回到
「未排序」而行仍按原列排着。现在 FileListing 记下拖动后的列宽(ColumnWidthsChanged)和
当前排序,refresh 后照旧。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 13:46:54 +08:00
XuzandClaude Opus 5.5 e1600ce05c SFTP 本地目录列表在 Windows 上列出各个驱动器
Windows 上每个盘是一个独立的根,目录列表原来只有当前路径的各级和主目录、桌面、文稿、下载,
离不开起始的盘(只能在「打开目录/书签」里手动输入 D:\)。现在「位置」里按 WinSCP 的样子
列出所有盘符:「C: 本地磁盘」「E: 可移动磁盘」「Z: 网络驱动器」「F: CD 驱动器」。

盘符用 GetLogicalDrives 和 GetDriveTypeW 取,不读卷标。位置改在后台随每次读本地目录
一起重新取,所以新插上的 U 盘刷新一下就出现,也不在 UI 线程上碰网络驱动器。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 13:46:54 +08:00
XuzandClaude Opus 5.5 5be3f56b0c 版本号改为 0.1.7-beta.1
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
v0.1.7-beta.1
2026-10-10 11:52:19 +08:00
XuzandClaude Opus 5.5 eadbe6481a SFTP 只用 WinSCP 也用的请求:修复经堡垒机上传失败、编辑器保存时连接断开
用户的堡垒机对 fsetstat 回 Failure,收到 fsync@openssh.com(即使宣称支持)就断开整个会话,
所以上传报「Failure: Failure」(.filepart 已写完整),编辑器保存时 SFTP 连接断开。现在:

- 上传关闭文件后才按路径 setstat 设修改时间和权限,不再对打开的句柄 fsetstat;
- 不再发 fsync@openssh.com;
- 覆盖已有文件也不用 posix-rename@openssh.com,一律先把旧文件改名成备份、发布后再删
  (不是原子的)。

测试服务器加了堡垒机模式(bastion_server):对 fsetstat 和所有扩展请求断开会话;新上传、
覆盖上传和编辑器保存都要在同一条连接上完成,并保留修改时间。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 11:51:51 +08:00
XuzandClaude Opus 5.5 ecf9d92e47 README 加上 LINUX DO 徽章
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 21:33:45 +08:00
XuzandClaude Opus 5.5 63d1e4281c 版本号改为 0.1.6
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
v0.1.6
2026-10-08 18:23:54 +08:00
XuzandClaude Opus 5.5 b834477bf4 终端加上滚动条:翻看回滚历史时出现在右侧,可拖动、点轨道跳转
用 gpui-kit 的 Scrollbar,配一个按回滚行数换算像素的 ScrollbarHandle
(terminal/scrollbar.rs)。拖动的回调没有 context,经引擎给出的
Scrollback 直接滚动终端,再由滚动条通知视图重画。滚动条盖在整个边距上,
滑块大多落在文字旁边;全屏程序没有回滚,不显示。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 18:23:22 +08:00
XuzandClaude Opus 5.5 65ea32acfb 终端执行的单元测试:dash 作为 sh 时允许输出里多一行 Terminated
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 16:44:07 +08:00
XuzandClaude Opus 5.5 2df67bc639 版本号改为 0.1.6-beta.1
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
v0.1.6-beta.1
2026-10-08 16:16:42 +08:00
XuzandClaude Opus 5.5 e09adeefb7 外部 CLI 新增 exec --terminal:在已打开的终端里执行命令
只允许登录一次的堡垒机(外部连接)上,exec 重新登录会被拒绝,另开通道又会结束会话。
--terminal 把命令打进这台主机在 ShellRS 里已打开的远程终端:先发 Ctrl-C,探测出
交互 shell(bash、dash、busybox ash)后输入命令行,经 OSC 标记取回输出、退出码和
执行上下文(--json 的 context)。不做忙碌检测,只拒绝全屏程序和同一终端已有一次运行。
外部连接上普通 exec 登录失败时,说明里提示改用 --terminal。

shells.yml 在 Docker 里对 bash 4.2–5.2、dash、busybox ash 跑真实终端测试。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 16:16:30 +08:00
XuzandClaude Opus 5.5 3c937a9be2 README 去掉界面语言的说明
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 00:18:41 +08:00
XuzandClaude Opus 5.5 2dd1f1995a 版本号改为 0.1.5
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
v0.1.5
2026-10-08 00:08:42 +08:00
XuzandClaude Opus 5.5 51bdab74f4 README 默认英文:README.md 改为英文版,中文版移到 README.zh-CN.md
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 00:07:05 +08:00
XuzandClaude Opus 5.5 4d70be98a9 分屏时右侧栏跟着焦点所在的远程终端,标题写出主机
中间区分屏后,焦点点进哪个标签它就在前,状态栏和右侧栏跟着变;点进另一半的 SFTP、
本地终端时右侧栏仍对着刚才的远程终端,屏幕上没有远程终端才隐藏。拖动合并标签组后
重新核对谁在前,修好标签被盖住后右侧栏还留着的问题。右侧栏标题加上主机名。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 23:59:06 +08:00
XuzandClaude Opus 5.5 77da643999 中文 README 的截图按当前界面重截
标题栏的「临时连接…」、远程终端右侧的工具按钮、Docker 的下划线标签都已不同于旧图。
用演示数据在真实窗口里截取,与英文版的六张构图一致,服务器地址打码。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 23:29:26 +08:00
XuzandClaude Opus 5.5 97addfbc00 英文 README 换成英文界面的截图
用改成英文名的演示数据在真实窗口里截取,与中文版的六张一一对应,
服务器地址打码;右侧栏工具拼图按中文版的版式拼。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 23:17:44 +08:00
XuzandClaude Opus 5.5 7b0dad9b41 Docker 的标签改用可横向滚动的下划线标签,与系统服务一致
均分宽度放不下英文的 "Containers 12"。不管什么语言,标签都按文字和数量的宽度排,
放不下时横向滚动。去掉只给 Docker 用的 count_tabs 和分段控件的计数。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 22:42:23 +08:00
XuzandClaude Opus 5.5 82c2c8b277 英文用户手册,README 说明界面有中英两种语言
docs/manual.en.md 按英文界面的用词翻译整本手册;README.en.md 改为链接英文手册。
两份 README 去掉「界面只有中文」的说明和路线图里的英文界面一项。
SFTP 标签菜单和地址提示里的 hostname 与其他处统一。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 22:30:25 +08:00
XuzandClaude Opus 5.5 d4d079579a 守卫测试扫描整个 src,用词表补充常用词
所有模块都已接入多语言,不再按目录逐步登记;扫描器也认 #[cfg(all(test, …))]。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 22:18:07 +08:00
XuzandClaude Opus 5.5 a0ed1ac8bf SFTP 与编辑器的文案接入多语言
explorer/、sftp/、editor/ 的文案移进 locales/explorer.yml、sftp.yml、editor.yml,中文逐字不变。
文件列表的列名、目录列表的分组跟着界面语言重设;列表占位改存枚举,拖动预览存方向,
「位置」改存 Place,显示时再翻译。动词拼句的地方(上传 / 下载、编辑器 / 预览、服务器上的 /
本机上的)拆成每种情况一个整句;废纸篓在 Windows 上写 Recycle Bin。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 22:12:51 +08:00
XuzandClaude Opus 5.5 eb6e43045a 英文用词统一:清屏、复制主机名
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 22:11:58 +08:00
XuzandClaude Opus 5.5 b7ebd893d3 英文排版:放宽详情标签列和高亮规则的通知列,转发示意图说明允许折行
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 22:11:30 +08:00
XuzandClaude Opus 5.5 575ca42258 实时切换测试覆盖主机树搜索框的提示
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 22:09:27 +08:00
XuzandClaude Opus 5.5 acd0e238d4 守卫测试覆盖右侧栏七个工具
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 22:07:56 +08:00
XuzandClaude Opus 5.5 5514612524 右侧栏七个工具的文案接入多语言
命令片段、历史命令、Docker、系统服务、进程管理、网络连接、系统监控和工作区里它们的确认、
通知改用 t! / tn!,文案在 locales/<工具>.yml 与 locales/tools.yml。容器操作的对象改成
ContainerSubject,每种操作一整句;详情里的字段存键、按键找行,切换语言时跟着变;
搜索框的占位随界面语言重设。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 22:07:14 +08:00
XuzandClaude Opus 5.5 70b329066f 英文措辞统一:下载页、占位示例
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 22:07:14 +08:00
XuzandClaude Opus 5.5 85189e4412 守卫测试覆盖终端、SSH、在线升级与外部 CLI
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 22:06:46 +08:00
XuzandClaude Opus 5.5 da546b5351 终端与 SSH 的文案接入多语言
终端标签、右键菜单、查找条、写进终端的提示、本地 PTY 和关键字高亮的文案,
以及 SSH 登录、跳板、代理、外部 CLI exec、测试连接的报错都走 t!,
新增 locales/terminal.yml、locales/ssh.yml,中文逐字不变。
终端的默认标题和无障碍名称在用到时再生成,查找条的占位随界面语言重设;
高亮规则的校验错误改为 PatternError,显示时再翻译。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 22:05:47 +08:00
XuzandClaude Opus 5.5 f6286b776c 在线升级与外部 CLI 的文案接入多语言
- 在线升级:状态行、标题栏按钮、更新对话框、出错原因和「重启会关闭…」改走 t! / tn!,列表用 join_list
- 外部 CLI:命令输出(表头、字段、摘要、进度、错误)、应用回给命令的消息和校验、设置页的 Agent 名称都有中英两版
- --help 与 SKILL.md 提到的界面名称写英文并附中文
- 新增 locales/update.yml、locales/cli.yml,补英文输出的单元测试

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 22:05:37 +08:00
XuzandClaude Opus 5.5 17dc087f52 守卫测试覆盖主机、凭据、端口转发
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 22:05:33 +08:00
XuzandClaude Opus 5.5 1c61269c52 主机、凭据、端口转发的文案接入多语言
host/、credential/、forward/、connection.rs、secrets/ 的界面文案、校验和报错改经 t! / tn!,
放进 locales/{host,credential,forward,connection,secrets}.yml,中文逐字不变。
写库失败按改动种类各给整句(Change),钥匙串失败同理;删除说明按句拼接(join_sentences),
数量用 tn!。三个侧栏列表的搜索框占位随语言切换重设。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 22:03:29 +08:00
XuzandClaude Opus 5.5 352ffcef55 设置、快捷键、窗口壳的文案接入多语言,打包元数据补英文
设置页按语言实时切换(分类、搜索关键词、规则表的提示),快捷键表改存键,
冲突提示按快捷键 id 找名称;状态栏、标题栏、开始页、确认框和通知换成整句。
macOS 包声明 en / zh-Hans 两种语言并翻译本地网络说明,Linux 桌面文件补英文说明。
新增界面语言实时切换的 UI 测试。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 21:42:09 +08:00
XuzandClaude Opus 5.5 1c855f1508 多语言基础设施:rust-i18n 接入,界面语言默认跟随系统
文案放进 locales/<模块>.yml,经 crate::i18n 的 t! / tn! 取用;启动时先按设置定语言,
改设置时实时切换并发出 UiLocale。守卫测试检查两种语言齐全、占位一致、没有遗漏和死键。
UI 测试夹具固定中文并隔离本线程的语言。共用件(shared/)先转换。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 21:24:06 +08:00
XuzandClaude Opus 5.5 f8f7473e42 列表的悬停和选中分开:深色悬停调淡,选中行统一一种颜色
- 侧栏的主机、端口转发、凭据列表和「最近连接」的选中行同色:浅色是原来侧栏的深一档灰,深色用「最近连接」原来的选中色,不再刺眼
- 深色下列表和表格的悬停只有选中色的一半,和选中区分开
- 浅色「最近连接」的选中行原来和悬停一样,现在同侧栏

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 20:37:48 +08:00
Xuz 3ddc7ebe62 完善隐私描述 2026-10-07 20:13:41 +08:00
XuzandClaude Opus 5.5 baa6745c1a 默认深色改用参照微信的炭灰,不再是近黑
- ShellRS Dark 的界面和终端:底色 #1e1e1f,标题栏、标签栏、状态栏 #2f2f30,边框和悬停 #3b3b3d,文字 #e0e0e4;gpui-kit 的每级灰按对照表换掉,彩色不动
- 次要文字 #929296,比微信的亮一些,对比度保持在 4.5 以上
- 终端选区和 ANSI 黑按新底色重算;「界面跟随主题」关闭时的深色界面同样生效

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 20:04:38 +08:00
XuzandClaude Opus 5.5 cd3d41c496 接入 Aptabase 匿名使用统计,「设置 › 关于」新增开关
- 自己调 Aptabase 的批量接口 POST /api/v0/events(没有纯 Rust SDK)。只发版本、系统名和版本、CPU 架构、设置快照(取值固定,主机等数量只报档位)和功能使用次数;不发主机、凭据、命令、文件名、路径,也没有任何标识
- 四种事件:app_installed(首次启动,送达后记进 analytics.json)、app_started、app_active(窗口到前台且当天 UTC 还没报过)、usage(43 项功能计数,从第一次使用起满 4 小时汇总一条)
- 不用定时器:只在启动、窗口激活、用到功能、改设置时动作,满期的汇总和失败重试都等下一个信号;计数存盘,退出不等网络、不丢数据
- 内网断网不受影响:联网、系统检测、写文件都在后台线程,连接 5 秒、整体 15 秒超时,失败不提示,重试从 1 分钟起翻倍、最长 6 小时,4xx 不重试
- 「设置 › 关于」新增「隐私」组的「发送匿名使用统计」,默认开,关掉清空本机攒下的计数
- 只有发布构建发;开发构建设 SHELLRS_ANALYTICS_DEBUG=1 才发调试事件,汇总周期 1 分钟、失败 10 秒后重试
- 手册新增「隐私」一节列出全部上报内容,README 同步

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 20:04:38 +08:00
XuzandClaude Opus 5.5 56491658a6 sync 测试的辅助函数只在 Unix 上编译,Windows 的 clippy 不再报未使用
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 14:16:26 +08:00
XuzandClaude Opus 5.5 a957b3b5a3 版本号改为 0.1.4
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
v0.1.4
2026-10-07 14:12:34 +08:00