Repository navigation
feat(control): 原生 CLI 读写终端与本地/Web 控制提示 - #132
Conversation
Repeated full-buffer scans made large chunked responses quadratic and caused the bundled CLI CI test to time out. Scan each received chunk once and double the regression payload without increasing the timeout.
|
感谢这个 PR,原生 CLI 读写终端的方向很有价值。review 时发现几处问题,建议合并前处理前 5 条,其余可以一并修或后续跟进。 建议合并前修改
建议一并修或后续跟进
最影响功能的是第 1 条:不处理的话,PR 的核心场景(不切换 workspace 读写后台终端)在没挂载过的 workspace 上基本不可用。第 2、3 条是热路径上的性能问题,建议一起处理。 🤖 Generated with Claude Code |
Wake ordinary background terminals without changing workspace selection, while deferring startup and agent restoration to a local view. Keep polling state updates silent, decode grids off the main queue, repair owned CLI links, validate socket credentials, return explicit size errors, and use an injected expiry clock in tests. Restore unrelated Xcode object IDs and ordering.
|
感谢更新!对照上次的 10 条意见逐条看了 上次 10 条的处理情况
新问题A. 后台 pane 被 CLI 唤醒后,滚动历史恢复错位(建议合并前修复)
建议:CLI 唤醒时设置一个合理的网格尺寸(例如存档记录的宽度 B.
|
A local socket cannot restore archived history on a zero-sized unmounted surface. Refuse reads and input before creating its shell until local/Web grid restoration completes. Only dangling Glint links are repairable; existing other installations remain linked and protected. Show repairable links as warnings and cover both regressions.
|
感谢复查,A、B 和第 6 条剩余的状态色问题已在
验证:A、B 的新增回归用例先在旧代码上复现失败,修复后通过;65 项相关 XCTest、20 项 CLI 子进程测试通过,当前提交的完整 CI 也已全部通过。本轮未安装或发布 Release,未重新执行真实 UI 目检。 |
变更内容 / Summary
新增随 Glint 打包的原生
glintCLI,可列出窗格、读取实时终端或滚动历史、发送文字/按键,以及显式聚焦。设置页支持安装、卸载和复制 Agent 使用说明,无需 Node.js、Python 或 MCP。pane focus才切换。CLI 可直接操作已就绪的后台终端,并可唤醒没有待恢复历史或启动任务的终端。重启后的限制:滚动历史恢复默认开启,有待恢复存档的后台 pane 需要先在 Glint 中打开并完成恢复,CLI 读取(包括不带--scrollback)和输入才可使用;本版本不保证重启后直接唤醒所有后台终端。pane-requires-local-open,CLI 和 Web 提示先在 Glint 中打开;远程访问不消费待执行命令,也不会在无本地视图时自动运行它们。CLI 对待恢复滚动历史同样在创建 shell、读取或注入输入前返回此提示;Web 保留按浏览器网格完成历史恢复的路径。Web 快照失败仍走选择失败反馈,成功后才标记控制状态。Glint.app/Contents/Helpers/glint的悬空链接可修复/卸载,并以警告色显示。指向另一份现存 Glint 的正常链接单独显示为「已链接到另一个 Glint」,禁止安装覆盖或卸载;其他程序的文件和链接仍受保护。request-too-large。--debug --help、--socket PATH --help和子命令帮助可用;--text '--help'保持为输入文字。ChildWindowExceptionGuard.m与ExceptionBackstopTests.swift在 main 中的对象 ID 与顺序,减少无关工程文件变更。验证方式 / Testing
git diff --check及本地化 JSON 校验通过;提交db1934b的完整远端 CI 已通过:Actions 40463065863。文档澄清提交
dbd71fe仅修改中英文 README,git diff --check通过,该提交的 Debug CI 也已通过。发布验证边界 / Release validation
当前 PR CI 验证的是 Debug 构建和本地测试,不代表
Contents/Helpers/glint已通过 Developer ID 发布签名、公证或安装后运行验证。scripts/sign-and-notarize.sh会对 app 使用--options runtime --timestamp --deep并执行公证,但 helper 的最终发布产物尚未实测。正式版前先用包含本 PR 的 beta 验证:
Codesign + notarize必须实际执行并成功,不能是 skipped。该步骤在缺少 Apple 证书时会跳过,单凭 release job 成功不能证明完成签名/公证。Contents/Helpers/glint的 Developer ID 签名、Team ID、时间戳及 hardened runtime,并验证整个 bundle 的签名完整性。--help、CLI 链接安装及真实终端读写;同时验证后台历史恢复的上述限制。上述 beta 发布验收尚未执行。
关联议题 / Related issues
处理 2026-10-27 审核意见 1–10,以及后续 A(后台滚动历史)、B(其他现存 Glint 链接)和修复状态警告色反馈。侧栏拖宽恢复和退出后子进程保留调查不在此 PR 范围内。