@xgspz/cli-ui 0.6.14 → 0.6.16

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 (71) hide show
  1. package/CHANGELOG.md +37 -4
  2. package/README.md +29 -4
  3. package/dist/{cli-ui-embed-D-3DvyTN.js → cli-ui-embed-D9xgur2y.js} +18376 -18648
  4. package/dist/{cli-ui-index-C34qFb4u.js → cli-ui-index-WBtxmw23.js} +2 -2
  5. package/dist/{cli-ui-jszip.min-DojbZPiE.js → cli-ui-jszip.min-CU3ZzoXb.js} +1 -1
  6. package/dist/{cli-ui-jszip.min-BObcE2nn.js → cli-ui-jszip.min-DdU0X3VJ.js} +2 -2
  7. package/dist/{cli-ui-xlsx-JVLtx0qR.js → cli-ui-xlsx-Dx6T7qhC.js} +1 -1
  8. package/dist/cli-ui.css +1 -1
  9. package/dist/cli-ui.js +1 -1
  10. package/package.json +1 -1
  11. package/src/board/ChangesPane.tsx +10 -4
  12. package/src/board/CliBoard.tsx +48 -16
  13. package/src/board/FileViewer.tsx +34 -1
  14. package/src/board/diffRefresh.ts +63 -0
  15. package/src/board/linkage.ts +68 -0
  16. package/src/board/pathResolve.ts +108 -0
  17. package/src/chat/CliChat.tsx +105 -182
  18. package/src/chat/Composer.tsx +4 -3
  19. package/src/core/conversation.ts +16 -4
  20. package/src/core/store.ts +120 -40
  21. package/src/core/types.ts +2 -0
  22. package/src/msglist/CliMsgList.tsx +3 -2
  23. package/src/operator/node/AgentConnect.tsx +19 -15
  24. package/src/operator/node/AppearancePanel.tsx +1 -1
  25. package/src/operator/node/BranchNavigator.tsx +1 -1
  26. package/src/operator/node/BrowserPane.tsx +1 -1
  27. package/src/operator/node/Chat.tsx +16 -261
  28. package/src/operator/node/CommandPalette.tsx +1 -1
  29. package/src/operator/node/Composer.tsx +1 -1
  30. package/src/operator/node/Layout.tsx +1 -1
  31. package/src/operator/node/Markdown.tsx +6 -36
  32. package/src/operator/node/Modal.tsx +1 -1
  33. package/src/operator/node/OnboardingWizard.tsx +9 -5
  34. package/src/operator/node/Orchestrator.tsx +1 -1
  35. package/src/operator/node/ProjectLanding.tsx +1 -1
  36. package/src/operator/node/ProjectsColumn.tsx +1 -1
  37. package/src/operator/node/ProviderAuth.tsx +12 -10
  38. package/src/operator/node/RunSwitch.tsx +1 -1
  39. package/src/operator/node/Services.tsx +1 -1
  40. package/src/operator/node/SessionRail.tsx +27 -8
  41. package/src/operator/node/SessionView.tsx +1 -1
  42. package/src/operator/node/SettingsView.tsx +1 -1
  43. package/src/operator/node/TaskBoard.tsx +1 -1
  44. package/src/operator/node/TaskChanges.tsx +34 -5
  45. package/src/operator/node/TaskHero.tsx +1 -1
  46. package/src/operator/node/TasksColumn.tsx +1 -1
  47. package/src/operator/node/Transcript.tsx +10 -237
  48. package/src/operator/node/Welcome.tsx +1 -1
  49. package/src/operator/node/WorktreePrune.tsx +1 -1
  50. package/src/operator/node/boardInteraction.ts +6 -3
  51. package/src/operator/node/boardState.ts +12 -13
  52. package/src/operator/node/fileLinks.ts +4 -38
  53. package/src/operator/node/format.ts +12 -104
  54. package/src/operator/node/github.tsx +10 -8
  55. package/src/operator/node/modals.tsx +15 -13
  56. package/src/operator/node/recheckOnReturn.ts +28 -0
  57. package/src/operator/node/shared.tsx +10 -50
  58. package/src/operator/node/useTaskStream.ts +2 -2
  59. package/src/operator.base.css +3 -0
  60. package/src/operator.css +3 -0
  61. package/src/styles.css +5 -0
  62. package/src/ui/Markdown.tsx +36 -21
  63. package/src/ui/Transcript.tsx +8 -5
  64. package/src/ui/fileLinks.ts +6 -3
  65. package/src/ui/format.ts +11 -5
  66. package/src/ui/shared.tsx +11 -7
  67. package/src/ui/transcriptModel.ts +40 -9
  68. package/src/ui/useTranscriptWindow.ts +253 -0
  69. package/src/operator/node/boundedPoll.ts +0 -47
  70. package/src/operator/node/icons.tsx +0 -88
  71. package/src/operator/node/transcriptModel.ts +0 -129
package/CHANGELOG.md CHANGED
@@ -1,8 +1,41 @@
1
1
  # Changelog
2
2
 
3
- ## 0.6.14 — 本地候选,2026-11-10
4
-
5
- - 2026-11-11:批量发布目标改为 `@xgspz/cli-ui@0.6.14`,在隔离打包目录转换包名和内部引用;同步 center API 文档、安装示例与本包 README。新命名空间待用户手动发布,旧命名空间的 0.6.13 发布记录保留;工作区源码依赖和现有业务不自动切换。
3
+ ## 0.6.16 — 本地候选,2026-11-12
4
+
5
+ - 列表加载不再重复请求:`CliMsgList` 首次加载时,第 3 个起的每个对话任务都被拉两次详情(`GET /api/jobs/:id`),而且同时发出、不受列表「最多 2 个并发」的限制;宿主异步给 `jobIds`(先空、再一次给很多)时则全部同时发出。现在首次加载、刷新、补拉新加进来的对话共用同一个并发上限(2 个),同一个对话任务排着或正在拉时不再排第二次,给打开文件、发消息这类请求留出浏览器连接。
6
+ - 列表和对话同时打开选中的对话时,选中的那个也只拉一次(此前对话会等列表那次拉完再补拉一次)。拉完之后的刷新(回到前台、`store.refreshAll()`、手动刷新)照常重新拉。
7
+ - 新增 `store.loadMissingJobs()`(列表组件内部用,补拉列表里还没有数据的对话任务)。
8
+ - 智能体流式输出时只画新来的消息:此前对话每收到一块输出,输入框、智能体/执行设置、看板页签(外置看板连同文件列表)都跟着整个重画一次;现在 `Composer` 和 `CliBoard` 只在自己用到的东西变了时重画(排队消息出现、本轮结束、执行设置变化等照常更新),看板只订阅运行状态、轮次签名和收尾计数,不再订阅整个对话。转录本身的计算不变(600 条消息每块约 0.2ms)。
9
+ - 刷新任务详情时,实时用量已经是 0 的对话不再被替换成新对象:此前每次刷新(每轮状态变化都会触发)都让看着它的对话组件把整份消息重算一遍。
10
+ - 没人看的对话(对话、看板都不再看它)最多在内存里留 100 个(`IDLE_CONV_MAX`,与节点适配的 `KEEP_TRANSCRIPTS` 同一个值;节点适配由 30 个调到 100 个)的记录,每个离开时截到最新 300 条(往上翻过的更早消息丢掉,再往上翻时重新取),更早的整个释放,再打开时从实时流重新读;来回切换最近看过的对话仍然立刻显示。此前看过的每个对话的转录都一直留在内存里,长时间翻看很多大对话时内存只增不减。`store.getState().convs` 只保证有正在看的对话。
11
+ - 看板「改动」页签自动刷新(反馈:差异对比不会自动刷新):
12
+ - 节点模式(`TaskChanges`)此前只在运行状态从「运行中」变成「空闲」时重读;排队的消息接着跑时一直是运行中,改动就一直不刷新。现在节点每个回合结束(任务实时流的 `turn_end`)都重读,运行状态变成空闲、工作区文件有变化时也重读。
13
+ - 两种模式在运行中有工具执行完(可能改了文件)时也重读,不用等这一轮结束:节流到最多每 5 秒一次,最后一次变化之后一定再读一次;页面在后台时的变化回到前台补读一次。中枢看板与节点共用 `board/diffRefresh.ts`。
14
+ - 只看事件、没有定时轮询;读取仍只在改动页签打开时发生。`ConvState` 新增 `edits`(运行中工具执行完的次数)。
15
+ - 每一轮的请求更少:看板概况(`GET /api/jobs/:id/board`)此前每次轮次状态变化(排队、派发、执行、结束)都重查一次,一轮 4 次;现在只在派发到节点、任务结束、看的子任务或它在节点上的会话变了时重查,平常一轮 0 次。节点回合结束时已经查过文件、之后没有工具再执行完时,中枢随后把这一轮标成结束时不再查第二次。实测一轮(排队 → 执行 → 三次改文件 → 结束):任务详情 2 次(开始、结束,列表卡片要用)、看板概况 4 → 0 次、改动 1 → 2 次(轮中一次、轮末一次)。
16
+ - 组件里不再有定时轮询接口:节点模式的智能体登录、GitHub 登录、模型服务授权、「用 AI 刷新」项目上下文、引导页的连接检查,此前在等待期间每 1.5~3 秒查一次(最长 10~15 分钟);现在改为回到页面(显示、获得焦点、网络恢复)时查一次,等待处给「检查状态」「我已完成授权,检查状态」「检查结果」「已经登录过?重新检查」按钮。新增离线校验:组件源码里的 `setInterval` 只允许用在不发请求的本地计时 / 看门狗上。
17
+ - 中枢与节点适配共用实现(不再各留一份):
18
+ - 分段渲染加滚动(DOM 里最多 360 行、往上翻分页取、视图锚定、消息导航)合成 `ui/useTranscriptWindow.ts`,`CliChat` 与节点 `Chat` 共用;`CliChat` 由 960 行减到 846 行、节点 `Chat` 由 538 行减到 293 行,中枢这边也用上节点那边更稳的做法(取更早一页时按接上之前第一行的位置定位、导航到窗口外的消息先显示再跳)。`store.loadOlder(key, { beforeApply })` 新增可选参数。
19
+ - 转录模型(工具卡片解析、快照合并、会话分行、离开时截短与保留个数)只留 `ui/transcriptModel.ts`;节点的副本删除,节点由此也用上对格式不对的工具数据的容错。
20
+ - 工具卡片、提问卡片、浏览器输入卡片、会话分隔、Markdown 渲染规则、本地文件链接识别、图标、状态点 / 头像 / 智能体标签 / 骨架条 / 错误提示、时间与用量等格式化函数,节点适配改为用共享的那份,只保留各自不同的部分(节点的文件地址、按任务状态的状态点、附件地址)。
21
+ - 「在看板里打开」的接收方登记和多个看板时生效哪一个,中枢仓库和节点的 `boardInteraction` / `boardState` 共用 `board/linkage.ts`(各自一份实例,规则一份);节点的接收方出错时不再打断后面的接收方。
22
+ - 两个输入框(中枢 `Composer`、节点 `Composer`)功能不同(文本块 vs 节点原件上传、引用、分支),草稿存在本机的格式和键也不同,没有合并,已共用自动高度、排队消息、引用卡片、弹出菜单。
23
+ - 对话里的相对路径打不开(反馈:只给了一部分地址,智能拼接之后还是不对):智能体有时相对它进入的子目录写路径(例如资料在 `medical-review/<id>/prepare/` 下,回复里只写 `manual/modules/07_检验检查趋势/rules.md`),节点按任务工作目录根去找就是「文件不存在」;平台为大任务建的项目在节点上不做按文件名结尾的查找(会在几页同名文件里挑错)。现在看板、对话弹窗和节点看板读到「文件不存在」时,按这个对话里的线索补全——消息里提到过的目录、工具读写过的完整路径、看板打开过的文件——最多 8 个候选,逐个向服务端确认存在:只找到一个直接打开,并写明「对话里写的是 …,打开了 …」,再点同一个链接直接打开它;找到几个列出来让用户选;都没有照常报错。读失败不是因为文件不存在(断网、没权限)时不补。新增 `board/pathResolve.ts`,`FileViewer` 新增可选参数 `resolveMissing`、`onResolved`、`resolvedFrom`。
24
+ - 配套节点(`operator-oss`,需另行部署):四种智能体的会话上下文里加一条文件引用约定,回复里提到文件时写相对任务工作目录的完整路径或绝对路径,不写相对它后来进入的子目录的路径。
25
+ - 本地候选,尚未发布到 npm;`@xgspz/cli-ui@0.6.15` 仍为已发布版本。中枢不需要改动;节点的文件引用约定需部署节点后生效,组件这边的补全不依赖它。
26
+
27
+ ## 0.6.15 — 已发布,2026-11-11
28
+
29
+ - 「正在加载会话」不再一直转圈:一次性任务的子任务(例如已完成的子任务)记录迟迟没到时,最多等 20 秒(`TRANSCRIPT_WAIT_MS`)就改成说明并给「重新读取」;实时连接一直没收到数据(网关缓冲了实时推送)时说明是连接问题。中枢报告读不到记录(新的流事件 `transcript_unavailable`)时立即说明,读到记录后自动消失。
30
+ - `store.reconnect(key, { force: true })`:连着的(或已经结束的)实时流也断开重连一次,让中枢重新补发快照;「重新读取」用的就是它。不带 `force` 时行为不变。
31
+ - 输入框较窄时(包括 PC 端窄聊天栏,0.6.14 加宽两侧留白后输入框可能窄到 360px 以下)智能体选择紧挨发送按钮;此前它和发送按钮平分空位,被挤到中间,没有「+」时间距更大。
32
+ - 配套中枢(需另行部署):已结束子任务的对话记录补发失败后接着重试,连续失败时发 `transcript_unavailable`;已结束的一次性任务等补发重试完再关流,不再关成一个空对话。此前补发只试一次,节点一时读不到就再也不补,组件一直停在「正在加载会话」。
33
+ - 源码包名改为 `@xgspz/cli-ui`(`package.json`、锁文件、源码注释与控制台日志前缀),与 0.6.14 起的发布命名空间一致;从 0.6.15 起直接按源码发布,不再需要在隔离打包目录里转换包名。旧命名空间 `@xgspz/cli-ui` 停在 0.6.13,已有依赖不会自动切换。
34
+ - 2026-11-11 发布到 npm(`@xgspz/cli-ui@0.6.15`),直接按源码包发布。
35
+
36
+ ## 0.6.14 — 已发布,2026-11-11
37
+
38
+ - 2026-11-11:批量发布目标改为 `@xgspz/cli-ui@0.6.14`,在隔离打包目录转换包名和内部引用;同步 center API 文档、安装示例与本包 README。新命名空间已发布且完整性一致,旧命名空间的 0.6.13 发布记录保留;工作区源码依赖和现有业务不自动切换。
6
39
 
7
40
  - 看板「改动」页签在每轮结束(中枢把这一轮标成结束;没有轮次的一次性任务看节点 `turn_end`)、对话结束和实时流断线重连后自动重读;此前停在改动页签时,轮次结束后 diff 不会更新。首次连上不算,打开页签时照常读一次。
8
41
  - 轮末重读不复用在它之前发出、仍在途的同一请求(`board.diff(jobId, { fresh: true })`),连续的刷新信号在 250ms 内合并为一次读取;普通 GET 合并保留,过期请求结束时不再把新请求从合并表里摘掉。
@@ -28,7 +61,7 @@
28
61
  - 节点模式:实时 WebSocket 重连 10 次、回退 EventSource 后的探测 10 次、单条流的重新订阅 / EventSource 出错 5~20 次后停下,网络恢复、回到页面、获得焦点时再连;登录等待、上下文刷新、引导页的检查改为有限时长(10~15 分钟),用户回到页面时再查一次并重新计时;使用时长心跳与自动回顾不再定时发送,改为页面打开、回到前台、获得焦点或有点击 / 按键时发送(分别至少隔 2 分钟、5 分钟)。
29
62
  - 节点模式删除项目改为两步确认:先读节点的删除范围(`GET /api/projects/:id/delete-preview`,新增类型 `ProjectDeletePreview`),平台为大任务建的项目列出将一并删除的目录并注明资料目录(`material_root`)不删,确认时把看到的根目录作为 `delete_storage` 传给 `DELETE /api/projects/:id`;删不掉时项目和目录都保留,弹窗里显示原因。用户自己的仓库仍只删记录;没有预览接口的旧节点按原方式删除。`ContextModal` 的 `onDelete` 可接收确认参数并返回 Promise,`removeProject(id, confirm?)` 同步增加可选参数。
30
63
  - 配套 Operator 节点(需另行部署):大任务隔离——项目可登记 `material_root`,该大任务的智能体只能读写自己的资料目录,同一共享任务目录下其它大任务的资料与 `job_*` 仓库、任何位置的其它 `job_<id>` 目录对四个智能体都关闭,同一大任务内的依赖仍只读可见;节点数据目录、数据库与任务副本只对运行节点的账号开放。
31
- - 本地候选,尚未发布到 npm;0.6.13 仍为已发布版本。
64
+ - 2026-11-11:`@xgspz/cli-ui@0.6.14` 已发布且完整性一致;npm 发布不代表节点/中枢或线上文档已部署。
32
65
 
33
66
  ## 0.6.13 — 2026-11-09
34
67
 
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @xgspz/cli-ui
2
2
 
3
- 发布目标为 `@xgspz/cli-ui@0.6.14`,待手动发布;下面的新包导入示例在发布并核验后使用。旧命名空间的 0.6.13 已发布,已有业务依赖不会自动切换。批量发布入口为相邻 `clawbizx/scripts/publish-shared-packages.sh`,仅在隔离打包目录转换包名及引用,工作区源码包名和开发命令保持原样。npm 发布、center 文档部署和节点升级分别执行。
3
+ `@xgspz/cli-ui@0.6.15` 已发布(2026-11-11),以下安装和导入示例可直接使用。`0.6.16` 为本地候选(列表请求不重复、改动页签自动刷新、相对路径按对话线索补全、流式输出时输入框和看板不重画、组件里没有定时轮询、中枢与节点共用实现),尚未发布。旧命名空间 `@xgspz/cli-ui` 停在 0.6.13,已有业务依赖不会自动切换。0.6.15 起源码包名即 `@xgspz/cli-ui`,在本目录直接 `npm publish`(发布前自动跑 lint、测试与嵌入构建)。npm 发布、center 文档部署和节点升级分别执行。
4
4
 
5
5
  相互联动的三个组件,支持中枢对话和完整 Operator 节点工作区。缺省参数使用中枢协议;`operator` 参数承接节点的完整任务与 Git 工作流。输入框默认显示附件、执行类型和智能体;后端缺少配置能力时明确说明并禁用设置,仍可按原有默认配置聊天。
6
6
 
@@ -289,12 +289,19 @@ cli-chat 的顶部栏(面包屑、标题、智能体、用量、模型、状
289
289
  - 发送失败时内容留在输入框;撤回、停止、回答、结束失败时在顶部提示;排队卡住时气泡下写明原因。
290
290
  - 实时流 45 秒没数据就重连,网络恢复、切回页面或窗口获得焦点时立即重连;404 停止重连并给出提示。
291
291
  - 断线先悄悄重连(0.6.14):网关回收长连接、网络抖动、休眠唤醒、中枢重启造成的断线,15 秒内重新连上就不提示,`stream` 保持原来的 `live` / `connecting`,漏掉的事件由重连后的快照补齐;一直没恢复才变为 `"reconnecting"`,聊天顶部显示「实时连接中断,正在重连…」。新连接送来快照或数据才算恢复,连上就断的不会把重试次数清零。中枢停机(`end: server_shutdown`)按断线处理,不显示为对话结束。
292
+ - 列表请求有并发上限(0.6.16 候选):首次加载、刷新和补拉新加进来的对话共用 2 个并发,每个对话任务只拉一次详情,不挤占打开文件、发消息的连接。
293
+ - 对话记录的内存有上限(0.6.16 候选):没人看的对话最多留 100 个的记录,每个截到最新 300 条,更早的释放,再打开时从实时流重新读取。
294
+ - 改动页签自动刷新(0.6.16 候选):每轮结束、节点每个回合结束、运行中有工具执行完(节流,最多每 5 秒一次)时重读,只看事件,不定时轮询。
295
+ - 组件里没有定时轮询接口(0.6.16 候选):节点模式的登录、授权、上下文刷新等待改为回到页面时查一次,并给「检查状态」按钮。
296
+ - 会话记录加载有上限(0.6.15):记录 20 秒还没到就显示原因和「重新读取」,不一直转圈;`store.reconnect(key, { force: true })` 可强制重连并让中枢重新补发。
292
297
  - 没有无限轮询或无限重试(0.6.14):实时流断线约 2 分钟内重试 7 次(401 / 403 隔 30 秒最多 3 次),用完进入 `stream: "offline"`,顶部提示并给「重新连接」;网络恢复、回到页面、获得焦点、在该对话发消息或 `store.reconnect()` 时再连。浏览器画面连续失败 8 次、改动页签暂时性错误 3 次后同样停下。列表不再定时轮询(`pollMs` 仅兼容):打开着的对话由实时流更新,其余在回到前台、获得焦点、网络恢复时刷新,也可 `store.refreshAll()`。子代理侧栏只在父对话里有新动静或回到前台时补读。
293
298
 
294
299
  ## 本地文件链接
295
300
 
296
301
  Agent 回复里指向本地文件的链接(`report.md`、`src/a.ts:12`、`file:///…`),识别规则与 Operator 相同。缺省在当前工作区打开(右侧看板、顶部文件页签或手机抽屉),按住 ⌘/Ctrl 点按地址在新窗口打开;`fileUrl={(path, jobId) => 地址}` 可以自己给地址。
297
302
 
303
+ 相对路径打不开(0.6.16 候选):智能体有时相对它进入的子目录写路径(写 `manual/rules.md`,实际在 `data/run-1/prepare/manual/rules.md`)。看板和弹窗读到「文件不存在」时,按这个对话里的线索补全:消息里提到过的目录、工具读写过的完整路径、看板打开过的文件,逐个向服务端确认存在。只找到一个就直接打开,并写明「对话里写的是 …,打开了 …」,之后再点同一个链接直接打开它;找到几个就列出来让用户选;都没有照常显示读取失败。读失败不是因为文件不存在(断网、没权限)时不补。配套节点(`operator-oss`)同时在每个会话的上下文里要求智能体写相对任务工作目录的完整路径或绝对路径。
304
+
298
305
  ## 开发
299
306
 
300
307
  所有源码统一在 **`/Users/spzhong/cli-task-center`**,后续只在这里维护:
@@ -354,7 +361,7 @@ export default function App() { return <OperatorWorkspace />; }
354
361
 
355
362
  `src/operator.base.css` 是共享样式源,`src/operator.css` 是 `css:sync` 的生成结果;根工程 `app/globals.css` 只导入包的样式。迁移与备份清单见仓库的 `docs/CLI_UI_MERGE.md`。
356
363
 
357
- `0.6.13` 已由用户发布;2026-11-09 已核实 npm `latest` 为 `0.6.13`,已发布版本不可覆盖重发。当前本地候选版本为 `0.6.14`,尚未发布;发布后可用 `npm view @xgspz/cli-ui@0.6.14 version` 核对 registry 可用性。发布前须通过组件测试、嵌入构建、宿主构建和相关浏览器回归;不要运行会连带发布其他共享包的批量脚本。配套 Skill/MCP 使用独立版本。
364
+ `0.6.13` 已由用户发布;2026-11-09 已核实 npm `latest` 为 `0.6.13`,已发布版本不可覆盖重发。`@xgspz/cli-ui@0.6.14` 已发布且完整性一致(2026-11-11);`0.6.15` 已发布(2026-11-11),可用 `npm view @xgspz/cli-ui@0.6.15 version` 核对 registry 可用性。发布前须通过组件测试、嵌入构建、宿主构建和相关浏览器回归;不要运行会连带发布其他共享包的批量脚本。配套 Skill/MCP 使用独立版本。
358
365
 
359
366
 
360
367
  ### 文件、对话与浏览器看板联动
@@ -445,7 +452,7 @@ Web Component 发出 `cli-files-change`、`cli-files-watch`、`cli-board-context
445
452
 
446
453
  `workspace.readFile()` 对自定义后端也校验实际字节数并及时响应取消,后端仍应正确实现 AbortSignal 以释放内部资源。浏览器重连、接管交还和切换任务不等待或重放旧会话输入。当前看板为只读预览,文件编辑由 AI/服务端执行,再通过事件刷新和交付给业务方。
447
454
 
448
- 当前本地候选版本为 `0.6.14`(改动页签轮末刷新与读取失败提示,尚未发布),已发布组件为 `0.6.13`(2026-11-09 已核验 npm),承接已发布的 `0.6.12`;各版本修复见随包 `CHANGELOG.md`,子代理功能见 [0.6.12 发布说明](../../docs/CLI_UI_0612_RELEASE_2026-11-06.md)。0.6.10 历史验收见 [版本验收](../../docs/CLI_UI_0610_VERSION_VALIDATION_2026-11-06.md),三项 Chat 修复见 [修复验收](../../docs/CLI_UI_069_CHAT_FIX_VALIDATION_2026-11-06.md),默认控件与执行配置历史验收见 [0.6.8 验收记录](../../docs/CLI_UI_068_DEFAULT_CONTROLS_VALIDATION_2026-11-06.md);原件上传历史验收见 `docs/CLI_UI_UNIFIED_UPLOAD_VALIDATION_2026-11-05.md`。本地打包不等于 npm 或生产服务已更新。
455
+ 当前已发布组件为 `@xgspz/cli-ui@0.6.15`(2026-11-11,会话记录加载上限与窄输入框智能体位置),承接 `0.6.14` 及旧命名空间已发布的 `0.6.13` 和 `0.6.12`;各版本修复见随包 `CHANGELOG.md`,子代理功能见 [0.6.12 发布说明](../../docs/CLI_UI_0612_RELEASE_2026-11-06.md)。0.6.10 历史验收见 [版本验收](../../docs/CLI_UI_0610_VERSION_VALIDATION_2026-11-06.md),三项 Chat 修复见 [修复验收](../../docs/CLI_UI_069_CHAT_FIX_VALIDATION_2026-11-06.md),默认控件与执行配置历史验收见 [0.6.8 验收记录](../../docs/CLI_UI_068_DEFAULT_CONTROLS_VALIDATION_2026-11-06.md);原件上传历史验收见 `docs/CLI_UI_UNIFIED_UPLOAD_VALIDATION_2026-11-05.md`。本地打包不等于 npm 或生产服务已更新。
449
456
 
450
457
  ### v0.6.5 文件和业务交付加固
451
458
 
@@ -498,7 +505,25 @@ HTML完整原貌预览要重组完整文档;网络只取缺块,更新后在
498
505
 
499
506
  需要配套 Center 子代理代理接口及 Operator 子代理记录接口。Claude、Codex、Grok 的可展示范围取决于实际协议,Pi 需要子代理扩展;未提供的过程不会伪造成完整记录。本轮未提供直接向子代理发送消息或重启的操作。
500
507
 
501
- ### 0.6.14(本地候选):改动页签、排队操作、无轮询与输入区布局
508
+ ### 0.6.16(本地候选):列表请求、改动刷新、无轮询与共用实现
509
+
510
+ `CliMsgList` 首次加载、刷新和补拉新加进来的对话共用一个并发上限(2 个),每个对话任务只拉一次详情;列表和对话同时打开选中的对话时,选中的那个也只拉一次。
511
+
512
+ 看板「改动」页签:节点模式此前只在运行状态变成空闲时重读,排队的消息接着跑时一直不刷新;现在两种模式都在每轮(节点每个回合)结束时重读,运行中有工具执行完也重读(节流,最多每 5 秒一次,最后一次变化后一定再读一次),后台时的变化回到前台补读。看板概况不再随每一轮的状态变化重查。
513
+
514
+ 组件里没有定时轮询接口:节点模式的智能体登录、GitHub 登录、模型服务授权、项目上下文「用 AI 刷新」、引导页连接检查改为回到页面时查一次,等待处给「检查状态」类按钮。
515
+
516
+ 智能体流式输出时只画新来的消息,输入框、执行设置和看板(内嵌、外置)不再随每一块输出重画。没人看的对话最多在内存里留 100 个的记录(每个截到最新 300 条),更早的释放,再打开时重新读取;`store.getState().convs` 只保证有正在看的对话。
517
+
518
+ 看板和弹窗里打不开的相对路径按这个对话里的线索补全(唯一匹配直接打开,几个让用户选),见上文「本地文件链接」。
519
+
520
+ 中枢与节点适配共用分段渲染(`ui/useTranscriptWindow`)、转录模型、工具 / 提问 / 输入卡片、Markdown 与文件链接识别、看板联动(`board/linkage`)等实现,节点只保留自己的文件地址与任务状态等差异。两个输入框功能不同,未合并。尚未发布到 npm,安装仍用 `0.6.15`;中枢、节点都不需要改动。
521
+
522
+ ### 0.6.15(已发布):会话记录加载与智能体间距
523
+
524
+ 「正在加载会话」最多等 20 秒:一次性任务的子任务记录迟迟没到时改成说明并给「重新读取」(`store.reconnect(key, { force: true })`,断开重连让中枢重新补发),实时连接一直没收到数据时提示可能是网关缓冲;配套中枢读不到记录时会发 `transcript_unavailable`,组件立即说明。输入框窄于 360px 时(包括 PC 端窄聊天栏)智能体选择紧挨发送按钮,不再被挤到中间。中枢的补发重试需另行部署。
525
+
526
+ ### 0.6.14(已发布):改动页签、排队操作、无轮询与输入区布局
502
527
 
503
528
  看板「改动」页签每轮结束自动重读,读取失败保留上次结果并说明原因;排队消息右侧为「立即发送」「编辑」「删除」;组件内没有无限轮询或无限重试(见上文「可靠性」)。输入框文字区仍默认两行、最多八行,收紧上下留白与工具栏高度后 PC 端整个输入框约 102px(原 118px),加号与发送按钮保留 44px 点击区。PC 端(视口 ≥ 761px)聊天正文与输入区两侧留白再翻一倍:64px,窄聊天栏(聊天列 ≤ 640px)48px;手机端保持 16 / 12px。
504
529