feat: harden local shell, SFTP, and desktop session reliability

Finder-launched terminals now inherit a login PATH so tools like ollama resolve, destructive SFTP/editor actions require confirmation, and terminal search plus window dragging work again. SSH forwards and RDP sessions keep listeners and survive reconnect without FastPath crashes.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Logan.LiandCursor committed 2026-08-16 16:08:11 +08:00
1 parent 188f3556ed
commit 08696896f9
223 files changed
+13493 -3423

No files matched your search

+44
View File
@@ -0,0 +1,44 @@
# OpsXShell 当前任务
> 最后更新:2026-08-16
> 给 Hermes / OpenClaw / Cursor 持续开发用。做完一项就勾选,并同步 [ROADMAP.md](./ROADMAP.md)。规则见 [AGENTS.md](./AGENTS.md)。
## 本周期已完成(勿回退)
- [x] 本地/远程转发:端口优先 + 高级绑定;远程默认 `127.0.0.1`;`0.0.0.0` 提示 GatewayPorts
- [x] 转发 retain / orphan-adopt / `forwardIntent`;空闲挂起断开原生并 retain Listener
- [x] SSH resume 返回新 `connectionId` 并回写所有相关 tab
- [x] RDP 协商 K64;缩放后清脏矩形并 clamp;解压失败重置 FastPath 而非整会话退出
- [x] `AGENTS.md` / `CLAUDE.md` 对齐当前架构与命令
- [x] macOS arm64 v2.1.1 安装包(ad-hoc,未公证)
- [x] 删除过时 `docs/ux-foundation-audit.md`
## 现在可做
按影响排序。一次只取一项,改完跑 `npm run test:patrol`,相关能力再补单测。
- [ ] keepalive / 原生 disconnect 保留真实断开原因,不要一律「closed by user」
- [ ] 共享连接上 SFTP 在连接关闭后,活跃 tab 走与终端类似的有限次自动重连(恢复上次远程目录)
- [ ] 远程文本保存前 `sftpStat`:mtime/size 变化则确认,避免静默覆盖
- [ ] 同名目录冲突文案区分「合并覆盖内部同名文件」与「跳过」
- [ ] 远程 `0.0.0.0` 启动后,列表 `bindHost` 尽量反映真实监听(未开 GatewayPorts 时常仍是 loopback),不要假装全接口已开
- [ ] Windows x86_64 实机:`./scripts/build.sh` 产物 + `ssh://` 注册 + 单实例唤起
- [ ] 无签名凭据时文档/界面不得宣称已签名、公证或自动更新
## 稍后
- [ ] Agent Forwarding / OpenSSH 证书 / FIDO2(高级配置默认收起)
- [ ] SFTP 校验和与失败任务恢复
- [ ] RDP/VNC 生产级证书校验
- [ ] macOS Developer ID + 公证;Windows Authenticode
- [ ] 自动更新(签名清单 + 回滚)
- [ ] 用户可导出的脱敏崩溃诊断包
- [ ] AI 执行运行时从 React 面板抽离(取消、单步超时、原生 tool calling)
- [ ] 主机排障 Agent eval 集
## 约束
- 不引入审计/审批/堡垒机。
- 未由 Rust 实现的能力不能在界面显示为可用。
- 可见字符串同步七语种;`test/i18n/localeKeys.test.ts` 必须过。
- 转发运行态不落盘;停止必须关掉真实 Listener。