Repository navigation
Releases: FeatherHunter/dsh-mattpocock-skills-deck
Releases · FeatherHunter/dsh-mattpocock-skills-deck
Release list
v1.9.0-beta.18 测试版:刷新探测不再烧穿额度、限流闸按真实通道放行(#1418),本地 Markdown 后端切到随包原文布局
2026-10-25 · v1.9.0-beta.18 测试版:刷新探测不再烧穿额度、限流闸按真实通道放行(#1418),本地 Markdown 后端切到随包原文布局
- 这是什么:版本号从
1.9.0-beta.17推进到1.9.0-beta.18,这一版发到 npm 官方源(latest标签)。主线在 beta.17 之后合入两组大改动:#1418 的 P1 与两轮复核整改(探测只跟正在看的工作区并退避、限流闸按真实出站通道分族放行、见底文案说清缺哪种额度与恢复时刻);本地 Markdown 后端整片切到随包技能的原文布局(#1480 系列 / #1486 / #1487 / #1488 / #1499 / #1500)。另外带上关票原因入口(#1495)、链回包跨会话复用补算(#1492)与范围参数统一(#1485)。
刷新探测不再烧穿 GraphQL 额度,限流闸按真实通道放行(#1418)
- 现象:多个仓库、多个会话、面板开着时,刷新后台每一拍都要对「客户端记住的每一个工作区」各做一次全仓翻页。实测 79 次探测/分、同一秒多条探测、GraphQL 约 3,500–3,900 点/小时,把插件自己那一份额度(1,750 点/小时)烧穿;随后限流闸「任一桶见底就停掉全部 deck 工具」,连只需要另一族额度的操作也一起被停。beta.17 里 GraphQL 已按真实点数记账(#1482),所以线上见到的 rest 桶不再被虚增,但 graphql 桶会被探测真的花光。
- 改法:探测目标改成「人正在看的那一个工作区」(宿主给出的注意力根,取不到才退回主会话目录);连续无变化时按档退避——后台 60 秒定时拍按 60/60/120/300/600 秒拉长,面板可见时宿主给的 5 秒活跃拍按 5/5/10/25/50 秒拉长,一有变化或人回到前台立刻回原节奏。限流闸改成按「这次操作真正会出的通道(含前置读)」判断:建票两族都要(写走 REST、建前幂等锚回查走 GraphQL),改票 / 标签 / 认领 / 关票 / 重开 / 父子边只看 GraphQL,评论(REST 主路失败无条件回落 gh CLI)与阻塞边(id 查询失败会退 REST)两条路任一;deck 工具开会话前的预检按族逐个试,不再被一族见底误挡。见底文案改成「额度见底:REST 请求额度不够了(还剩 N 条,约 HH:MM 恢复),这次先不执行。」,闸自己的拒绝文案同样说清额度、剩余与恢复时刻,并删掉过时的「二级限流 Retry-After」说法。
- 验证:
verify-1418扩到 103 条断言(只探当前工作区、后台/活跃拍两种退避与复位日志、按真实通道分族、建票两族都要、父子边 GraphQL-only、评论 REST 主路、见底文案带剩余量、闸拒绝文案);verify-1442 / 1446 / 1446-receipts / 1355 / 1363 / 1482 / policy / 723 / 927等相关门禁全绿;全链npm run verify:parallel377/377 步、真红 0 步。 - 影响:面板开着正常使用、连续无变化时,探测请求会从每分钟几十次降到分钟级;GraphQL 份额不再被无产出烧穿;某一族额度见底时只停真正依赖它的操作,deck 工具不会再被另一族见底连带停掉。
本地 Markdown 后端切到随包技能的原文布局(#1480 系列、#1486、#1487、#1488、#1499、#1500)
- 本地 Markdown 后端的票文件改按随包技能原文的写法落盘:文件头隐藏注释带类型与状态、认领人与标签写进文件头(旧布局仍写可见行);一个目录只允许一份
map.md;规格目录按原文声明认领;建票模板从MD_FORMAT渲染,不再手写一份;旧版根目录票、重复编号票与混合布局都能读,读不懂的版本号会在read.degraded留下bad-format线。金标准回执随新布局重录(地图容器固定00、子票编号整体前移)。 - 影响:本地 Markdown 后端写出来的票与随包技能文档一致,人和 AI 照着技能原文就能读懂;旧布局文件继续能读,不会被静默改写。
其他使用者能感觉到的变化
- 关票可以带原因(#1495):
deck_issue_patch新增closeReason参数;地图子票的原因写进正文的 Answer 段、并在地图 Decisions so far 里补一条指针;实施票的原因按原文追加成一条评论;旧布局票写 Close reason 行;只带原因不带close:true时整笔拒绝。结论有地方落,地图回答「为什么关」不用再翻评论。 - 链回包跨会话复用补算(#1492):链快照在会话之间共享缓存时,靠会话沙箱许可判断的那几项统一走一个补算出口,客户端在途去重按会话分键。一读一写两个会话开同一工作区时,各自看到自己权限下的判定(#1483 的跟进)。
- deck 工具范围参数统一成
effort与feature(#1485):八个工具的范围参数只认这两个词,旧参数名不再各写一套。 - 工具定义拆出单独文件:
deck_issue_patch的工具定义搬到issue-patch-definition.ts,issue-patch.ts从 359 有效行降到 319(行为零变化),文件粒度门禁回到绿。
版本号与验证
- 版本号:根清单与包清单同为
1.9.0-beta.18;tests/verify-config-store-package.ts里钉住的候选版号同步改成新号。README 三处锁版号、英文文档三处、包说明首段同步改成新号。发布后 npm 官方源的latest(与beta)从1.9.0-beta.17前进到1.9.0-beta.18。 - 对应提交:本版内容来自
v1.9.0-beta.17(9f56fcb3)之后到发布提交之间的提交。#1418:1a5b7308、feb4cf9d、ac71ec7b;本地 Markdown 后端原文布局:#1480 系列的合并与收口提交(f7983ca9…096463fe,完整清单见git log v1.9.0-beta.17..HEAD);#14950a0a60a7;#14921d197376、5d8f48ba;#148504b861d7。 - 验证:构建通过(client.js 2,214,677 字节、host.js 59,143 字节;包内 client.js 2,217,115 字节、index.js 59,097 字节);类型检查全绿(565/565 份源码被 16 份配置看到);发布契约 58 项全绿;全链
npm run verify:parallel377/377 步、真红 0 步;五条冒烟全绿;npm pack --dry-run(在package/里跑)共 487 个文件、包大小 1.3 MB(解包 5.1 MB)、包版本为1.9.0-beta.18。 - 影响:这一版发到 npm 官方源;面板版本号会变成
v1.9.0-beta.18;不改动已装配置,升级后重启一次 DSH 才加载新宿主代码。
v1.9.0-beta.17 测试版:GraphQL 不再记成 REST 请求,写票后面板立刻刷新,多会话共用链快照不再串沙箱判定
2026-10-25 · v1.9.0-beta.17 测试版:GraphQL 不再记成 REST 请求,写票后面板立刻刷新,多会话共用链快照不再串沙箱判定
- 这是什么:版本号从
1.9.0-beta.16推进到1.9.0-beta.17,这一版发到 npm 官方源(latest标签)。相对上一版新增三组使用者能感觉到的变化:本地账本把 GitHub GraphQL 调用误记成 REST 请求、把 rest 桶虚增到写保留线以下、进而把 deck 工具整体拒掉的问题修好(#1482);改票、关票之后面板与状态栏胶囊不用再等整份快照重建,写事件补取数、下一次探针直接交回补丁,连做多次写也不会被合并窗口吞掉(#1472);同一个工作区开着两个会话时,链快照不再把一个会话量出的沙箱判定(能不能写临时目录)当成另一个会话的答案(#1483)。另外补齐会话号转发(#1478)。
本地账本不再把 GraphQL 记成 REST 请求(#1482)
- 现象:刷新探测与 deck 工具读票每页都走 GitHub GraphQL,本地账本却把每一页记成 1 条 REST 请求、只记 1 点;本地 rest 桶被持续虚增,连续运行一小时后掉到写保留线(1750 点额度的 30%,即 525)以下,deck 工具被「额度的一个桶已经见底,这次先不执行。」整体拒掉——而 GitHub 上真实的 REST 配额几乎没动(真机读数 core 4736/5000)。
- 根因:
src/tracker/rooms/github/client.ts的reportOutbound用「argv 第一段里含graphql」判 GraphQL,可真实命令是gh api graphql …,第一段永远是api,这段判断从 #1446 引入起就没生效过,每条 GraphQL 调用都按 REST 记 1 条请求、1 点。 - 改法:判档与取点收进
src/tracker/kernel/outbound-tiers.ts的四个纯函数(ghArgsOf剥程序名、ghOutboundEntryOf出「0 条 1 点 / 1 条 0 点」、graphqlCorrectionOf算差额、ghPointNoteOf出日志用的点数与来源)。账本口径定死为:requests是真正发出去的 REST 请求条数,points是真正花掉的 GraphQL 点数。GraphQL 起进程前先报{requests:0, points:1}(满足先报闸),成功后按回包rateLimit.cost补足差额;11 份读查询在 Query 根加上rateLimit{ cost },两份 mutation 拿不到真实 cost 时仍按 1 点估并在日志里标estimate。客户端、面板页面通道、旧面板写路径三条出站路径同口径,后两条也补差,同一条命令不会因为走哪条路径而点数不同。闸与步骤计价允许显式 0 条请求(缺省仍按 1 兜底防漏记)。gh.exec日志补points与pointSource两格(只增字段,事件总数不变:常驻 58、按需 61、总数 124)。 - 验证:新增
tests/verify-1482-graphql-accounting.ts(63 条:判档、真实 gh 客户端补差、双桶账本落点、闸的显式 0、12 份查询带rateLimit、四条出站路径防回退);按新口径更新tests/verify-deck-tools-matrix.ts、tests/verify-927-gate-injection.ts、tests/verify-github-gh-via.ts、tests/verify-github-label-colors.ts、tests/verify-log-fields.ts与research/489-appendix.md第 1 章。安装包冒烟:GraphQL 命令记 0 条 REST + 1 点,回包rateLimit.cost=5时补到 5 点;REST 命令记 1 条 0 点。 - 影响:升级后 GraphQL 只占 graphql 桶、REST 桶只在真实 REST 调用时下降,deck 工具不会再被自己虚增的 rest 桶误停;日志里能直接看出每笔记账的点数是服务端给的真实成本还是按 1 点估的。
写票、关票之后面板不用等整份重建(#1472)
- 现象:写事件订阅里那一格取数原是恒回「0 条 0 点」的空实现,改票、关票之后面板要等兜底探测才发现变化;同时写事件的 10 秒合并窗口不分取数类型,连做十次写只有第一笔真的去取数,后面的只能干等,看起来就像「写完不刷新」。
- 改法:补取数做成真的——改票、关票按票号补那一行;新建票没有票号时先问一次窗口索引,再只补新增的那几条(已关闭的票不会因为整池重建而消失)。补好的快照暂存起来,下一次
wf.probe先取它,取走即删、超过 15 秒丢弃;探针回包的since用补丁自己记下的时刻。合并窗口改成只拦扫描类取数(要问仓库最近变了什么,贵),点名补行每次写都补(票号已知,只取那一行,便宜)。refresh.patch这一行补记失败与过期原因,失败带上游原话(截断 120 字符,绝对路径整段换成<path>,不把工作区路径写进日志)。顺带删掉deltaRefresh上生产入口从来不传的openSession守卫——它让行级增量在真机上恒回no-transport。 - 验证:新增
tests/verify-1472-write-event-fetch.ts(40 条);tests/verify-deck-event-gate.ts的窗口用例改成两条(点名补行连写两次取两次、扫描类连写两次仍只取一次);tests/verify-write-detect.ts断言两档的waitMs;相关日志口径与附录第 1 章同步。 - 影响:连做多次写、关票后,胶囊与面板几秒内看到新状态,不再等整份快照重建;扫描类取数仍按 10 秒合并,额度不会被写事件刷爆。
同一个工作区开两个会话,链快照不再串沙箱判定(#1483)
- 现象:链快照按「工作区 + 后端 + 语言」共享缓存。同一个工作区的两个会话沙箱许可可能不同(一个能写、一个只读),只读会话求出的「能不能写临时目录」(
md:scratchWritable)会被能写会话命中后原样秒显,直到它自己重算才纠正。 - 改法:不拆共享缓存(子目录会话仍要秒显),改成分两类处理。宿主给检查项加「结果取决于当前会话」的标记(现在只有
md:scratchWritable),缓存命中时按当前会话的沙箱许可重算这几项、把结果覆盖到回包的副本上再返回,缓存本体一个字不改;退避缓存命中与在途搭车两条路都走同一个补算入口,补算失败只降级成 pending 并记host.call.fail。客户端缓存条目记下产出它的会话号:同会话命中照旧不联网;跨会话命中先秒显旧快照,再后台补问一次(同一会话同一把键只补一次),回来后替换本地快照与缓存条目的会话号。 - 验证:新增
tests/verify-1483-chain-session-cache.ts(覆盖缓存命中、搭车、换会话)与tests/verify-1483-client-chain-cache.ts(覆盖同会话、跨会话、交替、在途搭车、无会话号)。 - 影响:一读一写两个会话开着同一个工作区时,各自看到的是自己权限下的判定,不再互相污染。
会话号转发补齐(#1478)
- 客户端第二个
wf.chain调用点loadSwitchCri之前只传工作目录;宿主按请求里的会话号解析沙箱许可,同一工作区多会话时会按错会话的许可走。这一版补上会话号,并把回归检查从.mjs迁到 TypeScript、扩展成同时盯两处调用点。只影响同一工作区多会话且沙箱许可不同的场景。
版本号与验证
- 版本号:根清单与包清单同为
1.9.0-beta.17;tests/verify-config-store-package.ts里钉住的候选版号同步改成新号。README 三处锁版号、英文文档三处、包说明首段同步改成新号(发布契约对预发布号不强制这三处,但这一版要发到 npm,照文档复制安装命令必须装到新号)。发布后 npm 官方源的latest从1.9.0-beta.16前进到1.9.0-beta.17。 - 对应提交:本版内容来自
v1.9.0-beta.16(8f583b88)之后到发布提交之间的 10 个提交:3710cc58、984ea3f7、5cce28dc(#1482 记账口径与两轮复审收口)、8a3031b5、cdcac30c、426e64bd(#1472 写事件补取数与日志口径)、2c9cbd2a、1ca8d130(#1483 链快照按会话补算)、8b569070、9af340cf(#1478 会话号转发)。发布收尾的提交是本节写定后推上去的那一笔:把版本号推进到1.9.0-beta.17、按干净工作树重生成门禁归属表、写两份变更历史并重生成包说明。 - 验证:构建通过(client.js 2,212,251 字节、host.js 59,143 字节;包内 client.js 2,214,689 字节、index.js 59,097 字节);类型检查全绿(557/557 份源码被 16 份配置看到,手写 JavaScript 名单 3 份与基线一致);发布契约 58 项全绿(
node --import ./scripts/ts-hook.mts tests/verify-release-contract.ts --version v1.9.0-beta.17);全链npm run verify:parallel跑完 363/363 步、墙钟 104.6 秒、真红 0 步;五条冒烟全绿(其中 2 条带完成证据判据);npm pack --dry-run共 478 个文件、包版本为1.9.0-beta.17(1.3 MB,解包 5.0 MB)。 - 影响:这一版发到 npm 官方源,从 npm 升级可以拿到;面板版本号会变成
v1.9.0-beta.17。这一版不改动已装配置,升级后不用重新初始化;升级后重启一次 DSH,新代码才会被加载。
v1.9.0-beta.16 测试版:布局答案跟着仓库走,刷新探测修好,带上 deck 工具与面板的多处修正
「1.9.0-beta.16」测试版已发到 npm 官方源(latest 标签)。
安装(二选一):
# web 形态
dsh plugin --profile web add dsh-mattpocock-skills-deck@1.9.0-beta.16 --registry https://registry.npmjs.org
# desktop 形态
dsh plugin --profile desktop add dsh-mattpocock-skills-deck@1.9.0-beta.16 --registry https://registry.npmjs.org
- 这是什么:版本号从
1.9.0-beta.15推进到1.9.0-beta.16,这一版发到 npm 官方源(latest标签)。相对上一版新增的内容有四组:布局答案(初始化那张小卡问的「这个仓库各部分共用一套用语,还是各有各的用语?」)从此只存工作区文件一处,换机器、换浏览器打开同一个仓库都不用重答(#1449);刷新后台的探测被 GitHub 单页条数上限整页拒绝、失败又没在面板上说出来,这一版修好(#1418);deck_map_plan_create把edges的方向写清、写错type整批拒写(#1421);面板与状态栏胶囊改成同一个取数时刻并共用新鲜度配色(#1440、#1471 与状态栏取数时刻那组)。另外带上建议工具说明改口径(#1467)与几处内部整理(#1473)。
布局答案只剩工作区文件一处真源(#1449,随 #1433 收口)
- 这是什么:初始化时那张小卡问的「这个仓库各部分共用一套用语,还是各有各的用语?」,答案原来同时存在三处:工作区里的
docs/agents/workspace.yaml(layout一栏)、宿主本机的choices.json(layouts一栏)、浏览器本地存储的dsws.setupLayoutByCwd,而快照与注入只读后两处、不读工作区文件。#1433 先让快照改读文件(只做了一半),这一版把写入与注入也收过来:工作区文件是唯一真源,另外两处副本都退役。用户能感觉到的变化是——同一个仓库换机器、换浏览器打开,布局答案都还在;工作区文件写不进去时界面如实说「没有写入权限」,不再偷偷记在本机(维护者 2026-10-24 拍板:不留备份、如实提示)。 - 改了什么:
- 写入只写文件:
wf.setupLayout写完工作区文件就返回;失败时回{ok:false, error:'没有写入权限…'},只在当前会话生效,不再往宿主choices.json里另存一份。choiceStore删掉getLayout/rememberLayout两个读写口(旧layouts数据原样留在文件里、不再当答案读),布局淘汰与maxLayouts一并删除。 - 快照只读文件:宿主快照读布局时只看工作区文件,读不到就是「没答过」,不再回退到本机记忆;正常、内存短路、304、盘缓存回放每一条回包都带当前值(含空值),客户端据此清掉旧值。
- 客户端只读会话与快照:注入决策与状态栏卡片的读取顺序改成「本次会话的选择 → 快照回包里的
snapshot.setupLayout→ 没答过」;浏览器本地表dsws.setupLayoutByCwd与store-prefs.ts里那组读写函数、storage合并、按根键迁移整组删除;快照到达前按「未答过」处理(维护者接受这个时序代价)。 - 迁移不写布局:工作区根后来才认出来时,只迁移后端选择;布局不按根键搬家(它住在工作区文件里)。
- 文档口径同步:两份 ADR(
20260921-setup-layout-ask-and-remember.md、20260921-persist-user-choice-host-side.md)与docs/architecture/kernel-contract.md改为「工作区文件唯一真源、H 与 C 两处副本退役」;src/shared/doc-layout的消费方说明同步改成「只校验遗留记录」。
- 写入只写文件:
- 验证:新增
tests/verify-1449-layout-single-source.ts(21 项:写只写文件、快照只读文件、304 带空值、浏览器表与旧读写口全仓零命中、双产物复验);改口径的门禁逐篇重写或调整——verify-1003-layout-in-file15 项、verify-1433-snapshot-layout-file8 项、verify-683-choice-store58 项、verify-1305-session-permit22 项、verify-683-host-wiring36 项、verify-1003-migration7 项、verify-655-setup-layout180 项、verify-665-fresh-workspace-chain96 项;tests/verify-683-mirror-write.ts随浏览器布局表退役删除。类型检查全绿,构建通过;全链npm run verify:parallel通过:357/357 步、墙钟约 110 秒、真红 0 步(2 步并发假红串行复跑已绿)。 - 影响:升级后同一个仓库的布局答案跟着仓库走,换机器/换浏览器不用重答;新窗口在快照回来前可能先问一次(原来也有这个时序,现在按「未答过」处理)。旧
choices.json与浏览器里遗留的布局记录不再被读取,但不会被物理删除。
deck 工具:map-plan-create 的边写清方向,写错 type 整批拒写(#1421)
- 这是什么:
deck_map_plan_create的edges参数原来只有一句「子票之间的边;from是计划内的短标识(也可以是地图自己,写@map)」,没有说清from与to谁把关系写进谁、方向朝哪边;回执又只报关系落在哪一列,不报方向。照「from是依赖方」这种读法调用时,工具会静默写出方向相反的边——报告人就是这么把四张票的阻塞关系写反的(#1421)。这一版补公开说明、拒掉不认识的type、让回执点名双方与方向;合法输入的写入结果与参数结构都不变,已有计划和图上已经写好的边一张不动(唯一的行为变化是:type写成不认识的值以前会静默按阻塞边处理,现在整批拒写)。 - 改了什么:
- 参数说明写清方向:
edges的说明现在写明from是这条边写进哪张票(写的是它的字段)、to是它指向的另一张票;阻塞边是from的 Blocked by 里加上to(即from被to阻塞),父子边是from的父票为to,常规写法是to写@map;from、to、type三个字段各自也有了一句话说明(src/deck/tools/map-plan-create.ts)。 - 不认识的
type整批拒写:原来type只有blocked-by/parent两个合法值,写成别的值会被当成阻塞边。现在整次调用直接拒绝,回bad-args,原文「type 只认 blocked-by 与 parent 两个值(省略 type 按 blocked-by 算)。这一批边一条都没写,整次调用没有动任何票。」;这道检查排在开计划锁与任何后端写之前,盘上一张票都不动。 - 回执点名方向:写后读回成功时,阻塞边报「票 #A 的 blockedBy 里有 #B,也就是 #A 被 #B 阻塞」,父子边报「票 #A 的父票是 #B」;写失败时先说清要做什么(「写这一步就没成:要把 #B 加进票 #A 的 blockedBy…」),读回失败只说判不了这条边落没落上,绝不暗示已经写成;这时逐条明细的落点统一写「说不好(这次没读回来,别当它已经建好)」——原先阻塞边读失败被记成「做不到」,与父边、与
deck_map_link的既有口径都不一致;契约没有提供可选的读票方法时也不再谎称「读回来了、读到的是空」,只如实说判不了。deck_map_link走同一套判定,一并生效;相关回执文字变化由金标准夹具 07 重新录制来钉住。 - 同步的文档:
specs/1106-deck-tool-surface-spec.md(参数表、枚举不认识时的例外)、docs/agents/issue-tracker.md(阻塞边的方向与回执核对)、docs/tour/deck-call-end-to-end.md(8.6 与 8.7 的结构图、方向说明与失败清单)。
- 参数说明写清方向:
- 验证:类型检查全绿(553/553 份源码被 16 份配置看到);本票相关的定向门禁全绿——
verify-829-parent-reread11 条、verify-deck-tools149 条、verify-1039-rules-pure159 项、verify-1106-deck-surface174 项;其中审查补了三条回归用例——「契约没有读票方法时只说判不了、不谎称读回来了」「写失败回执点名要写什么、方向朝哪」与「一条合法边和一条写错的type混在一批时整批拒写」;金标准回执 11 项逐字节一致,其中07-deck_map_link因为回执文字补了双方与方向而重录(差异只有evidence那一行)。全链npm run verify:parallel357/357 步跑完、真红 0 步;发布契约 58 项全绿(node --import ./scripts/ts-hook.mts tests/verify-release-contract.ts --version v1.9.0-beta.15)。因为verify-829补的用例直接载入src/deck/shell/edge-landing.ts,tests/gate-map.json也按重推导的结果更新;归因表跟着重推导结果更新(verify-829的新用例直接载入src/deck/shell/edge-landing.ts),verify-gate-map重新转绿。
刷新探测修好,失败看得见(#1418)
- 这是什么:10 月 24 日起,刷新后台的探测每一拍都去翻「全仓票索引」,每页向 GitHub 的 issues / pullRequests 连接要 200 条,超过连接自有的 100 条上限,整页被拒;失败又被判成网络错误,客户端只留一行散列日志就返回,面板看起来和「没有变化」一模一样。上一版没有动这里,这一版把三件事一起修:探测重新前进、稳态成本降下来、失败在面板上说出来。
- 改了什么:
- 单页条数夹到上限:GitHub 房间读列表时把每页条数夹到 100(
src/tracker/rooms/github/page.ts),索引扫描与命名守护的请求都改要 100 条;审计里 GHE 一栏原先按 200 拍的位也一起改齐。 - 索引扫描带增量窗口:列表筛选新增可选
since(ISO 时刻),GitHub 侧翻成 GraphQL 的filterBy:{since},服务端只回这个时刻之后更新过的票;索引扫描据此每拍只拉变化的部分,远端没有变化时一页就结束。不带since的调用行为不变。 - 分页自适应降级:遇到「整页被拒」类错误时从错误原文读出远端上限、降一档重发,并记住这个较小页(最多降 4 步);每次降级落一条
read.degraded(带前后条数),排查时能直接看出「被拒过、降到多少」。 - 失败可见:探测回包
ok:false或模式为failed时,把同工作区的会话置为失败状态并显示原因(从回包error取摘要),下一次成功即撤;EXCESSIVE_PAGINATION/exceeds the first limit原文归「不支持」档,宿主探针回包与客户端失败日志都带出判档,不再只剩一个散列。
- 单页条数夹到上限:GitHub 房间读列表时把每页条数夹到 100(
- 验证:新增门禁
tests/verify-1418-probe-cost-and-failure.ts(75 条断言:页大小上限、since进查询与 argv、错误判档、索引窗口、失败可见与恢复、日志判档、分页降级);实测带since窗口、0 条变化时单页 cost=1 点、hasNextPage=false。 - 影响:升级后刷新会重新前进;探测的稳态 GraphQL 消耗从「每拍翻全仓」降到「每拍翻变化部分」;探测失败时面板会如实说「失败」,不再看起来像「没有变化」。
面板与状态栏胶囊的取数时刻(#1440、#1471 与状态栏那组)
- 304 快照回包补上工作区根(#1440):快照回包带上工作区根,面板与状态栏胶囊改用本机直读读数,避免两边读到不同目录。
- 胶囊与右侧面板共用一个取数时刻:两处改成同一个取数时刻并共用新鲜度配色;胶囊悬停提示补上这个时刻的解释,一眼能看出读数是什么时候取的。
- 建议气泡浮层底色单独一档(#1471):深色更轻更透、浅色更白,两层玻璃不再糊成一块。
建议工具说明改口径(#1467)
- 撤掉向技能正文追加规则节的机制,规则改放进建议工具的说明;推荐下一步的提醒改成「回复前最后一步」的判断口径,并同步门禁。
v1.9.0-beta.13
2026-10-24 · v1.9.0-beta.13 测试版:下一步建议能排优先级并先说技能,修好登录黄条卡住与详情页丢仓库归属
- 这是什么:版本号从
1.9.0-beta.12推进到1.9.0-beta.13,这一版发到 npm 官方源(latest标签)。主线是 #1451「推荐下一步」气泡的第三批后续:每条建议可以带 0 到 10 的优先级,界面按分从高到低往左排;气泡不再钉在状态胶囊上,改成跟着输入框走,输入框变高时重新量位置;理由浮层里先印分数、再印理由,选项框与浮层都加了磨砂底;工具的说明、参数与/ask-matt规则统一要求提示词开头先写/xxxx技能,点选后直接进技能流程。同一天合入两处现场修复:#1463 登录状态黄条在环境检查还没全部确认时显示成 8/8 全绿、点「重新检查」没反应;#1465 点开票详情报repo.refId missing,只剩短名、读不到票面。 - 改了什么(按能看到的行为):
- 下一步建议可以排优先级(#1464):
suggest_next_steps每条建议新增可选priority(0 到 10 分,超出范围按边界钳位、保留一位小数,非数字按没打分处理)。工具在截断前先按分数从高到低排序,没打分的排最后;客户端suggestFacts.ts按同一套口径排序,气泡从左到右就是先做谁。 - 气泡跟着输入框走(#1464):气泡锚点从状态胶囊改为输入框(找不到输入框退回胶囊,再退回视口中央);用
ResizeObserver盯着输入框,高度一变就重新量;动画起点排在定框之后,输入框变高时不会先落在旧位置再跳。 - 浮层加分数泡与磨砂(#1464):理由浮层先印推荐分数(例如 9.5、3、0),再印理由,没打分的条目只显示理由;选项框与浮层都加磨砂(
suggestAppearance.ts里选项框pillBlurPx=12、浮层popBlurPx=10),深浅两套底色的透明度同步调高,浮层排版改成纵向。 - 下一步建议先说技能(#1464 后续):工具的一句话介绍、
items参数与prompt字段的说明、/ask-matt末尾拼接的规则节三处统一口径——提示词开头先写这一步对应的/xxxx技能(例如/to-tickets、/diagnose、/research),点选后直接进技能流程;确实没有合适技能时才写普通提示词。 - 登录状态黄条不再卡住(#1463):环境计数把 pending 计回分母(
readyCount/envTotal),8 步完成加 1 步还没确认时显示 8/9,不再与同一份快照里的黄条自相矛盾;点「重新检查」时立刻置refreshing并通知界面转圈,wf.detect带上user-recheck令牌,失败记一条 warn 日志,三路请求落定后收掉转圈,不会卡着转。 - 详情页不再丢仓库归属(#1465):详情与评论的读路径改用只读会话已经补好的仓库引用(
opened.repoRef),不再拿只有目录名的describe({cwd})去问注册表——那条路对 GitHub 工作区交回空refId,房间就报缺仓库。缺refId时如实返回{ok:false, error:{kind:'not-found', message:'无法解析目标仓库(refId missing)'}},不再把空串交下去;写路径本来就走会话,读写的身份来源从此一致。
- 下一步建议可以排优先级(#1464):
- 版本号:根清单与包清单同为
1.9.0-beta.13;tests/verify-config-store-package.ts里钉住的候选版号同步改成新号。README 三处锁版号、英文文档三处、包说明首段同步改成新号(发布契约对预发布号不强制这三处,但这一版要发到 npm,照文档复制安装命令必须装到新号)。发布后 npm 官方源的latest从1.9.0-beta.12前进到1.9.0-beta.13。 - 对应提交:本版内容来自
v1.9.0-beta.12(4590049a)到发布提交之间的 6 个提交:6082dfd1(建议按优先级排序)、ee44f676(气泡锚点改跟输入框、浮层磨砂与分数泡)、0f844cff(#1464 合入)、1c2bcb07(#1463 登录黄条)、43561cde(#1465 详情丢仓库归属)、2a792458(建议补技能优先提醒)。发布收尾的提交是本节写定后推上去的那一笔:把版本号推进到1.9.0-beta.13、写两份变更历史并重生成包说明。 - 验证:构建通过;类型检查全绿(553/553 份源码被 16 份配置看到);发布契约 58 项全绿(
node tests/verify-release-contract.ts --version v1.9.0-beta.13);全链npm run verify:parallel356/356 步跑完、真红 0 步(两处并发假红复跑已绿)、墙钟 86.5 秒;五条冒烟全绿;npm pack --dry-run共 474 个文件、包版本为1.9.0-beta.13;构建产物里的版本注入是1.9.0-beta.13。 - 影响:这一版发到 npm 官方源,从 npm 升级可以拿到;面板版本号会变成
v1.9.0-beta.13。升级后:下一步建议按优先级从高到低往左排,没打分的排最后;气泡贴着输入框不再飘,浮层里能看到每条建议的分数;工具推荐先说技能,点选后直接进技能流程;登录状态黄条不再在全绿时误报、点「重新检查」有转圈反馈且不会再卡住;点开票详情不再报repo.refId missing。这一版不改动已装配置,升级后不用重新初始化。
v1.9.0-beta.12
2026-10-24 · v1.9.0-beta.12 测试版:Tracker 会话统一后端操作,未知额度与未知预算模型都如实说
- 这是什么:版本号从
1.9.0-beta.11推进到1.9.0-beta.12,这一版发到 npm 官方源(latest标签)。主线是规格 #1439 的收口:后端操作——九个 deck 工具、刷新后台的读写路径、宿主的发布/认领/改色/命名守护——从此只有一个入口:Tracker 会话;「这次调用该不该放行、花了多少额度」搬进会话内的操作管线(先取读数,再裁决,再转发给房间,最后记账);每个后端在注册时必须交出自己的预算模型声明。这一版把规格下的 13 张实施票(#1441–#1448、#1453–#1457)全部合入,验收票 #1435 一并收口。对第三方 Tracker 后端是破坏性变更:模块不交budget声明会注册失败,报错原文是BackendModule 'my-backend' budget invalid: budget 必须是一个对象(后端模块缺预算声明)。同一段范围里还合入 #1451 推荐下一步气泡的两批后续、#1436 状态胶囊首帧提速、#1438 登录失败横幅的重新检查按钮,以及 #1387/#1388 两批界面修正。 - 改了什么(按能看到的行为):
- 后端操作只剩一个入口(#1439):九个 deck 工具(
deck_context、deck_issue_get、deck_issue_list、deck_issue_create、deck_map_snapshot、deck_map_plan_create、deck_map_link、deck_issue_patch、deck_issue_report)不再各自选后端、各自过闸、各自调 gh,统一经 Tracker 会话;刷新后台的读路径(列表、详情、薄行、快照、评论、核对链)与写路径(评论、写事件订阅、建仓发布、认领交接、标签颜色、命名守护)都改为经会话执行;宿主发起的仓库定位也改问会话能力,走同一套裁决与记账。 - 未知与离网分开说(#1439、#1435):工作区用本地 Markdown 后端、机器上没装 gh 时,九个 deck 工具不再返回 gate-defer「读的额度已用完,只剩给写留的保底」;选后端不花额度。回执与日志带四格事实:
backendId、budgetKind、readKnown、offNetwork;remaining与tier只在读数真的已知、且该后端有额度时才出现,未知与离网改用一句人话写清原因,不再出现假 0 与红色档位。GitHub 显示两个桶与档位,GitLab 显示请求数口径,Markdown 显示「不需要额度」,未知后端写「额度未知:这个后端没有可用的预算模型」。 - 能力名录从 25 条扩到 26 条(#1439):新增
readBudget,如实回答「还剩多少额度」——已知(双桶/只计请求/离网)或未知并说明原因(还没量到/读不到/这个后端不支持)。GitLab 后端补齐端到端:读预算按请求数口径三态读取,账本只记请求数不产生点数,回执与面板按请求额度显示;仓库定位的 gh 兜底也搬进会话操作管线。 - 账本只有一个写入口(#1454):账本键从「两个桶」改成「后端 + 桶」:
github/rest、github/graphql、gitlab/requests,Markdown 不建桶,未知模型只记发出去的请求数。deck 工具路径与刷新后台路径的用量都经操作管线的同一个记账口落账,闸不再自己写账本;旧的两桶账本入口与静态模型表src/refresh/kernel/backend-quota-model.ts删除。 - 未知模型不再静默(#1455):后端声明了不认识的预算模型时,快照与面板不再整格丢掉,而是如实显示「额度未知:这个后端没有可用的预算模型」,没有假 0、没有红黄档位。
- 门禁与测试补齐(#1456、#1457):读预算第四档(后端不支持)由会话管线产生而不是伪装成失败;静态门禁能认出裸的 runGh 调用;新增认领写入、面板用量记账、仓库定位顺序等门禁;补上每小时两档硬顶、离网记 0 金额、九个工具的未知读数、缺预算声明在注册表端到端失败四类断言。
- 推荐下一步气泡后续(#1451):每颗建议加一行简介、按条数均分宽度,三条提案不再竖排成三行;出场动画放慢到约 2 秒、小泡放大五成,选中后胶囊化作气泡上飘消失;选项框只显示简介,理由收进框正上方浮层。
- 首帧先读本机工作路线(#1436):状态胶囊第一帧不再等整份快照重建,先按本机工作路线把胶囊画出来,首帧要等约 25 秒的问题得到改善。
- 几处界面与交互修正:登录失败黄条加一颗「重新检查」按钮,在横幅上就能完成人工重查(#1438);深色外观残留五项收口(#1387);浅色外观对比度修正(#1388);PTC 预设下建议气泡不出现的问题修好(ea967080)。
- 文档与仓库材料:README 的安装说明收成两段并保留「用 GitHub 后端前的权限前提」;联系区块三群二维码统一(飞书标主、与 QQ/微信新标对齐);加入 15 个演示视频(共 422 MB)用于发布说明与文档演示;Star History 图表改进(双轴新量程、零星日从原点起画、换缓存戳)。
- 看不到变化的那些(内部整理):门禁归属表按当前树重生成(链上 353 步);ADR、GLOSSARY、三份能力登记表与接入指南统一到 26 条能力的口径;新增 ADR
docs/adr/20261023-tracker-single-entry.md;每日 Star History 数据与图表继续更新。
- 后端操作只剩一个入口(#1439):九个 deck 工具(
- 版本号:根清单与包清单同为
1.9.0-beta.12;tests/verify-config-store-package.ts里钉住的候选版号同步改成新号。README 三处锁版号、英文文档三处、包说明首段同步改成新号(发布契约对预发布号不强制这三处,但这一版要发到 npm,照文档复制安装命令必须装到新号)。发布后 npm 官方源的latest从1.9.0-beta.11前进到1.9.0-beta.12。 - 对应提交:本版内容来自
v1.9.0-beta.11(ed0ad92b)到发布提交之间的 64 个提交(47 个非合并提交)。规格 #1439 第一批可按5a6415c7(新脊柱)、cf02dcc7(deck 工具改走会话)、885bac17(GitHub 读数与额度同步归位)、e31124e1(刷新读路径)、9c75137e与a82c2d49(刷新写路径与宿主发布)、62c2b2c7与90dff1e2(账本换轨与未知后端建桶)、ad7e419f(GitLab 端到端)、528a81e0(文档与收口)找;第二批可按e596244a(仓库定位走会话)、76223082(账本单写入口)、44116525(未知模型如实显示)、d03c63a9(机制与文档缺口)、af10fea2(断言缺口)找,合并与评审修复见15c6584d、8b945b95、47b78793、ffbeee2b、94ff8a5a、41de4f0e、de135401。其余:d72fcb5a/c8b8242a、1f85ac09/c5f82553、30471cd3(#1451,合并7dee4874与c6a17a0d);2dbe89a7(#1436);894c152c(#1438);44783372(#1387);b3bdcdc6(#1388);ea967080(PTC 预设气泡);89955eaa(#1433 快照布局,合并da69d39b);8d66b4f3(演示视频);20bb30cc、b29d41d7、3369260b(README 与联系区块);120defaa、107012c9、a317709e、d8836ce7(Star History)。发布收尾的提交是本节写定后推上去的那一笔:修好thanks.yml的坏固定、同步 GitHub About、把版本号推进到1.9.0-beta.12、写两份变更历史并重生成包说明。 - 验证:构建通过;类型检查全绿(553/553 份源码被 16 份配置看到);发布契约 58 项全绿(
node tests/verify-release-contract.ts --version v1.9.0-beta.12);全链npm run verify:parallel在合并后的 main(de135401)上 353/353 步跑完、真红 0 步、墙钟 80.5 秒;五条冒烟全绿;npm pack --dry-run文件清单核对,包版本为1.9.0-beta.12;构建产物里的版本注入是1.9.0-beta.12。CI 的 verify 工作流当前被手动停用,这一版以本地全链结果为准(维护者已拍板不再依赖 CI)。 - 影响:这一版发到 npm 官方源,从 npm 升级可以拿到;面板版本号会变成
v1.9.0-beta.12。升级后:没装 gh 的本地 Markdown 工作区不再被误挡;未知额度与未知预算模型都如实说、不再出现假 0;GitLab 后端补齐端到端;推荐下一步气泡更好读;状态胶囊首帧更快。第三方 Tracker 后端必须交budget声明才能注册,能力名录从 25 条变 26 条,账本键改成「后端 + 桶」,属于破坏性变更,接入指南见tests/tracker-contract/ONBOARDING.md。这一版不改动已装配置,升级后不用重新初始化。
v1.9.0-beta.11
2026-10-23 · v1.9.0-beta.11 测试版:刷新机制重构整批合入,修掉三处现场问题
- 这是什么:版本号从
1.9.0-beta.10推进到1.9.0-beta.11,这一版发到 npm 官方源(latest标签)。主线是「刷新机制重构」(规格 #1419 及其 #1423–#1430 九张子票):面板刷新链路的源码原来散在四处,这一版按职责搬进src/refresh/这个新家,纯搬家、零语义变化。同一天还合进三条现场修复:建单后列表阻塞徽标与 0/4 计数三次跳变(#1431)、调试日志开关两处真源对不上(#1432)、全仓落盘 JSON 复印件审计(#1433,只落文档并另立两张票);另外落了首帧全量重建约 25 秒的调研笔记(#1436,只取证、修法未定)与依赖边方向语义笔记(#1421),README 底部联系区块换成三群二维码。 - 改了什么(按能看到的行为):
- 刷新机制搬家(#1419,子票 #1423–#1430):刷新相关的源码以前散在四处,现在按职责搬进
src/refresh/——刷新机制的纯逻辑与契约 20 份、宿主刷新运行时 10 份、客户端刷新 9 份、取数链 18 份按房归位;依赖图规则改成对真实文件生效,客户端源码也纳入依赖图;旧目录、文档与注释里的路径全部指到新家。对使用者没有可见变化(零语义变化),门禁与树结构跟着重录:链上 332 步、src/覆盖 573/573。 - 修掉建单后列表阻塞徽标与 0/4 计数三次跳变(#1431):本地工作区新建票后,列表上的阻塞徽标会消失、分组计数 0/4 要跳三次才对。原因是首屏快照那条路没算分组计数,刷新路把阻塞边压成数字后列表按身份查表对不上补零键。现在首屏和刷新两条路同口径压数字、列表三处查表兼容规范键与补零键;回归门禁用 #1431 现场把这套数字锁住。
- 调试日志开关只认设置文件一处(#1432):设置页显示调试开关开着、日志里却一直没有调试行,因为开关有两处真源——设置文件
settings.yaml的debug.enabled与缓存目录的log-switch.json,两份对不上时宿主按旧文件记。dsh-log升到 0.4.1(新增开关来源switchSource,宿主传了它之后日志包完全不读不写自己的开关文件;0.4.0 因 npm 暂存问题从未公开,故跳过);宿主开机时顺手删掉遗留的log-switch.json(删不掉只记一条log.persist.fail,不挡开机);新增门禁 37 条断言锁住「只剩一处开关真源」。 - 全仓落盘 JSON 复印件审计(#1433):把
src/全树会落盘的 JSON/YAML 数据过了一遍。除日志开关那组(已由 #1432 删掉副本)之外,真正重复存储的只有两处:布局答案有三处家(工作区 YAML 的 layout、choices.json的 layouts、localStorage 的dsws.setupLayoutByCwd,运行时只读后两处),另立 #1433;老的docs/agents/workspace.json在生产写路径上从不清理、YAML 缺失时会复活旧后端选择,另立 #1434。本版只落审计文档research/1433-config-copies-audit.md,不改运行时。 - 首帧全量重建约 25 秒的调研(#1436):首帧为工作路线表触发了一次全量重建,要等约 25 秒;本版只落本机日志取证与候选修法,问题还在,按票面继续。另有 #1421 依赖边方向语义调查笔记落盘(确认方向从未定义、写后读回证据也不提方向)。
- README 底部联系区块统一(e99bc12a):把「加入我们」换成「反馈与联系」,三群二维码并列——QQ 群常驻并明示群号、微信群二维码 7 天有效每周更新、飞书群常驻;英文文档同步,发布壳说明由构建重新生成。
- 看不到变化的内部整理:刷新基线清零并删掉索引入口死代码(
refresh-kernel-no-io对async_hooks加例外、删tests/refresh-baseline.json,82 条存量零新增);每日 Star History 数据与图表继续更新。
- 刷新机制搬家(#1419,子票 #1423–#1430):刷新相关的源码以前散在四处,现在按职责搬进
- 版本号:根清单与包清单同为
1.9.0-beta.11;tests/verify-config-store-package.ts里钉住的候选版号同步改成新号。README 三处锁版号、英文文档三处、包说明首段同步改成新号(发布契约对预发布号不强制这三处,但这一版要发到 npm,照文档复制安装命令必须装到新号)。发布后 npm 官方源的latest从1.9.0-beta.10前进到1.9.0-beta.11。 - 对应提交:本版功能与修正内容来自
v1.9.0-beta.10..1dad7c38之间的 26 个提交(含把版号推进到 beta.11 的1dad7c38);发布收尾另有三笔——重生成门禁归属表(fe074e36,把刷新重构分支留下的空目录从覆盖表去掉)、文档锁版号与包说明重生成(5854bc6c)、本节发布记录(616e1e7c)。几处关键改动可以按提交号找:470a803c(纯逻辑与契约 20 份搬进新家)、05ccddc6(宿主刷新运行时 10 份)、e3b92f8a(取数链 18 份与工具桥)、3ceef916(客户端刷新 9 份)、238447fa/2dbe1417(新家骨架、四条分层规则与目标地图)、ab75977f(#1430 收口把旧路径指到新家)、e730c568/b322e6d8(把 main 的三笔改动并进分支、整批合入主分支)、fa7db4f6(#1431)、45053f7f(#1432)、46e522bd(#1433)、4077edf6(基线清零)、f4664052/6f488b85(#1436)、e99bc12a(三群联系区块)、1dad7c38(版本号推进)。 - 验证:构建通过;类型检查全绿;发布契约 58 项全绿(
node tests/verify-release-contract.ts --version v1.9.0-beta.11);全链 332 步跑完、真红 0 步;五条冒烟全绿;npm pack --dry-run文件清单核对,包版本为1.9.0-beta.11;构建产物里的版本注入是1.9.0-beta.11。 - 影响:这一版发到 npm 官方源,从 npm 升级可以拿到;面板版本号会变成
v1.9.0-beta.11。升级后日常使用与上一版一致(刷新重构零语义变化),建单后列表的阻塞徽标与 0/4 计数不再跳变,设置页的调试开关与日志实际行为对齐;首帧要等约 25 秒的问题这一版还在,等后续票处理。这一版不改动已装配置,升级后不用重新初始化。
v1.9.0-beta.10
2026-10-23 · v1.9.0-beta.10 测试版:地图详情页换成卡片墙,对象类型改成两层词表
- 这是什么:版本号从
1.9.0-beta.9推进到1.9.0-beta.10,这一版发到 npm 官方源(latest标签)。主线有两条:一是地图详情页从老页面换成「像素风卡片墙」的新页面(规格 #1401 一批改动),票卡能点进详情、被挡卡点亮挪红封条、看板按挡路关系排;二是建票必须填的对象类型改成两层词表(规格 #1403 及其 #1408、#1410、#1413、#1414、#1415、#1416、#1417 七张子票),旧写法会被拒绝并告诉你怎么改。同一段范围里还落了「推荐下一步」气泡(规格 #1397 及其 #1406、#1407、#1409、#1411、#1412 五张子票)、工作路线弹层表头合成一行(规格 #1404、实施 #1405)、市场更新时插件已销毁导致的桌面端三秒自退修复(#1392),以及 README 与市场展示的整体改版。 - 改了什么(按能看到的行为):
- 地图详情页换成卡片墙:进入地图详情看到的是像素风卡片,卡片按面板宽度自适应、不再固定窄栏;内容区铺满面板,底色改用暖白与炭灰的中性色,深色外观下卡片硬投影改纯黑,取数完成前后档案区高度一致,子票提示并进进度条一行。每张票卡可以点进票详情;被挡住的卡点亮后挪到红色封条旁边,封条上写清挡路票的标题;实施按钮换成实心锤子图标并用「实施地图」的身份色;摘要行不再画假占位(#1401)。看板把「挡路卡紧挨挡它的那张」这件事按显式栈走图重做,阻塞链再长也不受调用栈深度限制;脏数据里两张票撞同一个编号时两张都画,不再静默丢一张;输入顺序与并列时间不再影响结果(550ddd93、dea5ea5d、080fa090、8590264b,纯逻辑门禁从 70 条扩到 152 条)。
- 建票必须说清楚「这是什么类型」(#1403,子票 #1408、#1410、#1413、#1414、#1415、#1416、#1417):建票工具的
kind必填,只能填map(探索地图)、map-ticket(地图工单)、spec(规格)、spec-ticket(实施票)、bug(缺陷)、issue(普通票)六种;地图工单还要另填label说明是哪一种地图工单。以前含糊的task、ticket两种写法现在会被直接拒绝,回执里写清该换成哪一种、怎么迁移(8aa59746)。「位置值换成哪个契约类型、该带哪个类型标签、正文文件头写哪个标记、父票怎么算」这四件事的答案集中在src/deck/rules/object-kind.ts一处;本地 Markdown 后端只写三类类型信息;三个后端读侧统一按正文文件头标记认规格容器,规格算顶层容器;建票后按正文形状认文件、核对 Type 行,建票文案、夹具与金标准回执全部跟着迁移,两层词表写进文档。 - 状态胶囊上方会出现「推荐下一步」气泡(#1397,子票 #1406、#1407、#1409、#1411、#1412):新增 deck 工具
suggest_next_steps,一次给 2 到 4 条建议,每条带一句可直接执行的提示词和一句理由,校验严格、有一条不合规就整次拒绝,只读不写任何状态。客户端只读地借会话事件流拿这些建议(只认已经落盘的工具调用与回合结束事件,按调用号去重、同一轮以后来为准,回合结束后才交付),没有新增宿主方法、常驻定时器或保活。气泡长在状态胶囊上方,照原型里的小泡动效,可以点也可以关。二十个注入模板各加了一行「记得推荐下一步」的提醒,删掉十七处重复的/retro提醒;ask-matt 技能末尾由宿主拼接「推荐下一步」的四条规则,不改上游技能原文。 - 工作路线弹层表头合成一行(#1404、#1405):表头从两行改成一行两端对齐——左边是标题、条数、一条细线、更新时间,右边是「另有 x 个会话在办 y 条」;420 像素宽时不换行、不省略。
- 修掉市场更新时插件已销毁导致的崩溃与桌面端三秒自退(#1392):更新插件时旧实例已经被销毁,gh 的等待计时器还要建 effect,于是抛
INACTIVE_EFFECT,桌面端三秒后自己退出。现在新增共享域src/shared/command-cleanup,只认这一种错误,幂等地归还名额、终止子进程、接住已完成回调;其他错误照常抛出,不掩盖真问题。 - 几处界面与日志修正:首开引导横幅该出现时不出现、该消失时不消失的问题修好(客户端计时器包装补上 interval 转发、退避调档);状态栏胶囊补上工作路线判据的日志(work-route-idle/empty/unreadable 与表行数、本会话行数);横幅日志不再把「一条都没有」记成出现;单次远端调用的钳制从 30 秒放宽到 60 秒(钉值门禁同步改 60000);wayfinder 中文技能说明的七处翻译漂移与断链锚点修正;设置页欢迎语删掉一句。
- deck 工具回执瘦身(b29fe3b9):
deck_issue_patch写后回读的顶层readBack从整张票改成三格摘要{key, state, updatedAt},整张票只留在data.ticket里,空白回执的体积从 94.1% 降下来。 - README 与市场展示改版:功能展示改成一行两列,收录十七张功能截图加六张初始化截图共二十三张深色新截图,初始化流程单开一节;按任务板、胶囊状态栏、新增需求、技能面板、多后端与环境检查、版本管理三列、设置外观、初始化流程九个功能区重排,删掉安装区的营销文案与 FAQ;七个功能区改成推广口吻、图片说明挪到图上方,八个功能区的开场说明与二十三张图的说明文字都换成维护者定稿。这次发布前再把展示表格统一改成铺满内容宽度、每个单元格均分,截图在单元格里按宽度等比铺开,README 页面上不再留两侧空白(e72fd108)。安装区被改版时删掉的前置要求说明也写回来了——任务板绑定的仓库需要写权限(新建标签要 push 权限,给票打标签要 triage 及以上权限;只有读权限时能建票、能读票,但补打标签、标签流转与 wayfinder 标签都不可用),这段文字缺失会让 #992 的文档门禁变红。
- 看不到变化的那些(内部整理):把建票工具与地图计划工具的两个大文件各拆出内部模块、行为不变(4de80611);#1422 回执正文保真度调查结论文档落盘(正文原样透传、只有显式截断,两项期望均已实现);#1395 胶囊工作路线入口消失的源码链路调研笔记落盘;DSH 工具调用通知与 DSH 客户端推送两篇事实调查落盘;每日 Star History 数据与图表更新;门禁归属表按当前树重跑。
- 版本号:根清单与包清单同为
1.9.0-beta.10;tests/verify-config-store-package.ts里钉住的候选版号同步改成新号。README 三处锁版号、英文文档两处、包说明首段同步改成新号(发布契约对预发布号不强制这三处,但这一版要发到 npm,照文档复制安装命令必须装到新号)。发布后 npm 官方源的latest从1.9.0-beta.9前进到1.9.0-beta.10。 - 对应提交:本版内容来自
v1.9.0-beta.9..e097536d之间的 91 个提交(89 个功能与修正提交,加上 2 个机器人每日 Star History 数据提交),再加上e72fd108(README 展示表格铺满宽度)与这次发布的三条提交(把 README 前置要求写回来、版本号推进、本节发布记录),合计 95 个。几处关键改动可以按提交号找:550ddd93(票卡纯逻辑层)、dea5ea5d(卡片适配层与整页模型)、080fa090(地图档案与阻塞关系修复,门禁扩到 126 条)、8590264b(看板排序改显式栈与去重键)、31d301b4(入口切到新页面)、499b0938(卡片层四处缺口)、8aa59746(删掉旧类型映射)、86dc6506/7b3f8c1a/d57d4dc7(下一步建议气泡)、70ec0a13(工作路线表头单行)、fc77345d(INACTIVE_EFFECT 崩溃修复)、b29fe3b9(回执瘦身)、e16288db/01ce435d/10068b36/17c43b1d/e097536d(README 改版)。 - 验证:构建通过;类型检查全绿;发布契约 58 项全绿(
node tests/verify-release-contract.ts --version v1.9.0-beta.10);全链 330 步跑完、真红 0 步;五条冒烟全绿;npm pack --dry-run文件清单核对,包版本为1.9.0-beta.10;构建产物里的版本注入是1.9.0-beta.10。 - 影响:这一版发到 npm 官方源,从 npm 升级可以拿到;面板版本号会变成
v1.9.0-beta.10。升级后进地图详情看到的是新卡片墙,票卡能点进详情、被挡票挪到红封条旁边;用 deck 工具建票时必须填kind,旧task/ticket写法会被拒绝并按回执里的迁移路径改;状态胶囊上方会出现推荐下一步的气泡,可以点也可以关;README 与市场页的截图铺满内容宽度。这一版不改动已装配置,升级后不用重新初始化。
v1.9.0-beta.9
2026-10-22 · v1.9.0-beta.9 测试版:构建互斥锁落进主分支,浅色外观与入口切换实测收尾
- 这是什么:版本号从
1.9.0-beta.8推进到1.9.0-beta.9。这一版发到 npm 官方源(latest标签):主线是把「同一个工作区里多路会话同时构建会互相踩」的互斥文件锁从试验分支原样合进主分支(#1390),并把「临时把插件入口指到某棵工作树、在界面里看效果、看完指回」这套做法实测一次、把观测结果写进并行会话规范(#1391)。同一段范围里还落了浅色外观的收尾(规格 #1377 及其 #1378、#1379、#1380、#1381 四张子票)、本地 Markdown 后端的建票契约(#1382)、把并行会话规范写进代理操作说明(#1321)、技能原文还原上游并加一字不差门禁、致谢表改成机器自动追加,以及若干界面与工具修正。 - 改了什么(按能看到的行为):
- 同一个工作区的构建开始排队(#1390):以前两个会话同时在同一工作区跑构建会互相覆盖产物、把对方刚写出的文件踩坏,只能靠人记得「等另一条跑完再跑」;现在构建会先拿一把文件锁,拿不到就排队等(最多等 5 分钟),拿到后如果产物已经是最新的就直接命中缓存、不再重复构建;锁的持有者每隔 15 秒续一次心跳,超过 60 秒没有心跳的旧锁视为失效、可以接手;正常结束与进程退出时都会释放锁。产物新鲜度判断和锁共用同一套「产物是不是当前源码构建出来的」判据,旧生成物不会再让锁误以为不用重算(35761d8b)。三档等待时长都从
config/下的时间参数数据文件生成,不再散在代码里。 - 入口切换的实测结论写进并行会话规范(#1391):规范里「要在界面里看某棵工作树的效果」一节补上了 2026-10-22 实测的完整步骤与观测结果——在独立工作树里构建、把本机插件入口临时指过去,事件流在约 0.3 秒后收到一条
rebuilt与一条新的graph帧;按新rev取到的产物与工作树里的package/lib/client.js逐字节相同(只在末尾多一行 sourceMappingURL 注释),旧rev返回 404。看完还原后约 0.4 秒再收到一条rebuilt与恢复原rev的graph帧,产物回到切换前那一份。结论写明「切换入口会触发且只触发一次重挂载」,同时注明「重挂载几次」是从事件流看到的信号数,浏览器里的界面是否一次刷完还要靠人看一眼确认;切换期间主工作区产物、构建缓存与 git 索引一个字节都没变,也一并写清。 - 浅色外观收尾(规格 #1377,#1378、#1379、#1380、#1381):技能列表与详情、票卡与地图卡、面板各处铺成浅色纸面;浅色下焦点环跟随宿主蓝,五处个例补上状态标记,字与图形都过 4.5:1 与 3:1 的对比度;深色外观逐例保持原样。评审提出的门禁与样式问题(焦点规则收进深色守卫、浅色层令牌名与提示浮层判据加严)一并修掉。
- 本地 Markdown 后端的建票契约(#1382):本地后端初始化说明改写成 deck 工具口径,建票工具的 howto 按后端分支说明、描述字数收紧,门禁金样同步更新;拆票提示词写死用 deck 工具建票,本地后端不再手写票文件(07194220)。
- 并行会话规范写进代理操作说明(#1321):把「每个会话去自己的工作树里干活、各自装一份依赖、同一时刻只让一个会话在主工作区跑构建」写进
AGENTS.md,代理以后按这条做。 - 技能原文还原上游并加一字不差门禁(70addb90):随包的技能说明文字还原成上游原文,中文译文按原文重译;新增门禁逐字比对,改一个字就红。
- 致谢表改成机器自动追加(644e6a82):致谢名单按新编号增量追加,花数进位规则(十张票起用更大的图案)与排序规则写进发布手册;中英两表与包内说明由同一份数据渲染,每日定时与手动命令都能跑,跑完自动提交。
- 市场与首页的文案、致谢展示调整:市场介绍语开头加一朵玫瑰、训练量改成 520 亿 token;首页欢迎语改成红色、第二句另起一行、标语改成游戏系统的任务面板;给有编号贡献的三位朋友补上玫瑰,同花数按最后提交倒排;README 顶部胶囊与欢迎语更新,致谢改成三列表格。
- 几处界面与工具修正:修掉纯数字 GitHub 账号触发 GraphQL owner 类型错误(#1375);修掉 304 回包捎来的工作路线读数被丢弃、状态栏胶囊一直空白的问题;修掉已关闭地图下还开着的子票不回首屏列表(#1291);修好新工作区链条门禁里恒静默跳过的变异反证(#1372)。
- 看不到变化的那些(内部整理):1323 构建互斥锁的设计转定版(采用方案甲并补三条对抗审查补丁);#1363 首次运行提示条与初始化提示词、#1211 收口票讲解三看与独立对抗式审查、#1392 市场更新时插件 fiber 已销毁导致 INACTIVE_EFFECT 崩溃的调查笔记落盘;每日 Star History 数据与图表更新;门禁归属表按当前树重跑(链上 319 步、源码覆盖 538/538)。
- 同一个工作区的构建开始排队(#1390):以前两个会话同时在同一工作区跑构建会互相覆盖产物、把对方刚写出的文件踩坏,只能靠人记得「等另一条跑完再跑」;现在构建会先拿一把文件锁,拿不到就排队等(最多等 5 分钟),拿到后如果产物已经是最新的就直接命中缓存、不再重复构建;锁的持有者每隔 15 秒续一次心跳,超过 60 秒没有心跳的旧锁视为失效、可以接手;正常结束与进程退出时都会释放锁。产物新鲜度判断和锁共用同一套「产物是不是当前源码构建出来的」判据,旧生成物不会再让锁误以为不用重算(35761d8b)。三档等待时长都从
- 版本号:根清单与包清单同为
1.9.0-beta.9;tests/verify-config-store-package.ts里钉住的候选版号同步改成新号。README 与英文文档的三处锁版号、包说明首段的版本锁定同步改成1.9.0-beta.9(发布契约对预发布号不强制这三处,但这一版要发到 npm,照文档复制安装命令必须装到新号)。这一版发到 npm 官方源后,latest从1.9.0-beta.8前进到1.9.0-beta.9。 - 对应提交:本版内容来自
d29562ba..本版提交之间的 55 个提交(其中d29562ba..7f1961cf是 53 个功能与修正提交,5a4da154是发布记录,3c6f541b是 README 欢迎语调整),加上本条发布提交,这一段共 56 个。几处关键改动可以按提交号找:2ce4d05a(构建锁合入主分支)、b7bf7249(删掉「合入前只能靠等」的兜底话)、6c6eed23与87c2075d(入口切换实测与措辞修正)、11c2c502与35761d8b(锁日志补记挪位、旧生成物误判修复)、c3b40786(浅色外观集成分支合入主分支)、70addb90(技能原文还原)、644e6a82(致谢表自动追加)。 - 验证:构建通过;类型检查全绿;发布契约 58 项全绿(
node tests/verify-release-contract.ts --version v1.9.0-beta.9);全链 319 步跑完,真红 0 步;六条冒烟全绿;npm pack --dry-run文件清单核对,包版本为1.9.0-beta.9;构建产物里的版本横幅与包内说明都是1.9.0-beta.9。 - 影响:这一版发到 npm 官方源,从 npm 升级可以拿到;本机 desktop profile 当前装的仍是
1.9.0-beta.8,等发布或重新装包后才会显示新号。装过1.9.0-beta.8的机器升级后会看到:浅色外观按收尾后的样子、市场与首页的文案与致谢展示更新、面板版本号变成v1.9.0-beta.9。用 deck 工具的人会看到本地后端的建票说明按 deck 工具口径改写;多会话在同一工作区跑构建时不再互相踩,第二个会话会排队或直接命中缓存。
v1.9.0-beta.8
2026-10-22 · v1.9.0-beta.8 测试版:每颗能点的控件都有回应,文案与颜色各归一处真源
- 这是什么:版本号从
1.9.0-beta.7推进到1.9.0-beta.8。这一版的主线是「看得见的回应」与「同一件事只写一份」:面板里每一颗能点的控件都补上了悬停、按下与键盘焦点的反馈,页签与筛选的选中底色会滑到刚点中的那一颗;界面文案、颜色、标签名、分页额度这些原来各写一份的值,各自收回到一处真源。另外票面开始能记下维护者的原话,构建缓存命中时不再碰产物文件。需要特别说明的是:npm 官方源上对外最新的仍是1.9.0-beta.5,beta.6与beta.7两个版本号从没发过 npm,所以从 npm 升级上来的用户这一次会同时拿到beta.6、beta.7、beta.8三节的全部变化——beta.6只有版本号,beta.7的双轨形态与 YAML 真源也在这一跳里落地,本节写的是在那两节之上新增的部分。 - 改了什么(按能看到的行为):
- 每一颗能点的控件现在都有回应(#1335):以前只有一部分手工挂过标记的控件会亮,列表行里的按钮、地图详情与工单详情顶栏那一排、详情页里的工单卡、页面底部的「执行」与「档案」、设置页的开关与日志按钮,点上去没有任何反应。现在改成按统一规则给:凡是能点的控件都自动带上同一套反馈,不再靠逐个手工挂。鼠标移上去提亮并加一圈描边,按下去压暗、按钮再下沉 1px(整行与整张卡只压暗不位移,免得把同一行的字带歪);悬停的高亮环与键盘焦点圈现在都画在控件里面,不再被外层容器裁掉,颜色也统一跟着 DSH 主题的焦点色走;列表每一行的悬停高亮补到 2px,与键盘焦点环同宽。入口浮层里那张卡片上多出来的第二圈橘黄细线也没有了。
- 页签与三组筛选药丸的选中底色会滑过去(#1335):以前选中是每一颗自己变色,现在是同一块底色滑到刚点中的那一颗;多选标签组里其余选中项保留自己的描边,不会只剩一颗看得见。交接按钮被竖着切成两半后,左右两段各自是半胶囊轮廓、两半等高;状态栏整条胶囊不再亮环,里面每一颗子控件保留并淡化到五成;「定位图标 + 票号」那一颗的焦点圈改成圆角。
- 同一个工作区开两个会话时,状态栏不再列错票(#1355):以前 B 会话的状态栏胶囊会列出 A 会话动过的票,B 自己动过的票反而不显示;现在胶囊里的票按会话分开,切换或接手会话时重新取一份属于当前会话的。右侧面板置顶的探索地图组与规格组也不再固定按更新时间排序,改成跟随面板当前的排序档(更新时间、创建时间、编号、标题四个键,方向也一致)。
- 英文界面不再夹中文,文案与颜色各归一处真源(#1336、#1341、#1342、#1343):状态栏探测横幅、评论区、后端选择器里剩下的几处写死在源码里的文案改走界面词表,中文界面逐字不变;「加载下 50」里的 50 改成占位符,由客户端常量填入。容器空态与完成态两枚颜色、十个规范标签的名字、颜色与描述、三个后端的条目分页与额度、技能名册、布局取值的类型,原来各写一份,现在只留一处定义,用到的地方改成引用;颜色门禁从只管容器三态扩成全仓零容忍扫描,分页额度加了钉值门禁,标签门禁改成与真源逐字比对名字、颜色、描述。
- 票面开始记维护者的原话,进度只写一个地方(#1090、#1091、#1092、#1352):两个写票工具新增
originalWords(原话正文加出处),把维护者的话一字不改写进票面「## 维护者原话」区,只追加、不重排;读票工具能把这一批原话逐字读回(正文、出处、记录时间),地图快照的完整行也带同一份,轻量行不带。进度区的读写收成共享层一份实现,写进度从一段自由文字改成{percent, note},时间由工具盖,正文超过 60KB 拒绝写入且一个字不动。上报工具不再收进度自评,在办表的full档退役(老调用传full按standard处理),进度统一写到票面;新建票不再留那行页面上看不见的进度占位注释,只补「## 进度」标题。 - 工作路线的释放只撤销误报(#1349):以前带
release上报会把这个会话在票上留下的路径直接删掉,建过、改过、关过、建过计划的票也能被清走;现在只有从没实际处理过的票才删得掉,处理过的票回执说明「路径保留」,票本身的状态与认领人一概不动。 - 读一张票不再扫全仓,切换后端能写进工作区配置了(#1304、#1305):单票读反向边(「我挡住了谁」)以前要把整仓票按更新时间拉一遍,千级票的仓一次要 25~29 秒,列表到 500 条还会被截断并静默当成「没有反向边」;现在一条 GraphQL 同时取正反两条边,退回整仓列表时回执会写明「用了兜底」「可能不全」。切换后端以前在同一个工作区开了两个以上会话时会写不进工作区配置文件,面板只回一句「这个工作区不在本次会话允许写入的范围内」;现在客户端各入口带上会话号,宿主按会话解析写入许可,保存布局时如果只写进了本机记忆也会如实说失败,不再谎报成功。
- 构建缓存命中时一个产物文件都不写,产物新鲜度改看内容摘要(#1325、#1326、#1327、#1328):以前命中缓存会把每个产物的修改时间抬到当前,跑一次验证链面板就跟着闪十几回;现在命中不写任何文件,产物字节与修改时间原样,构建日志明确写「没有重建、没有写任何产物文件」,完整构建末尾加一行说明产物已写盘。判断「这份产物是不是当前源码构建出来的」从看修改时间改成比内容摘要:时间变了内容没变不再误报过期,手工改过产物、时间更新也不会被当成新鲜;八扇新鲜度门禁与两个矩阵脚本改成调用同一份判据,另加一条回归门禁专门抓过期产物。验证三档各自测得到什么、测不到什么,以及产物过期的排查步骤,都写进了文档。
- 提示词与登录指引的几处内容修正(#1212、#1281、#1286、#1329、#1350):规格与探索地图的按钮、以及行里的「新会话」,以前会按标签给出实施票用的
/implement,现在先认出这是哪一种容器,再按它的三种状态给出对应提示词(空态拆票、进行中执行、收尾完成);诊断与接手两条提示词补回「调查(建议先查后问)」一节,诊断还写明「诊断不等于修复」、只在已有实施时核对验收标准;规格收尾提示词要求先确认改动已经进入仓库的长期分支(走 PR 的仓库只认已合并且提交落在长期分支),规格执行提示词在无版本库或建不出工作树时给出降级路线;GitHub 登录指引改成与安装指引一样走/wizard一步步来。 - 日志补上能定位的字段(#960、#1101、#1314):建日志库时把常驻事件清单一并交进去,本来该常驻的信息级事件在调试开关关着时也能落盘;刷新取数补了终点与去重字段,同一趟的放行结论与事件用编号串成一对;发往 GitHub 的请求补了排队证据,超时能分清是排队段还是执行段;认不出的命令从立刻探测改成兜底节拍,不再为一次判定花 3.7~4.8 秒。事件总数最后记到 120 条(常驻 56、按需 59、自监控 5)。
- 看不到变化的那些(内部整理):二十几笔提交用于落盘研究笔记与设计讨论稿(含同工作区构建互斥的文件锁方案、两个会话共用同一个工作区会冲突的五类资源、YAML 化候选清单的对抗式复核),门禁地图与测试归属表重新生成,删掉四处没人引用的导出,两个超过 350 行上限的客户端模块按原样拆到新文件,随包更新系统升到
0.18.38;README 的四条插件推荐语与致谢名单更新,Star History 图改成双 Y 轴、平滑曲线、最高点标数字、轴名横排并去掉图例,星标数据追到 185 颗,每日更新任务修好(Node 升到 22、推送前先同步远端)。这些是仓库与开发流程的整理,已经装好的插件看不到行为变化。
- 版本号:根清单与包清单同为
1.9.0-beta.8;README 与英文文档的三处锁版号、门禁tests/verify-config-store-package.ts里钉住的候选版号同步改成新号。这一版发到 npm 官方源之后,latest才第一次离开1.9.0-beta.5。 - 对应提交:本版功能内容来自
8f9a4a57..本版提交之间的 136 个提交(git log --oneline 8f9a4a57..HEAD逐条数得 136 行,HEAD 是b65da9e2),加上本条记录所在的版本号提交,这一段共 137 个。这 136 行里有 18 个是分支合并提交,另有 4 对提交是同一笔改动在合并后又出现一次,把这两类排除,实际不同的改动约 114 笔。几处关键改动可以按提交号找:f4bf7272(配置归属整批合入)、d28f5471与ccdca410(界面反馈与收口)、f0c7c453与bdefc08d(进度读写与维护者原话)、ecadaab3与f7c4618e(构建缓存与产物新鲜度判据)。 - 验证:构建通过;类型检查全绿(16 份配置看住 506 份源码,手写 JavaScript 3 份与基线一致);发布契约 58 项全绿(
node tests/verify-release-contract.ts --version v1.9.0-beta.8);全链 313 步跑完,真红 0 步(另有 2 条并发假红复跑已绿);六条冒烟全绿;npm pack --dry-run438 个文件、只在白名单内,包版本为1.9.0-beta.8;构建产物里的版本横幅与包内说明都是1.9.0-beta.8。 - 影响:装着
1.9.0-beta.5的机器从 npm 升级,会一次拿到三节的变化,本节的界面反馈与单一真源改动之上还叠着beta.7的双轨形态与 YAML 真源;装过beta.7的机器升级只多出本节这些改动。面板外观会变:点亮一颗按钮、滑过一行票、切换页签时都能看到回应该有的样子。用 deck 工具的人会看到写票结果里多出原话区、进度写成一条带百分比与时间的记录,上报的进度自评与full档不再存在;新建的票上也不会再有那行看不见的占位注释。本机 desktop profile 这一轮改为从 npm 正规安装(不再走本地链接),装上的就是这版发布包。
v1.9.0-beta.5
2026-10-18 · v1.9.0-beta.5 测试版:随包更新系统升到 0.18.25,失败提示先分清还有没有救援路径
- 这是什么:1.9 系列的第四个对外发布版,版本号从
1.9.0-beta.4推进到1.9.0-beta.5,发到 npm 官方源的latest标签(与前几版同口径:候选版就是所有人默认拿到的那一版)。相对beta.4,随包的更新系统升到0.18.25,票据派生做了一笔更快但行为不变的优化,包说明与作者作品链接重新生成。 - 改了什么(按能看到的行为):
- 安装失败后的提示按「还有没有救援路径」分开说:更新面板遇到安装失败时,先区分已经走不通、还能救、判断不了三种情况。只有确实走不通、且这一次给出的手工命令可信时,才把手工命令高亮;走不通时那条命令折叠收起,不再抢眼。失败回包里沿用自上一次失败的旧手工命令,不再被当成这一次的事实展示、复制或高亮。失败后会在后台静默补查一次状态,面板不用重开。
- 复制成功的反馈挪到按钮外:复制手工命令成功时,提示改成按钮旁边的小气泡,按钮本身的文字与图标不变;开着「减少动态效果」时气泡直接出现、按时消失。
- 认不出档案身份的场景少了:查找当前档案的路径多了一条权威链,确实没有任何上下文的嵌入场景才报「认不出档案」。没有安全手工命令可给时,按源码安装、开发态、使用范围认不出、运行版本未知、没有安全候选五类原因,分别说明下一步该做什么。
- 票据派生更快(#1251):面板从快照算出「待认领/已认领/被阻塞/已关闭」几组票时,原来对每张票最多扫六趟,现在按状态单趟分桶,每张票的状态只读一次、阻塞判定只算一遍;五个数组的顺序与判定条件一字没改,票多的地图算得更快。
- 包说明与作者作品链接重新生成:npm 包里那份包说明是按根
README.md自动生成的副本,上一次改作者作品链接时它没跟上;这次构建重新生成,装到手上看到的是同一份内容。
- 版本号:根清单与包清单同为
1.9.0-beta.5;npm 官方源latest指向这一版;README 与英文文档的三处锁版号同源;门禁里钉住的候选版号同步改成新号。 - 对应提交:本版发布提交,加上两笔前置提交——
72655396把随包更新系统升到 0.18.25(依赖范围、锁文件、工作区放行名单、派生的面板取值文件),7d566897把票据派生改成单趟分桶(#1251)。 - 验证:构建通过;类型检查全绿;发布契约 58 项全绿;README 同源、配置读写发布包、更新面板、更新迁移、更新真机(29 项)、内核与派生相关门禁逐条跑过;冒烟测试全绿;
npm pack --dry-run文件清单核对;官方源发布后npm view --prefer-online读到本版。全量链停在文件粒度门禁:src/tracker/detection/backendDecision.ts(740 有效行)等 5 个文件超 350 有效行,其中 1 个超 500;这 5 份文件最近的改动都在beta.4之前,是落在 main 上的存量问题,与本次三笔改动无关;这条红此前一直没被看见,是因为校验链遇到第一个失败就停,先前总停在更早的verify-1106(本版跑链时那条已经修好,才轮到它露出来)。发版脚本门禁用-SkipGate过,拆分这几个文件的事另立一票。 - 影响:装着 beta.4 的机器查更新会收到本版;更新面板遇到安装失败时看到的提示文字与以前不一样,按上面那套说法走即可;其余功能与 beta.4 一致。