47 lines
2.8 KiB
Markdown
47 lines
2.8 KiB
Markdown
# OpsXShell 当前任务
|
||
|
||
> 最后更新:2026-09-14
|
||
> 给 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 安装包走 Tauri DMG 布局;本机 Developer ID 签名(公证/staple 仍要每打一次包跑一遍)
|
||
- [x] 删除过时 `docs/ux-foundation-audit.md`
|
||
|
||
## 现在可做
|
||
|
||
按影响排序。一次只取一项,改完跑 `npm run test:patrol`,相关能力再补单测。
|
||
|
||
- [x] keepalive / 原生 disconnect 保留真实断开原因,不要一律「closed by user」
|
||
- [x] 共享连接上 SFTP 在连接关闭后,活跃 tab 走与终端类似的有限次自动重连(恢复上次远程目录)
|
||
- [ ] 远程文本保存前 `sftpStat`:mtime/size 变化则确认,避免静默覆盖
|
||
- [ ] 同名目录冲突文案区分「合并覆盖内部同名文件」与「跳过」
|
||
- [ ] 远程 `0.0.0.0` 启动后,列表 `bindHost` 尽量反映真实监听(未开 GatewayPorts 时常仍是 loopback),不要假装全接口已开
|
||
- [ ] Windows x86_64 实机:`./scripts/build.sh` 产物 + `ssh://` 注册 + 单实例唤起
|
||
- [ ] 把当前已签名的 v2.1.1 DMG 公证并 staple(`./scripts/macos-notarize.sh`),未钉票不得对外写「已公证」
|
||
- [ ] 无签名凭据时文档/界面不得宣称已签名、公证或自动更新(做法见 [docs/release.md](./docs/release.md#签名公证和自动更新))
|
||
|
||
## 稍后
|
||
|
||
- [ ] Agent Forwarding / OpenSSH 证书 / FIDO2(高级配置默认收起)
|
||
- [ ] SFTP 校验和与失败任务恢复
|
||
- [ ] RDP/VNC 生产级证书校验
|
||
- [ ] Windows Authenticode(有证书后再做,见 release.md);macOS 每次新 DMG 仍须公证 staple
|
||
- [ ] 自动更新(签名清单 + HTTPS + 回滚;缺一不可开 UI)
|
||
- [ ] EventSink / specta / infrastructure 端口(单独轨道,见 [docs/architecture-refactor.md](./docs/architecture-refactor.md))
|
||
- [ ] 用户可导出的脱敏崩溃诊断包
|
||
- [ ] AI 执行运行时从 React 面板抽离(取消、单步超时、原生 tool calling)
|
||
- [ ] 主机排障 Agent eval 集
|
||
|
||
## 约束
|
||
|
||
- 不引入审计/审批/堡垒机。
|
||
- 未由 Rust 实现的能力不能在界面显示为可用。
|
||
- 可见字符串同步七语种;`test/i18n/localeKeys.test.ts` 必须过。
|
||
- 转发运行态不落盘;停止必须关掉真实 Listener。
|