@yu_robotics/remote-cli 1.6.170 → 1.6.176

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/README.md +25 -0
  2. package/dist/client/GoalCommand.d.ts +15 -0
  3. package/dist/client/GoalCommand.d.ts.map +1 -0
  4. package/dist/client/GoalCommand.js +59 -0
  5. package/dist/client/GoalCommand.js.map +1 -0
  6. package/dist/client/MessageHandler.d.ts +4 -0
  7. package/dist/client/MessageHandler.d.ts.map +1 -1
  8. package/dist/client/MessageHandler.js +186 -46
  9. package/dist/client/MessageHandler.js.map +1 -1
  10. package/dist/client/TaskRecovery.d.ts +3 -1
  11. package/dist/client/TaskRecovery.d.ts.map +1 -1
  12. package/dist/client/TaskRecovery.js +9 -4
  13. package/dist/client/TaskRecovery.js.map +1 -1
  14. package/dist/client/WebSocketClient.d.ts +2 -1
  15. package/dist/client/WebSocketClient.d.ts.map +1 -1
  16. package/dist/client/WebSocketClient.js +9 -1
  17. package/dist/client/WebSocketClient.js.map +1 -1
  18. package/dist/delegation/DelegationManager.js +1 -1
  19. package/dist/delegation/DelegationManager.js.map +1 -1
  20. package/dist/executor/AcpExecutor.d.ts +6 -0
  21. package/dist/executor/AcpExecutor.d.ts.map +1 -1
  22. package/dist/executor/AcpExecutor.js +81 -10
  23. package/dist/executor/AcpExecutor.js.map +1 -1
  24. package/dist/executor/CodexAppServerClient.d.ts +1 -0
  25. package/dist/executor/CodexAppServerClient.d.ts.map +1 -1
  26. package/dist/executor/CodexAppServerClient.js +12 -4
  27. package/dist/executor/CodexAppServerClient.js.map +1 -1
  28. package/dist/executor/CodexAppServerExecutor.d.ts +39 -2
  29. package/dist/executor/CodexAppServerExecutor.d.ts.map +1 -1
  30. package/dist/executor/CodexAppServerExecutor.js +712 -32
  31. package/dist/executor/CodexAppServerExecutor.js.map +1 -1
  32. package/dist/executor/IExecutor.d.ts +43 -0
  33. package/dist/executor/IExecutor.d.ts.map +1 -1
  34. package/dist/executor/KimiExecutor.d.ts +9 -0
  35. package/dist/executor/KimiExecutor.d.ts.map +1 -1
  36. package/dist/executor/KimiExecutor.js +45 -0
  37. package/dist/executor/KimiExecutor.js.map +1 -1
  38. package/dist/executor/codex/CodexGoals.d.ts +6 -0
  39. package/dist/executor/codex/CodexGoals.d.ts.map +1 -0
  40. package/dist/executor/codex/CodexGoals.js +49 -0
  41. package/dist/executor/codex/CodexGoals.js.map +1 -0
  42. package/dist/executor/codex/CodexImages.d.ts +22 -0
  43. package/dist/executor/codex/CodexImages.d.ts.map +1 -0
  44. package/dist/executor/codex/CodexImages.js +201 -0
  45. package/dist/executor/codex/CodexImages.js.map +1 -0
  46. package/dist/executor/index.d.ts +2 -1
  47. package/dist/executor/index.d.ts.map +1 -1
  48. package/dist/executor/index.js +1 -0
  49. package/dist/executor/index.js.map +1 -1
  50. package/dist/executor/kimi/KimiAccountUsage.d.ts +2 -6
  51. package/dist/executor/kimi/KimiAccountUsage.d.ts.map +1 -1
  52. package/dist/executor/kimi/KimiAccountUsage.js +11 -71
  53. package/dist/executor/kimi/KimiAccountUsage.js.map +1 -1
  54. package/dist/executor/kimi/KimiLocalServer.d.ts +28 -0
  55. package/dist/executor/kimi/KimiLocalServer.d.ts.map +1 -0
  56. package/dist/executor/kimi/KimiLocalServer.js +192 -0
  57. package/dist/executor/kimi/KimiLocalServer.js.map +1 -0
  58. package/dist/executor/kimi/KimiModelCatalog.d.ts +6 -0
  59. package/dist/executor/kimi/KimiModelCatalog.d.ts.map +1 -0
  60. package/dist/executor/kimi/KimiModelCatalog.js +86 -0
  61. package/dist/executor/kimi/KimiModelCatalog.js.map +1 -0
  62. package/dist/maintenance/release-notes.json +1 -1
  63. package/dist/settings/SettingsCatalog.d.ts +1 -1
  64. package/dist/settings/SettingsCatalog.d.ts.map +1 -1
  65. package/dist/settings/SettingsCatalog.js +6 -2
  66. package/dist/settings/SettingsCatalog.js.map +1 -1
  67. package/dist/settings/SettingsService.d.ts +3 -1
  68. package/dist/settings/SettingsService.d.ts.map +1 -1
  69. package/dist/settings/SettingsService.js +17 -5
  70. package/dist/settings/SettingsService.js.map +1 -1
  71. package/dist/thread/ThreadExecutorPool.d.ts +3 -1
  72. package/dist/thread/ThreadExecutorPool.d.ts.map +1 -1
  73. package/dist/thread/ThreadExecutorPool.js +13 -1
  74. package/dist/thread/ThreadExecutorPool.js.map +1 -1
  75. package/dist/thread/ThreadManager.d.ts +1 -1
  76. package/dist/thread/ThreadManager.d.ts.map +1 -1
  77. package/dist/thread/ThreadManager.js.map +1 -1
  78. package/dist/thread/types.d.ts +2 -0
  79. package/dist/thread/types.d.ts.map +1 -1
  80. package/dist/types/Settings.d.ts +8 -0
  81. package/dist/types/Settings.d.ts.map +1 -1
  82. package/dist/utils/ImageDelivery.d.ts +67 -0
  83. package/dist/utils/ImageDelivery.d.ts.map +1 -0
  84. package/dist/utils/ImageDelivery.js +270 -0
  85. package/dist/utils/ImageDelivery.js.map +1 -0
  86. package/dist/utils/ImageValidation.d.ts +11 -0
  87. package/dist/utils/ImageValidation.d.ts.map +1 -0
  88. package/dist/utils/ImageValidation.js +62 -0
  89. package/dist/utils/ImageValidation.js.map +1 -0
  90. package/dist/utils/LocalImageDetector.d.ts +12 -3
  91. package/dist/utils/LocalImageDetector.d.ts.map +1 -1
  92. package/dist/utils/LocalImageDetector.js +153 -55
  93. package/dist/utils/LocalImageDetector.js.map +1 -1
  94. package/package.json +1 -1
@@ -1 +1 @@
1
- {"format":1,"firstVersion":"1.6.123","sections":[{"version":"1.6.170","text":"### 回滚线程卡片改动\n- 撤销今日的线程卡片折叠改动,恢复 1.6.168 的线程按钮显示和卡片拆分行为。","changes":[{"topic":"thread-controls","title":"线程切换","text":"撤销今日的线程卡片折叠改动,恢复 1.6.168 的线程按钮显示和卡片拆分行为。"}],"details":"### Reverted\n- Revert the 1.6.169 thread-card presentation change, restoring the always-visible thread controls and 150-node recursive card budget from 1.6.168."},{"version":"1.6.168","text":"### 用卡片浏览和切换目录\n- 输入 /cd 即可在卡片中浏览上一级、下一级和允许的根目录,只显示目录;点击“使用此目录”才切换当前线程,浏览本身不会清空会话。\n- 切换前检查目录权限和任务状态,拒绝过期或已变化的选择;大目录会明确提示列表限制,原有 /cd 路径命令仍可使用。","changes":[{"topic":"directory-browser","title":"目录浏览","text":"输入 /cd 即可在卡片中浏览上一级、下一级和允许的根目录,只显示目录;点击“使用此目录”才切换当前线程,浏览本身不会清空会话。"},{"topic":"directory-browser","title":"目录浏览","text":"切换前检查目录权限和任务状态,拒绝过期或已变化的选择;大目录会明确提示列表限制,原有 /cd 路径命令仍可使用。"}],"details":"### Added\n- Open bare `/cd` as a directory-only browser when both peers negotiate `directoryCards` and `settingsCards`. Navigate child/parent/root directories without executing a backend; apply only with Use this directory and preserve text `/cd <path>` for all peers.\n- Bind bounded local listings to owner, thread/configuration, allowlist, expiry, canonical roots, directory and ancestor identities. Omit symbolic-link directories, stop at the nearest allowed root, explicitly report partial listings, and reuse budgeted card rendering and exact-request receipts.\n\n### Changed\n- Serialize card and text directory changes through shared settings admission, reject active/queued/delegated work, and preserve existing all-backend context reset, same-directory no-op, and delegation workspace-generation cleanup. External filesystem races and bind mounts remain outside the application-level isolation guarantee.\n\n### Tests\n- Cover directory-only browsing, roots, busy navigation, changed identities/ancestors, symlinks, stale/forged/expired selections, duplicate Apply, text compatibility, card budgets, and optional capability negotiation."},{"version":"1.6.167","text":"### 子任务结果展示更完整\n- 子任务完成卡片的结果摘要上限提高至 4 KiB,减少过早截断,保留长结果的开头和结论。\n- 带省略标记的结果片段改用安全纯文本展示,避免截断代码块、表格或链接导致排版错乱;完整结果仍保留 Markdown 格式。","changes":[{"topic":"delegation","title":"委派任务","text":"子任务完成卡片的结果摘要上限提高至 4 KiB,减少过早截断,保留长结果的开头和结论。"},{"topic":"delegation","title":"委派任务","text":"带省略标记的结果片段改用安全纯文本展示,避免截断代码块、表格或链接导致排版错乱;完整结果仍保留 Markdown 格式。"}],"details":"### Fixed\n- Expand terminal Worker card summaries from 1000 bytes to 4 KiB for Router 1.6.167 or newer, retain UTF-8-safe beginning/end excerpts, and accept the full summary through Router validation and rendering. Older or unknown Routers retain the legacy budget; strict version precedence excludes 1.6.167 prereleases, and current registration metadata is rechecked after reconnect. Full delegated results and continuations retain their existing 32 KiB and 64 KiB limits.\n- Render worker result excerpts containing standalone omission markers as escaped literal text with a separate explanation, preventing head/tail splices from reinterpreting orphaned Markdown fences, links, tables, or card markup. Intact result Markdown and streaming activity formatting remain unchanged.\n\n### Tests\n- Cover larger ASCII/Unicode summaries, retained conclusions, legacy omission markers, Markdown and card-tag safety, Router boundary validation, and atomic Worker pagination under node, size, and table budgets."},{"version":"1.6.166","text":"### 工具结果不再导致客户端退出\n- 修复 Claude Code 返回多块工具结果时客户端崩溃的问题;仅提取文本,不把图片等非文本内容当作文件路径处理。\n- 本地图片检测或转发失败时保留正常任务回复,不再中断客户端或影响后续任务。","changes":[{"topic":"image-output","title":"图片输出","text":"修复 Claude Code 返回多块工具结果时客户端崩溃的问题;仅提取文本,不把图片等非文本内容当作文件路径处理。"},{"topic":"image-output","title":"图片输出","text":"本地图片检测或转发失败时保留正常任务回复,不再中断客户端或影响后续任务。"}],"details":"### Fixed\n- Normalize Claude native tool-result content blocks to text before forwarding; ignore embedded media and unknown payloads instead of passing them to string-only consumers.\n- Exclude native tool-result payloads from raw stdout logging before normalization.\n- Ignore non-string input in local-image detection and contain optional image-forwarding failures without terminating the CLI or failing an otherwise successful task. Preserve web-result exclusions and directory/size checks.\n\n### Tests\n- Cover mixed Claude content blocks, malformed image-detector input, asynchronous tool-result scan failures, final-output failures, and subsequent task execution."},{"version":"1.6.165","text":"### Pi 会话连接更可靠\n- 同一客户端内,不同线程不能同时连接同一个 Pi 会话;连接或断开写盘失败会明确提示失败,不再误报成功。\n- Pi 会话切换与模型等设置修改互斥,后台任务未结束或自动升级时不会切换上下文;Claude Code、Codex 仍仅提供只读列表。\n- 修正 Pi 自定义目录下的会话发现,并让本机重开命令正确处理含空格的会话路径;仍需避免本机与远程同时执行。","changes":[{"topic":"session-handoff","title":"会话接续","text":"同一客户端内,不同线程不能同时连接同一个 Pi 会话;连接或断开写盘失败会明确提示失败,不再误报成功。"},{"topic":"session-handoff","title":"会话接续","text":"Pi 会话切换与模型等设置修改互斥,后台任务未结束或自动升级时不会切换上下文;Claude Code、Codex 仍仅提供只读列表。"},{"topic":"session-handoff","title":"会话接续","text":"修正 Pi 自定义目录下的会话发现,并让本机重开命令正确处理含空格的会话路径;仍需避免本机与远程同时执行。"}],"details":"### Fixed\n- Reserve a selected Pi session file before asynchronous startup across threads in one daemon. Failed or unknown cleanup keeps the file quarantined until recovery; this is not an OS or cross-process writer lock.\n- Require successful pointer persistence before acknowledging Pi connection or detach. Failed writes retain the previous association; cancelled startup cannot commit a new connection.\n- Serialize Pi session confirmations with settings admission and reject context changes during queued work, active delegated tasks, or automatic updates. Claude Code and Codex remain read-only catalogs with unchanged executor and history behavior.\n- Discover default Pi sessions under `PI_CODING_AGENT_DIR`, fail closed for unresolved agent roots, and shell-quote Pi-only local reopen guidance.\n\n### Tests\n- Add concurrent-confirmation, persistence-failure, restart, cancellation, settings-conflict, custom-directory, and non-Pi read-only regressions."},{"version":"1.6.164","text":"### Pi 会话名称可区分\n- 新建 Pi 会话的默认名称使用独立的 session ID,不再重复使用线程 ID;重新打开已保存会话不会覆盖本机设置的名称。已有重名历史不自动改写。","changes":[{"topic":"session-handoff","title":"会话接续","text":"新建 Pi 会话的默认名称使用独立的 session ID,不再重复使用线程 ID;重新打开已保存会话不会覆盖本机设置的名称。已有重名历史不自动改写。"}],"details":"### Fixed\n- Give newly created Pi foreground sessions a default name based on their independent native session ID, not the reusable remote thread ID. `/new` sessions are distinguishable in `/resume`, and reopening a persisted file no longer appends `--name` or overwrites names assigned locally. Adopted sessions and synthetic runtime naming remain unchanged. Existing duplicate names are not rewritten automatically."},{"version":"1.6.163","text":"### Pi 新建对话保留旧会话\n- Pi 前台 `/new` 和 `/clear` 保留旧 session 的历史,为新对话使用独立 ID;旧会话可以通过 `/resume` 再次连接,不会把旧上下文带入新对话。\n- Pi 删除线程也保留原生历史;选择已有会话后、确认成功前,普通消息仍进入当前会话。委派 Worker 和临时元数据会话的清理规则不变。","changes":[{"topic":"session-handoff","title":"会话接续","text":"Pi 前台 `/new` 和 `/clear` 保留旧 session 的历史,为新对话使用独立 ID;旧会话可以通过 `/resume` 再次连接,不会把旧上下文带入新对话。"},{"topic":"session-handoff","title":"会话接续","text":"Pi 删除线程也保留原生历史;选择已有会话后、确认成功前,普通消息仍进入当前会话。委派 Worker 和临时元数据会话的清理规则不变。"}],"details":"### Changed\n- Pi foreground `/new` and `/clear` now remove only the current association and preserve native session history for `/resume`. Fresh conversations use independent random IDs rather than the stable remote thread ID, so retained files cannot resurrect cleared context, including after restart before the next prompt.\n- Pi foreground thread-data deletion also preserves native history. Delegated-worker and temporary metadata runtimes retain their disposable cleanup and thread-ID behavior.\n\n### Tests\n- Cover foreground A to `/new` to independent B, ordinary messages remaining in B during an unconfirmed resume draft, and confirmed native switching back to A. Cover reset/restart identity separation and unchanged synthetic-runtime cleanup."},{"version":"1.6.162","text":"### Pi 会话无需释放即可顺序切换\n- 移除 `/session release`:接管的 Pi 会话每轮飞书任务前会重新加载并校验,同一会话在本机新增的历史会被读入,不需要重新在飞书选择会话;`/session detach` 仍用于解除绑定。\n- 两侧 Pi 可以保持打开,但请保证不同时执行任务;切回本机窗口时仍需原生 `/resume` 重新加载。当前不提供自动本机刷新或并发互斥。","changes":[{"topic":"session-handoff","title":"会话接续","text":"移除 `/session release`:接管的 Pi 会话每轮飞书任务前会重新加载并校验,同一会话在本机新增的历史会被读入,不需要重新在飞书选择会话;`/session detach` 仍用于解除绑定。"},{"topic":"session-handoff","title":"会话接续","text":"两侧 Pi 可以保持打开,但请保证不同时执行任务;切回本机窗口时仍需原生 `/resume` 重新加载。当前不提供自动本机刷新或并发互斥。"}],"details":"### Changed\n- Remove `/session release`, the executor release operation and the persisted released-state gate. Existing adopted pointers with an old released flag remain usable; `/session detach` still confirms association removal without deleting native history.\n- Reload and verify the exact adopted Pi session before every remote prompt, including native slash prompts, so sequential local writes are visible without another remote resume or release step. Idle local Pi windows may remain open, but must resume the same file before their next turn. Simultaneous writing is unsupported and can create separate native branches; no automatic local refresh or writer exclusion is claimed.\n- Reserve remote turn preparation against overlapping execution/context changes and cancel preparation before prompt dispatch on abort/reset/shutdown. Keep legacy private sessions and worker execution unchanged.\n\n### Fixed\n- Synchronize the lockfile package versions with all package manifests."},{"version":"1.6.161","text":"### 会话接续\n- 一个线程现在可以连接并继续一个已有的 Pi 会话:`/resume` 列出当前工作目录的会话,`/resume select` 或 `id` 选中后显示确认,`/resume confirm` 连接;连接不发送任务。\n- 连接时会校验 Pi 实际打开的会话:不一致、已被其他线程占用、或选中后被本机修改都会被拒绝并保留原会话;接管的历史不会被 `/clear` 或 `/thread delete` 删除。\n- `/session` 查看连接状态,`/session release` 停止后端进程并锁定远程使用以方便本机继续,`/session detach` 确认后解除连接。\n- `/resume` 也支持翻页与搜索,令牌 5 分钟内有效且只对发起人、当前线程和工作目录生效。\n- 在本机运行 `remote-cli session show` 可查看重新打开会话的命令;Codex、Claude Code 等其他后端目前只能列出,还不能连接。","changes":[{"topic":"session-handoff","title":"会话接续","text":"一个线程现在可以连接并继续一个已有的 Pi 会话:`/resume` 列出当前工作目录的会话,`/resume select` 或 `id` 选中后显示确认,`/resume confirm` 连接;连接不发送任务。"},{"topic":"session-handoff","title":"会话接续","text":"连接时会校验 Pi 实际打开的会话:不一致、已被其他线程占用、或选中后被本机修改都会被拒绝并保留原会话;接管的历史不会被 `/clear` 或 `/thread delete` 删除。"},{"topic":"session-handoff","title":"会话接续","text":"`/session` 查看连接状态,`/session release` 停止后端进程并锁定远程使用以方便本机继续,`/session detach` 确认后解除连接。"},{"topic":"session-handoff","title":"会话接续","text":"`/resume` 也支持翻页与搜索,令牌 5 分钟内有效且只对发起人、当前线程和工作目录生效。"},{"topic":"session-handoff","title":"会话接续","text":"在本机运行 `remote-cli session show` 可查看重新打开会话的命令;Codex、Claude Code 等其他后端目前只能列出,还不能连接。"}],"details":"### Added\n- Reserve `/resume`, `/r` and `/session` as program-owned native session controls before executor construction, working-directory changes, queue admission or backend slash passthrough, and remove the misleading natural-language resume shortcut. Local session sharing stays disabled by default; enabling it never makes an unverified adapter available.\n- Add read-only native session discovery for Pi, Codex and Claude Code: `/resume` lists the current workspace's sessions (bounded reads, no backend process, no transcript text, no symlink following), hiding synthetic, delegated-worker, sidechain and ambiguous duplicate entries and reporting incomplete coverage. Message counts stay unavailable where they cannot be read safely.\n- Add paging and search to the read-only list: each list is a snapshot with an unguessable 12-character token, eight rows per page and a five-minute lifetime, bound to the requesting user, thread and workspace; `/resume page` and `/resume search` never reread native stores.\n- Connect a thread to an existing Pi session and continue its history. `/resume select` or `/resume id` shows a confirmation naming the session and any binding it replaces, and `/resume confirm` connects it. The loaded identity is verified through Pi RPC state without sending a prompt, so a silently substituted session is refused and the previous conversation is restored.\n- Add `/session` binding status, `/session release` (stop the owned Pi process and block remote work so a local Pi can take over) and `/session detach` (forget the association after confirmation). Adopted native history is user-owned: `/clear`, detach and `/thread delete` never delete it. A session held by another remote-cli thread, or changed locally after selection, is refused.\n- Add `remote-cli session show --thread <name> --backend <key>`: a read-only, daemon-free helper printing exact native reopen guidance."},{"version":"1.6.160","text":"### 切换后端不再需要确认按钮\n- 后端选择仍在卡片上方,点击后端直接切换,默认只影响当前线程,不再需要点击 Confirm;收到成功确认后才更新选中状态。\n- 下方范围按钮只设置下一次切换的目标,不会单独切换后端;同一卡片保留所选范围,重新打开默认当前线程,跟随全局只作用于当前线程。","changes":[{"topic":"settings-cards","title":"设置卡片","text":"后端选择仍在卡片上方,点击后端直接切换,默认只影响当前线程,不再需要点击 Confirm;收到成功确认后才更新选中状态。"},{"topic":"settings-cards","title":"设置卡片","text":"下方范围按钮只设置下一次切换的目标,不会单独切换后端;同一卡片保留所选范围,重新打开默认当前线程,跟随全局只作用于当前线程。"}],"details":"### Changed\n- Remove the backend card's Confirm section. Backend choices submit immediately using the selected scope, defaulting to Current thread, while Choose backend remains above Apply to. Scope buttons only change the next backend click's target; keep that scope within the same card after acknowledgement. Show only the acknowledged backend as selected, disable further changes while pending, and preserve exact-request retries and stale-revision validation. Follow global applies immediately to the original thread and restores the local scope to Current thread after acknowledgement. Existing CLI settings actions and text commands remain compatible."},{"version":"1.6.159","text":"### 大项目委派准备允许更长等待\n- 创建 Worker 工作目录和切换检出内容的超时从 15 秒提高到 120 秒,减少大项目在子 Agent 启动前超时;其他 Git 操作保持原有时限。\n- Git 超时提示显示具体操作、耗时和时限,方便定位准备阶段的问题。","changes":[{"topic":"delegation","title":"委派任务","text":"创建 Worker 工作目录和切换检出内容的超时从 15 秒提高到 120 秒,减少大项目在子 Agent 启动前超时;其他 Git 操作保持原有时限。"},{"topic":"delegation","title":"委派任务","text":"Git 超时提示显示具体操作、耗时和时限,方便定位准备阶段的问题。"}],"details":"### Fixed\n- Allow delegated `git worktree add` and `git checkout` commands up to 120 seconds so larger working trees can finish preparing. Other Git commands and nested object transfers retain their 15-second deadlines. Timeout messages identify the worktree subcommand and report elapsed time and the deadline without including paths or checkout references. Preserve child-exit waiting, kill escalation, output limits, task reservations and cancellation ordering."},{"version":"1.6.158","text":"### 减少空正文的完成续卡\n- 收尾时在容量允许的情况下,将最后一段正文和完成信息、线程按钮放在同一张卡片,避免单独多出一张只有完成区的续卡;保留 Worker 分组和卡片容量限制。","changes":[{"topic":"tool-cards","title":"工具卡片","text":"收尾时在容量允许的情况下,将最后一段正文和完成信息、线程按钮放在同一张卡片,避免单独多出一张只有完成区的续卡;保留 Worker 分组和卡片容量限制。"}],"details":"### Fixed\n- Keep the completion note, optional execution metadata and thread controls with the final body item or complete worker group when they fit together within continuation-card node, size and table budgets. Avoid a preventable footer-only continuation, including replies without execution metadata; retain the body when refreshing thread controls. Oversized indivisible groups still respect capacity limits. Streaming, queue confirmations and bare settings cards retain their existing behavior."},{"version":"1.6.157","text":"### 委派后端状态恢复彩色标签\n- 后端可用性恢复彩色状态标签:主 Agent 蓝色、已安装绿色、受限橙色、不可用红色,未知状态灰色;On/Off 操作保持不变。","changes":[{"topic":"delegation","title":"委派任务","text":"后端可用性恢复彩色状态标签:主 Agent 蓝色、已安装绿色、受限橙色、不可用红色,未知状态灰色;On/Off 操作保持不变。"}],"details":"### Changed\n- Restore colored status badges in the `/delegation` card's backend-availability section: blue for the coordinator, green for installed workers, orange for blocked workers, red for unavailable backends and neutral for unknown worker availability. Preserve literal detail escaping, card capacity accounting and acknowledged On/Off controls."},{"version":"1.6.156","text":"### 委派开关支持卡片操作\n- /delegation 新增当前线程的 On/Off 开关卡片,选中项蓝色高亮;点击后收到成功确认才更新状态。\n- 后端可用性单独展示,明确提示未安装和沙箱限制;运行中仍可查看,切换需等待任务完成,旧版本继续使用文字命令。","changes":[{"topic":"delegation","title":"委派任务","text":"/delegation 新增当前线程的 On/Off 开关卡片,选中项蓝色高亮;点击后收到成功确认才更新状态。"},{"topic":"delegation","title":"委派任务","text":"后端可用性单独展示,明确提示未安装和沙箱限制;运行中仍可查看,切换需等待任务完成,旧版本继续使用文字命令。"}],"details":"### Added\n- Add a thread-scoped `/delegation` settings card with blue checked On/Off controls and a separate backend-availability section. Clicks submit immediately, update selection only after durable CLI acknowledgement, and preserve pending/unknown states and exact-request retries. Running work and queued commands block mutation, not inspection or refresh; reset remains a separate text command.\n- Negotiate `delegationCards` in addition to `settingsCards` on protocol v1. Older peers retain the existing delegation status text and parameterized commands. Reuse immutable snapshots, ownership checks, admission barriers and native cleanup for card/text toggles; distinguish the enabled preference from sandbox restrictions, installation, authentication and quota."},{"version":"1.6.155","text":"### 设置卡片减少翻页,选中与后端分区更清晰\n- 模型和思考等级能放下一张卡片时全部展示,只有实际超出容量才分页,不再每八项强制翻页。\n- 后端卡片中选中的影响范围用蓝色高亮,选择当前线程或全部线程后仍需确认才生效。\n- 模型和思考等级卡片将当前主后端与其他后端分区展示,查看其他后端不会切换主后端。","changes":[{"topic":"settings-cards","title":"设置卡片","text":"模型和思考等级能放下一张卡片时全部展示,只有实际超出容量才分页,不再每八项强制翻页。"},{"topic":"settings-cards","title":"设置卡片","text":"后端卡片中选中的影响范围用蓝色高亮,选择当前线程或全部线程后仍需确认才生效。"},{"topic":"settings-cards","title":"设置卡片","text":"模型和思考等级卡片将当前主后端与其他后端分区展示,查看其他后端不会切换主后端。"}],"details":"### Changed\n- Show all model and effort choices when the complete settings card fits its recursive node and UTF-8 JSON budgets. Paginate only oversized catalogs, packing each page by actual capacity instead of a fixed eight-choice limit. Count headers, sections, backend groups, navigation, notices and pending/retry controls, preserve every opaque choice and retain existing callback validation and single-card delivery.\n- Highlight the drafted backend application scope in blue. Separate the current thread's main backend from other backends' worker preferences in model/effort cards, keeping the main role tied to the coordinator while viewing other targets. Preserve same-backend preference sharing, explicit backend confirmation and immediate acknowledged model/effort changes; no native request or protocol capability is added."},{"version":"1.6.154","text":"### 设置选择更清晰,减少测试等待\n- 后端、模型和思考等级按功能分区,补充小标题和选中标记,后端选择、影响范围与确认按钮不再混在一起。\n- 兼容 AGY 模型列表的两种列格式,空结果或无法识别的列表会明确提示,不再无说明地显示空菜单。\n- 减少大仓库检查和测试样本准备的串行开销,移除模拟进程测试中的真实等待,八核以上机器可并行运行更多 Git 测试;发布仍执行全量测试,不降低安全检查或缩小压力样本。","changes":[{"topic":"settings-cards","title":"设置卡片","text":"后端、模型和思考等级按功能分区,补充小标题和选中标记,后端选择、影响范围与确认按钮不再混在一起。"},{"topic":"settings-cards","title":"设置卡片","text":"兼容 AGY 模型列表的两种列格式,空结果或无法识别的列表会明确提示,不再无说明地显示空菜单。"},{"topic":"delegation","title":"委派任务","text":"减少大仓库检查和测试样本准备的串行开销,移除模拟进程测试中的真实等待,八核以上机器可并行运行更多 Git 测试;发布仍执行全量测试,不降低安全检查或缩小压力样本。"}],"details":"### Changed\n- Separate backend, model and effort cards into numbered functional sections with subtitles and dividers. Mark the drafted backend, applied backend and selected scope explicitly; keep Confirm separate. Model/effort cards separate the target backend, native choices and secondary actions, checking configured or known effective selections without guessing defaults. Include all new section elements in recursive node and byte accounting; retain existing validation, acknowledgements and old-peer behavior.\n- Accept both tab-delimited and formatted multi-space AGY model catalogs, preserving opaque native IDs and exact current-model matching. Reject empty, unusable and oversized responses explicitly instead of silently producing an empty or truncated menu. Query native metadata only; never prompt a model to invent catalog entries.\n- Bound filesystem verification to eight concurrent checks and drain all started work before propagating failure. Share complete ancestor-validation promises within each checkpoint pass, and give checkout byte readers independent buffers up to 1 MiB each. Preserve every file hash, symlink/mode check, HEAD/index recheck, both working-file passes and both reclamation audits; do not cache state across captures or relax production deadlines.\n- Replace real startup/stop waits in mocked Claude executor tests with controlled clocks. Advance the nested transfer timeout only after real producer/receiver startup and a nonempty partial pack, retaining process-exit and quarantine-cleanup assertions. Generate document ZIP fixture CRCs with a lookup table while preserving identical archive bytes, full expansion-bomb payloads and the full publish test suite. Use at most four isolated Git test processes only on hosts with at least eight available CPUs; lower-core limits and ordinary test deadlines are unchanged."},{"version":"1.6.153","text":"### 测试提速,Codex 命令说明更完整\n- 调整真实 Git 测试的并行资源并减少重复建仓开销,发布仍执行完整测试,不放宽委派文件安全检查或普通测试超时。\n- Codex 命令在没有原生动作摘要时也能显示简短操作标签,无法可靠识别时显示通用说明,不展示命令参数或把阶段思考套到工具上。\n- 晚到的原生动作信息可补充原来的工具栏,成功和失败结果仍更新原行,不新增卡片元素。","changes":[{"topic":"delegation","title":"委派任务","text":"调整真实 Git 测试的并行资源并减少重复建仓开销,发布仍执行完整测试,不放宽委派文件安全检查或普通测试超时。"},{"topic":"tool-cards","title":"工具卡片","text":"Codex 命令在没有原生动作摘要时也能显示简短操作标签,无法可靠识别时显示通用说明,不展示命令参数或把阶段思考套到工具上。"},{"topic":"tool-cards","title":"工具卡片","text":"晚到的原生动作信息可补充原来的工具栏,成功和失败结果仍更新原行,不新增卡片元素。"}],"details":"### Changed\n- Keep real Git suites in isolated processes while allowing up to two Git forks on hosts with at least four available CPUs and one to four lightweight threads. Reuse only pristine test fixture templates, copying repository metadata and files into independent owned directories for every test. The publish lifecycle still runs the entire suite without changing production Git checks or ordinary deadlines.\n- Fill Codex shell-call labels for absent and native unknown command actions with bounded fixed operation descriptions. Simple allowlisted programs receive labels such as Run npm command; compound or unrecognized commands stay generic. Preserve native read/search/list descriptions and every operation in compound action sets. Never copy shell arguments, complete paths, execution output, or turn-level reasoning into fallback headings, and do not claim model-authored purpose summaries.\n- Forward optional public native titles and allow later action metadata to enrich a pending tool row before its first result. Suppress duplicate starts after a result so repeated completion updates retain the original invocation. Reuse existing tool metadata, compact heading limits, asynchronous status updates, and card-element accounting without a wire-version change or extra model call."},{"version":"1.6.152","text":"### 后端、模型与思考等级可点击选择\n- `/backend` 打开选择卡片,默认只改当前线程;选择后端和影响范围后点击确认才生效,未安装的后端会明确标为不可选。\n- `/model`、`/effort` 可以直接点击原生选项,也能为其他后端设置模型和思考等级,不必先切换主 Agent;没有原生选项时会说明原因,不猜测支持情况。\n- 设置成功后才显示已应用;旧卡片、重复点击和忙碌线程会受到保护,旧版仍可使用文字命令。","changes":[{"topic":"settings-cards","title":"设置卡片","text":"`/backend` 打开选择卡片,默认只改当前线程;选择后端和影响范围后点击确认才生效,未安装的后端会明确标为不可选。"},{"topic":"settings-cards","title":"设置卡片","text":"`/model`、`/effort` 可以直接点击原生选项,也能为其他后端设置模型和思考等级,不必先切换主 Agent;没有原生选项时会说明原因,不猜测支持情况。"},{"topic":"settings-cards","title":"设置卡片","text":"设置成功后才显示已应用;旧卡片、重复点击和忙碌线程会受到保护,旧版仍可使用文字命令。"}],"details":"### Added\n- Negotiate standalone backend, model, and effort settings cards on protocol version 1. Backend selection defaults to the original current thread; selecting a backend or device-wide scope only edits a draft until Confirm. Model and effort choices submit immediately, including preferences for an inactive target backend without switching the coordinator. Missing backends remain disabled; unavailable native catalogs and model-specific effort controls are explicit rather than generated from prompts.\n- Bind immutable choices to the original owner, device, thread, working context and configuration revision. Serialize native changes and persistence with affected command admission, invalidate stale menus, and acknowledge only confirmed changes. Bound snapshot and retry receipts, paginate choices with recursive card-node and byte accounting, and preserve parameterized text-command semantics and older-peer fallbacks. No backend installation, credential mutation, live deployment or inference is performed to build menus.\n\n### Changed\n- Use native structured model and effort metadata, including grouped ACP choices, model-specific Pi thinking levels, bounded AGY model rows, and capability-gated Claude control initialization. Keep configured selections distinct from native reports and defaults. Isolated metadata identities inherit policy resolved under the real thread ID, never share coordinator/Worker pointers, and clean up only their own confirmed-exited data. Claude model updates also maintain its legacy preference field.\n- Bound ACP control requests without timing out normal inference, preserve opaque native IDs, refresh Claude capabilities per process, and reject incompatible model/effort changes rather than silently changing a second preference. Release known temporary ACP sessions before transport shutdown and defer own-pointer cleanup after a timed-out query until settlement and confirmed exit."},{"version":"1.6.151","text":"### 委派快照与测试更稳\n- 减少普通仓库和子模块委派快照的重复 Git 查询,继续检查文件变化、仓库边界和成果回收安全,不跨任务复用旧文件状态。\n- 限制真实 Git 测试同时占用的资源,并修复断言失败后收尾卡住的问题;不改变 Worker 的启动、退出和 Git 命令超时。","changes":[{"topic":"delegation","title":"委派任务","text":"减少普通仓库和子模块委派快照的重复 Git 查询,继续检查文件变化、仓库边界和成果回收安全,不跨任务复用旧文件状态。"},{"topic":"delegation","title":"委派任务","text":"限制真实 Git 测试同时占用的资源,并修复断言失败后收尾卡住的问题;不改变 Worker 的启动、退出和 Git 命令超时。"}],"details":"### Changed\n- Reduce delegated Git checkpoint subprocesses by reading paths, conflict stages, and hidden-entry flags together from each private index. Resolve the source index path once per pass and audit identical content-addressed trees once per capture; retain both full working-file passes, source HEAD/index rechecks, copied-index timestamps, nested-repository validation, and independent checkout byte audits. Reject existing zero-byte indexes instead of treating corrupt metadata as missing; legitimate missing and serialized zero-entry indexes remain supported. No state is cached across captures and Git deadlines are unchanged.\n- Bound real Git integration suites to one isolated process alongside at most two lightweight test threads. Keep ordinary test and hook deadlines unchanged; give historical delivery the same explicit 30-second budget as other Git suites. Release controlled lifecycle gates in finally blocks, cover slow collection and early assertion failure, and guard subprocess counts against regressions."},{"version":"1.6.150","text":"### Codex Banked Reset 增加提醒\n- Codex 的 Banked Reset 数量比上一次有效检查增加时发送提醒,显示前后数量及增加量;减少或不变不提醒,减少后再增长也能正常提醒。\n- 复用启动及每小时的额度检查,首次检查、重启或切换账号只建立基线;读不到数量不会当成零,也不会自动使用重置次数,旧版仍保持原有提醒。\n- 提醒已送达但确认消息丢失时,CLI 重连会确认原来的卡片,不会为同一次增长重复发送提醒。","changes":[{"topic":"maintenance-notices","title":"更新与额度提醒","text":"Codex 的 Banked Reset 数量比上一次有效检查增加时发送提醒,显示前后数量及增加量;减少或不变不提醒,减少后再增长也能正常提醒。"},{"topic":"maintenance-notices","title":"更新与额度提醒","text":"复用启动及每小时的额度检查,首次检查、重启或切换账号只建立基线;读不到数量不会当成零,也不会自动使用重置次数,旧版仍保持原有提醒。"},{"topic":"maintenance-notices","title":"更新与额度提醒","text":"提醒已送达但确认消息丢失时,CLI 重连会确认原来的卡片,不会为同一次增长重复发送提醒。"}],"details":"### Added\n- Notify about Codex Banked Reset balance increases using the existing independent startup/hourly status read and native `rateLimitResetCredits.availableCount`. First observations and account switches are silent; compare each valid count with the previous valid count for that account, not a historical maximum. Decreases update the baseline without notifying, and missing or invalid fields remain unknown rather than zero.\n- Reuse standalone, notification-only quota cards and delivery acknowledgements, with previous/current balances and the increase. Keep banked-credit events separate from weekly quota delivery suppression, cancel pending notices on observed consumption/account changes, and retry only the latest pending event. Retain up to 1,000 banked delivery receipts in Router memory until notice expiry, including in-flight reservations, so lost-ACK retries across CLI reconnects revalidate ownership and acknowledge the existing card instead of sending duplicates; action bindings remain connection-scoped. A new additive `bankedResetReminder` capability prevents old Routers from mislabeling banked-credit notices. No extra native read, model request, credit consumption, expiry warning, or persisted balance is introduced."},{"version":"1.6.149","text":"### 更多工具调用有简短说明\n- AGY 的工具调用显示它自带的本次调用摘要;Codex 的读取文件、搜索和列目录命令也能显示简短动作说明,无法识别时仍保持简洁,不把整个任务的阶段摘要套到工具上。\n- 说明复用原有工具栏,不增加卡片元素或额外模型调用;晚到的成功、失败结果仍更新原行的状态颜色。\n- Codex 网页工具的展开详情可以查看搜索、打开网页和页内查找的结果标题、来源链接和摘要;预览最多五条,省略数量会明确提示,不再把缺少结果字段误显示为空结果。\n- 修复 AGY 部分搜索调用丢失搜索词,以及非文本工具输出被忽略的问题;网页结果复用原有详情区域,不增加卡片元素。\n- 网页摘要不会因提到本地图片路径而自动上传图片,兼容旧版的文本预览也保持为纯文本;AGY 工具失败时保留错误原因和结构化输出。","changes":[{"topic":"tool-cards","title":"工具卡片","text":"AGY 的工具调用显示它自带的本次调用摘要;Codex 的读取文件、搜索和列目录命令也能显示简短动作说明,无法识别时仍保持简洁,不把整个任务的阶段摘要套到工具上。"},{"topic":"tool-cards","title":"工具卡片","text":"说明复用原有工具栏,不增加卡片元素或额外模型调用;晚到的成功、失败结果仍更新原行的状态颜色。"},{"topic":"tool-cards","title":"工具卡片","text":"Codex 网页工具的展开详情可以查看搜索、打开网页和页内查找的结果标题、来源链接和摘要;预览最多五条,省略数量会明确提示,不再把缺少结果字段误显示为空结果。"},{"topic":"tool-cards","title":"工具卡片","text":"修复 AGY 部分搜索调用丢失搜索词,以及非文本工具输出被忽略的问题;网页结果复用原有详情区域,不增加卡片元素。"},{"topic":"tool-cards","title":"工具卡片","text":"网页摘要不会因提到本地图片路径而自动上传图片,兼容旧版的文本预览也保持为纯文本;AGY 工具失败时保留错误原因和结构化输出。"}],"details":"### Changed\n- Forward AGY's native per-call `toolSummary` and fallback `toolAction` as tool descriptions while preserving explicit descriptions and titles. Terminal results keep the original invocation identity and do not synthesize new calls or copy execution-wide activity into labels.\n- Describe Codex's structured `commandActions` as file reads, searches, and directory listings. Use file basenames only, omit raw commands and search arguments, and leave absent, unknown, or partly unknown action sets unlabeled. Reserve omitted-label counts within the existing 60-character heading budget. Reuse existing description fields and compact headings without additional model calls, protocol changes, or card elements.\n- Preserve Codex's native web search, open-page, and find-in-page actions and result entries instead of reporting empty output. Foreground tools show up to five bounded titles, source links, and snippets in the existing output node, with explicit omitted-entry counts and distinct missing, unsupported, and empty-result notices. An additive optional result preview retains a plaintext fallback for older Routers; source links are revalidated and result text is rendered literally. Delayed result updates keep the original invocation slot and recursive pagination limits.\n- Accept AGY's native lowercase `query` as well as legacy `Query`, and preserve non-string tool outputs as JSON alongside any supplied failure explanation instead of discarding either. Add web-result passthrough regressions for Claude, shared ACP backends (OpenCode, Kimi, ZCode, DSH), and Pi without assuming unavailable native samples were verified.\n- Treat structured web previews and recognized web-tool results as display data, not local-image instructions; repeated results retain their origin until an explicit new call reuses the ID. Ordinary local-tool image forwarding remains available. Prefix every native fallback field so untrusted snippets cannot close older Routers' fixed code fences."},{"version":"1.6.148","text":"### 工具状态颜色更直观\n- 工具调用统一使用小圆点:成功绿色、执行中蓝色、失败红色,去掉沙漏和叉号;结果晚到仍在原行更新颜色,不增加卡片元素。","changes":[{"topic":"tool-cards","title":"工具卡片","text":"工具调用统一使用小圆点:成功绿色、执行中蓝色、失败红色,去掉沙漏和叉号;结果晚到仍在原行更新颜色,不增加卡片元素。"}],"details":"### Changed\n- Use a consistent dot in every foreground tool heading: green after success, blue while awaiting a result, and red after failure. Preserve per-call labels, explicit expanded status text, fixed-slot asynchronous updates, and recursive card-node counts without adding elements."},{"version":"1.6.147","text":"### 工具调用说明更清楚\n- 工具名后优先显示后端提供的本次调用说明或标题,没有说明时显示文件名等明确标签;不重复工具名,也不把整个任务的阶段摘要套到每条工具上。\n- 调用说明和晚到的成功、失败结果仍更新原来的工具栏,不增加卡片元素;没有说明的后端保持简洁显示。","changes":[{"topic":"tool-cards","title":"工具卡片","text":"工具名后优先显示后端提供的本次调用说明或标题,没有说明时显示文件名等明确标签;不重复工具名,也不把整个任务的阶段摘要套到每条工具上。"},{"topic":"tool-cards","title":"工具卡片","text":"调用说明和晚到的成功、失败结果仍更新原来的工具栏,不增加卡片元素;没有说明的后端保持简洁显示。"}],"details":"### Changed\n- Prefer meaningful backend-provided per-call descriptions and titles in foreground tool headings, falling back to file basenames and omitting redundant tool-name labels. Preserve ACP call/update titles and explicit AGY/Pi parameter labels that tool mapping previously discarded; never synthesize a call to refresh a terminal-result title.\n- Carry optional tool labels over the existing version-1 stream without new capabilities or model calls. Keep execution-wide activity separate, retain fixed-slot asynchronous result updates, and verify unchanged recursive card-node budgets through pagination and shrink."},{"version":"1.6.146","text":"### 工具栏样式更统一清爽\n- Bash 和文件工具统一显示状态符号、工具名和简短说明:成功用浅灰小点,失败用浅灰普通叉,等待结果用沙漏,不再堆叠彩色状态标签。\n- 完整工具编号、参数、输出和修改预览保留在展开详情里;长回复继续自动分片,结果晚到也会更新原来的工具栏。","changes":[{"topic":"tool-cards","title":"工具卡片","text":"Bash 和文件工具统一显示状态符号、工具名和简短说明:成功用浅灰小点,失败用浅灰普通叉,等待结果用沙漏,不再堆叠彩色状态标签。"},{"topic":"tool-cards","title":"工具卡片","text":"完整工具编号、参数、输出和修改预览保留在展开详情里;长回复继续自动分片,结果晚到也会更新原来的工具栏。"}],"details":"### Changed\n- Use one compact foreground tool heading for Bash and other tools: a gray success dot, pending hourglass, or gray failure cross, followed by the tool name and an optional bounded public description or file basename. Keep raw commands out of headings and move full tool IDs and explicit status labels into the existing expanded details.\n- Preserve input, result, diff previews, stable call identities, and existing cross-card cleanup. Verify recursive tagged-node counts at the card boundary through delayed results, activity tails, and completion controls; no multi-call aggregation, execution, or wire-protocol change."},{"version":"1.6.145","text":"### 工具调用反馈更紧凑\n- 同一次工具调用和结果合为一条折叠栏,完成后直接更新成功或失败状态,减少长回复中的滚动。\n- 展开仍可查看参数、输出和代码修改预览;不同工具调用继续分开显示,错误状态保持醒目。","changes":[{"topic":"tool-cards","title":"工具卡片","text":"同一次工具调用和结果合为一条折叠栏,完成后直接更新成功或失败状态,减少长回复中的滚动。"},{"topic":"tool-cards","title":"工具卡片","text":"展开仍可查看参数、输出和代码修改预览;不同工具调用继续分开显示,错误状态保持醒目。"}],"details":"### Changed\n- Render each foreground tool call and its matching result as one collapsed row, updating its status in place while retaining bounded input, output, and per-file diff previews. Keep later text and worker slots stable; preserve unmatched results without guessing a pairing.\n- Keep independent calls separate, including adapter ID reuse after a completed invocation. Remove previous tool copies before cross-card moves, including still-active and surplus pages, preserving worker context controls and retryable updates. Backend execution, protocol version, and approval flows are unchanged."},{"version":"1.6.144","text":"### 随时看清 Agent 正在做什么\n- 主 Agent 在最新回复卡片底部显示当前活动,子 Agent 在自己的标题下显示;长回复翻页后仍能看到最新进度。\n- 显示后端提供的公开进度、计划步骤和工具说明,等待输入或任务结束时切换状态;不展示原始思考,也不猜测完成百分比。","changes":[{"topic":"agent-activity","title":"运行进度","text":"主 Agent 在最新回复卡片底部显示当前活动,子 Agent 在自己的标题下显示;长回复翻页后仍能看到最新进度。"},{"topic":"agent-activity","title":"运行进度","text":"显示后端提供的公开进度、计划步骤和工具说明,等待输入或任务结束时切换状态;不展示原始思考,也不猜测完成百分比。"}],"details":"### Added\n- Show bounded public activity at the tail of the latest active coordinator card and below each managed worker's identity. Separate explicit Codex commentary and public reasoning summaries, public assistant updates, plan steps, and safe tool descriptions from answer text; never promote raw thinking or estimate completion percentages.\n- Negotiate optional activity progress without a protocol-version change. Coalesce snapshots, preserve worker-result publication barriers, prioritize input and terminal states, discard late events, and leave older peers on their existing presentation."},{"version":"1.6.143","text":"### Codex 用量查询等待时间延长\n- 将 `/status` 查询 Codex 用量的等待时间从 5 秒延长至 10 秒,减少响应较慢时缺少用量信息的情况。","changes":[{"topic":"codex-usage","title":"Codex 用量","text":"将 `/status` 查询 Codex 用量的等待时间从 5 秒延长至 10 秒,减少响应较慢时缺少用量信息的情况。"}],"details":"### Fixed\n- Increase the Codex account-usage RPC timeout from five to ten seconds for `/status`, without adding retries or changing failure handling."},{"version":"1.6.142","text":"### 同一后端也能分工协作\n- 主 Agent 现在也可调用同一后端的独立 Worker,不共用主会话;Git 项目仍可并行分工,成果仍需明确合并或保留。","changes":[{"topic":"delegation","title":"委派任务","text":"主 Agent 现在也可调用同一后端的独立 Worker,不共用主会话;Git 项目仍可并行分工,成果仍需明确合并或保留。"}],"details":"### Added\n- Allow unrestricted coordinators to delegate to their own backend through independent managed worker sessions. Preserve synthetic lane identities, isolated Git checkouts, shared-directory FIFO scheduling, explicit artifact integration, context-reset ownership, and existing task/concurrency budgets.\n\n### Changed\n- Report the coordinator backend's worker eligibility in discovery and status using the same admission policy, and align injected tool instructions. Do not advertise sandbox-restricted workers as eligible in the delegation menu. Keep restricted coordinators and read_only requests ineligible; native backend subagents and the Router wire protocol remain unchanged."},{"version":"1.6.141","text":"### 含子仓库的项目也能委派\n- 已初始化的 Git 子模块和嵌套仓库现在可以参与委派,包含未提交修改;应用成果时保留原有会话、仓库提交和暂存状态。\n- 文件与目录互换不再误报;未初始化的子模块不阻止审阅其他代码,真正不支持的文件会显示具体路径和类型。","changes":[{"topic":"delegation","title":"委派任务","text":"已初始化的 Git 子模块和嵌套仓库现在可以参与委派,包含未提交修改;应用成果时保留原有会话、仓库提交和暂存状态。"},{"topic":"delegation","title":"委派任务","text":"文件与目录互换不再误报;未初始化的子模块不阻止审阅其他代码,真正不支持的文件会显示具体路径和类型。"}],"details":"### Fixed\n- Include initialized local submodules and embedded repositories in private delegated snapshots, with staged, unstaged, and nonignored files captured through their own temporary indexes. Stream local Git objects without remote fetching or a repository-size cap; workers receive ordinary files rather than nested Git metadata or histories.\n- Apply nested working-file changes through explicit artifact integration while preserving all source HEADs, indexes, and gitlinks. Include nested state in delivery revisions, reject changed repository identities and boundary replacements, preserve uncertain worker-created Git metadata for manual recovery, and keep uninitialized submodules empty without blocking unrelated work.\n- Allow ordinary file/directory replacements and identify unsupported filesystem entries by repository-relative path and type. Cover nested snapshots, conflicts, state preservation, streamed transfer, artifact delivery, and guarded checkout reclamation/reuse with real temporary Git repositories.\n- Preserve warm index stat caches and the original index timestamp so racy-clean detection still catches same-size edits; reuse completed local object transfers within each stable capture. Reject ancestor worktrees, external nested Git metadata, nested-local command filters, and partial-clone hydration. Keep unsupported no-change metadata pending until explicit retention, and wait for deterministic Git lifecycle signals in cancellation tests.\n- Receive nested packs in a per-transfer quarantine and publish complete packs with indexes last. Clean failed and timed-out transfers after both processes exit without sweeping other operations. Discover embedded repositories exposed by gitlink replacements and support initialized submodules owned by linked-worktree metadata stores."},{"version":"1.6.140","text":"### 大项目委派与异常恢复更稳妥\n- 准备工作区或收集成果较慢时,不再误判后台进程异常、锁住整个项目;取消任务后也不会偷偷启动 Worker。\n- 无法完整读取被 Git 标记隐藏的修改时,会明确提示并保留文件,不再把遗漏的修改当成已完整交付。","changes":[{"topic":"delegation","title":"委派任务","text":"准备工作区或收集成果较慢时,不再误判后台进程异常、锁住整个项目;取消任务后也不会偷偷启动 Worker。"},{"topic":"delegation","title":"委派任务","text":"无法完整读取被 Git 标记隐藏的修改时,会明确提示并保留文件,不再把遗漏的修改当成已完整交付。"}],"details":"### Fixed\n- Reject assume-unchanged and skip-worktree index entries before capturing delegated Git checkpoints. Do not silently omit hidden edits, reinterpret absent sparse files as deletions, or modify the source index; preserve unresolved worker files for manual recovery.\n- Keep managed Git baseline capture, checkout preparation, and repository-lock waits outside the native worker startup deadline. Await owned mutations before releasing execution capacity, and prevent late worker startup after cancellation.\n- Bound accepted Git delegation and cancellation response waits below the tool adapter's timeout. Return the existing task ID and explicit pending status for later polling without aborting owned operations, pretending cleanup finished, or encouraging duplicate submission.\n- Separate confirmed process shutdown from artifact collection. Slow collection no longer quarantines the source workspace or leaks global worker slots; collection and lane-persistence failures retain the affected lane while releasing unrelated capacity after Git operations settle. Preserve native-exit quarantine, individual Git command deadlines, non-Git FIFO scheduling, and old-peer compatibility."},{"version":"1.6.139","text":"### 大仓库也能正常委派任务\n- 取消按仓库总大小和文件数量拒绝子任务的限制,大型项目也可执行委派、合并成果并再次使用工作目录。","changes":[{"topic":"delegation","title":"委派任务","text":"取消按仓库总大小和文件数量拒绝子任务的限制,大型项目也可执行委派、合并成果并再次使用工作目录。"}],"details":"### Fixed\n- Remove the fixed 128 MiB repository-size and 10,000-file limits from delegated Git input snapshots, filtered trees, artifact collection, and checkout reclamation verification. Large repositories keep their complete staged, unstaged, and nonignored untracked input without a replacement size configuration.\n- Preserve path and entry validation, artifact ownership and reference checks, streamed byte hashing before reclamation, parent index and branch isolation, and existing Git command deadlines and output-buffer limits. Add regression coverage for large committed and untracked files and complete artifact integration, reclamation, and reuse beyond the former limits."},{"version":"1.6.138","text":"### 委派收尾与会话恢复更可靠\n- 子任务成果已处理完时,不再因为其他会话忙碌而误报收尾失败或反复要求处理。\n- 重试旧卡片的上下文清理时,不再影响后来创建的 Worker 会话;状态不明的旧会话仍会保留。\n- 子任务在准备工作区之前启动失败时,可继续复用原 Worker;工作区状态不确定时仍保留安全保护。","changes":[{"topic":"delegation","title":"委派任务","text":"子任务成果已处理完时,不再因为其他会话忙碌而误报收尾失败或反复要求处理。"},{"topic":"delegation","title":"委派任务","text":"重试旧卡片的上下文清理时,不再影响后来创建的 Worker 会话;状态不明的旧会话仍会保留。"},{"topic":"delegation","title":"委派任务","text":"子任务在准备工作区之前启动失败时,可继续复用原 Worker;工作区状态不确定时仍保留安全保护。"}],"details":"### Fixed\n- Validate settled worker artifact receipts independently of source-workspace contention, avoiding spurious closeout failures and extra coordinator turns. Keep ownership, reference, recovery, cancellation, and receipt-integrity checks; history reconciliation still requires the source lease.\n- Keep a superseded shared-directory lane non-reusable after a context-clear retry, without deleting another worker's conversation. Persist pooling mode for independent Git lanes and preserve ambiguous legacy duplicate contexts instead of scheduling automatic deletion.\n- Return reused Git lanes to ready after failures before checkout preparation starts. Continue preserving uncertain prepared lanes, and distinguish executor setup failures from checkout failures in recovery diagnostics."},{"version":"1.6.137","text":"### 单独清理子任务上下文\n- 子任务结束后,无论成功还是失败,都可在卡片上点击 Clear context,让该 Worker 下次从新会话开始,不影响主 Agent、其他 Worker 或代码成果。\n- 清理收到本机确认后才显示成功;运行中的任务和过期卡片不会误清新会话,失败可重试,不会自动重跑任务。","changes":[{"topic":"delegation","title":"委派任务","text":"子任务结束后,无论成功还是失败,都可在卡片上点击 Clear context,让该 Worker 下次从新会话开始,不影响主 Agent、其他 Worker 或代码成果。"},{"topic":"delegation","title":"委派任务","text":"清理收到本机确认后才显示成功;运行中的任务和过期卡片不会误清新会话,失败可重试,不会自动重跑任务。"}],"details":"### Added\n- Add an owner-bound Clear context control outside delegated Worker card details after successful or failed execution. Reset only the exact idle lane's native continuation, retaining workspaces, artifacts, archived transcripts, authentication, and settings without replaying the task or resetting the coordinator.\n- Negotiate optional workerContextReset support and require CLI acknowledgement before confirming success. Persist reset intents and context epochs, serialize reset with lane acquisition, reject stale or unsafe targets, and permit explicit retries after interrupted resets. Keep controls consistent across streaming, continuation cards, and thread-footer refreshes with a bounded ephemeral Router cache; legacy peers remain compatible."},{"version":"1.6.136","text":"### 委派成果自动收尾\n- 主 Agent 回复完成前,自动检查子任务成果是否已交付或明确保留;有遗漏会继续处理,最多补两轮。\n- 仍无法处理的成果会明确列出并保留,不再把“任务执行完了”当作“代码已交付”,也不会自动丢弃文件。","changes":[{"topic":"delegation","title":"委派任务","text":"主 Agent 回复完成前,自动检查子任务成果是否已交付或明确保留;有遗漏会继续处理,最多补两轮。"},{"topic":"delegation","title":"委派任务","text":"仍无法处理的成果会明确列出并保留,不再把“任务执行完了”当作“代码已交付”,也不会自动丢弃文件。"}],"details":"### Added\n- Enforce artifact closeout before successful coordinator completion. Drain accepted tasks and tool calls, reconcile historical delivery under existing ownership guards, then inspect durable receipts rather than cached results. Pending changes, missing or invalid receipts, failed collection, and unretained recovery state prevent success; verified no-change, applied, and deliberately retained outcomes need no further decision.\n- Resume the same coordinator session for at most two artifact-closeout rounds per request, combining unread worker results when available. Preserve attachments, result acknowledgement, approval/input, model recovery, and cancellation boundaries; new workers do not reset the budget. An unresolved final check returns bounded task IDs and artifact references as a failure, pausing queued execution while preserving recoverable output. No new wire messages, implicit merging, automatic cross-request replay, or non-Git lifecycle changes."},{"version":"1.6.135","text":"### 工作区自动回收\n- 无文件改动的成功任务,以及已确认合并的成果,会自动回收安全的 Worker 工作目录;保留上下文,下次在原路径重建并读取最新代码。\n- 有未交付成果、遗留文件或状态不明的工作目录继续保留;清理失败不影响任务结果,也不会强删文件。\n- 成果提交已进入主工作分支历史时,会自动确认交付;之后主分支撤回改动也不会重新挂起旧任务,遗留文件仍受安全检查保护。","changes":[{"topic":"delegation","title":"委派任务","text":"无文件改动的成功任务,以及已确认合并的成果,会自动回收安全的 Worker 工作目录;保留上下文,下次在原路径重建并读取最新代码。"},{"topic":"delegation","title":"委派任务","text":"有未交付成果、遗留文件或状态不明的工作目录继续保留;清理失败不影响任务结果,也不会强删文件。"},{"topic":"delegation","title":"委派任务","text":"成果提交已进入主工作分支历史时,会自动确认交付;之后主分支撤回改动也不会重新挂起旧任务,遗留文件仍受安全检查保护。"}],"details":"### Added\n- Automatically reclaim verified delegated Git checkout directories after successful no-change tasks or durable artifact application. Preserve native conversation pointers, stable lane paths, immutable artifacts, and private input/output/history references; recreate absent, unregistered owned paths from fresh delivery input when the lane is reused.\n- Persist present/reclaiming/reclaimed checkout state and exact output receipts. Resolve interrupted intents only from verified intact checkouts or confirmed absent/unregistered paths; never infer ownership from a missing legacy directory, overwrite occupied reclaimed paths, prune registrations, or sweep historical workspaces.\n- Recognize successful pending worker outcomes as historically delivered when their recorded artifact snapshot commit is an ancestor of delivery HEAD, including after a later revert. Persist the observed HEAD and repair interrupted pending-marker clears; reconcile guarded inspection, ready-lane admission, and idle turn closure without content-subset heuristics, automatic merges, staging, commits, or changes to patch-only apply. Keep replacement-object bypass, owner/ref checks, fail-soft errors, and independent safe-reclamation verification.\n\n### Changed\n- Independently bound and hash actual tracked bytes, modes, and symlink targets before checkout deletion, accounting for ignored files, extra directories, unknown entries, and Git index flags. Preserve pending, retained, failed/cancelled, locked, or unresolved recovery workspaces. Transformed bytes that cannot be proven equivalent fail closed.\n- Serialize lane lifecycle and Git worktree metadata operations within the CLI process. Await optional reclamation outside the worker-stop deadline before marking a lane ready; cleanup failure does not change a successful task or artifact application. Native backend execution, non-Git FIFO scheduling, and Router protocol remain unchanged.\n- Keep full byte verification outside the shared repository guard so independent lanes can start during a slow audit. Isolate a reused Git lane whose checkout preparation fails without discarding its existing native context; preserve lazy recovery of valid interrupted-removal receipts."},{"version":"1.6.134","text":"### 本阶段更新汇总(1.6.90~1.6.133)\n- 默认开启多 Agent 委派;Git 项目最多 5 个 Worker 隔离并行,成果由主 Agent 确认合并,非 Git 目录仍串行。\n- 新增 DSH 后端,支持模型与 effort 切换、上下文续接,以及在 /status 中查询余额。\n- 支持接收最大 20 MiB 的文件,提取文本文件、文字型 PDF、DOCX 和 XLSX 内容;设备授权后,上传文件再发送处理指令即可。\n- 优化手机端的进度和结果展示,支持 Markdown 富文本;Worker 活动详情和后台任务结果默认折叠。\n- 主 Agent 和子 Agent 卡片底部都用小号灰字显示各自的模型与 effort,方便了解本次任务的执行配置。\n- 新增中文升级摘要与 Codex Reset 额度提醒;跨版本升级时按功能汇总变化,重启和升级后保留已确认送达的提醒记录。","changes":[{"topic":"delegation","title":"委派任务","text":"默认开启多 Agent 委派;Git 项目最多 5 个 Worker 隔离并行,成果由主 Agent 确认合并,非 Git 目录仍串行。"},{"topic":"dsh-backend","title":"DSH 后端","text":"新增 DSH 后端,支持模型与 effort 切换、上下文续接,以及在 /status 中查询余额。"},{"topic":"file-attachments","title":"文件附件","text":"支持接收最大 20 MiB 的文件,提取文本文件、文字型 PDF、DOCX 和 XLSX 内容;设备授权后,上传文件再发送处理指令即可。"},{"topic":"worker-cards","title":"任务卡片","text":"优化手机端的进度和结果展示,支持 Markdown 富文本;Worker 活动详情和后台任务结果默认折叠。"},{"topic":"execution-metadata","title":"执行信息","text":"主 Agent 和子 Agent 卡片底部都用小号灰字显示各自的模型与 effort,方便了解本次任务的执行配置。"},{"topic":"maintenance-notices","title":"更新与额度提醒","text":"新增中文升级摘要与 Codex Reset 额度提醒;跨版本升级时按功能汇总变化,重启和升级后保留已确认送达的提醒记录。"}],"details":"This stage summary consolidates confirmed source changes from 1.6.90 through 1.6.133, including Git-confirmed changes whose per-version notes were missing. It replaces the available entries in that range, not Git history, and is not a complete npm publication ledger. Version 1.6.134 reorganizes release documents, synchronizes package versions, and permits up to six summary bullets in build-time and bundled-artifact validation; backend execution and Router behavior are unchanged.\n\n### Added\n- Integrate DeepSeek Harness (DSH) through its native persistent ACP server, with model and reasoning-effort controls, cancellation, permission prompts, context reporting when available, and isolated coordinator/worker sessions. Keep native capability boundaries: images require advertised support, and unsupported interactive slash commands, plan mode, and elicitation do not fall back to another backend.\n- Preserve DSH session pointers across backend switches and restarts. Recover explicitly non-resumable sessions with an honest fresh-session notice; retain pointers on authentication, provider, network, rate-limit, timeout, or directory-mismatch failures. Summarize-then-reset compaction uses a private, durable handoff rather than claiming native transcript compaction, and refuses to summarize unavailable original context.\n- Show DSH official recharge and bonus wallet balances in `/status` when native account authentication makes them available. Retain native precision and currency, distinguish balances from token usage or plan quota, and use a short-lived account-query process without creating a model turn or changing the ACP conversation.\n- Receive file attachments up to 20 MiB through explicit device enrollment and a same-Router HTTPS download path. Transfer file bytes from Feishu to a private Router spool and CLI staging area; WebSocket messages contain only bounded references, hashes, sizes, and authorization metadata. Enforce authenticated device ownership, actual byte limits, hashes, deadlines, storage quotas, and explicit failure feedback without weakening legacy text/image support.\n- Extract bounded previews from text/code, CSV, JSON, YAML, textual PDF, DOCX main-body text, and XLSX cells, retaining page/sheet/cell provenance. Keep parsing off the control event loop, bound expanded archives and output, and never execute macros or formulas. OCR, protected documents, legacy Office formats, and general archive extraction remain unsupported; saved, parsed, partial, and unsupported outcomes stay distinct.\n- Stage files for a subsequent instruction or a reply to their status card, including instructions with images, rather than starting a model task on file upload alone. Pin queued attachments, bind references to the admitted device/thread/directory, expose `/files` and `/files clear`, and preserve active references during cleanup. Backend tools retain their normal permissions when reading original or preview paths outside the project.\n- Persist isolated delegated-worker lanes separately from direct backend sessions, retaining only each lane's own earlier delegated context. Reuse requires confirmed process exit and valid session state; directory changes invalidate the old workspace generation, and failed lane cleanup remains retryable rather than silently freeing uncertain ownership.\n- Accept multiple independent delegated tasks in one coordinator request, with individual cancellation, queued status, bounded queue waits, cumulative admission limits, and automatic collection of all results. Retain source-workspace ownership while the queue drains; queued work has no execution timestamp or progress card before it starts.\n- Run Git workers in reusable per-lane worktrees with bounded snapshots of staged, unstaged, and nonignored untracked input. Refresh every detached task checkout to an explicit baseline while preserving native lane identity. Non-Git directories use code-enforced FIFO serial scheduling and are never initialized as Git repositories implicitly; worktrees are not process sandboxes.\n- Preserve immutable worker artifacts under private Git references and expose revision-guarded inspection, integration, or retention. Preflight conflicts in a separate recovery worktree; applying changes never stages, commits, or pushes the delivery workspace. Pending artifacts or unknown dirty files block lane reuse. File application is not atomic: preserve before/target snapshots and a durable pending receipt for manual recovery after an incomplete apply, and validate captured tree limits after Git filters and both rename endpoints against the selected-directory scope.\n- Attach bounded execution-scoped model and reasoning-effort metadata to AI responses, terminal recovery, and each delegated worker's progress/results. Distinguish backend reports, configured selections, defaults, and unavailable values without extra model requests. Keep launch preferences stable, retain final worker snapshots before cleanup, and never substitute coordinator settings or attribute a model to an unstarted queued task.\n- Show compact gray model/effort notes below Completed on main replies and outside collapsed worker details. Preserve metadata through long-output splitting, thread-button refresh, and optional protocol-v1 fields, while legacy peers and local control commands retain their existing display.\n- Add standalone CLI upgrade notices with cumulative bundled notes, offline delivery, negotiated capabilities, and a silent baseline on first adoption. Advance notification progress only after acknowledged delivery, retain skipped-upgrade ranges, and keep maintenance cards separate from thread selection and task routing.\n- Add hourly, status-only Codex weekly-quota inspection and notification-only reminders using existing file-backed ChatGPT credentials. Do not send model prompts, create user threads, refresh credentials, or probe other backends. Missing/expired credentials, unsupported native APIs, and failed samples remain unavailable evidence; the experimental native token-handoff API is not a compatibility guarantee.\n\n### Changed\n- Enable managed delegation by default for new and existing threads with no saved preference; explicit off remains off through upgrades, context resets, backend switches, and restarts. Exposing delegation tools does not automatically launch workers.\n- Restrict managed delegation to a different backend without changing native backend subagent tools. Unrestricted coordinators launch unrestricted workers; sandboxed coordinators have no eligible cross-backend targets until policy translation is supported. Discovery and launch enforce the same policy.\n- Raise the shared starting/running worker limit from three to five. Git-backed requests can occupy five isolated execution slots; additional accepted tasks remain queued, non-Git requests still run one worker at a time, and the cumulative 12-task limit spans coordinator continuations without refunds for failures or cancellation.\n- Use real worker tool activity for liveness timeouts, with separate idle and tool-idle deadlines, rather than treating a quiet stdout stream as proof that a worker stalled. UI text and card heartbeats do not extend execution liveness.\n- Enrich the local CLI's Linux/macOS startup PATH with verified runtime and conventional installation directories, preserving inherited precedence. Use the same command resolution for startup checks, backend menus, delegation, and auxiliary queries, honor explicit executable overrides, and preserve ZCode's native empty-command discovery without falling back from a nonempty invalid override. Valid existing services do not need reinstallation; startup does not source shell profiles, install tools, or rewrite their service files.\n- Render nested/live worker activity and results as rich Markdown, with independent per-worker text, elapsed/tool activity, consistent icons, and compact mobile layouts. Keep detailed activity collapsed, separate result labels from worker Markdown, preserve stable update slots and card-wide table limits, and make the delegation status menu easier to scan.\n- Label standalone task notifications as Background task, retain their originating thread and task identity, collapse result/output-path details by default, and keep short failures visible. This presentation is separate from foreground replies and managed-worker cards.\n- Show thread/workspace headers on initial streaming and continuation cards before final completion, preserving reply provenance rather than waiting for the terminal card update.\n- Bundle concise Chinese user summaries alongside English technical details at build time. Validate matching nonempty current-version entries, one short heading and one to six single-line user bullets, stable feature tags/titles, and bounded package payloads; never fetch, translate, or summarize release notes with a model at runtime. Version 1.6.134 raises the per-release bullet limit from three to six while retaining the 2 KiB summary budget.\n- Aggregate the entire pending device-upgrade range by feature, removing exact duplicate items only. Keep available summaries and technical details collapsed and paged, report bounded-overview omissions, and preserve legacy-peer fallback, first-adoption silence, and protocol version 1. This release represents the consolidated 1.6.90-1.6.133 range with the 1.6.134 stage summary rather than reconstructing a per-device subset of those changes.\n- Use the title \"Codex Reset\" with a target emoji and \"Weekly quota reset: 100%\". Explain why to send Codex a normal task without verification or activation steps, remove the sampling-disclaimer footer and redundant Dismiss button, and retain passive validated legacy callbacks. Eligibility requires two roughly hourly zero-usage observations with approximately seven days remaining and a deadline that advances with the sampling interval; it is a snapshot heuristic, not confirmation of a provider reset or a guarantee that one request starts a usage window.\n\n### Fixed\n- Validate incomplete or incompatible tool parameters before specialized card formatting, using bounded text or no-parameters fallbacks without interrupting later tool events or task completion.\n- Retry confirmed Feishu Markdown-parser failures as literal text, preserve that mode on later updates and thread-button refreshes, and retain table-limit fallback without treating unrelated failures as parse errors.\n- Require successful recovery-notice delivery before acknowledging reuse of a surviving card, avoid duplicate notices within a recovery round, and retain originating thread information through recovery and continuation cards.\n- Reset every backend's remote-cli session binding when a thread changes to a different normalized working directory, preserve backend-native history and thread preferences, and keep a same-directory selection a no-op.\n- Distinguish a deleted or inaccessible selected working directory from a missing backend executable, refuse fallback execution in another directory, and cover remaining executor and passthrough startup paths with actionable errors.\n- Refresh Codex's model catalog and idle app-server after a native CLI version change while preserving the conversation binding, and improve model-recovery card delivery without replaying accepted worker launches.\n- Retain bounded worker results through coordinator continuations and terminal failures without replaying the original request, attachments, or completed workers. Keep execution-scoped result acknowledgement separate from worker completion, suppress premature coordinator output while results are pending, and prevent stale worker progress from overwriting unrelated cards.\n- Deduplicate ACP tool updates and keep reasoning/thought chunks out of answer text, final output, and delegated summaries for Kimi, OpenCode, ZCode, and DSH, while preserving separate native reasoning handling. Generate unique, paired Pi fallback tool IDs so concurrent tool calls cannot collide or report an unrelated result.\n- Filter bounded standalone Claude Code model-recognition stderr diagnostics for SDK queries and session-title generation, including delegated-worker streaming/results and slash-command error details. Preserve actual API/authentication errors, nonzero exits, assistant text, unknown sources, malformed records, and other backends; raw local stderr and telemetry behavior are unchanged.\n- Refuse ambiguous plain-text input when multiple workers are waiting, retain request-specific approval routing, and require confirmed cleanup before releasing occupied slots or workspace ownership.\n- Keep queued diagnostic records out of live terminal pruning, reconcile unfinished records as interrupted after restart without replaying tasks, and make retained worker-lane cleanup retryable.\n- Persist acknowledged Codex reminder suppression across CLI upgrades, restarts, reconnects, and credential refreshes using a private account/bucket fingerprint ledger. Only valid non-candidate observations rearm reminders; unavailable probes do not. Wait for accepted acknowledgement writes on shutdown, preserve corrupt/unavailable storage without affecting normal messaging, and do not claim exactly-once delivery across crashes.\n\n### Security\n- Disable DSH's official extra session-log attachment and OTel telemetry paths independently with a private temporary configuration overlay and the native telemetry-disable flag. Leave existing profiles, credentials, and other backends untouched and remove the overlay after process exit. Normal model requests still send task context to the selected provider and native local history remains; this is not an offline mode or a guarantee about third-party plugins.\n\n### Maintenance\n- Require staged-change and outgoing-commit privacy checks before publication, and sanitize documentation references without changing functional behavior.\n- Remove redundant presentation/fixture assertions while retaining behavioral regression coverage, clean temporary test fixtures reliably, and make ZCode discovery assertions portable across aliased filesystem paths."}]}
1
+ {"format":1,"firstVersion":"1.6.123","sections":[{"version":"1.6.176","text":"### 在模型设置中选择 Codex 速度\n- 支持原生速度选项的 Codex 模型可在模型卡片中单独选择速度,也可明确选择标准速度或跟随原生配置。\n- 速度按线程和后端保存,后续任务及委派工作使用对应设置;未选择速度的线程和其他后端保持原有行为。\n- 已选速度不再可用时仍可恢复原生配置;降级 Codex 后,旧会话可能需要升级或清空后才能安全继续。","changes":[{"topic":"model-speed","title":"模型速度","text":"支持原生速度选项的 Codex 模型可在模型卡片中单独选择速度,也可明确选择标准速度或跟随原生配置。"},{"topic":"model-speed","title":"模型速度","text":"速度按线程和后端保存,后续任务及委派工作使用对应设置;未选择速度的线程和其他后端保持原有行为。"},{"topic":"model-speed","title":"模型速度","text":"已选速度不再可用时仍可恢复原生配置;降级 Codex 后,旧会话可能需要升级或清空后才能安全继续。"}],"details":"### Added\n- Add a separate Speed section to model settings when the selected Codex model exposes native service tiers. Preserve native tier names and descriptions, with explicit Standard and Follow native config choices.\n- Persist speed independently per thread and backend, including future delegated workers, and apply sticky speed policy before activating native goals.\n- Negotiate model speed settings independently so older peers and backends without native speed controls retain their existing model behavior.\n\n### Safety\n- Validate speed against the selected model, reject incompatible model changes, and restore native configured speed explicitly instead of retaining a previous sticky override. Untouched threads send no new speed parameters or settings requests.\n- Keep speed reset available after tier removal. Require an upgrade or explicit conversation reset when a downgraded Codex protocol cannot safely clear a saved tier."},{"version":"1.6.175","text":"### 自动刷新 Kimi 模型列表\n- 查看或刷新 Kimi 模型列表时自动更新原生模型目录,无需先去电脑终端手动刷新或重新登录。\n- 刷新失败或超时会明确提示,可稍后重试;实际可用模型仍以 Kimi 账号返回的目录和权限为准。","changes":[{"topic":"kimi-models","title":"Kimi 模型","text":"查看或刷新 Kimi 模型列表时自动更新原生模型目录,无需先去电脑终端手动刷新或重新登录。"},{"topic":"kimi-models","title":"Kimi 模型","text":"刷新失败或超时会明确提示,可稍后重试;实际可用模型仍以 Kimi 账号返回的目录和权限为准。"}],"details":"### Fixed\n- Refresh Kimi Code's native managed model catalog automatically when listing models, so newly available models can appear without opening the native terminal or signing in again.\n- Bound refresh requests and local server cleanup, coalesce concurrent refreshes, and report discovery failures instead of silently presenting stale metadata as refreshed.\n- Reload an idle Kimi ACP process before applying discovered aliases while preserving its conversation binding, including choices discovered by temporary settings previews.\n\n### Tests\n- Cover native refresh ordering, new model discovery, failure and timeout handling, concurrent requests, and preservation of ordinary backend execution."},{"version":"1.6.174","text":"### 直接显示线程切换按钮\n- 恢复直接显示线程按钮和新建按钮,切换线程不再需要先点击展开。\n- 卡片元素上限从 150 提高到 180,减少因元素数量触发的拆卡,同时保留正文和完成信息的容量保护。","changes":[{"topic":"thread-controls","title":"线程切换","text":"恢复直接显示线程按钮和新建按钮,切换线程不再需要先点击展开。"},{"topic":"thread-controls","title":"线程切换","text":"卡片元素上限从 150 提高到 180,减少因元素数量触发的拆卡,同时保留正文和完成信息的容量保护。"}],"details":"### Changed\n- Restore directly visible thread-switch buttons and the new-thread button on completed cards, removing the thread folding panel while preserving reply attribution and routing behavior.\n- Increase the recursive card element budget from 150 to 180 tagged nodes, retaining completion reserves and the existing size and table limits.\n\n### Tests\n- Cover visible thread controls through finalization and refresh, switching callbacks, and recursive pagination boundaries at the new limit."},{"version":"1.6.173","text":"### 生成图片直接显示在回复中\n- Codex 返回受支持的原生或工具图片时会自动显示到卡片,无需再要求模型补写 Markdown 图片链接。\n- 修复回复结束时图片尚未上传完成而漏显的问题,同一回复中的相同图片只展示一次。\n- 图片读取和上传设有数量、大小与等待限制;异常时提示省略原因,正常文字回复仍可完成。完整改进需要同时升级 CLI 和 Router。","changes":[{"topic":"image-output","title":"图片输出","text":"Codex 返回受支持的原生或工具图片时会自动显示到卡片,无需再要求模型补写 Markdown 图片链接。"},{"topic":"image-output","title":"图片输出","text":"修复回复结束时图片尚未上传完成而漏显的问题,同一回复中的相同图片只展示一次。"},{"topic":"image-output","title":"图片输出","text":"图片读取和上传设有数量、大小与等待限制;异常时提示省略原因,正常文字回复仍可完成。完整改进需要同时升级 CLI 和 Router。"}],"details":"### Fixed\n- Forward recognized Codex native, MCP, and dynamic-tool image results directly to response cards without requiring Markdown. Prefer inline bytes and allow explicit native saved paths only through the local directory policy; omit image bytes from tool diagnostics.\n- Drain admitted image uploads before Router response finalization, including ordinary replies. Bound image work and fence late results after timeout, cancellation, disconnect, or stream replacement.\n- Deduplicate images by decoded content within a reply, retain changed content at the same path, and harden local reads with canonical-path checks, regular-file verification, bounded reads, and format validation. Keep image failures separate from task success.\n\n### Tests\n- Cover structured image variants, inline/file/Markdown deduplication, read and upload limits, finalization ordering, late results, filesystem boundaries, and unchanged text and goal behavior."},{"version":"1.6.172","text":"### 在 Codex 线程中持续推进目标\n- 支持 /goal 创建和查看原生目标,使用 pause、resume、clear 暂停、恢复或清除,并可通过 --budget 显式设置 token 预算。\n- 连续执行期间保留输出和审批入口;首版启动目标前需关闭当前线程的 managed delegation 并清空队列,进程恢复后需显式继续目标。","changes":[{"topic":"codex-goal","title":"Codex 目标","text":"支持 /goal 创建和查看原生目标,使用 pause、resume、clear 暂停、恢复或清除,并可通过 --budget 显式设置 token 预算。"},{"topic":"codex-goal","title":"Codex 目标","text":"连续执行期间保留输出和审批入口;首版启动目标前需关闭当前线程的 managed delegation 并清空队列,进程恢复后需显式继续目标。"}],"details":"### Added\n- Support Codex native `/goal`, `/goal <objective>`, `/goal pause`, `/goal resume`, and `/goal clear`, with optional explicit token budgets on activation or resume. Goal state and continuation remain owned by Codex's thread-goal APIs, without prompt-based continuation loops.\n- Keep goal output, approvals, activity, and thread admission attached across native continuation turns. Status and stop controls remain available during execution; unsupported backends fail without forwarding goal text to a model.\n\n### Changed\n- Initially require managed delegation disabled and an empty queue before activating a goal. Preserve native goal state on process loss and require explicit recovery; avoid accidentally resuming goals through status queries. Threads that never use native goals retain their existing execution path.\n\n### Tests\n- Cover command parsing, explicit budgets, native lifecycle transitions, multi-turn output ownership, stop and recovery behavior, unsupported versions, queue/settings exclusion, and unchanged ordinary execution."},{"version":"1.6.171","text":"### 稳定展开线程列表\n- 线程按钮改用飞书原生折叠面板,点击标题即可展开或收起,避免旧交互更新方式导致展开后立即复原;回复所属线程信息保持可见。","changes":[{"topic":"thread-controls","title":"线程切换","text":"线程按钮改用飞书原生折叠面板,点击标题即可展开或收起,避免旧交互更新方式导致展开后立即复原;回复所属线程信息保持可见。"}],"details":"### Fixed\n- Use the native Feishu Card 2.0 collapsible panel for completed-card thread controls. Expanding or collapsing the list requires no application callback or message PATCH, avoiding the previous PATCH-before-callback-response path that could immediately revert the expansion.\n- Keep thread selection and New controls inside the panel, with reply-source information outside it. Hidden controls remain included in recursive card budgets; existing backend execution, thread routing, and protocol behavior are preserved.\n\n### Tests\n- Cover native panel payloads, generated non-default thread selections, reply-source preservation, recursive budgets, and existing card fallback and Worker controls."},{"version":"1.6.170","text":"### 回滚线程卡片改动\n- 撤销今日的线程卡片折叠改动,恢复 1.6.168 的线程按钮显示和卡片拆分行为。","changes":[{"topic":"thread-controls","title":"线程切换","text":"撤销今日的线程卡片折叠改动,恢复 1.6.168 的线程按钮显示和卡片拆分行为。"}],"details":"### Reverted\n- Revert the 1.6.169 thread-card presentation change, restoring the always-visible thread controls and 150-node recursive card budget from 1.6.168."},{"version":"1.6.168","text":"### 用卡片浏览和切换目录\n- 输入 /cd 即可在卡片中浏览上一级、下一级和允许的根目录,只显示目录;点击“使用此目录”才切换当前线程,浏览本身不会清空会话。\n- 切换前检查目录权限和任务状态,拒绝过期或已变化的选择;大目录会明确提示列表限制,原有 /cd 路径命令仍可使用。","changes":[{"topic":"directory-browser","title":"目录浏览","text":"输入 /cd 即可在卡片中浏览上一级、下一级和允许的根目录,只显示目录;点击“使用此目录”才切换当前线程,浏览本身不会清空会话。"},{"topic":"directory-browser","title":"目录浏览","text":"切换前检查目录权限和任务状态,拒绝过期或已变化的选择;大目录会明确提示列表限制,原有 /cd 路径命令仍可使用。"}],"details":"### Added\n- Open bare `/cd` as a directory-only browser when both peers negotiate `directoryCards` and `settingsCards`. Navigate child/parent/root directories without executing a backend; apply only with Use this directory and preserve text `/cd <path>` for all peers.\n- Bind bounded local listings to owner, thread/configuration, allowlist, expiry, canonical roots, directory and ancestor identities. Omit symbolic-link directories, stop at the nearest allowed root, explicitly report partial listings, and reuse budgeted card rendering and exact-request receipts.\n\n### Changed\n- Serialize card and text directory changes through shared settings admission, reject active/queued/delegated work, and preserve existing all-backend context reset, same-directory no-op, and delegation workspace-generation cleanup. External filesystem races and bind mounts remain outside the application-level isolation guarantee.\n\n### Tests\n- Cover directory-only browsing, roots, busy navigation, changed identities/ancestors, symlinks, stale/forged/expired selections, duplicate Apply, text compatibility, card budgets, and optional capability negotiation."},{"version":"1.6.167","text":"### 子任务结果展示更完整\n- 子任务完成卡片的结果摘要上限提高至 4 KiB,减少过早截断,保留长结果的开头和结论。\n- 带省略标记的结果片段改用安全纯文本展示,避免截断代码块、表格或链接导致排版错乱;完整结果仍保留 Markdown 格式。","changes":[{"topic":"delegation","title":"委派任务","text":"子任务完成卡片的结果摘要上限提高至 4 KiB,减少过早截断,保留长结果的开头和结论。"},{"topic":"delegation","title":"委派任务","text":"带省略标记的结果片段改用安全纯文本展示,避免截断代码块、表格或链接导致排版错乱;完整结果仍保留 Markdown 格式。"}],"details":"### Fixed\n- Expand terminal Worker card summaries from 1000 bytes to 4 KiB for Router 1.6.167 or newer, retain UTF-8-safe beginning/end excerpts, and accept the full summary through Router validation and rendering. Older or unknown Routers retain the legacy budget; strict version precedence excludes 1.6.167 prereleases, and current registration metadata is rechecked after reconnect. Full delegated results and continuations retain their existing 32 KiB and 64 KiB limits.\n- Render worker result excerpts containing standalone omission markers as escaped literal text with a separate explanation, preventing head/tail splices from reinterpreting orphaned Markdown fences, links, tables, or card markup. Intact result Markdown and streaming activity formatting remain unchanged.\n\n### Tests\n- Cover larger ASCII/Unicode summaries, retained conclusions, legacy omission markers, Markdown and card-tag safety, Router boundary validation, and atomic Worker pagination under node, size, and table budgets."},{"version":"1.6.166","text":"### 工具结果不再导致客户端退出\n- 修复 Claude Code 返回多块工具结果时客户端崩溃的问题;仅提取文本,不把图片等非文本内容当作文件路径处理。\n- 本地图片检测或转发失败时保留正常任务回复,不再中断客户端或影响后续任务。","changes":[{"topic":"image-output","title":"图片输出","text":"修复 Claude Code 返回多块工具结果时客户端崩溃的问题;仅提取文本,不把图片等非文本内容当作文件路径处理。"},{"topic":"image-output","title":"图片输出","text":"本地图片检测或转发失败时保留正常任务回复,不再中断客户端或影响后续任务。"}],"details":"### Fixed\n- Normalize Claude native tool-result content blocks to text before forwarding; ignore embedded media and unknown payloads instead of passing them to string-only consumers.\n- Exclude native tool-result payloads from raw stdout logging before normalization.\n- Ignore non-string input in local-image detection and contain optional image-forwarding failures without terminating the CLI or failing an otherwise successful task. Preserve web-result exclusions and directory/size checks.\n\n### Tests\n- Cover mixed Claude content blocks, malformed image-detector input, asynchronous tool-result scan failures, final-output failures, and subsequent task execution."},{"version":"1.6.165","text":"### Pi 会话连接更可靠\n- 同一客户端内,不同线程不能同时连接同一个 Pi 会话;连接或断开写盘失败会明确提示失败,不再误报成功。\n- Pi 会话切换与模型等设置修改互斥,后台任务未结束或自动升级时不会切换上下文;Claude Code、Codex 仍仅提供只读列表。\n- 修正 Pi 自定义目录下的会话发现,并让本机重开命令正确处理含空格的会话路径;仍需避免本机与远程同时执行。","changes":[{"topic":"session-handoff","title":"会话接续","text":"同一客户端内,不同线程不能同时连接同一个 Pi 会话;连接或断开写盘失败会明确提示失败,不再误报成功。"},{"topic":"session-handoff","title":"会话接续","text":"Pi 会话切换与模型等设置修改互斥,后台任务未结束或自动升级时不会切换上下文;Claude Code、Codex 仍仅提供只读列表。"},{"topic":"session-handoff","title":"会话接续","text":"修正 Pi 自定义目录下的会话发现,并让本机重开命令正确处理含空格的会话路径;仍需避免本机与远程同时执行。"}],"details":"### Fixed\n- Reserve a selected Pi session file before asynchronous startup across threads in one daemon. Failed or unknown cleanup keeps the file quarantined until recovery; this is not an OS or cross-process writer lock.\n- Require successful pointer persistence before acknowledging Pi connection or detach. Failed writes retain the previous association; cancelled startup cannot commit a new connection.\n- Serialize Pi session confirmations with settings admission and reject context changes during queued work, active delegated tasks, or automatic updates. Claude Code and Codex remain read-only catalogs with unchanged executor and history behavior.\n- Discover default Pi sessions under `PI_CODING_AGENT_DIR`, fail closed for unresolved agent roots, and shell-quote Pi-only local reopen guidance.\n\n### Tests\n- Add concurrent-confirmation, persistence-failure, restart, cancellation, settings-conflict, custom-directory, and non-Pi read-only regressions."},{"version":"1.6.164","text":"### Pi 会话名称可区分\n- 新建 Pi 会话的默认名称使用独立的 session ID,不再重复使用线程 ID;重新打开已保存会话不会覆盖本机设置的名称。已有重名历史不自动改写。","changes":[{"topic":"session-handoff","title":"会话接续","text":"新建 Pi 会话的默认名称使用独立的 session ID,不再重复使用线程 ID;重新打开已保存会话不会覆盖本机设置的名称。已有重名历史不自动改写。"}],"details":"### Fixed\n- Give newly created Pi foreground sessions a default name based on their independent native session ID, not the reusable remote thread ID. `/new` sessions are distinguishable in `/resume`, and reopening a persisted file no longer appends `--name` or overwrites names assigned locally. Adopted sessions and synthetic runtime naming remain unchanged. Existing duplicate names are not rewritten automatically."},{"version":"1.6.163","text":"### Pi 新建对话保留旧会话\n- Pi 前台 `/new` 和 `/clear` 保留旧 session 的历史,为新对话使用独立 ID;旧会话可以通过 `/resume` 再次连接,不会把旧上下文带入新对话。\n- Pi 删除线程也保留原生历史;选择已有会话后、确认成功前,普通消息仍进入当前会话。委派 Worker 和临时元数据会话的清理规则不变。","changes":[{"topic":"session-handoff","title":"会话接续","text":"Pi 前台 `/new` 和 `/clear` 保留旧 session 的历史,为新对话使用独立 ID;旧会话可以通过 `/resume` 再次连接,不会把旧上下文带入新对话。"},{"topic":"session-handoff","title":"会话接续","text":"Pi 删除线程也保留原生历史;选择已有会话后、确认成功前,普通消息仍进入当前会话。委派 Worker 和临时元数据会话的清理规则不变。"}],"details":"### Changed\n- Pi foreground `/new` and `/clear` now remove only the current association and preserve native session history for `/resume`. Fresh conversations use independent random IDs rather than the stable remote thread ID, so retained files cannot resurrect cleared context, including after restart before the next prompt.\n- Pi foreground thread-data deletion also preserves native history. Delegated-worker and temporary metadata runtimes retain their disposable cleanup and thread-ID behavior.\n\n### Tests\n- Cover foreground A to `/new` to independent B, ordinary messages remaining in B during an unconfirmed resume draft, and confirmed native switching back to A. Cover reset/restart identity separation and unchanged synthetic-runtime cleanup."},{"version":"1.6.162","text":"### Pi 会话无需释放即可顺序切换\n- 移除 `/session release`:接管的 Pi 会话每轮飞书任务前会重新加载并校验,同一会话在本机新增的历史会被读入,不需要重新在飞书选择会话;`/session detach` 仍用于解除绑定。\n- 两侧 Pi 可以保持打开,但请保证不同时执行任务;切回本机窗口时仍需原生 `/resume` 重新加载。当前不提供自动本机刷新或并发互斥。","changes":[{"topic":"session-handoff","title":"会话接续","text":"移除 `/session release`:接管的 Pi 会话每轮飞书任务前会重新加载并校验,同一会话在本机新增的历史会被读入,不需要重新在飞书选择会话;`/session detach` 仍用于解除绑定。"},{"topic":"session-handoff","title":"会话接续","text":"两侧 Pi 可以保持打开,但请保证不同时执行任务;切回本机窗口时仍需原生 `/resume` 重新加载。当前不提供自动本机刷新或并发互斥。"}],"details":"### Changed\n- Remove `/session release`, the executor release operation and the persisted released-state gate. Existing adopted pointers with an old released flag remain usable; `/session detach` still confirms association removal without deleting native history.\n- Reload and verify the exact adopted Pi session before every remote prompt, including native slash prompts, so sequential local writes are visible without another remote resume or release step. Idle local Pi windows may remain open, but must resume the same file before their next turn. Simultaneous writing is unsupported and can create separate native branches; no automatic local refresh or writer exclusion is claimed.\n- Reserve remote turn preparation against overlapping execution/context changes and cancel preparation before prompt dispatch on abort/reset/shutdown. Keep legacy private sessions and worker execution unchanged.\n\n### Fixed\n- Synchronize the lockfile package versions with all package manifests."},{"version":"1.6.161","text":"### 会话接续\n- 一个线程现在可以连接并继续一个已有的 Pi 会话:`/resume` 列出当前工作目录的会话,`/resume select` 或 `id` 选中后显示确认,`/resume confirm` 连接;连接不发送任务。\n- 连接时会校验 Pi 实际打开的会话:不一致、已被其他线程占用、或选中后被本机修改都会被拒绝并保留原会话;接管的历史不会被 `/clear` 或 `/thread delete` 删除。\n- `/session` 查看连接状态,`/session release` 停止后端进程并锁定远程使用以方便本机继续,`/session detach` 确认后解除连接。\n- `/resume` 也支持翻页与搜索,令牌 5 分钟内有效且只对发起人、当前线程和工作目录生效。\n- 在本机运行 `remote-cli session show` 可查看重新打开会话的命令;Codex、Claude Code 等其他后端目前只能列出,还不能连接。","changes":[{"topic":"session-handoff","title":"会话接续","text":"一个线程现在可以连接并继续一个已有的 Pi 会话:`/resume` 列出当前工作目录的会话,`/resume select` 或 `id` 选中后显示确认,`/resume confirm` 连接;连接不发送任务。"},{"topic":"session-handoff","title":"会话接续","text":"连接时会校验 Pi 实际打开的会话:不一致、已被其他线程占用、或选中后被本机修改都会被拒绝并保留原会话;接管的历史不会被 `/clear` 或 `/thread delete` 删除。"},{"topic":"session-handoff","title":"会话接续","text":"`/session` 查看连接状态,`/session release` 停止后端进程并锁定远程使用以方便本机继续,`/session detach` 确认后解除连接。"},{"topic":"session-handoff","title":"会话接续","text":"`/resume` 也支持翻页与搜索,令牌 5 分钟内有效且只对发起人、当前线程和工作目录生效。"},{"topic":"session-handoff","title":"会话接续","text":"在本机运行 `remote-cli session show` 可查看重新打开会话的命令;Codex、Claude Code 等其他后端目前只能列出,还不能连接。"}],"details":"### Added\n- Reserve `/resume`, `/r` and `/session` as program-owned native session controls before executor construction, working-directory changes, queue admission or backend slash passthrough, and remove the misleading natural-language resume shortcut. Local session sharing stays disabled by default; enabling it never makes an unverified adapter available.\n- Add read-only native session discovery for Pi, Codex and Claude Code: `/resume` lists the current workspace's sessions (bounded reads, no backend process, no transcript text, no symlink following), hiding synthetic, delegated-worker, sidechain and ambiguous duplicate entries and reporting incomplete coverage. Message counts stay unavailable where they cannot be read safely.\n- Add paging and search to the read-only list: each list is a snapshot with an unguessable 12-character token, eight rows per page and a five-minute lifetime, bound to the requesting user, thread and workspace; `/resume page` and `/resume search` never reread native stores.\n- Connect a thread to an existing Pi session and continue its history. `/resume select` or `/resume id` shows a confirmation naming the session and any binding it replaces, and `/resume confirm` connects it. The loaded identity is verified through Pi RPC state without sending a prompt, so a silently substituted session is refused and the previous conversation is restored.\n- Add `/session` binding status, `/session release` (stop the owned Pi process and block remote work so a local Pi can take over) and `/session detach` (forget the association after confirmation). Adopted native history is user-owned: `/clear`, detach and `/thread delete` never delete it. A session held by another remote-cli thread, or changed locally after selection, is refused.\n- Add `remote-cli session show --thread <name> --backend <key>`: a read-only, daemon-free helper printing exact native reopen guidance."},{"version":"1.6.160","text":"### 切换后端不再需要确认按钮\n- 后端选择仍在卡片上方,点击后端直接切换,默认只影响当前线程,不再需要点击 Confirm;收到成功确认后才更新选中状态。\n- 下方范围按钮只设置下一次切换的目标,不会单独切换后端;同一卡片保留所选范围,重新打开默认当前线程,跟随全局只作用于当前线程。","changes":[{"topic":"settings-cards","title":"设置卡片","text":"后端选择仍在卡片上方,点击后端直接切换,默认只影响当前线程,不再需要点击 Confirm;收到成功确认后才更新选中状态。"},{"topic":"settings-cards","title":"设置卡片","text":"下方范围按钮只设置下一次切换的目标,不会单独切换后端;同一卡片保留所选范围,重新打开默认当前线程,跟随全局只作用于当前线程。"}],"details":"### Changed\n- Remove the backend card's Confirm section. Backend choices submit immediately using the selected scope, defaulting to Current thread, while Choose backend remains above Apply to. Scope buttons only change the next backend click's target; keep that scope within the same card after acknowledgement. Show only the acknowledged backend as selected, disable further changes while pending, and preserve exact-request retries and stale-revision validation. Follow global applies immediately to the original thread and restores the local scope to Current thread after acknowledgement. Existing CLI settings actions and text commands remain compatible."},{"version":"1.6.159","text":"### 大项目委派准备允许更长等待\n- 创建 Worker 工作目录和切换检出内容的超时从 15 秒提高到 120 秒,减少大项目在子 Agent 启动前超时;其他 Git 操作保持原有时限。\n- Git 超时提示显示具体操作、耗时和时限,方便定位准备阶段的问题。","changes":[{"topic":"delegation","title":"委派任务","text":"创建 Worker 工作目录和切换检出内容的超时从 15 秒提高到 120 秒,减少大项目在子 Agent 启动前超时;其他 Git 操作保持原有时限。"},{"topic":"delegation","title":"委派任务","text":"Git 超时提示显示具体操作、耗时和时限,方便定位准备阶段的问题。"}],"details":"### Fixed\n- Allow delegated `git worktree add` and `git checkout` commands up to 120 seconds so larger working trees can finish preparing. Other Git commands and nested object transfers retain their 15-second deadlines. Timeout messages identify the worktree subcommand and report elapsed time and the deadline without including paths or checkout references. Preserve child-exit waiting, kill escalation, output limits, task reservations and cancellation ordering."},{"version":"1.6.158","text":"### 减少空正文的完成续卡\n- 收尾时在容量允许的情况下,将最后一段正文和完成信息、线程按钮放在同一张卡片,避免单独多出一张只有完成区的续卡;保留 Worker 分组和卡片容量限制。","changes":[{"topic":"tool-cards","title":"工具卡片","text":"收尾时在容量允许的情况下,将最后一段正文和完成信息、线程按钮放在同一张卡片,避免单独多出一张只有完成区的续卡;保留 Worker 分组和卡片容量限制。"}],"details":"### Fixed\n- Keep the completion note, optional execution metadata and thread controls with the final body item or complete worker group when they fit together within continuation-card node, size and table budgets. Avoid a preventable footer-only continuation, including replies without execution metadata; retain the body when refreshing thread controls. Oversized indivisible groups still respect capacity limits. Streaming, queue confirmations and bare settings cards retain their existing behavior."},{"version":"1.6.157","text":"### 委派后端状态恢复彩色标签\n- 后端可用性恢复彩色状态标签:主 Agent 蓝色、已安装绿色、受限橙色、不可用红色,未知状态灰色;On/Off 操作保持不变。","changes":[{"topic":"delegation","title":"委派任务","text":"后端可用性恢复彩色状态标签:主 Agent 蓝色、已安装绿色、受限橙色、不可用红色,未知状态灰色;On/Off 操作保持不变。"}],"details":"### Changed\n- Restore colored status badges in the `/delegation` card's backend-availability section: blue for the coordinator, green for installed workers, orange for blocked workers, red for unavailable backends and neutral for unknown worker availability. Preserve literal detail escaping, card capacity accounting and acknowledged On/Off controls."},{"version":"1.6.156","text":"### 委派开关支持卡片操作\n- /delegation 新增当前线程的 On/Off 开关卡片,选中项蓝色高亮;点击后收到成功确认才更新状态。\n- 后端可用性单独展示,明确提示未安装和沙箱限制;运行中仍可查看,切换需等待任务完成,旧版本继续使用文字命令。","changes":[{"topic":"delegation","title":"委派任务","text":"/delegation 新增当前线程的 On/Off 开关卡片,选中项蓝色高亮;点击后收到成功确认才更新状态。"},{"topic":"delegation","title":"委派任务","text":"后端可用性单独展示,明确提示未安装和沙箱限制;运行中仍可查看,切换需等待任务完成,旧版本继续使用文字命令。"}],"details":"### Added\n- Add a thread-scoped `/delegation` settings card with blue checked On/Off controls and a separate backend-availability section. Clicks submit immediately, update selection only after durable CLI acknowledgement, and preserve pending/unknown states and exact-request retries. Running work and queued commands block mutation, not inspection or refresh; reset remains a separate text command.\n- Negotiate `delegationCards` in addition to `settingsCards` on protocol v1. Older peers retain the existing delegation status text and parameterized commands. Reuse immutable snapshots, ownership checks, admission barriers and native cleanup for card/text toggles; distinguish the enabled preference from sandbox restrictions, installation, authentication and quota."},{"version":"1.6.155","text":"### 设置卡片减少翻页,选中与后端分区更清晰\n- 模型和思考等级能放下一张卡片时全部展示,只有实际超出容量才分页,不再每八项强制翻页。\n- 后端卡片中选中的影响范围用蓝色高亮,选择当前线程或全部线程后仍需确认才生效。\n- 模型和思考等级卡片将当前主后端与其他后端分区展示,查看其他后端不会切换主后端。","changes":[{"topic":"settings-cards","title":"设置卡片","text":"模型和思考等级能放下一张卡片时全部展示,只有实际超出容量才分页,不再每八项强制翻页。"},{"topic":"settings-cards","title":"设置卡片","text":"后端卡片中选中的影响范围用蓝色高亮,选择当前线程或全部线程后仍需确认才生效。"},{"topic":"settings-cards","title":"设置卡片","text":"模型和思考等级卡片将当前主后端与其他后端分区展示,查看其他后端不会切换主后端。"}],"details":"### Changed\n- Show all model and effort choices when the complete settings card fits its recursive node and UTF-8 JSON budgets. Paginate only oversized catalogs, packing each page by actual capacity instead of a fixed eight-choice limit. Count headers, sections, backend groups, navigation, notices and pending/retry controls, preserve every opaque choice and retain existing callback validation and single-card delivery.\n- Highlight the drafted backend application scope in blue. Separate the current thread's main backend from other backends' worker preferences in model/effort cards, keeping the main role tied to the coordinator while viewing other targets. Preserve same-backend preference sharing, explicit backend confirmation and immediate acknowledged model/effort changes; no native request or protocol capability is added."},{"version":"1.6.154","text":"### 设置选择更清晰,减少测试等待\n- 后端、模型和思考等级按功能分区,补充小标题和选中标记,后端选择、影响范围与确认按钮不再混在一起。\n- 兼容 AGY 模型列表的两种列格式,空结果或无法识别的列表会明确提示,不再无说明地显示空菜单。\n- 减少大仓库检查和测试样本准备的串行开销,移除模拟进程测试中的真实等待,八核以上机器可并行运行更多 Git 测试;发布仍执行全量测试,不降低安全检查或缩小压力样本。","changes":[{"topic":"settings-cards","title":"设置卡片","text":"后端、模型和思考等级按功能分区,补充小标题和选中标记,后端选择、影响范围与确认按钮不再混在一起。"},{"topic":"settings-cards","title":"设置卡片","text":"兼容 AGY 模型列表的两种列格式,空结果或无法识别的列表会明确提示,不再无说明地显示空菜单。"},{"topic":"delegation","title":"委派任务","text":"减少大仓库检查和测试样本准备的串行开销,移除模拟进程测试中的真实等待,八核以上机器可并行运行更多 Git 测试;发布仍执行全量测试,不降低安全检查或缩小压力样本。"}],"details":"### Changed\n- Separate backend, model and effort cards into numbered functional sections with subtitles and dividers. Mark the drafted backend, applied backend and selected scope explicitly; keep Confirm separate. Model/effort cards separate the target backend, native choices and secondary actions, checking configured or known effective selections without guessing defaults. Include all new section elements in recursive node and byte accounting; retain existing validation, acknowledgements and old-peer behavior.\n- Accept both tab-delimited and formatted multi-space AGY model catalogs, preserving opaque native IDs and exact current-model matching. Reject empty, unusable and oversized responses explicitly instead of silently producing an empty or truncated menu. Query native metadata only; never prompt a model to invent catalog entries.\n- Bound filesystem verification to eight concurrent checks and drain all started work before propagating failure. Share complete ancestor-validation promises within each checkpoint pass, and give checkout byte readers independent buffers up to 1 MiB each. Preserve every file hash, symlink/mode check, HEAD/index recheck, both working-file passes and both reclamation audits; do not cache state across captures or relax production deadlines.\n- Replace real startup/stop waits in mocked Claude executor tests with controlled clocks. Advance the nested transfer timeout only after real producer/receiver startup and a nonempty partial pack, retaining process-exit and quarantine-cleanup assertions. Generate document ZIP fixture CRCs with a lookup table while preserving identical archive bytes, full expansion-bomb payloads and the full publish test suite. Use at most four isolated Git test processes only on hosts with at least eight available CPUs; lower-core limits and ordinary test deadlines are unchanged."},{"version":"1.6.153","text":"### 测试提速,Codex 命令说明更完整\n- 调整真实 Git 测试的并行资源并减少重复建仓开销,发布仍执行完整测试,不放宽委派文件安全检查或普通测试超时。\n- Codex 命令在没有原生动作摘要时也能显示简短操作标签,无法可靠识别时显示通用说明,不展示命令参数或把阶段思考套到工具上。\n- 晚到的原生动作信息可补充原来的工具栏,成功和失败结果仍更新原行,不新增卡片元素。","changes":[{"topic":"delegation","title":"委派任务","text":"调整真实 Git 测试的并行资源并减少重复建仓开销,发布仍执行完整测试,不放宽委派文件安全检查或普通测试超时。"},{"topic":"tool-cards","title":"工具卡片","text":"Codex 命令在没有原生动作摘要时也能显示简短操作标签,无法可靠识别时显示通用说明,不展示命令参数或把阶段思考套到工具上。"},{"topic":"tool-cards","title":"工具卡片","text":"晚到的原生动作信息可补充原来的工具栏,成功和失败结果仍更新原行,不新增卡片元素。"}],"details":"### Changed\n- Keep real Git suites in isolated processes while allowing up to two Git forks on hosts with at least four available CPUs and one to four lightweight threads. Reuse only pristine test fixture templates, copying repository metadata and files into independent owned directories for every test. The publish lifecycle still runs the entire suite without changing production Git checks or ordinary deadlines.\n- Fill Codex shell-call labels for absent and native unknown command actions with bounded fixed operation descriptions. Simple allowlisted programs receive labels such as Run npm command; compound or unrecognized commands stay generic. Preserve native read/search/list descriptions and every operation in compound action sets. Never copy shell arguments, complete paths, execution output, or turn-level reasoning into fallback headings, and do not claim model-authored purpose summaries.\n- Forward optional public native titles and allow later action metadata to enrich a pending tool row before its first result. Suppress duplicate starts after a result so repeated completion updates retain the original invocation. Reuse existing tool metadata, compact heading limits, asynchronous status updates, and card-element accounting without a wire-version change or extra model call."},{"version":"1.6.152","text":"### 后端、模型与思考等级可点击选择\n- `/backend` 打开选择卡片,默认只改当前线程;选择后端和影响范围后点击确认才生效,未安装的后端会明确标为不可选。\n- `/model`、`/effort` 可以直接点击原生选项,也能为其他后端设置模型和思考等级,不必先切换主 Agent;没有原生选项时会说明原因,不猜测支持情况。\n- 设置成功后才显示已应用;旧卡片、重复点击和忙碌线程会受到保护,旧版仍可使用文字命令。","changes":[{"topic":"settings-cards","title":"设置卡片","text":"`/backend` 打开选择卡片,默认只改当前线程;选择后端和影响范围后点击确认才生效,未安装的后端会明确标为不可选。"},{"topic":"settings-cards","title":"设置卡片","text":"`/model`、`/effort` 可以直接点击原生选项,也能为其他后端设置模型和思考等级,不必先切换主 Agent;没有原生选项时会说明原因,不猜测支持情况。"},{"topic":"settings-cards","title":"设置卡片","text":"设置成功后才显示已应用;旧卡片、重复点击和忙碌线程会受到保护,旧版仍可使用文字命令。"}],"details":"### Added\n- Negotiate standalone backend, model, and effort settings cards on protocol version 1. Backend selection defaults to the original current thread; selecting a backend or device-wide scope only edits a draft until Confirm. Model and effort choices submit immediately, including preferences for an inactive target backend without switching the coordinator. Missing backends remain disabled; unavailable native catalogs and model-specific effort controls are explicit rather than generated from prompts.\n- Bind immutable choices to the original owner, device, thread, working context and configuration revision. Serialize native changes and persistence with affected command admission, invalidate stale menus, and acknowledge only confirmed changes. Bound snapshot and retry receipts, paginate choices with recursive card-node and byte accounting, and preserve parameterized text-command semantics and older-peer fallbacks. No backend installation, credential mutation, live deployment or inference is performed to build menus.\n\n### Changed\n- Use native structured model and effort metadata, including grouped ACP choices, model-specific Pi thinking levels, bounded AGY model rows, and capability-gated Claude control initialization. Keep configured selections distinct from native reports and defaults. Isolated metadata identities inherit policy resolved under the real thread ID, never share coordinator/Worker pointers, and clean up only their own confirmed-exited data. Claude model updates also maintain its legacy preference field.\n- Bound ACP control requests without timing out normal inference, preserve opaque native IDs, refresh Claude capabilities per process, and reject incompatible model/effort changes rather than silently changing a second preference. Release known temporary ACP sessions before transport shutdown and defer own-pointer cleanup after a timed-out query until settlement and confirmed exit."},{"version":"1.6.151","text":"### 委派快照与测试更稳\n- 减少普通仓库和子模块委派快照的重复 Git 查询,继续检查文件变化、仓库边界和成果回收安全,不跨任务复用旧文件状态。\n- 限制真实 Git 测试同时占用的资源,并修复断言失败后收尾卡住的问题;不改变 Worker 的启动、退出和 Git 命令超时。","changes":[{"topic":"delegation","title":"委派任务","text":"减少普通仓库和子模块委派快照的重复 Git 查询,继续检查文件变化、仓库边界和成果回收安全,不跨任务复用旧文件状态。"},{"topic":"delegation","title":"委派任务","text":"限制真实 Git 测试同时占用的资源,并修复断言失败后收尾卡住的问题;不改变 Worker 的启动、退出和 Git 命令超时。"}],"details":"### Changed\n- Reduce delegated Git checkpoint subprocesses by reading paths, conflict stages, and hidden-entry flags together from each private index. Resolve the source index path once per pass and audit identical content-addressed trees once per capture; retain both full working-file passes, source HEAD/index rechecks, copied-index timestamps, nested-repository validation, and independent checkout byte audits. Reject existing zero-byte indexes instead of treating corrupt metadata as missing; legitimate missing and serialized zero-entry indexes remain supported. No state is cached across captures and Git deadlines are unchanged.\n- Bound real Git integration suites to one isolated process alongside at most two lightweight test threads. Keep ordinary test and hook deadlines unchanged; give historical delivery the same explicit 30-second budget as other Git suites. Release controlled lifecycle gates in finally blocks, cover slow collection and early assertion failure, and guard subprocess counts against regressions."},{"version":"1.6.150","text":"### Codex Banked Reset 增加提醒\n- Codex 的 Banked Reset 数量比上一次有效检查增加时发送提醒,显示前后数量及增加量;减少或不变不提醒,减少后再增长也能正常提醒。\n- 复用启动及每小时的额度检查,首次检查、重启或切换账号只建立基线;读不到数量不会当成零,也不会自动使用重置次数,旧版仍保持原有提醒。\n- 提醒已送达但确认消息丢失时,CLI 重连会确认原来的卡片,不会为同一次增长重复发送提醒。","changes":[{"topic":"maintenance-notices","title":"更新与额度提醒","text":"Codex 的 Banked Reset 数量比上一次有效检查增加时发送提醒,显示前后数量及增加量;减少或不变不提醒,减少后再增长也能正常提醒。"},{"topic":"maintenance-notices","title":"更新与额度提醒","text":"复用启动及每小时的额度检查,首次检查、重启或切换账号只建立基线;读不到数量不会当成零,也不会自动使用重置次数,旧版仍保持原有提醒。"},{"topic":"maintenance-notices","title":"更新与额度提醒","text":"提醒已送达但确认消息丢失时,CLI 重连会确认原来的卡片,不会为同一次增长重复发送提醒。"}],"details":"### Added\n- Notify about Codex Banked Reset balance increases using the existing independent startup/hourly status read and native `rateLimitResetCredits.availableCount`. First observations and account switches are silent; compare each valid count with the previous valid count for that account, not a historical maximum. Decreases update the baseline without notifying, and missing or invalid fields remain unknown rather than zero.\n- Reuse standalone, notification-only quota cards and delivery acknowledgements, with previous/current balances and the increase. Keep banked-credit events separate from weekly quota delivery suppression, cancel pending notices on observed consumption/account changes, and retry only the latest pending event. Retain up to 1,000 banked delivery receipts in Router memory until notice expiry, including in-flight reservations, so lost-ACK retries across CLI reconnects revalidate ownership and acknowledge the existing card instead of sending duplicates; action bindings remain connection-scoped. A new additive `bankedResetReminder` capability prevents old Routers from mislabeling banked-credit notices. No extra native read, model request, credit consumption, expiry warning, or persisted balance is introduced."},{"version":"1.6.149","text":"### 更多工具调用有简短说明\n- AGY 的工具调用显示它自带的本次调用摘要;Codex 的读取文件、搜索和列目录命令也能显示简短动作说明,无法识别时仍保持简洁,不把整个任务的阶段摘要套到工具上。\n- 说明复用原有工具栏,不增加卡片元素或额外模型调用;晚到的成功、失败结果仍更新原行的状态颜色。\n- Codex 网页工具的展开详情可以查看搜索、打开网页和页内查找的结果标题、来源链接和摘要;预览最多五条,省略数量会明确提示,不再把缺少结果字段误显示为空结果。\n- 修复 AGY 部分搜索调用丢失搜索词,以及非文本工具输出被忽略的问题;网页结果复用原有详情区域,不增加卡片元素。\n- 网页摘要不会因提到本地图片路径而自动上传图片,兼容旧版的文本预览也保持为纯文本;AGY 工具失败时保留错误原因和结构化输出。","changes":[{"topic":"tool-cards","title":"工具卡片","text":"AGY 的工具调用显示它自带的本次调用摘要;Codex 的读取文件、搜索和列目录命令也能显示简短动作说明,无法识别时仍保持简洁,不把整个任务的阶段摘要套到工具上。"},{"topic":"tool-cards","title":"工具卡片","text":"说明复用原有工具栏,不增加卡片元素或额外模型调用;晚到的成功、失败结果仍更新原行的状态颜色。"},{"topic":"tool-cards","title":"工具卡片","text":"Codex 网页工具的展开详情可以查看搜索、打开网页和页内查找的结果标题、来源链接和摘要;预览最多五条,省略数量会明确提示,不再把缺少结果字段误显示为空结果。"},{"topic":"tool-cards","title":"工具卡片","text":"修复 AGY 部分搜索调用丢失搜索词,以及非文本工具输出被忽略的问题;网页结果复用原有详情区域,不增加卡片元素。"},{"topic":"tool-cards","title":"工具卡片","text":"网页摘要不会因提到本地图片路径而自动上传图片,兼容旧版的文本预览也保持为纯文本;AGY 工具失败时保留错误原因和结构化输出。"}],"details":"### Changed\n- Forward AGY's native per-call `toolSummary` and fallback `toolAction` as tool descriptions while preserving explicit descriptions and titles. Terminal results keep the original invocation identity and do not synthesize new calls or copy execution-wide activity into labels.\n- Describe Codex's structured `commandActions` as file reads, searches, and directory listings. Use file basenames only, omit raw commands and search arguments, and leave absent, unknown, or partly unknown action sets unlabeled. Reserve omitted-label counts within the existing 60-character heading budget. Reuse existing description fields and compact headings without additional model calls, protocol changes, or card elements.\n- Preserve Codex's native web search, open-page, and find-in-page actions and result entries instead of reporting empty output. Foreground tools show up to five bounded titles, source links, and snippets in the existing output node, with explicit omitted-entry counts and distinct missing, unsupported, and empty-result notices. An additive optional result preview retains a plaintext fallback for older Routers; source links are revalidated and result text is rendered literally. Delayed result updates keep the original invocation slot and recursive pagination limits.\n- Accept AGY's native lowercase `query` as well as legacy `Query`, and preserve non-string tool outputs as JSON alongside any supplied failure explanation instead of discarding either. Add web-result passthrough regressions for Claude, shared ACP backends (OpenCode, Kimi, ZCode, DSH), and Pi without assuming unavailable native samples were verified.\n- Treat structured web previews and recognized web-tool results as display data, not local-image instructions; repeated results retain their origin until an explicit new call reuses the ID. Ordinary local-tool image forwarding remains available. Prefix every native fallback field so untrusted snippets cannot close older Routers' fixed code fences."},{"version":"1.6.148","text":"### 工具状态颜色更直观\n- 工具调用统一使用小圆点:成功绿色、执行中蓝色、失败红色,去掉沙漏和叉号;结果晚到仍在原行更新颜色,不增加卡片元素。","changes":[{"topic":"tool-cards","title":"工具卡片","text":"工具调用统一使用小圆点:成功绿色、执行中蓝色、失败红色,去掉沙漏和叉号;结果晚到仍在原行更新颜色,不增加卡片元素。"}],"details":"### Changed\n- Use a consistent dot in every foreground tool heading: green after success, blue while awaiting a result, and red after failure. Preserve per-call labels, explicit expanded status text, fixed-slot asynchronous updates, and recursive card-node counts without adding elements."},{"version":"1.6.147","text":"### 工具调用说明更清楚\n- 工具名后优先显示后端提供的本次调用说明或标题,没有说明时显示文件名等明确标签;不重复工具名,也不把整个任务的阶段摘要套到每条工具上。\n- 调用说明和晚到的成功、失败结果仍更新原来的工具栏,不增加卡片元素;没有说明的后端保持简洁显示。","changes":[{"topic":"tool-cards","title":"工具卡片","text":"工具名后优先显示后端提供的本次调用说明或标题,没有说明时显示文件名等明确标签;不重复工具名,也不把整个任务的阶段摘要套到每条工具上。"},{"topic":"tool-cards","title":"工具卡片","text":"调用说明和晚到的成功、失败结果仍更新原来的工具栏,不增加卡片元素;没有说明的后端保持简洁显示。"}],"details":"### Changed\n- Prefer meaningful backend-provided per-call descriptions and titles in foreground tool headings, falling back to file basenames and omitting redundant tool-name labels. Preserve ACP call/update titles and explicit AGY/Pi parameter labels that tool mapping previously discarded; never synthesize a call to refresh a terminal-result title.\n- Carry optional tool labels over the existing version-1 stream without new capabilities or model calls. Keep execution-wide activity separate, retain fixed-slot asynchronous result updates, and verify unchanged recursive card-node budgets through pagination and shrink."},{"version":"1.6.146","text":"### 工具栏样式更统一清爽\n- Bash 和文件工具统一显示状态符号、工具名和简短说明:成功用浅灰小点,失败用浅灰普通叉,等待结果用沙漏,不再堆叠彩色状态标签。\n- 完整工具编号、参数、输出和修改预览保留在展开详情里;长回复继续自动分片,结果晚到也会更新原来的工具栏。","changes":[{"topic":"tool-cards","title":"工具卡片","text":"Bash 和文件工具统一显示状态符号、工具名和简短说明:成功用浅灰小点,失败用浅灰普通叉,等待结果用沙漏,不再堆叠彩色状态标签。"},{"topic":"tool-cards","title":"工具卡片","text":"完整工具编号、参数、输出和修改预览保留在展开详情里;长回复继续自动分片,结果晚到也会更新原来的工具栏。"}],"details":"### Changed\n- Use one compact foreground tool heading for Bash and other tools: a gray success dot, pending hourglass, or gray failure cross, followed by the tool name and an optional bounded public description or file basename. Keep raw commands out of headings and move full tool IDs and explicit status labels into the existing expanded details.\n- Preserve input, result, diff previews, stable call identities, and existing cross-card cleanup. Verify recursive tagged-node counts at the card boundary through delayed results, activity tails, and completion controls; no multi-call aggregation, execution, or wire-protocol change."},{"version":"1.6.145","text":"### 工具调用反馈更紧凑\n- 同一次工具调用和结果合为一条折叠栏,完成后直接更新成功或失败状态,减少长回复中的滚动。\n- 展开仍可查看参数、输出和代码修改预览;不同工具调用继续分开显示,错误状态保持醒目。","changes":[{"topic":"tool-cards","title":"工具卡片","text":"同一次工具调用和结果合为一条折叠栏,完成后直接更新成功或失败状态,减少长回复中的滚动。"},{"topic":"tool-cards","title":"工具卡片","text":"展开仍可查看参数、输出和代码修改预览;不同工具调用继续分开显示,错误状态保持醒目。"}],"details":"### Changed\n- Render each foreground tool call and its matching result as one collapsed row, updating its status in place while retaining bounded input, output, and per-file diff previews. Keep later text and worker slots stable; preserve unmatched results without guessing a pairing.\n- Keep independent calls separate, including adapter ID reuse after a completed invocation. Remove previous tool copies before cross-card moves, including still-active and surplus pages, preserving worker context controls and retryable updates. Backend execution, protocol version, and approval flows are unchanged."},{"version":"1.6.144","text":"### 随时看清 Agent 正在做什么\n- 主 Agent 在最新回复卡片底部显示当前活动,子 Agent 在自己的标题下显示;长回复翻页后仍能看到最新进度。\n- 显示后端提供的公开进度、计划步骤和工具说明,等待输入或任务结束时切换状态;不展示原始思考,也不猜测完成百分比。","changes":[{"topic":"agent-activity","title":"运行进度","text":"主 Agent 在最新回复卡片底部显示当前活动,子 Agent 在自己的标题下显示;长回复翻页后仍能看到最新进度。"},{"topic":"agent-activity","title":"运行进度","text":"显示后端提供的公开进度、计划步骤和工具说明,等待输入或任务结束时切换状态;不展示原始思考,也不猜测完成百分比。"}],"details":"### Added\n- Show bounded public activity at the tail of the latest active coordinator card and below each managed worker's identity. Separate explicit Codex commentary and public reasoning summaries, public assistant updates, plan steps, and safe tool descriptions from answer text; never promote raw thinking or estimate completion percentages.\n- Negotiate optional activity progress without a protocol-version change. Coalesce snapshots, preserve worker-result publication barriers, prioritize input and terminal states, discard late events, and leave older peers on their existing presentation."},{"version":"1.6.143","text":"### Codex 用量查询等待时间延长\n- 将 `/status` 查询 Codex 用量的等待时间从 5 秒延长至 10 秒,减少响应较慢时缺少用量信息的情况。","changes":[{"topic":"codex-usage","title":"Codex 用量","text":"将 `/status` 查询 Codex 用量的等待时间从 5 秒延长至 10 秒,减少响应较慢时缺少用量信息的情况。"}],"details":"### Fixed\n- Increase the Codex account-usage RPC timeout from five to ten seconds for `/status`, without adding retries or changing failure handling."},{"version":"1.6.142","text":"### 同一后端也能分工协作\n- 主 Agent 现在也可调用同一后端的独立 Worker,不共用主会话;Git 项目仍可并行分工,成果仍需明确合并或保留。","changes":[{"topic":"delegation","title":"委派任务","text":"主 Agent 现在也可调用同一后端的独立 Worker,不共用主会话;Git 项目仍可并行分工,成果仍需明确合并或保留。"}],"details":"### Added\n- Allow unrestricted coordinators to delegate to their own backend through independent managed worker sessions. Preserve synthetic lane identities, isolated Git checkouts, shared-directory FIFO scheduling, explicit artifact integration, context-reset ownership, and existing task/concurrency budgets.\n\n### Changed\n- Report the coordinator backend's worker eligibility in discovery and status using the same admission policy, and align injected tool instructions. Do not advertise sandbox-restricted workers as eligible in the delegation menu. Keep restricted coordinators and read_only requests ineligible; native backend subagents and the Router wire protocol remain unchanged."},{"version":"1.6.141","text":"### 含子仓库的项目也能委派\n- 已初始化的 Git 子模块和嵌套仓库现在可以参与委派,包含未提交修改;应用成果时保留原有会话、仓库提交和暂存状态。\n- 文件与目录互换不再误报;未初始化的子模块不阻止审阅其他代码,真正不支持的文件会显示具体路径和类型。","changes":[{"topic":"delegation","title":"委派任务","text":"已初始化的 Git 子模块和嵌套仓库现在可以参与委派,包含未提交修改;应用成果时保留原有会话、仓库提交和暂存状态。"},{"topic":"delegation","title":"委派任务","text":"文件与目录互换不再误报;未初始化的子模块不阻止审阅其他代码,真正不支持的文件会显示具体路径和类型。"}],"details":"### Fixed\n- Include initialized local submodules and embedded repositories in private delegated snapshots, with staged, unstaged, and nonignored files captured through their own temporary indexes. Stream local Git objects without remote fetching or a repository-size cap; workers receive ordinary files rather than nested Git metadata or histories.\n- Apply nested working-file changes through explicit artifact integration while preserving all source HEADs, indexes, and gitlinks. Include nested state in delivery revisions, reject changed repository identities and boundary replacements, preserve uncertain worker-created Git metadata for manual recovery, and keep uninitialized submodules empty without blocking unrelated work.\n- Allow ordinary file/directory replacements and identify unsupported filesystem entries by repository-relative path and type. Cover nested snapshots, conflicts, state preservation, streamed transfer, artifact delivery, and guarded checkout reclamation/reuse with real temporary Git repositories.\n- Preserve warm index stat caches and the original index timestamp so racy-clean detection still catches same-size edits; reuse completed local object transfers within each stable capture. Reject ancestor worktrees, external nested Git metadata, nested-local command filters, and partial-clone hydration. Keep unsupported no-change metadata pending until explicit retention, and wait for deterministic Git lifecycle signals in cancellation tests.\n- Receive nested packs in a per-transfer quarantine and publish complete packs with indexes last. Clean failed and timed-out transfers after both processes exit without sweeping other operations. Discover embedded repositories exposed by gitlink replacements and support initialized submodules owned by linked-worktree metadata stores."},{"version":"1.6.140","text":"### 大项目委派与异常恢复更稳妥\n- 准备工作区或收集成果较慢时,不再误判后台进程异常、锁住整个项目;取消任务后也不会偷偷启动 Worker。\n- 无法完整读取被 Git 标记隐藏的修改时,会明确提示并保留文件,不再把遗漏的修改当成已完整交付。","changes":[{"topic":"delegation","title":"委派任务","text":"准备工作区或收集成果较慢时,不再误判后台进程异常、锁住整个项目;取消任务后也不会偷偷启动 Worker。"},{"topic":"delegation","title":"委派任务","text":"无法完整读取被 Git 标记隐藏的修改时,会明确提示并保留文件,不再把遗漏的修改当成已完整交付。"}],"details":"### Fixed\n- Reject assume-unchanged and skip-worktree index entries before capturing delegated Git checkpoints. Do not silently omit hidden edits, reinterpret absent sparse files as deletions, or modify the source index; preserve unresolved worker files for manual recovery.\n- Keep managed Git baseline capture, checkout preparation, and repository-lock waits outside the native worker startup deadline. Await owned mutations before releasing execution capacity, and prevent late worker startup after cancellation.\n- Bound accepted Git delegation and cancellation response waits below the tool adapter's timeout. Return the existing task ID and explicit pending status for later polling without aborting owned operations, pretending cleanup finished, or encouraging duplicate submission.\n- Separate confirmed process shutdown from artifact collection. Slow collection no longer quarantines the source workspace or leaks global worker slots; collection and lane-persistence failures retain the affected lane while releasing unrelated capacity after Git operations settle. Preserve native-exit quarantine, individual Git command deadlines, non-Git FIFO scheduling, and old-peer compatibility."},{"version":"1.6.139","text":"### 大仓库也能正常委派任务\n- 取消按仓库总大小和文件数量拒绝子任务的限制,大型项目也可执行委派、合并成果并再次使用工作目录。","changes":[{"topic":"delegation","title":"委派任务","text":"取消按仓库总大小和文件数量拒绝子任务的限制,大型项目也可执行委派、合并成果并再次使用工作目录。"}],"details":"### Fixed\n- Remove the fixed 128 MiB repository-size and 10,000-file limits from delegated Git input snapshots, filtered trees, artifact collection, and checkout reclamation verification. Large repositories keep their complete staged, unstaged, and nonignored untracked input without a replacement size configuration.\n- Preserve path and entry validation, artifact ownership and reference checks, streamed byte hashing before reclamation, parent index and branch isolation, and existing Git command deadlines and output-buffer limits. Add regression coverage for large committed and untracked files and complete artifact integration, reclamation, and reuse beyond the former limits."},{"version":"1.6.138","text":"### 委派收尾与会话恢复更可靠\n- 子任务成果已处理完时,不再因为其他会话忙碌而误报收尾失败或反复要求处理。\n- 重试旧卡片的上下文清理时,不再影响后来创建的 Worker 会话;状态不明的旧会话仍会保留。\n- 子任务在准备工作区之前启动失败时,可继续复用原 Worker;工作区状态不确定时仍保留安全保护。","changes":[{"topic":"delegation","title":"委派任务","text":"子任务成果已处理完时,不再因为其他会话忙碌而误报收尾失败或反复要求处理。"},{"topic":"delegation","title":"委派任务","text":"重试旧卡片的上下文清理时,不再影响后来创建的 Worker 会话;状态不明的旧会话仍会保留。"},{"topic":"delegation","title":"委派任务","text":"子任务在准备工作区之前启动失败时,可继续复用原 Worker;工作区状态不确定时仍保留安全保护。"}],"details":"### Fixed\n- Validate settled worker artifact receipts independently of source-workspace contention, avoiding spurious closeout failures and extra coordinator turns. Keep ownership, reference, recovery, cancellation, and receipt-integrity checks; history reconciliation still requires the source lease.\n- Keep a superseded shared-directory lane non-reusable after a context-clear retry, without deleting another worker's conversation. Persist pooling mode for independent Git lanes and preserve ambiguous legacy duplicate contexts instead of scheduling automatic deletion.\n- Return reused Git lanes to ready after failures before checkout preparation starts. Continue preserving uncertain prepared lanes, and distinguish executor setup failures from checkout failures in recovery diagnostics."},{"version":"1.6.137","text":"### 单独清理子任务上下文\n- 子任务结束后,无论成功还是失败,都可在卡片上点击 Clear context,让该 Worker 下次从新会话开始,不影响主 Agent、其他 Worker 或代码成果。\n- 清理收到本机确认后才显示成功;运行中的任务和过期卡片不会误清新会话,失败可重试,不会自动重跑任务。","changes":[{"topic":"delegation","title":"委派任务","text":"子任务结束后,无论成功还是失败,都可在卡片上点击 Clear context,让该 Worker 下次从新会话开始,不影响主 Agent、其他 Worker 或代码成果。"},{"topic":"delegation","title":"委派任务","text":"清理收到本机确认后才显示成功;运行中的任务和过期卡片不会误清新会话,失败可重试,不会自动重跑任务。"}],"details":"### Added\n- Add an owner-bound Clear context control outside delegated Worker card details after successful or failed execution. Reset only the exact idle lane's native continuation, retaining workspaces, artifacts, archived transcripts, authentication, and settings without replaying the task or resetting the coordinator.\n- Negotiate optional workerContextReset support and require CLI acknowledgement before confirming success. Persist reset intents and context epochs, serialize reset with lane acquisition, reject stale or unsafe targets, and permit explicit retries after interrupted resets. Keep controls consistent across streaming, continuation cards, and thread-footer refreshes with a bounded ephemeral Router cache; legacy peers remain compatible."},{"version":"1.6.136","text":"### 委派成果自动收尾\n- 主 Agent 回复完成前,自动检查子任务成果是否已交付或明确保留;有遗漏会继续处理,最多补两轮。\n- 仍无法处理的成果会明确列出并保留,不再把“任务执行完了”当作“代码已交付”,也不会自动丢弃文件。","changes":[{"topic":"delegation","title":"委派任务","text":"主 Agent 回复完成前,自动检查子任务成果是否已交付或明确保留;有遗漏会继续处理,最多补两轮。"},{"topic":"delegation","title":"委派任务","text":"仍无法处理的成果会明确列出并保留,不再把“任务执行完了”当作“代码已交付”,也不会自动丢弃文件。"}],"details":"### Added\n- Enforce artifact closeout before successful coordinator completion. Drain accepted tasks and tool calls, reconcile historical delivery under existing ownership guards, then inspect durable receipts rather than cached results. Pending changes, missing or invalid receipts, failed collection, and unretained recovery state prevent success; verified no-change, applied, and deliberately retained outcomes need no further decision.\n- Resume the same coordinator session for at most two artifact-closeout rounds per request, combining unread worker results when available. Preserve attachments, result acknowledgement, approval/input, model recovery, and cancellation boundaries; new workers do not reset the budget. An unresolved final check returns bounded task IDs and artifact references as a failure, pausing queued execution while preserving recoverable output. No new wire messages, implicit merging, automatic cross-request replay, or non-Git lifecycle changes."},{"version":"1.6.135","text":"### 工作区自动回收\n- 无文件改动的成功任务,以及已确认合并的成果,会自动回收安全的 Worker 工作目录;保留上下文,下次在原路径重建并读取最新代码。\n- 有未交付成果、遗留文件或状态不明的工作目录继续保留;清理失败不影响任务结果,也不会强删文件。\n- 成果提交已进入主工作分支历史时,会自动确认交付;之后主分支撤回改动也不会重新挂起旧任务,遗留文件仍受安全检查保护。","changes":[{"topic":"delegation","title":"委派任务","text":"无文件改动的成功任务,以及已确认合并的成果,会自动回收安全的 Worker 工作目录;保留上下文,下次在原路径重建并读取最新代码。"},{"topic":"delegation","title":"委派任务","text":"有未交付成果、遗留文件或状态不明的工作目录继续保留;清理失败不影响任务结果,也不会强删文件。"},{"topic":"delegation","title":"委派任务","text":"成果提交已进入主工作分支历史时,会自动确认交付;之后主分支撤回改动也不会重新挂起旧任务,遗留文件仍受安全检查保护。"}],"details":"### Added\n- Automatically reclaim verified delegated Git checkout directories after successful no-change tasks or durable artifact application. Preserve native conversation pointers, stable lane paths, immutable artifacts, and private input/output/history references; recreate absent, unregistered owned paths from fresh delivery input when the lane is reused.\n- Persist present/reclaiming/reclaimed checkout state and exact output receipts. Resolve interrupted intents only from verified intact checkouts or confirmed absent/unregistered paths; never infer ownership from a missing legacy directory, overwrite occupied reclaimed paths, prune registrations, or sweep historical workspaces.\n- Recognize successful pending worker outcomes as historically delivered when their recorded artifact snapshot commit is an ancestor of delivery HEAD, including after a later revert. Persist the observed HEAD and repair interrupted pending-marker clears; reconcile guarded inspection, ready-lane admission, and idle turn closure without content-subset heuristics, automatic merges, staging, commits, or changes to patch-only apply. Keep replacement-object bypass, owner/ref checks, fail-soft errors, and independent safe-reclamation verification.\n\n### Changed\n- Independently bound and hash actual tracked bytes, modes, and symlink targets before checkout deletion, accounting for ignored files, extra directories, unknown entries, and Git index flags. Preserve pending, retained, failed/cancelled, locked, or unresolved recovery workspaces. Transformed bytes that cannot be proven equivalent fail closed.\n- Serialize lane lifecycle and Git worktree metadata operations within the CLI process. Await optional reclamation outside the worker-stop deadline before marking a lane ready; cleanup failure does not change a successful task or artifact application. Native backend execution, non-Git FIFO scheduling, and Router protocol remain unchanged.\n- Keep full byte verification outside the shared repository guard so independent lanes can start during a slow audit. Isolate a reused Git lane whose checkout preparation fails without discarding its existing native context; preserve lazy recovery of valid interrupted-removal receipts."},{"version":"1.6.134","text":"### 本阶段更新汇总(1.6.90~1.6.133)\n- 默认开启多 Agent 委派;Git 项目最多 5 个 Worker 隔离并行,成果由主 Agent 确认合并,非 Git 目录仍串行。\n- 新增 DSH 后端,支持模型与 effort 切换、上下文续接,以及在 /status 中查询余额。\n- 支持接收最大 20 MiB 的文件,提取文本文件、文字型 PDF、DOCX 和 XLSX 内容;设备授权后,上传文件再发送处理指令即可。\n- 优化手机端的进度和结果展示,支持 Markdown 富文本;Worker 活动详情和后台任务结果默认折叠。\n- 主 Agent 和子 Agent 卡片底部都用小号灰字显示各自的模型与 effort,方便了解本次任务的执行配置。\n- 新增中文升级摘要与 Codex Reset 额度提醒;跨版本升级时按功能汇总变化,重启和升级后保留已确认送达的提醒记录。","changes":[{"topic":"delegation","title":"委派任务","text":"默认开启多 Agent 委派;Git 项目最多 5 个 Worker 隔离并行,成果由主 Agent 确认合并,非 Git 目录仍串行。"},{"topic":"dsh-backend","title":"DSH 后端","text":"新增 DSH 后端,支持模型与 effort 切换、上下文续接,以及在 /status 中查询余额。"},{"topic":"file-attachments","title":"文件附件","text":"支持接收最大 20 MiB 的文件,提取文本文件、文字型 PDF、DOCX 和 XLSX 内容;设备授权后,上传文件再发送处理指令即可。"},{"topic":"worker-cards","title":"任务卡片","text":"优化手机端的进度和结果展示,支持 Markdown 富文本;Worker 活动详情和后台任务结果默认折叠。"},{"topic":"execution-metadata","title":"执行信息","text":"主 Agent 和子 Agent 卡片底部都用小号灰字显示各自的模型与 effort,方便了解本次任务的执行配置。"},{"topic":"maintenance-notices","title":"更新与额度提醒","text":"新增中文升级摘要与 Codex Reset 额度提醒;跨版本升级时按功能汇总变化,重启和升级后保留已确认送达的提醒记录。"}],"details":"This stage summary consolidates confirmed source changes from 1.6.90 through 1.6.133, including Git-confirmed changes whose per-version notes were missing. It replaces the available entries in that range, not Git history, and is not a complete npm publication ledger. Version 1.6.134 reorganizes release documents, synchronizes package versions, and permits up to six summary bullets in build-time and bundled-artifact validation; backend execution and Router behavior are unchanged.\n\n### Added\n- Integrate DeepSeek Harness (DSH) through its native persistent ACP server, with model and reasoning-effort controls, cancellation, permission prompts, context reporting when available, and isolated coordinator/worker sessions. Keep native capability boundaries: images require advertised support, and unsupported interactive slash commands, plan mode, and elicitation do not fall back to another backend.\n- Preserve DSH session pointers across backend switches and restarts. Recover explicitly non-resumable sessions with an honest fresh-session notice; retain pointers on authentication, provider, network, rate-limit, timeout, or directory-mismatch failures. Summarize-then-reset compaction uses a private, durable handoff rather than claiming native transcript compaction, and refuses to summarize unavailable original context.\n- Show DSH official recharge and bonus wallet balances in `/status` when native account authentication makes them available. Retain native precision and currency, distinguish balances from token usage or plan quota, and use a short-lived account-query process without creating a model turn or changing the ACP conversation.\n- Receive file attachments up to 20 MiB through explicit device enrollment and a same-Router HTTPS download path. Transfer file bytes from Feishu to a private Router spool and CLI staging area; WebSocket messages contain only bounded references, hashes, sizes, and authorization metadata. Enforce authenticated device ownership, actual byte limits, hashes, deadlines, storage quotas, and explicit failure feedback without weakening legacy text/image support.\n- Extract bounded previews from text/code, CSV, JSON, YAML, textual PDF, DOCX main-body text, and XLSX cells, retaining page/sheet/cell provenance. Keep parsing off the control event loop, bound expanded archives and output, and never execute macros or formulas. OCR, protected documents, legacy Office formats, and general archive extraction remain unsupported; saved, parsed, partial, and unsupported outcomes stay distinct.\n- Stage files for a subsequent instruction or a reply to their status card, including instructions with images, rather than starting a model task on file upload alone. Pin queued attachments, bind references to the admitted device/thread/directory, expose `/files` and `/files clear`, and preserve active references during cleanup. Backend tools retain their normal permissions when reading original or preview paths outside the project.\n- Persist isolated delegated-worker lanes separately from direct backend sessions, retaining only each lane's own earlier delegated context. Reuse requires confirmed process exit and valid session state; directory changes invalidate the old workspace generation, and failed lane cleanup remains retryable rather than silently freeing uncertain ownership.\n- Accept multiple independent delegated tasks in one coordinator request, with individual cancellation, queued status, bounded queue waits, cumulative admission limits, and automatic collection of all results. Retain source-workspace ownership while the queue drains; queued work has no execution timestamp or progress card before it starts.\n- Run Git workers in reusable per-lane worktrees with bounded snapshots of staged, unstaged, and nonignored untracked input. Refresh every detached task checkout to an explicit baseline while preserving native lane identity. Non-Git directories use code-enforced FIFO serial scheduling and are never initialized as Git repositories implicitly; worktrees are not process sandboxes.\n- Preserve immutable worker artifacts under private Git references and expose revision-guarded inspection, integration, or retention. Preflight conflicts in a separate recovery worktree; applying changes never stages, commits, or pushes the delivery workspace. Pending artifacts or unknown dirty files block lane reuse. File application is not atomic: preserve before/target snapshots and a durable pending receipt for manual recovery after an incomplete apply, and validate captured tree limits after Git filters and both rename endpoints against the selected-directory scope.\n- Attach bounded execution-scoped model and reasoning-effort metadata to AI responses, terminal recovery, and each delegated worker's progress/results. Distinguish backend reports, configured selections, defaults, and unavailable values without extra model requests. Keep launch preferences stable, retain final worker snapshots before cleanup, and never substitute coordinator settings or attribute a model to an unstarted queued task.\n- Show compact gray model/effort notes below Completed on main replies and outside collapsed worker details. Preserve metadata through long-output splitting, thread-button refresh, and optional protocol-v1 fields, while legacy peers and local control commands retain their existing display.\n- Add standalone CLI upgrade notices with cumulative bundled notes, offline delivery, negotiated capabilities, and a silent baseline on first adoption. Advance notification progress only after acknowledged delivery, retain skipped-upgrade ranges, and keep maintenance cards separate from thread selection and task routing.\n- Add hourly, status-only Codex weekly-quota inspection and notification-only reminders using existing file-backed ChatGPT credentials. Do not send model prompts, create user threads, refresh credentials, or probe other backends. Missing/expired credentials, unsupported native APIs, and failed samples remain unavailable evidence; the experimental native token-handoff API is not a compatibility guarantee.\n\n### Changed\n- Enable managed delegation by default for new and existing threads with no saved preference; explicit off remains off through upgrades, context resets, backend switches, and restarts. Exposing delegation tools does not automatically launch workers.\n- Restrict managed delegation to a different backend without changing native backend subagent tools. Unrestricted coordinators launch unrestricted workers; sandboxed coordinators have no eligible cross-backend targets until policy translation is supported. Discovery and launch enforce the same policy.\n- Raise the shared starting/running worker limit from three to five. Git-backed requests can occupy five isolated execution slots; additional accepted tasks remain queued, non-Git requests still run one worker at a time, and the cumulative 12-task limit spans coordinator continuations without refunds for failures or cancellation.\n- Use real worker tool activity for liveness timeouts, with separate idle and tool-idle deadlines, rather than treating a quiet stdout stream as proof that a worker stalled. UI text and card heartbeats do not extend execution liveness.\n- Enrich the local CLI's Linux/macOS startup PATH with verified runtime and conventional installation directories, preserving inherited precedence. Use the same command resolution for startup checks, backend menus, delegation, and auxiliary queries, honor explicit executable overrides, and preserve ZCode's native empty-command discovery without falling back from a nonempty invalid override. Valid existing services do not need reinstallation; startup does not source shell profiles, install tools, or rewrite their service files.\n- Render nested/live worker activity and results as rich Markdown, with independent per-worker text, elapsed/tool activity, consistent icons, and compact mobile layouts. Keep detailed activity collapsed, separate result labels from worker Markdown, preserve stable update slots and card-wide table limits, and make the delegation status menu easier to scan.\n- Label standalone task notifications as Background task, retain their originating thread and task identity, collapse result/output-path details by default, and keep short failures visible. This presentation is separate from foreground replies and managed-worker cards.\n- Show thread/workspace headers on initial streaming and continuation cards before final completion, preserving reply provenance rather than waiting for the terminal card update.\n- Bundle concise Chinese user summaries alongside English technical details at build time. Validate matching nonempty current-version entries, one short heading and one to six single-line user bullets, stable feature tags/titles, and bounded package payloads; never fetch, translate, or summarize release notes with a model at runtime. Version 1.6.134 raises the per-release bullet limit from three to six while retaining the 2 KiB summary budget.\n- Aggregate the entire pending device-upgrade range by feature, removing exact duplicate items only. Keep available summaries and technical details collapsed and paged, report bounded-overview omissions, and preserve legacy-peer fallback, first-adoption silence, and protocol version 1. This release represents the consolidated 1.6.90-1.6.133 range with the 1.6.134 stage summary rather than reconstructing a per-device subset of those changes.\n- Use the title \"Codex Reset\" with a target emoji and \"Weekly quota reset: 100%\". Explain why to send Codex a normal task without verification or activation steps, remove the sampling-disclaimer footer and redundant Dismiss button, and retain passive validated legacy callbacks. Eligibility requires two roughly hourly zero-usage observations with approximately seven days remaining and a deadline that advances with the sampling interval; it is a snapshot heuristic, not confirmation of a provider reset or a guarantee that one request starts a usage window.\n\n### Fixed\n- Validate incomplete or incompatible tool parameters before specialized card formatting, using bounded text or no-parameters fallbacks without interrupting later tool events or task completion.\n- Retry confirmed Feishu Markdown-parser failures as literal text, preserve that mode on later updates and thread-button refreshes, and retain table-limit fallback without treating unrelated failures as parse errors.\n- Require successful recovery-notice delivery before acknowledging reuse of a surviving card, avoid duplicate notices within a recovery round, and retain originating thread information through recovery and continuation cards.\n- Reset every backend's remote-cli session binding when a thread changes to a different normalized working directory, preserve backend-native history and thread preferences, and keep a same-directory selection a no-op.\n- Distinguish a deleted or inaccessible selected working directory from a missing backend executable, refuse fallback execution in another directory, and cover remaining executor and passthrough startup paths with actionable errors.\n- Refresh Codex's model catalog and idle app-server after a native CLI version change while preserving the conversation binding, and improve model-recovery card delivery without replaying accepted worker launches.\n- Retain bounded worker results through coordinator continuations and terminal failures without replaying the original request, attachments, or completed workers. Keep execution-scoped result acknowledgement separate from worker completion, suppress premature coordinator output while results are pending, and prevent stale worker progress from overwriting unrelated cards.\n- Deduplicate ACP tool updates and keep reasoning/thought chunks out of answer text, final output, and delegated summaries for Kimi, OpenCode, ZCode, and DSH, while preserving separate native reasoning handling. Generate unique, paired Pi fallback tool IDs so concurrent tool calls cannot collide or report an unrelated result.\n- Filter bounded standalone Claude Code model-recognition stderr diagnostics for SDK queries and session-title generation, including delegated-worker streaming/results and slash-command error details. Preserve actual API/authentication errors, nonzero exits, assistant text, unknown sources, malformed records, and other backends; raw local stderr and telemetry behavior are unchanged.\n- Refuse ambiguous plain-text input when multiple workers are waiting, retain request-specific approval routing, and require confirmed cleanup before releasing occupied slots or workspace ownership.\n- Keep queued diagnostic records out of live terminal pruning, reconcile unfinished records as interrupted after restart without replaying tasks, and make retained worker-lane cleanup retryable.\n- Persist acknowledged Codex reminder suppression across CLI upgrades, restarts, reconnects, and credential refreshes using a private account/bucket fingerprint ledger. Only valid non-candidate observations rearm reminders; unavailable probes do not. Wait for accepted acknowledgement writes on shutdown, preserve corrupt/unavailable storage without affecting normal messaging, and do not claim exactly-once delivery across crashes.\n\n### Security\n- Disable DSH's official extra session-log attachment and OTel telemetry paths independently with a private temporary configuration overlay and the native telemetry-disable flag. Leave existing profiles, credentials, and other backends untouched and remove the overlay after process exit. Normal model requests still send task context to the selected provider and native local history remains; this is not an offline mode or a guarantee about third-party plugins.\n\n### Maintenance\n- Require staged-change and outgoing-commit privacy checks before publication, and sanitize documentation references without changing functional behavior.\n- Remove redundant presentation/fixture assertions while retaining behavioral regression coverage, clean temporary test fixtures reliably, and make ZCode discovery assertions portable across aliased filesystem paths."}]}
@@ -17,7 +17,7 @@ export declare class SettingsCatalogReader {
17
17
  private readonly cleanupTimeoutMs;
18
18
  constructor(guard: DirectoryGuard, factory?: Factory, timeoutMs?: number, cleanupTimeoutMs?: number);
19
19
  withExecutor<T>(config: ExecutorConfig, thread: Thread, coordinator: SettingsBackend, target: SettingsBackend, body: (executor: IExecutor) => Promise<T>, withoutModelOverride?: boolean): Promise<T>;
20
- read(config: ExecutorConfig, thread: Thread, coordinator: SettingsBackend, target: SettingsBackend, kind: 'model' | 'effort'): Promise<SettingsCatalog>;
20
+ read(config: ExecutorConfig, thread: Thread, coordinator: SettingsBackend, target: SettingsBackend, kind: 'model' | 'effort', includeSpeed?: boolean): Promise<SettingsCatalog>;
21
21
  }
22
22
  export {};
23
23
  //# sourceMappingURL=SettingsCatalog.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsCatalog.d.ts","sourceRoot":"","sources":["../../src/settings/SettingsCatalog.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,KAAK,OAAO,GAAG,OAAO,cAAc,CAAC;AAErC,oFAAoF;AACpF,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EACnG,WAAW,EAAE,eAAe,EAAE,MAAM,EAAE,eAAe,GAAG,cAAc,CAYvE;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,eAAe,GAAG,MAAM,GAAG,SAAS,CAE3G;AAED,8FAA8F;AAC9F,qBAAa,qBAAqB;IACpB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAAkB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAC1E,OAAO,CAAC,QAAQ,CAAC,SAAS;IAAW,OAAO,CAAC,QAAQ,CAAC,gBAAgB;gBAD3C,KAAK,EAAE,cAAc,EAAmB,OAAO,GAAE,OAAwB,EACnF,SAAS,SAAS,EAAmB,gBAAgB,SAAS;IAE3E,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EACxF,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,oBAAoB,UAAQ,GAAG,OAAO,CAAC,CAAC,CAAC;IAoDzG,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAC7E,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC,eAAe,CAAC;CA6B/E"}
1
+ {"version":3,"file":"SettingsCatalog.d.ts","sourceRoot":"","sources":["../../src/settings/SettingsCatalog.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,KAAK,OAAO,GAAG,OAAO,cAAc,CAAC;AAErC,oFAAoF;AACpF,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EACnG,WAAW,EAAE,eAAe,EAAE,MAAM,EAAE,eAAe,GAAG,cAAc,CAYvE;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,eAAe,GAAG,MAAM,GAAG,SAAS,CAE3G;AAED,8FAA8F;AAC9F,qBAAa,qBAAqB;IACpB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAAkB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAC1E,OAAO,CAAC,QAAQ,CAAC,SAAS;IAAW,OAAO,CAAC,QAAQ,CAAC,gBAAgB;gBAD3C,KAAK,EAAE,cAAc,EAAmB,OAAO,GAAE,OAAwB,EACnF,SAAS,SAAS,EAAmB,gBAAgB,SAAS;IAE3E,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EACxF,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,oBAAoB,UAAQ,GAAG,OAAO,CAAC,CAAC,CAAC;IAqDzG,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAC7E,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,GAAG,QAAQ,EAAE,YAAY,UAAQ,GAAG,OAAO,CAAC,eAAe,CAAC;CAgCrG"}
@@ -43,7 +43,8 @@ class SettingsCatalogReader {
43
43
  const resolved = metadataConfiguration(config, this.guard, thread.id, coordinator, target);
44
44
  const id = `settings-meta-${(0, crypto_1.randomUUID)()}`;
45
45
  const model = withoutModelOverride ? configuredBackendModel(resolved, target) : (0, ThreadExecutorPool_1.resolveThreadModel)(thread, resolved);
46
- const executor = this.factory(this.guard, resolved, thread.workingDirectory, id, model, thread.efforts?.[target], { lifecycleHooks: false, delegationWorker: true });
46
+ const executor = this.factory(this.guard, resolved, thread.workingDirectory, id, model, thread.efforts?.[target], { lifecycleHooks: false, delegationWorker: true,
47
+ ...(thread.speeds?.[target] !== undefined ? { speed: thread.speeds[target] } : {}) });
47
48
  let timer;
48
49
  let settled = false;
49
50
  const operation = Promise.resolve().then(() => body(executor));
@@ -101,12 +102,13 @@ class SettingsCatalogReader {
101
102
  await removeOwnData();
102
103
  }
103
104
  }
104
- async read(config, thread, coordinator, target, kind) {
105
+ async read(config, thread, coordinator, target, kind, includeSpeed = false) {
105
106
  return this.withExecutor(config, thread, coordinator, target, async (executor) => {
106
107
  if (kind === 'model') {
107
108
  if (!executor.listModels)
108
109
  throw new Error('This backend does not expose a structured model catalog.');
109
110
  const models = await executor.listModels();
111
+ const speed = includeSpeed && executor.listSpeeds && executor.setSpeed ? await executor.listSpeeds(models) : undefined;
110
112
  const current = models.find(model => model.isCurrent);
111
113
  const reported = executor.getExecutionMetadata?.()?.modelSource === 'reported';
112
114
  const configured = (0, ThreadExecutorPool_1.resolveThreadModel)(thread, { ...config, type: target === 'claude' ? 'claude-persistent' : target })
@@ -117,6 +119,8 @@ class SettingsCatalogReader {
117
119
  effectiveSource: current ? (reported ? 'native' : 'configured') : configured ? 'configured' : 'unknown',
118
120
  defaultValue: models.find(model => model.isDefault)?.id,
119
121
  supportsReset: Boolean(executor.clearModel || (configuredBackendModel(config, target) && executor.setModel)),
122
+ ...(speed ? { speed: { choices: speed.choices.map(choice => ({ value: choice.value, label: choice.displayName, description: choice.description })),
123
+ configuredValue: thread.speeds?.[target] ?? undefined, defaultValue: speed.default } } : {}),
120
124
  };
121
125
  }
122
126
  if (!executor.listEfforts)
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsCatalog.js","sourceRoot":"","sources":["../../src/settings/SettingsCatalog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SettingsCatalog.js","sourceRoot":"","sources":["../../src/settings/SettingsCatalog.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,7 @@ export interface SettingsCatalog {
17
17
  effectiveSource: SettingsMenu['effectiveSource'];
18
18
  supportsReset: boolean;
19
19
  unavailableReason?: string;
20
+ speed?: SettingsMenu['speed'];
20
21
  }
21
22
  export interface SettingsDependencies {
22
23
  state(threadId: string): SettingsState | undefined;
@@ -26,7 +27,8 @@ export interface SettingsDependencies {
26
27
  threads(): string[];
27
28
  exclusive<T>(target: string, body: () => Promise<T>): Promise<T>;
28
29
  backend(threadId: string, backend: SettingsBackend, scope: SettingsScope, followGlobal: boolean): Promise<ExecuteResult>;
29
- preference(threadId: string, backend: SettingsBackend, kind: 'model' | 'effort', value: string | undefined): Promise<ExecuteResult>;
30
+ preference(threadId: string, backend: SettingsBackend, kind: 'model' | 'effort' | 'speed', value: string | undefined): Promise<ExecuteResult>;
31
+ speedSettingsSupported?(): boolean;
30
32
  delegation(threadId: string, enabled: boolean): Promise<ExecuteResult>;
31
33
  delegationSupported(threadId: string): boolean;
32
34
  now?(): number;
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsService.d.ts","sourceRoot":"","sources":["../../src/settings/SettingsService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SettingsService.d.ts","sourceRoot":"","sources":["../../src/settings/SettingsService.ts"],"names":[],"mappings":"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"}