Commit Graph
195 Commits
Author SHA1 Message Date
okooo 81aeb37aee 终端粘贴截图:写成文件并把路径打进输入行
本地终端和已保存主机的远程终端里,剪贴板只有图、没有文字时,⌘V / Ctrl+Shift+V 或右键粘贴不再丢掉图片。图存成 PNG 等文件后,把路径当作文字粘进输入行,给终端里的 Agent 读。

本地写到系统临时目录 shellrs-pastes/(目录 0700、文件 0600),超过 20 个或超过 7 天的旧文件会清掉。已保存的主机另开一条 SFTP 把文件写到远端 /tmp/shellrs-paste-….png,连上后再粘路径;登录要问答就直接失败,不弹框。超过 8 MB 拒绝。外部连接和临时连接提示不支持。剪贴板里有文字时仍粘文字。
v0.1.10-beta.2-win
2026-10-13 02:26:58 +08:00
XuzandClaude Opus 5.5 fd4d37946b 已连接的标签不再显示状态点,只在连接中和断开时显示
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 00:46:08 +08:00
Nex-Z 743bd9d5e5 标签显示连接状态,远程终端断线后可按 Enter 重连 2026-10-13 00:40:05 +08:00
XuzandClaude Opus 5.5 8642ab5611 主机名称不再标为必填,CLI 帮助说明默认用地址
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 00:08:16 +08:00
Nex-Z 6a94958cd9 修正 UI 测试读取异步结果的时序 2026-10-13 00:01:21 +08:00
Nex-Z 31a509167c UI 测试使用跨平台语义快捷键 2026-10-13 00:01:21 +08:00
Nex-Z 78fd216fb6 主机名称留空时默认使用连接地址 2026-10-13 00:01:21 +08:00
Xuz 0dfa3fdf77 发布 0.1.10-beta.2 并补充 WinSCP 兼容更新日志 2026-10-12 22:22:53 +08:00
Xuz ff1efaf151 Windows 版本资源同时兼容 Xshell 和 WinSCP 堡垒机校验 2026-10-12 22:22:28 +08:00
Xuz bd7b8c1e3a 发布 0.1.10-beta.1 并补充更新日志 2026-10-12 20:38:17 +08:00
Xuz 959e0b1d9d Windows 版本资源增加 Xshell 标识以兼容堡垒机启动器 2026-10-12 20:35:39 +08:00
XuzandClaude Opus 5.5 e3397dabc7 主机密钥变更时可以直接「更新并连接」,不用手动改 known_hosts
服务器重装或换了密钥后,连接只弹出「服务器主机密钥已变更」并要求手动处理 known_hosts。现在
这个弹框和首次连接一样等用户回答:「更新并连接」删掉这台主机(host:port)记下的全部密钥、
记下现在的再继续登录(同 ssh-keygen -R),「取消」不连接。跳板主机同样。测试连接、外部 CLI
和端口转发的自动重连没人能回答,当场拒绝并照旧说明原因。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 14:49:58 +08:00
XuzandClaude Opus 5.5 3b06f6f516 版本号改为 0.1.9
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 21:44:55 +08:00
XuzandClaude Opus 5.5 1f542b692d Windows 安装程序覆盖安装时也按系统语言显示,不沿用上次安装的英文
Inno Setup 的 UsePreviousLanguage 默认打开,覆盖安装时沿用上一次安装的语言。0.1.9-beta.1
之前的安装程序只有英文,于是装过旧版的电脑上新安装程序仍是英文。现在关掉它,每次都按
Windows 的显示语言选择。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 21:44:44 +08:00
XuzandClaude Opus 5.5 69e641c2bd Windows 本地终端的标签只显示程序名,不显示完整路径
Windows 控制台把正在运行的程序的完整路径设成标题,标签显示成
「C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe」「C:\Windows\system32\cmd.exe」。
现在标题里的程序路径显示为程序名(powershell、cmd、cmd - ping localhost),其余标题不变。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 21:41:27 +08:00
XuzandClaude Opus 5.5 f69518950e 版本号改为 0.1.9-beta.1
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 20:56:01 +08:00
XuzandClaude Opus 5.5 cf80884221 Windows 安装程序按系统语言显示简体中文或英文
脚本原来只在编译机自带 ChineseSimplified.isl 时才加中文,而 Inno Setup 安装时不带这份非官方
翻译,CI 打出来的安装程序一直是英文。现在把 issrc is-6_7_1(windows-2025 上的版本)的
ChineseSimplified.isl 放进 packaging/windows/Languages,英文和简体中文都打进去,按 Windows
的显示语言自动选择、不弹选择框;其他语言用英文。Inno Setup 低于 6.5 时编译报错。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 20:55:42 +08:00
Xuz da00974786 调整应用图标外部留白以匹配 macOS 图标尺寸 2026-10-11 20:13:31 +08:00
XuzandClaude Opus 5.5 4acba3a0f8 自定义快捷键可以用 Shift 加 Insert、Delete 等键,如 Shift+Insert 粘贴
快捷键原来只认带 Ctrl / Alt(macOS 是 ⌘⌥⌃)的组合和功能键,Shift+Insert 这种 Windows、
Linux 上常用的粘贴键被当成打字的键拒绝。现在 Shift 加 Insert、Delete、Home、End、
PageUp、PageDown 也可以设;单按这些键和 Shift 加方向键仍然拒绝,和输入框的键冲突时照样
拒绝。功能键只收 F1–F12,与提示文字一致。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 19:54:24 +08:00
XuzandClaude Opus 5.5 cd489a5fc2 设置 › 终端新增「本地终端」:指定 Shell;Windows 默认改用 PowerShell
本地终端运行的程序可以写路径或命令,带参数;输入框右端的下拉列出装了的常用 shell
(zsh、bash、sh、fish、nu、pwsh,从 /etc/shells、PATH 和 Homebrew 目录找),旁边
「选择文件…」用系统的文件选择框。留空是自动检测,新开和重新启动的本地终端生效。
只写一个 shell 时和默认一样按登录 shell 启动,带参数或不是 shell 的照写执行。

Windows 的默认 shell 原来是 cmd.exe,现在先用 PowerShell 7,其次 Windows PowerShell,
都没有才用 cmd.exe。

工作区改为每次打开、重启本地终端时向 LocalTerminalTransportProvider 要 factory,
UI 测试注入的 FixedLocalTerminalTransportProvider 记下每次要的 shell。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 19:44:25 +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