| feat: 额度 chip 默认展示——quota_enabled 缺省开(显式 false 保留),not_configured/unsupported 二级门控从静默隐藏改中性提示(浮层 v111) - inject-main 真值方向与 answer_rate_line 对齐;渲染端初始真值同步(推送仍透传布尔) - chip 新增 zu-qseg.dim 中性段「额度 未配置/额度 暂不支持」+ tooltip info 分支引导 ⚙ 配置;源被显式关闭(disabled)仍隐藏 - 安全披露口径同步:README×3、SECURITY.md 三条联网链路、插件 README 双语、用户指南、quota.md 规则、config.example.json - 测试:门控用例改中性断言 + 新增缺省开初始化路径与主进程真值方向锁定(Node 641 / Python 554 全过) | 8 天前 |
| feat(overlay): subagent rate tooltip adds input row and start-end time span - zusage sub.list rows now carry started (min started_at of completed requests, same span convention as the four-grid tooltips) - subRowTipHTML (both in-factory copies): render an input-token row above output (skipped when the field is absent on old snapshots) and replace last-active with a start-end range row at second precision (fmtStartS, em-dash when a side is missing) - overlay-ui rules: record the second-precision exception for this row - tests: sub.list started/last assertions, tooltip input/range rows, old-snapshot em-dash and missing-input cases; VERSION v207 - verified: full node suite 1162 pass, python 672 OK (1 platform skip), sync_plugin --check clean; live hover acceptance in the running host | 2 小时前 |
| feat(notes): market channels show the same-version release as labeled reference 用户拍板「拿同号 Release 展示,忽略渠道」:market(源码)渠道不再空转, 取注册仓库的同号 Release 正文展示——响应带 verified:false,meta 追加 「参考:同号 Release,未核实与本渠道一致」、链接用参考措辞,不冒充本 渠道已核实内容(符合发布侧 update-log-delivery 契约的「标注参考说明」 选项)。本地目录无仓库身份仍离线空状态;Release 渠道行为不变(verified)。 - inject-main:handler 渠道门控放行 market(拒绝仅剩 local/无仓库身份), ok 响应附带 verified 标记。 - overlay:notesChannelOf 放行 market(verified:false);market 空状态与 参考链接死代码移除;未核实标注与参考措辞链接。 - 测试:handler 门控/verified 传递、market 拉取流(github/gitcode)、 notesChannelOf 语义更新;全量 1155 Node + 672 Python 通过。 - 文档:user-guide/overlay-ui 规则/关于数据联网边界同步。 | 7 小时前 |
| feat(overlay): subagent rate tooltip adds input row and start-end time span - zusage sub.list rows now carry started (min started_at of completed requests, same span convention as the four-grid tooltips) - subRowTipHTML (both in-factory copies): render an input-token row above output (skipped when the field is absent on old snapshots) and replace last-active with a start-end range row at second precision (fmtStartS, em-dash when a side is missing) - overlay-ui rules: record the second-precision exception for this row - tests: sub.list started/last assertions, tooltip input/range rows, old-snapshot em-dash and missing-input cases; VERSION v207 - verified: full node suite 1162 pass, python 672 OK (1 platform skip), sync_plugin --check clean; live hover acceptance in the running host | 2 小时前 |
| feat(overlay): subagent rate tooltip adds input row and start-end time span - zusage sub.list rows now carry started (min started_at of completed requests, same span convention as the four-grid tooltips) - subRowTipHTML (both in-factory copies): render an input-token row above output (skipped when the field is absent on old snapshots) and replace last-active with a start-end range row at second precision (fmtStartS, em-dash when a side is missing) - overlay-ui rules: record the second-precision exception for this row - tests: sub.list started/last assertions, tooltip input/range rows, old-snapshot em-dash and missing-input cases; VERSION v207 - verified: full node suite 1162 pass, python 672 OK (1 platform skip), sync_plugin --check clean; live hover acceptance in the running host | 2 小时前 |
| fix(review): 10-agent 全量 review 修复批 (v177) 对最近 2 天(153634a..d80ce0a,PR #136-#155)合并代码的全面审查与修复: - P1 overlay: v169 双条去重抑制被 track 每帧复显打穿——复显前查 dupSuppress, heavy 每拍重评估解除(Windows 最小化/还原双条场景实际失效的根因) - P2 overlay: 精简下速率 chip 被摘除后子代理明细面板保持原位,不再回落隐藏条内 全零 .zu-sub 抢锚钉视口左上角(web v103 同款) - P2 overlay: relaunch 无回执 4s 提示主进程可能是旧版需手动完全退出(旧 pollPluginRequests 白名单外动作 splice 后静默丢弃,v172 过渡窗口静默无效) - P2 overlay: detRootEl 落在宿主 data-session-id 写入窗口期时 heavy 按拍补算自愈 (pane 与 auto 分支同款;含祖先链重建失效) - P2 zusage: _project_usage 按库文件身份挂 2s TTL 缓存(大库单项目聚合 ~40ms, 池内多行一帧可达数百 ms)+ IN 分片 500/批(老 SQLite <3.32 变量上限 999) - P2 install_monitor: 提权页脚不再出现在 finished/finalize_denied/done 终屏 (issue #130 文案自相矛盾) - P2 docs: user-guide 自动安装恒开语义与 v172 对齐(核对标注随发版递增); marketplace.json 与两份 plugin.json 英文描述同步恒开口径(不再有 opt-out 表述) - P3: cnNum/zu-lang 切换补富文本 unitEpoch 在途竞态守卫(同 forceKmb);待办红点 指纹改分量级比较(分量退出不复亮)且 ack 幂等早退前先收敛本窗口;精简短路块恢复 syncTpsChip 数据点 reapply;同 SID 双实例富文本单槽权衡注记;session-start/ inject-main/zusage 过时注释与 docstring;web 启动自清选择器补 .zu-tsb/.zu-ctxb; 设置面板精简说明文案对齐 v147 挂载位 - 测试: 新增 去重打穿/subPanel 锚/relaunch busy/语言 epoch/指纹分量/ack 自愈/ detRoot 补算/monitor 终屏页脚/scopes 注入/IN 分片/TTL 缓存 用例;runtime 两处 精确锁形;contract 旧 opt-out 断言随 v172 语义更新;pill-theme 浏览器测试环境 敏感采样点修复(基线确定性红 2 项 + flaky 2 项全部消除,本机 49/49) 验证:Node 998/998、Python 648(skip 1 平台)全绿;sync_plugin --check 一致。 | 1 天前 |
| fix: 复审修复——旧 sidecar 指纹兼容、发布产物逐字节一致、句柄等待/盘符扫描/验收器回退加固 承接 ec170ac 的两轮 review 与修复后的独立复审: - patch_install(P2):Windows 剔除 ctime_ns 后,旧版写下的 5 字段 sidecar 在 _owned_tmp_metadata 与 pending_tmp 的 hash 复核两处整字典比较恒不等——收尾被取消、 重装被拒,中断发布留下的 journal(previous_tmp)也认不回。新增 _same_fingerprint 按当前平台字段集比较(缺字段/非对象视为不匹配),sha256 与其余字段仍逐一比对 - release_tool:保留 hash-object OID 比较(区分“内容未提交”),再用 git cat-file blob 与 HEAD 逐字节比较——发布包取工作区字节,Windows 的 CRLF 检出会让同一 tag 打出 不同产物;.gitattributes 固定 eol=lf,旧检出按 docs/maintaining.md 重新检出 - install_monitor.wait_any_exit:用 GetLastError 区分 PID 已退出(87,立即返回去 收尾)与无权等待(睡满轮询间隔,不再每秒一次 tasklist + 重绘) - install / overlay_install:盘符扫描只枚举 GetDriveTypeW == DRIVE_FIXED 的本地固定盘, 离线映射网络盘、无介质光驱/读卡器不再被探测;install.py 盘符候选改为调用时生成 - overlay_install._sync_verifier:启动候选挂起超时同样回退 PATH node,且失败候选本次 同步内不再重试(每次复核都重等 10 秒会叠加超过更新器 30 秒/钩子 60 秒时限);新增 _run_verifier:超时先结束整棵进程树(Windows taskkill /T),不再因孙进程继承输出 管道而无限等待;输出按 UTF-8 解码(原 text=True 走系统区域编码,中文 Windows 上 非 ASCII 插件路径会被解错而验收失败) - tests/runtime-lock.test.cjs:按平台分支,并严格断言孤儿进程存活状态 - docs:user-guide 注明只扫本地固定盘;maintaining 补 CRLF 旧检出的重新检出步骤 测试:新增 15 个回归用例(旧 sidecar 收尾/重装/journal、CRLF 检出拦截、句柄等待 三分支、固定盘过滤、挂起回退只试一次、进程树超时、UTF-8 解码等),原两条仅 Windows 运行的盘符用例改为全平台运行;release_tool 测试夹具归一 LF,不随开发者检出的行尾变化。 本机(macOS)双套件:Python 348 OK(1 平台跳过)、node 185/185。 | 17 天前 |
| feat(skills): add review fix merge workflow | 4 天前 |
| feat: add update release-notes card to the plugin updates panel ⚙ 插件更新分区在原更新卡片下新增「更新日志」卡片(overlay v202): - 日志选择严格跟随可靠状态:待重启=marker 实装版本(退 pendingRelease), 安装中=安装目标,失败=lastFailure 标注未安装成功,available/current 各归其位; 身份无法确定明示不冒充。用户选择历史版本后粘性不随轮询切回。 - 新增 pluginRequest 动作 release-notes / release-notes-list:flavor/repository 一律由主进程 readChannel 决定(market/local 回 unsupported-channel 不联网), 渲染进程只传 version/force;URL 由 plugin-release 按已验证来源构造。 - plugin-release 新增 fetchReleaseNotes/List 与 createNotesCache/Service: NOTES_API_HOSTS 与资产下载白名单分离(fetchBytes 增 allowedHosts 参数), 磁盘缓存 plugin-notes-cache.json(TTL 1h、24 条、键 n:/list 命名空间、 损坏按空重建),并发去重,失败退过期缓存标 stale。 - 受限 Markdown 渲染:转义优先,禁 HTML/图片,链接仅 https 走 openExternal, 长反引号归一防 ReDoS,64KB 钳制;「升级注意」节折叠时仍完整可见。 - plugin-updater 暴露 markerVersion/channelRepo;安装失败持久化 lastFailure (成功/版本追上清除,卸载类取消不误记)。 - 测试:release-notes/plugin-updater-notes/inject-release-notes/overlay-notes 四套 41 例;文档与规则同步(user-guide/README×3/AGENTS/maintaining/规则)。 | 14 小时前 |
| ZCode Token 用量状态栏:首次公开发布 ZCode 桌面客户端的 token 用量悬浮状态条:实时显示生成速度/上下文水位/ 本轮与会话消耗/工具调用/子代理消耗,自绘悬停明细与 tab,⚙ 面板可配置; 数据读本地 SQLite 全程离线;附带一键安装(install.py)、MCP 对话内查询、 CLI 与 /usage 命令。仅 Windows,MIT 许可。 | 1 个月前 |
| feat: add update release-notes card to the plugin updates panel ⚙ 插件更新分区在原更新卡片下新增「更新日志」卡片(overlay v202): - 日志选择严格跟随可靠状态:待重启=marker 实装版本(退 pendingRelease), 安装中=安装目标,失败=lastFailure 标注未安装成功,available/current 各归其位; 身份无法确定明示不冒充。用户选择历史版本后粘性不随轮询切回。 - 新增 pluginRequest 动作 release-notes / release-notes-list:flavor/repository 一律由主进程 readChannel 决定(market/local 回 unsupported-channel 不联网), 渲染进程只传 version/force;URL 由 plugin-release 按已验证来源构造。 - plugin-release 新增 fetchReleaseNotes/List 与 createNotesCache/Service: NOTES_API_HOSTS 与资产下载白名单分离(fetchBytes 增 allowedHosts 参数), 磁盘缓存 plugin-notes-cache.json(TTL 1h、24 条、键 n:/list 命名空间、 损坏按空重建),并发去重,失败退过期缓存标 stale。 - 受限 Markdown 渲染:转义优先,禁 HTML/图片,链接仅 https 走 openExternal, 长反引号归一防 ReDoS,64KB 钳制;「升级注意」节折叠时仍完整可见。 - plugin-updater 暴露 markerVersion/channelRepo;安装失败持久化 lastFailure (成功/版本追上清除,卸载类取消不误记)。 - 测试:release-notes/plugin-updater-notes/inject-release-notes/overlay-notes 四套 41 例;文档与规则同步(user-guide/README×3/AGENTS/maintaining/规则)。 | 14 小时前 |
| feat: add update release-notes card to the plugin updates panel ⚙ 插件更新分区在原更新卡片下新增「更新日志」卡片(overlay v202): - 日志选择严格跟随可靠状态:待重启=marker 实装版本(退 pendingRelease), 安装中=安装目标,失败=lastFailure 标注未安装成功,available/current 各归其位; 身份无法确定明示不冒充。用户选择历史版本后粘性不随轮询切回。 - 新增 pluginRequest 动作 release-notes / release-notes-list:flavor/repository 一律由主进程 readChannel 决定(market/local 回 unsupported-channel 不联网), 渲染进程只传 version/force;URL 由 plugin-release 按已验证来源构造。 - plugin-release 新增 fetchReleaseNotes/List 与 createNotesCache/Service: NOTES_API_HOSTS 与资产下载白名单分离(fetchBytes 增 allowedHosts 参数), 磁盘缓存 plugin-notes-cache.json(TTL 1h、24 条、键 n:/list 命名空间、 损坏按空重建),并发去重,失败退过期缓存标 stale。 - 受限 Markdown 渲染:转义优先,禁 HTML/图片,链接仅 https 走 openExternal, 长反引号归一防 ReDoS,64KB 钳制;「升级注意」节折叠时仍完整可见。 - plugin-updater 暴露 markerVersion/channelRepo;安装失败持久化 lastFailure (成功/版本追上清除,卸载类取消不误记)。 - 测试:release-notes/plugin-updater-notes/inject-release-notes/overlay-notes 四套 41 例;文档与规则同步(user-guide/README×3/AGENTS/maintaining/规则)。 | 14 小时前 |
| feat: add update release-notes card to the plugin updates panel ⚙ 插件更新分区在原更新卡片下新增「更新日志」卡片(overlay v202): - 日志选择严格跟随可靠状态:待重启=marker 实装版本(退 pendingRelease), 安装中=安装目标,失败=lastFailure 标注未安装成功,available/current 各归其位; 身份无法确定明示不冒充。用户选择历史版本后粘性不随轮询切回。 - 新增 pluginRequest 动作 release-notes / release-notes-list:flavor/repository 一律由主进程 readChannel 决定(market/local 回 unsupported-channel 不联网), 渲染进程只传 version/force;URL 由 plugin-release 按已验证来源构造。 - plugin-release 新增 fetchReleaseNotes/List 与 createNotesCache/Service: NOTES_API_HOSTS 与资产下载白名单分离(fetchBytes 增 allowedHosts 参数), 磁盘缓存 plugin-notes-cache.json(TTL 1h、24 条、键 n:/list 命名空间、 损坏按空重建),并发去重,失败退过期缓存标 stale。 - 受限 Markdown 渲染:转义优先,禁 HTML/图片,链接仅 https 走 openExternal, 长反引号归一防 ReDoS,64KB 钳制;「升级注意」节折叠时仍完整可见。 - plugin-updater 暴露 markerVersion/channelRepo;安装失败持久化 lastFailure (成功/版本追上清除,卸载类取消不误记)。 - 测试:release-notes/plugin-updater-notes/inject-release-notes/overlay-notes 四套 41 例;文档与规则同步(user-guide/README×3/AGENTS/maintaining/规则)。 | 14 小时前 |
| feat(overlay): 自动压缩阈值验收反馈——默认开+只留百分比+标题带上下文+状态行对齐 (v188) 验收反馈四项: 1. auto_compact_patch 缺省开(显式 false 关闭)——inject-main isEnabled 语义翻转。 2. ⚙ 标题改「自动压缩上下文阈值注入 / 压缩上下文阈值数值(%)」。 3. UI 简化:移除模式下拉,只留百分比数值(留空=跟随引擎默认); 引擎层 enabled:false/thresholdTokens/bufferTokens 协议保留,配置文件手写仍生效。 4. 状态行补 14px 水平内边距,与 settingRow label 文本对齐。 文档三语+user-guide+config.example 改默认开口径;插件版本 1.5.8→1.5.9; overlay-subagent-row 的 VERSION 断言随 v188 顺延。 验证:Node 1089/1089 全绿;Python 660 OK(此前的 2 个 bridge 环境红测已被 并行线修复);sendAutoCompactConfig 新增行为用例(留空=default/有值=percent/ 失败回写真值);sync_plugin --check 无漂移。 | 21 小时前 |
| feat(ac): 阈值百分比改总窗口口径,数值行 30-99 校验 (v194) 设置 91 即原生按钮走到 91% 触发、hover 显示 91%——设置值、hover 百分 比与原生上下文按钮三者同口径(旧口径按扣除 21K 输出预留后的有效窗口 计算,设置值与显示差约 2 个点)。引擎 hook 以 eff+21K 近似还原标称窗口 并钳在有效窗口内(防高百分比吃穿输出预留);writeConfig 白名单收紧 30-99;⚙ 数值行实时校验(状态行提示)+ 提交侧拒绝越界值。已打补丁 引擎下次启动按 PROLOGUE_V1 原位换装新 hook(替换体不变,逐字节匹配 旧串,匹配不到不接手);restore 兼容旧本体装机。 | 20 小时前 |
| fix(main): run acknowledgeRestart before updater init 重启后的第一分钟内,更新器首帧状态会误报刚被 ack 清除的「待重启」: createUpdater 在创建瞬间快照 marker 状态(实测 2026-11-01,用户重启后 立即打开面板仍见「已安装,待重启」,60s 后 tick 才纠正)。将 ack 前置到 更新器初始化之前,首帧即为 ack 后的准确状态。 - 测试:启动顺序契约(ack 先于 createUpdater);inject-relaunch / inject-autocompact 两处 pushPluginState 切片锚点随结构更新(止于 ack 注释,不把 ack 调用圈进沙箱);overlay VERSION v206 随提交顺延。 - 全量 1160 Node + 672 Python 通过。 | 5 小时前 |
| fix(install): 收敛 review 发现的七处 MINOR (issue #163 第二轮) - usage_mcp.revive_finalize_monitor:门控收窄为 pending_operation() in (install, remove)——cancelled journal(卸载撤销/发布中断遗留)不再 每次会话白拉一个秒退监控;launch_monitor 的启动失败提示重定向到 stderr,stdout JSON-RPC 通道零污染(与 overlay_install 同款守卫)。 - patch_install._remove 失败提示同款指向运行目录副本(#163 同型的 既有裸文件名残留)。 - install.py 注入未完成提示补 --asar:standalone 不读 config 记忆, 非默认安装位置照抄旧命令会 FileNotFoundError;copy_runtime docstring 「四件套」改为按清单表述。 - 测试:revive 夹具显式清空 ZUSAGE_MONITOR_QUIET(防环境污染存活)、 新增 cancelled 不拉起与 stdout 零污染两用例、upgrade 分支提示指向 运行目录副本的守护用例(M9)、spawn cmd[1] 兄弟路径断言、remove 提示路径断言。 | 22 小时前 |
| fix(install): 运行目录携带收尾工具链,monitor 死亡后可自动与手动恢复 (issue #163) 独立安装链(install.py)把待替换 asar 包的收尾完全交给安装监控窗口, 但存在三层断点,任一命中状态条就永不出现: - RUNTIME_FILES 缺 patch_install.py/install_monitor.py:失败提示里的 手动收尾命令只依赖运行目录内这套脚本,clone 被删/移动后必然失败 (插件链清单早已同款在列)。补进清单并由 test_standalone_runtime_files_cover_finalize_toolchain 守护。 - 手动收尾提示写裸文件名:patch_install.py/install_monitor.py/install.py 三处全部改指运行目录副本的完整路径,复制粘贴即可执行。 - 监控窗口是唯一收尾者且无重建入口:非提权 pending 场景页脚不再说 「可随时关闭」(独立链无 SessionStart hook,关窗后无人收尾); usage_mcp.py 进程启动时新增 revive_finalize_monitor()——MCP 由宿主 随会话启动拉起,是独立链唯一的会话级入口,检测到有效待收尾包且 无存活监控时静默重新拉起(config 所在目录即运行目录,与 sidecar 记录对齐),任何失败不影响查询服务。 | 22 小时前 |
| docs: 消除自动安装旧语义表述,防 AI 误读为默认关闭 v172 起自动安装恒开(v1.5.7 已发布),但多处文档残留「默认自动安装」 「可能触发」「or is disabled」等暗示存在开关的旧词形。已实测有 AI 助手 据此误判「已发布渠道默认关闭自动安装,需要 /install-overlay 作为后备」。 - README/README.zh-CN/README.en 三步段:改为恒开表述并精确化 「装插件时已开着的会话不会补触发」;删英文版「or is disabled」 - docs/user-guide.md:安装方式/排查表去「默认」;修 /install-overlay 缺失斜杠;排查项「检查配置」随之失效一并去除 - marketplace.json 市场级 description、hooks.json description、 /install-overlay 命令正文、restart_notice INSTALL_MESSAGE(AI 直读 的命令输出文案)同步恒开口径 - AGENTS.md §7 与 .zcode/rules/docs.md 已知滞后清单同步(自动安装 范围差异已消除) 验证:test_plugin_contract/plugin_package/command_frontmatter/ restart_notice/session_start_channels 全绿;JSON 解析通过; README 双语三步段逐字一致。 | 20 小时前 |
| feat(model-puller): plan source for zhipu coding plans Extend the model puller to built-in OAuth coding plans (v134): - model-puller.cjs: PLAN_SOURCES registry (BigModel Coding Plan, ZAI pending endpoint confirmation), plan token resolved in memory from the host credentials.json via injected decrypt (same discipline as the quota chain: never logged, never persisted); fetch goes to the plan's own anthropic models endpoint (cc-switch#3471: the plain OpenAI endpoint 429s for plan traffic); written ids are normalized to the host official GLM casing before appending to the plan's personalModelIds/modelOrder (host-native keys, verified on disk) - inject-main.cjs: credentials path + decrypt injection - overlay.js: BigModel detail page also hosts the pull button. Both the BigModel and Start Plan nav entries share nodeKey preset:account:bigmodel-start-plan (diagnosed live), so the gate disambiguates by detail content: the paid card (GLM Coding Max) maps to the individual plan id; a pure Start Plan page (server-assigned models, no models endpoint - 404 probed) stays button-free - diagnostics: selected nav nodeKey and anchor presence recorded to __zusageDiag for live verification Tests: +6 plan-source cases (token gating, anthropic endpoint auth, case normalization dedupe), assertions updated to the anchor-aware gate. Full suite: 844 node / 610 python green. | 3 天前 |
| feat(overlay): subagent rate tooltip adds input row and start-end time span - zusage sub.list rows now carry started (min started_at of completed requests, same span convention as the four-grid tooltips) - subRowTipHTML (both in-factory copies): render an input-token row above output (skipped when the field is absent on old snapshots) and replace last-active with a start-end range row at second precision (fmtStartS, em-dash when a side is missing) - overlay-ui rules: record the second-precision exception for this row - tests: sub.list started/last assertions, tooltip input/range rows, old-snapshot em-dash and missing-input cases; VERSION v207 - verified: full node suite 1162 pass, python 672 OK (1 platform skip), sync_plugin --check clean; live hover acceptance in the running host | 2 小时前 |
| fix(install): CLI 退出码成功失败颠倒 + revive 测试中和 NO_MONITOR (issue #163 第三轮) - patch_install.py __main__ 把 bool 直接 sys.exit:True→退出码 1(失败)、 False→0(成功),install/remove 的成功失败恰好颠倒(既有问题,check 的 int/None 形态原本正确)。转换后再退出:True/None→0,False→1,int 原样。 手动收尾命令的脚本化判断全靠退出码,属 issue #163 同域修复。 - 新增 CliExitCodeTests:check 成功 0/失败 1、无 pending 的 finalize 优雅 失败退出码 1。 - test_launch_failure_hint_never_reaches_stdout 中和 ZUSAGE_NO_MONITOR, 防开发者 shell 环境导出致用例空转变绿。 | 21 小时前 |
| fix(notes): mirror 404 is authoritative — missing beats the primary rate limit 实机验收闭环(用户重启后实报):GitHub 限流 → GitCode 镜像查同号版本 → 404(v1.5.9 从未发布),原实现丢弃镜像结论回退显示「限流可重试」,误导 用户反复重试。镜像的 404 是权威结论(同仓库内容):missing 优先于主源 限流,卡片如实显示「此版本暂无更新日志(可能尚未发布 Release)」,历史 版本入口照常(可看 v1.5.7 等真实正文)。 - 测试:镜像 404 优先;全量 1159 Node + 672 Python 通过(v205 随提交顺延)。 | 6 小时前 |
| 逐问速率行(1.3.0):回答末尾追加 tok/s 统计 + ⚙ 开关 + 结构化 tooltip - UserPromptSubmit hook 记录提问时刻(按会话,多窗口交替不互吞)并注入「本问 统计指令」,模型收尾自测 token_rate.py --turn --current;--current 守卫对 纯问答轮输出为空,绝不把上一轮数据当本问显示 - 口径经 6 个社区项目交叉校验 + 真库 raw_usage_json 裁决:分子=output_tokens (ZCode 该列已含思考 token,不重复计数);含思考段生成窗口=completed−started (思考 token 在 first_token_at 之前流出);旧口径在重思考轮虚高 4.62×, zusage.py 状态条「生成速度」同口径对齐 - ⚙ 设置面板新增「逐问速率行」开关(answer_rate_line,默认开启,主进程原子 写运行时 config.json,下一问即生效) - tooltip 全面结构化:回复末尾统计行悬停解释由浮层扫描消息流注入(同款样式); 状态条六条目改为「标题+标签列+解释+弱化脚注」排版,动态值过转义 - tests/test_token_rate.py 17 用例并入正式回归约定 - 同期包含插件更新器/重启提醒/runtime 锁/发布脚本等并行改进(node 151/151 全绿) | 18 天前 |
| feat(notes): show the current installed version's notes before any check 未触发检查更新时,「更新日志」卡片不再停留在提示文案:当前已装版本就是 可靠身份,直接作为默认目标拉取其日志(该版本无 Release 则如实提示, missing 回复恰好证实 Release 渠道,历史版本入口随之可见;渠道未知也发 起请求——主进程按注册渠道门控,market/local 被拒且零网络开销)。 - overlay:notesDefaultTarget 增加 idle 回退;空状态键重构(渠道未知但 有当前版本不再空转);来源标签/完整发布说明链接在渠道未知时从已验证 回复 URL 推导;历史入口按「渠道已知或已证实」放开。 - plugin-updater:refreshLocal 随状态发布注册渠道身份(channel/channelHost/ channelRepo),不必等检查;读取失败保持空串由浮层降级(冷文件,重启生效; 新行为本身不依赖它)。 - 测试:idle 目标回退、未知渠道拉取/应答三分支(ok/unsupported/missing)、 updater 空闲渠道发布;全量 1154 Node + 672 Python 通过。 | 7 小时前 |
| fix(quota): guard non-array templateRules; pin String normalization and access backfill in tests Review round 1 (3 reviewers, all mergeable) MINOR fixes: - 真值非数组的 templateRules 不再连累同文件 providerRules(Array.isArray 守卫, 与基线行为一致) - 补用例:数字 templateId 与字符串键 String 归一互撞、模板 access 回填 个人缺失字段、损坏 templateRules 不影响 providerRules 加载 - 措辞:模板供应商个人配置「不含 baseUrl」替代「只存 key」(个人侧还有 templateId/type 字段) Refs #123 | 3 天前 |
| feat(engine): 自动压缩阈值注入——引擎白名单补丁+⚙ 开关+hover 阈值线 (v179) 引擎 glm/zcode.cjs 的 auto-compact 触发点(≈窗口−21K 预留−13K 缓冲,200K 约 83%) 原本不可配置。新增 engine-patch.cjs:按 ENGINE_TARGETS SHA256 白名单对引擎打 「阈值改道」补丁——prologue 插入 "use strict"; 之后(保引擎严格模式),判定点 改道 globalThis hook(hook 缺席/返回空双兜回 fail-open);锚点唯一性+指令位校验 fail-closed,restore 按当前内容反向还原。阈值存运行目录 autocompact.json,引擎 hook 每轮决策 mtime 缓存读取——数值热生效;补丁冷生效(已运行 agent 子进程下个 spawn 起用)。任何形式阈值钳 1% effective 地板,防连环压缩触发 rapid-refill 熔断。 ⚙ 面板新增开关+模式(默认/百分比/token/缓冲/禁用)+数值+状态行(低阈值警告), enginePatch 状态随插件状态通道推送(v172 拷贝行+种子纪律);ctx 按钮 hover 面板 新增「自动压缩 ~X%」行。配置写入走新白名单动作 autocompact-patch/autocompact-config。 登记:sync_plugin FILES、release_tool SYNC_FILES、release_unpack PLUGIN_FILES、 两份 RUNTIME_FILES+cold_files、restart_notice hashes 白名单、两份 manifest packageLayout,插件版本 1.5.7→1.5.8,overlay v179。 验证:Node 1030/1030 全绿;Python 648 项仅剩 2 个基线同有的真机漂移红测 (test_renderer_bridge 读 /Applications 真机 asar,客户端 10-31 12:30 自动更新 致 asset 哈希漂移,与本变更无关,基线 b0c83c9 同样失败)。 | 1 天前 |
| feat(engine): 自动压缩阈值注入——引擎白名单补丁+⚙ 开关+hover 阈值线 (v179) 引擎 glm/zcode.cjs 的 auto-compact 触发点(≈窗口−21K 预留−13K 缓冲,200K 约 83%) 原本不可配置。新增 engine-patch.cjs:按 ENGINE_TARGETS SHA256 白名单对引擎打 「阈值改道」补丁——prologue 插入 "use strict"; 之后(保引擎严格模式),判定点 改道 globalThis hook(hook 缺席/返回空双兜回 fail-open);锚点唯一性+指令位校验 fail-closed,restore 按当前内容反向还原。阈值存运行目录 autocompact.json,引擎 hook 每轮决策 mtime 缓存读取——数值热生效;补丁冷生效(已运行 agent 子进程下个 spawn 起用)。任何形式阈值钳 1% effective 地板,防连环压缩触发 rapid-refill 熔断。 ⚙ 面板新增开关+模式(默认/百分比/token/缓冲/禁用)+数值+状态行(低阈值警告), enginePatch 状态随插件状态通道推送(v172 拷贝行+种子纪律);ctx 按钮 hover 面板 新增「自动压缩 ~X%」行。配置写入走新白名单动作 autocompact-patch/autocompact-config。 登记:sync_plugin FILES、release_tool SYNC_FILES、release_unpack PLUGIN_FILES、 两份 RUNTIME_FILES+cold_files、restart_notice hashes 白名单、两份 manifest packageLayout,插件版本 1.5.7→1.5.8,overlay v179。 验证:Node 1030/1030 全绿;Python 648 项仅剩 2 个基线同有的真机漂移红测 (test_renderer_bridge 读 /Applications 真机 asar,客户端 10-31 12:30 自动更新 致 asset 哈希漂移,与本变更无关,基线 b0c83c9 同样失败)。 | 1 天前 |
| feat(overlay): 子代理行内实时速率 chip——运行期估算+真实值回填+⚙ 开关 (v182) - 行内速率 chip:v4 Agent 行 testid 后缀即 childSessionId、与 v97 槽位键同源; 运行期读槽位估算「估 X t/s」(思考期隐藏),完成后与历史行回填读泵快照 sub.list 的 tps_avg 真实加权速率;TPS 十档色;悬停 tooltip(数据包契约) - 后台运行子代理在宿主注册表无现成 store(运行期估算自 v97 起从未真正工作): renderer_bridge v2 新增受限 acquire 访问器(仅 sess_subagent_ 前缀+本地键, 走下钻同款 SessionDataLayer.acquire 租约,off 即 release),槽位绑定 existing→acquire 降级;v1→v2 升级按标记对剥离+已知代校验自动完成 - ⚙「子代理行内速率」开关(state.show.subRate,默认开,只门控行内展示) - review 修复批:超上限截断改从尾部取(保最新派发 8 个);SUBRATE_DIAG 提 模块级;诊断按 handle 判绑定;实例 dispose 摘行内 chip 并收在显浮层; disposeOverlay 摘委托监听与浮层本体 - 测试:overlay-subagent-row 33 项新增;subrate 25 项(acquire 端到端+远端 负例+诊断断言);bridge VM 契约含 v2 acquire 与 v1→v2 升级 Node 1065/0、Python 648 OK(隔离工作树全量);版本号按台账顺延 (v179/v181 已被并行线占用,条目重编为 v180/v181/v182) | 1 天前 |
| fix: 积压清单清扫——MCP 规范符合性/健壮性与可移植性 20 项(浮层 v114) 第 4 轮(2026-10-24 审计记录不修项中证据充分、可安全推进的部分): - MCP/JSON-RPC 规范(usage_mcp):ping 回空 result;坏 JSON 回 -32700(id null); batch/非对象帧回 -32600;通知(无 id)不回响应;initialize 只声明支持的协议版本; tools/call 校验 name(未知/缺失工具名报 -32602,不再任意执行 token_usage) - 查询链(zusage):session:<前缀> LIKE 通配符转义(真实会话 id 含 _,曾可任意匹配 且无 ORDER BY 时选错会话)+ 空前缀拒绝;远端错误表 None 键不再序列化成 "null" - 浮层(overlay v114):remoteCache/remoteTodayCache/richTextCache/richTextAttempts 上限淘汰;dispose 清理补三个全局;诊断 lsVals 收敛到 zusage 命名空间(宿主键值不进 diag) - 主桥(inject-main):常驻/一次性查询的 stdout 累积缓冲 8MB 止血 - 额度(quota-client):team 判定改词边界(三处);凭据指纹定界拼接防 "|" 撞指纹; clampPct NaN 防御;collectWindows 死分支清理;坏 baseUrl 归 unsupported(quota.md 契约); volcano region 白名单校验 - 安装链:syntax_check mkstemp 入 try + check() 坏目标可读提示(原裸 traceback, test_pending_asar 特征测试同步改写);_load_tmp_metadata 有界读;gitcode 下载有界读; PLUGIN_FILES 去重 - 可移植性:renderer_bridge WORKTREE 与 renderer_live_check 的 smzdm 硬编码路径 改脚本自定位(不再随分发发布他人机器路径) - Web:会话校验 fetch 10s 超时;snapshot 500 回通用文案(stderr 片段不外发); live 速度 span 转义对齐根实现;删除死变量 queue 并修正误导注释 Node 672 / Python 580 全绿;台账 .audit/2026-10-24/。 | 8 天前 |
| fix: 修复插件首次安装引导与重启确认并发布 1.4.1 | 17 天前 |
| feat(engine): 自动压缩阈值注入——引擎白名单补丁+⚙ 开关+hover 阈值线 (v179) 引擎 glm/zcode.cjs 的 auto-compact 触发点(≈窗口−21K 预留−13K 缓冲,200K 约 83%) 原本不可配置。新增 engine-patch.cjs:按 ENGINE_TARGETS SHA256 白名单对引擎打 「阈值改道」补丁——prologue 插入 "use strict"; 之后(保引擎严格模式),判定点 改道 globalThis hook(hook 缺席/返回空双兜回 fail-open);锚点唯一性+指令位校验 fail-closed,restore 按当前内容反向还原。阈值存运行目录 autocompact.json,引擎 hook 每轮决策 mtime 缓存读取——数值热生效;补丁冷生效(已运行 agent 子进程下个 spawn 起用)。任何形式阈值钳 1% effective 地板,防连环压缩触发 rapid-refill 熔断。 ⚙ 面板新增开关+模式(默认/百分比/token/缓冲/禁用)+数值+状态行(低阈值警告), enginePatch 状态随插件状态通道推送(v172 拷贝行+种子纪律);ctx 按钮 hover 面板 新增「自动压缩 ~X%」行。配置写入走新白名单动作 autocompact-patch/autocompact-config。 登记:sync_plugin FILES、release_tool SYNC_FILES、release_unpack PLUGIN_FILES、 两份 RUNTIME_FILES+cold_files、restart_notice hashes 白名单、两份 manifest packageLayout,插件版本 1.5.7→1.5.8,overlay v179。 验证:Node 1030/1030 全绿;Python 648 项仅剩 2 个基线同有的真机漂移红测 (test_renderer_bridge 读 /Applications 真机 asar,客户端 10-31 12:30 自动更新 致 asset 哈希漂移,与本变更无关,基线 b0c83c9 同样失败)。 | 1 天前 |
| fix(rate): 会话均收编根源码+补测试与文档 (v181) PR #157 补修(保留 wxk66 的两个原始提交): - 三份改动从插件副本镜像到根源码(FILES 共享清单以根为源),sync_plugin 校验一致 - merge fork/main(v179 自动压缩阈值批与本 PR 同改 overlay.js,自动合并无冲突) - overlay.js VERSION v179 → v181(v180 预留给并行在途线) - 行为测试:token_rate sessionAvg(加权≠算术、无可评段隐藏、CLI/速率行文案、 辅助与子代理源排除)+ zusage avg_tps(窗口/状态/源过滤、light/empty 零值)+ overlay 消费端(会话均主数字与分档、缺席回退、web 隔离);R9 tooltip 行数 7→8 - 文档同步:AGENTS.md §5 两态句与会话均口径、overlay-ui.md §5、README 三语、 user-guide 数据口径 | 1 天前 |
| fix(overlay): 补回 v181 工具组状态词——turn-stats 组近似块与 overlay 消费分支入库 (v187) PR #161 合并时遗漏两块代码,特性此前只存在于运行目录热修副本 (main 的 VERSION 台账却已写 v181 条目,代码与台账不符,全新安 装会丢「查阅·执行中/终端·执行中」状态词): - turn-stats.js:groupClassify/runningGroupOf 块——按宿主同源 规则在行流上复刻 exploreGroup/executeGroup 合成(≥2 连续同类 行成组、shell 按命令文本分类、半截 JSON defer 透明不打断组、 startedAt 锚定组首行),快照新增 runningGroup 字段。 - overlay.js:zuBarSpeedView 消费分支——运行行落组尾时状态词 显「查阅·执行中/终端·执行中」替代逐工具动词,计时锚定组首行 (适配 v186 的 sessAvg 新签名,缺席 runningGroup 保持原行为)。 - 测试:turn-stats 组逻辑(成组/单行/terminal/defer/完成态/正文 打断)+ overlay 消费(组标签覆盖、锚定、回退、旧 tracker 兼容); 版本钉桩断言顺延 v187。 来源:运行目录 v181 热修副本(与工作区未提交副本逐字节一致, 实机热重载验证过);块文本逐字提取,仅缩进按 main 风格归位。 | 22 小时前 |
| feat: MCP/CLI 新增 workspace:<目录关键词> 工作区聚合(子串+单词首字母缩写匹配;主会话按目录圈定、子代理按 parent_id 归并去重——子代理会话 directory 也等于工作区,直接按目录聚合会主/子重复计数;单连接一次算齐保分项与总计对账),session: 明细升级为总量+按模型+子代理任务名(与状态条 _sub_agent_tasks 同源);sessions 列表加工作区目录列;fmt 加 B 档;/usage 命令参数规则重写(days:N/sessions:N/models:N 自定义 N 可达、工作区需求引导走 workspace: 未命中按候选目录重试);README 两版补新 scope 与口径说明(合计=input+output、缓存读已含在 input 内、reasoning 按提供方上报口径不一仅供参考) | 1 个月前 |
| fix(install): 收敛 review 发现的七处 MINOR (issue #163 第二轮) - usage_mcp.revive_finalize_monitor:门控收窄为 pending_operation() in (install, remove)——cancelled journal(卸载撤销/发布中断遗留)不再 每次会话白拉一个秒退监控;launch_monitor 的启动失败提示重定向到 stderr,stdout JSON-RPC 通道零污染(与 overlay_install 同款守卫)。 - patch_install._remove 失败提示同款指向运行目录副本(#163 同型的 既有裸文件名残留)。 - install.py 注入未完成提示补 --asar:standalone 不读 config 记忆, 非默认安装位置照抄旧命令会 FileNotFoundError;copy_runtime docstring 「四件套」改为按清单表述。 - 测试:revive 夹具显式清空 ZUSAGE_MONITOR_QUIET(防环境污染存活)、 新增 cancelled 不拉起与 stdout 零污染两用例、upgrade 分支提示指向 运行目录副本的守护用例(M9)、spawn cmd[1] 兄弟路径断言、remove 提示路径断言。 | 22 小时前 |
| fix(rate): 生成耗时窗口按 provider 首字语义自适应——首块落章供应商不再把输入预处理摊进分母(fork z1908144712 判据收编) - 判据:对每 provider 的 (reasoning_tokens, time_to_first_token_ms) 最小二乘斜率,<2.0 ms/token(首字等待不随推理量增长)判「首块即落章」——思考在首字后随输出流出,首字窗口已含思考;样本 <5 或推理量无变化不判(走推理前置默认,fail-closed)。斜率 ≥2.0(推理在首字前完成)与 Claude 恒用 started_at 不变 - zusage:_provider_first_token_covers(60s TTL 缓存,全表聚合 ~17ms)+ _row_gen_ms/_rate_sample/_last_valid_rate/_turn_rate/子代理速率全链穿 covers,三处 SELECT 补 provider_id - token_rate:first_token_covers(一次性进程现算)+ scope_for 补 provider_id(旧库缺列走 _has_provider_col pragma 探测降级,不崩不误删 main_turn 过滤)+ to_item/query_latest/query_turn 接线 - overlay 速率行 tooltip「生成」措辞、AGENTS §5 契约行、user-guide、design-notes、token_rate 模块头同步 - 测试:判定分区/窗口选择/snapshot 端到端/旧库降级/token_rate 端到端接线共 9 个新用例;变异击杀 5 组(covers 恒空/忽略 covers/阈值 99/接线拆除/列探测恒真);既有 44+20 用例期望经夹具思考行计数核对不变 - 对抗式审核两轮:第一轮 1 MAJOR(旧库缺列崩溃)已修并补回归用例,第二轮无 BLOCKER/MAJOR(7 条 MINOR 记录在案);全量 596 Python(1 skip Windows-only)+ 690 Node 绿 | 7 天前 |
| feat(overlay): subagent rate tooltip adds input row and start-end time span - zusage sub.list rows now carry started (min started_at of completed requests, same span convention as the four-grid tooltips) - subRowTipHTML (both in-factory copies): render an input-token row above output (skipped when the field is absent on old snapshots) and replace last-active with a start-end range row at second precision (fmtStartS, em-dash when a side is missing) - overlay-ui rules: record the second-precision exception for this row - tests: sub.list started/last assertions, tooltip input/range rows, old-snapshot em-dash and missing-input cases; VERSION v207 - verified: full node suite 1162 pass, python 672 OK (1 platform skip), sync_plugin --check clean; live hover acceptance in the running host | 2 小时前 |