What's Changed
- [PR] fix: external summary mode stops injecting the summary-writing rules (#4460) by @naerymdan in #4462
- [PR] feat: Codex Desktop Plugin (Git marketplace + MCP tools + version sync) | feat: Codex 桌面版插件(Git marketplace + MCP 工具 + 版本同步) by @Chrockution in #4449
- [PR] fix: restore native ACP injection across DSH and Codex by @tgazer933-boop in #3510
- [PR] fix(#3501): explicit BILLION_CONTEXT_ATTACH outranks routed model-origin evidence in pi/omp/opencode attach probes by @ranxianglei in #3515
- [PR] storage: position-independent row identity + historian tombstones (#4390) by @ranxianglei in #4395
- [PR] #4316 Layer 3 (number directly mapped to canonical seq) PR 1/3: Fold-overwrite into real seq range | #4316 层3(编号直连正史 seq)PR 1/3:折叠覆盖写入真实 seq 区间 by @ranxianglei in #4335
- [PR] storage: seq ledger foundations — block interval bounds + ledgerSeq ref stamping (#4316 layer 3, phase 1) by @ranxianglei in #4346
- [PR] feat(ci): label-driven backport carry PRs onto patch lanes (bugfix-v) by @ranxianglei in #4503
- [PR] fix(#4506): release media refs on historian retire + budget the #3250 custom-cap slack (#4390 follow-ups) by @ranxianglei in #4511
- [PR] feat: plugin-lane server-owned history — msgid pinning + transcript render endpoint | 插件车道服务端正史:msgid 钉身份 + 正史渲染端点 by @ranxianglei in #4505
- [PR] docs: document host-side retry layering product bounds (#2568 item 4) by @ranxianglei in #2569
- [PR] docs: tighten the dsh compaction-off recipe (disabled: true + all three presets) by @ranxianglei in #3294
- [PR] docs(configuration): document lowering maxContextLimit as an eager-compression lever by @ranxianglei in #4364
- [PR] docs(storage): state planIngestDelta's strict-append precondition and pin the #4182 duplicate-identity corpus by @ranxianglei in #4399
- [PR] web/stats: expose decompress usage counters to humans (#3671 direction 4) by @ranxianglei in #3684
- [PR] fix(#4227): honest compression diagnostics — cumulative shrink/postCtx over all blocks, internal-lane receipts pinned to the round's own offer by @ranxianglei in #4229
- [PR] DSH: Context tab fills the conversation view | DSH「上下文」标签页铺满会话区 by @ranxianglei in #4284
- [PR] test: golden drive refuses to run on a stale kernel dist (#3325 lesson) by @ranxianglei in #3330
- [PR] test(logger): synchronize late registration with proven delivery by @0XCocoa in #4303
- [PR] fix: clamp learned image cost to the payload's own prior (#4153) by @ranxianglei in #4156
- [PR] fix: anthropic lane double-counts cached tokens on OpenAI-semantics relays (#4128) by @ranxianglei in #4132
- [PR] fix: recover fold coverage after short-request deactivation under id churn (#4050) by @ranxianglei in #4085
- [PR] fix: surface Node.js upgrade warning on unsupported-node storage degrade (#4444) by @ranxianglei in #4451
- [PR] docs: FAQ — combining bili with a model-routing gateway (magpie) by @ranxianglei in #4448
- [PR] feat(pi): fold /acp block details with Ctrl+O by @yanhuojiyusheng in #4065
- [PR] fix: redact storage diagnostics at the publish boundary by @ranxianglei in #4499
- [PR] feat: four-host msgIds wiring on the incremental lane (dsh/pi/opencode/omp) (#4491 host batch) by @ranxianglei in #4523
- [PR] fix(judge): render-lane turns reconcile against the rendered baseline, not inbound bytes (#4241) by @ranxianglei in #4531
- [PR] docs: restore dropped pluginLaneServerHistory seed row — unblocks docs-sync on master by @ranxianglei in #4524
- [PR] fix(ci): post carry receipts with -F so the @- stdin field is parsed by @ranxianglei in #4519
- [PR] merge: tier-1 consolidation train — 37 green PRs as one (conflicts resolved, #4294 reverted) by @ranxianglei in #4525
- [PR] feat(codex): concurrent multi-session under the same CODEX_HOME + CODEX_SQLITE_HOME shared state DB (#3203 / #2222) | [PR] feat(codex): 同一 CODEX_HOME 并发多会话 + CODEX_SQLITE_HOME 共享状态库 (#3203 / #2222) by @ranxianglei in #3321
- [PR] merge: tier-2 consolidation train — 15 PRs + repair of #4525's sidScope compile break by @ranxianglei in #4551
- [PR] kernel: fold coverage keyed on ledger seq intervals — churn-immune blocks (#4316 layer 3, PR 2/3) by @ranxianglei in #4552
- [PR] merge: tier-3 rework train — #4443/#4445/#4430 reworked on master + #4510 content (CI red was a stale-dist mtime guard) by @ranxianglei in #4558
- [PR] fix(release): train mode survives pre-#4449 patch lanes by @ranxianglei in #4576
- [PR] merge: tier-4 train — dsh/cache domain rework (7 PRs incl. p1 #3307/#3301/#3890); kernel straggler from #3680 reverted per boundary by @ranxianglei in #4572
- [PR] feat: one-time ledger restamp of legacy refs + fork row cloning (#4316 layer 3 PR3/3) by @ranxianglei in #4575
- [PR] feat: windowed render source (D5-5) + view-domain judge tailStart (#4241 teeth regression) [rescue of #4584] by @ranxianglei in #4586
- [PR] dsh lane: note in-session when running an unverified @deepseek-ai/dsh client build (soft, exact-match) by @ranxianglei in #4545
- [PR] merge: tier-5 train — dsh prepare/streaming domain (7 PRs: bili_final terminal marker, auto-fold storm gate, wire-only guard) by @ranxianglei in #4590
- [PR] fix(storage): block interval bounds survive post-fold resaves (#4592) by @ranxianglei in #4607
- [PR] fix(release): label-gated head-tree publish for conflicted carve-out ship PRs by @ranxianglei in #4596
- [PR] fix(ci): master-CI convergence lane — persistent ci-fixes branch (sentinel protocol 2026-10-25) by @ranxianglei in #4635
- [PR] release: v3 gate-branch publish model (ship PR lane→bugfix fires; auto-cut next lane) by @ranxianglei in #4653
- [PR] release: land the TRUE v3 gate-branch publish model (v2 arm self-fired at #4654) by @ranxianglei in #4660
- [PR] pi inline full rollout: fixed real-device stream drops + default to in-process engine (previously scattered across unmer | pi inline 全套落地:修好真机断流 + 默认走进程内引擎(之前散在未合并的 #4527/#4571 里) by @ranxianglei in #4669
- [PR] feat: panel-embedded blog & articles — render bundled markdown in the panel's own style by @ranxianglei in #4597
- [PR] align master with v0.1.207 (shipped from bugfix-v0.1.206) by @ranxianglei in #4673
- [PR] Every surface self-identifies its lane: origin on status/overview, web sys.lane row, /acp via by @ranxianglei in #4698
- [PR] ci: remove the bugfix-lane/backport release machinery by @ranxianglei in #4719
- [PR] fix(storage): stream the v8 identity backfill one session per transaction (#4677) — master pick by @ranxianglei in #4708
- [PR] ci: restore the pre-backport carve-out channel (shipped out of #4719 by merge timing) by @ranxianglei in #4722
- [PR] pi/opencode inline changed to manual opt-in: revert the default flip; default behavior is identical to the previous vers | pi/opencode inline 改为手动开启:收回默认翻转,默认行为与旧版完全一致 by @ranxianglei in #4687
- [PR] web: blocks pane — collapsible tree (default) + folded-block list + master-detail panel (#4608) by @ranxianglei in #4737
- [PR] ci: converge storage-lane tests onto #4316 renumbering semantics (ci-fixes -> master) by @ranxianglei in #4727
- [PR] storage: unified storage was fully disabled via the 3-strike mechanism due to recoverable unique key conflicts (#4793) — | storage: unified 存储因可恢复的唯一键冲突被 3-strike 整体禁用(#4793)——采纳新字节前先清同 msg_id 的 byte-identical 占位 by @ranxianglei in #4795
- [PR] fix(hermes): self-heal after bootstrap failure and routed-origin death by @ranxianglei in #4646
- [PR] fix(#4516): degraded direct fallback — add the missing oversize refusal, self-heal retry, and transition logging by @ranxianglei in #4546
- [PR] fix: HTTP-lane egress byte budget so image-dense sessions stop 503-looping (#3909) by @ranxianglei in #4623
- [PR] fix: align session event and fold detail tables | 修复会话详情表格对齐与列分布 by @yanhuojiyusheng in #4363
- [PR] fix: Save and export the latest assistant reply in the handover document | fix: 交接文档保存并导出最新一条助手回复 by @yanhuojiyusheng in #4248
- [PR] fix(logger): stamp ALL bili.log writers in local time (#4535) by @ranxianglei in #4798
- [PR] chore: empty PR (no changes) by @ranxianglei in #4725
- [PR] fix(#4797): root-cause fix for superseded live-key collision — restamp pruning + semantics-preserving guard translation | fix(#4797): superseded 活键碰撞根治——restamp 剪枝 + 守卫保义翻译 + 一次性标志修复 (kernel 0.0.166) by @ranxianglei in #4807
- [PR] fix(wiring): degenerate-turn continuation retry joins the 429 governor (#4743) by @ranxianglei in #4802
- [PR] fix(agent/dsh): decode content-encoded request bodies in fork-adoption and recall body gates by @ranxianglei in #4832
- [PR] fix: armed compress circuit breaker now enforces itself on parse-failure receipts (#4812) by @ranxianglei in #4815
- [PR] The compress tool only teaches a single invocation format, to prevent the model from mixing up multiple formats. | compress 工具只教一种调用格式,防止模型把几种格式混着用 by @ranxianglei in #4823
- [PR] chore: empty PR (no changes) by @ranxianglei in #4801
- [PR] fix(storage): DB open self-check no longer blocks startup — large-DB background check + verdict cache (#4609) | fix(storage): 开库自检不再阻塞启动——大库后台查 + 判定缓存(#4609) by @ranxianglei in #4852
- [PR] fix(pi-msgids): model-switch rewrite no longer drops client message ids (pairing proof preserved) | fix(pi-msgids): 切模型改写不再丢客户端消息 id(配对证明保留) by @ranxianglei in #4834
- [PR] ci(#4828): kernel-guard exempts lockfile-only churn from the human gate by @ranxianglei in #4837
- [PR] docs: message-identity hierarchy is now msgid > order > hash (#4491/#4834) by @ranxianglei in #4871
- [PR] fix(dsh): make dsh.contextTab work on DSH Desktop — always emit the BILI boot-snapshot row by @ranxianglei in #4848
- [PR] External summary failures: name the real abort source and expose request size (#4833) by @ranxianglei in #4839
- [PR] feat: serve a bundled favicon.ico at /favicon.ico so browser icon probes never relay upstream by @ranxianglei in #4835
- [PR] test(e2e): scripted compress calls must use the single-string form (#4823 follow-up) by @ranxianglei in #4873
- [PR] fix(agent): a single-flight-blocked turn must not burn its msgIds by @ranxianglei in #4863
- [PR] fix(server): unconditional 304 from the codex catalog endpoint no longer manufactures a phantom cache hit by @ranxianglei in #4864
- [PR] ci: converge master-CI fixes (persist restamp guard + lockfile version sync) (#4599) by @ranxianglei in #4814
- [PR] chore: fold thinking forms single-source + drop inert fold-reconcile import by @ranxianglei in #4866
- [PR] fix: dsh lane — keep saturated proxies attachable instead of spawning into EADDRINUSE; self-heal one-shot bootstrap failures (#4811) by @ranxianglei in #4825
- [PR] fix(#4805): side-lane usage samples can no longer pollute the session anchor (settle gate + meter size guard) by @ranxianglei in #4849
- [PR] fix: Codex/opencode WebSocket delta turns no longer rebuild the full history before compression (#4804) by @ranxianglei in #4817
- [PR] fix: after enabling passthrough, native host cannot reuse/adopt already-running proxies, all traffic goes direct (#4850) | fix: 配置开启 passthrough 后 native 宿主无法复用/收养已运行的代理,流量全部直连 (#4850) by @ranxianglei in #4854
- [PR] fix(hermes): tool_search still binds session identity and model budget when deferring plugin tools (/acp panel + 500K wi | fix(hermes): tool_search 延迟插件工具时仍绑定会话身份与模型预算(/acp 面板 + 500K 窗口) by @yanhuojiyusheng in #4856
- [PR] feat: per-model USD billing prices + panel money views (#4899) by @ranxianglei in #4916
- [PR] feat(#4906): Panel blog auto-pulls new posts from GitHub master | feat(#4906): 面板博客自动从 GitHub master 拉新文章 by @ranxianglei in #4917
- [PR] fix(storage): keep fork lineage when the child session is first ingested by @Zhishulo in #4914
- [PR] fix(opencode-v2): refuse cleanly when the >max-string-length body decode throws (#4912) by @ranxianglei in #4923
- [PR] fix: route the fork lane through the network storage backend (#4911) by @ranxianglei in #4924
- [PR] fix(#4778): keep the raw key when a tag change rides on a host-side history rewrite by @ranxianglei in #4782
- [PR] fix: MySQL v8 upgrade cleans up duplicate message rows left by wireIndex splits (#4666) by @ranxianglei in #4678
- [PR] fix(#4528): yield to the event loop during long turns; warn on slow sessions by @ranxianglei in #4544
- [PR] 面板「压缩省了多少钱」按输入价算回放成本,改成按缓存写价,与缓存报告一致 by @ranxianglei in #4971
- [PR] fix: blog panel P3 polish (content-length precheck, refresh gate, 1h cache TTL, offline wording) by @ranxianglei in #4972
- [PR] Consistently apply sandbox CSP + nosniff to blog asset responses, blocking same-origin SVG script execution in the panel | 博客资产响应统一加 sandbox CSP + nosniff,堵住面板同源 SVG 执行脚本 by @ranxianglei in #4970
- [PR] When a blog post filename contains Chinese characters or dots, clicking it lands on the overview page; the detail page i | 博客文章文件名带中文或点号时点开落到总览页,详情页不可达 by @ranxianglei in #4969
- [PR] chore: sync master version to 0.1.208 (unblock one-click release drift guard, run 40520077248) by @ranxianglei in #4980
- [PR] fix(#4894): arm the direct-fallback oversize guard on dsh not-ready sends by @ranxianglei in #4904
- [PR] Fix pi-inline output arriving in large batches instead of token-by-token by @ranxianglei in #4999
- [PR] fix: split header-less claude code subagents onto their own session lane (#4352) by @ranxianglei in #4774
- [PR] Task sub-agent bili calls are no longer compressed into the parent session (#4580) | Task 子代理的 bili 调用不再压缩到父会话 (#4580) by @ranxianglei in #4978
- [PR] served-markers: graceful dispose records stoppedAt — restart flows no longer raise split-brain alarms (#3923) by @ranxianglei in #4989
- [PR] test: verify trailing OpenAI usage reaches the session ledger (#4943) by @jianzhangg in #4945
- [PR] Outbound invariant judge: add I3 pairing invariant — folded/split tool_use/tool_result no longer marked clean (#4862) | 出站不变量判官补 I3 配对不变量:折叠拆断的 tool_use/tool_result 不再判 clean(#4862) by @ranxianglei in #4984
- [PR] kernel: preserve existing block coverage when merging blocks (#4484) by @ranxianglei in #4485
- [PR] fix: draining proxy no longer claims its freed port — same-lane newcomer ladders instead of dying twin-collision (#4982) by @ranxianglei in #5016
- [PR] ci: converge master-CI fixes (register issue4982 spawning suite in LIVE_FILES) by @ranxianglei in #5017
- [PR] fix: initialize fork ledgers atomically before publication by @kuviki in #5044
- [PR] release v0.1.209 by @github-actions[bot] in #4982
New Contributors
- @naerymdan made their first contribution in #4462
- @Chrockution made their first contribution in #4449
- @jianzhangg made their first contribution in #4945
- @kuviki made their first contribution in #5044
Full Changelog: v0.1.206...v0.1.209