# chainlesschain **Repository Path**: chainlesschaincn/chainlesschain ## Basic Information - **Project Name**: chainlesschain - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-26 - **Last Updated**: 2026-07-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ChainlessChain - 基于U盾和SIMKey的个人移动AI管理系统 > **📋 Android v1.0 重新定位 RFC 评审中**(2026-05-10)—— 桌面 = AI 工作站,手机 = 钥匙 + 捕获器 + 遥控器。停止以 skill 数量对标桌面,转 L1 (StrongBox/DID/QR) + L2 (Voice/Camera OCR/推送) + L3 (REMOTE 调用桌面 skill) 三层架构。详见[设计文档](docs/design/Android_重新定位_设计文档.md) | [用户文档](docs-site/docs/chainlesschain/mobile-positioning.md)。 > **📦 CLI 安装**:`npm i -g chainlesschain`(别名 `cc` / `clc` / `clchain`)。 > **中国大陆镜像用户注意**:若你的 npm 默认源是淘宝镜像 `registry.npmmirror.com`,可能遇到安装报错 `npm error code E404 … '@chainlesschain/…' is not in this registry`——这是镜像对新发布包**懒同步 tarball** 导致(元数据已有但 tarball 尚未缓存)。改用官方源安装即可: > > ```bash > npm i -g chainlesschain --registry https://registry.npmjs.org > ``` > > 镜像通常会在发布后稍候自动补齐(项目发版流程也会主动触发同步);补齐后用默认镜像源安装即可正常。 ## 2026-07-23 当前主线 — **cc CLI 0.162.175:测试金字塔、会话隔离与 Windows 进程生命周期加固** > 当前工作树完成了一轮 CLI unit / integration / E2E 稳定性修复:`CHAINLESSCHAIN_HOME` 现在明确表示配置、会话与状态的完整隔离目录;credential agent 只放行 `CC_SESSION_ID` / `CLAUDE_CODE_SESSION_ID` 等明确非秘密标识,未知会话变量仍默认过滤;Windows 后台 shell 与异步 hooks 在 `taskkill` 失败时有受控 fallback,不再把 shell 退出误判为整棵进程树已回收;session export 默认脱敏、无响应会话 resume、LIKE 字面搜索和真实后台 idle/finalize 均有回归覆盖。E2E 全量分片结果:**59 个测试文件、633 项通过,10 项按系统能力跳过**。顶层命令数仍为 **175**。详见 [CLI Runtime 当前实现](docs-site/docs/chainlesschain/cli-runtime-current.md) 与 [运行时设计核对](docs/design/cli-runtime-current.md)。 ## 2026-07-16 发布 — **IDE 插件 VS Code 0.37.16 / JetBrains 0.4.60:bug-sweep + parity 批(Windows cmd.exe argv 注入加固 / JB EDT 冻结·死锁类修复 / 阻塞后台 Agent 可见 / budget·retry 流事件契约)** > VS Code `0.37.15` → **`0.37.16`**(Open VSX)/ JetBrains `0.4.59` → **`0.4.60`**(JetBrains Marketplace)。30+ 修复的插件审计批:**Windows cmd.exe argv 注入加固**(用户文本含 `&`/`|`/引号不再被撕坏或当第二条命令执行,cross-spawn 算法真 cmd.exe 往返验证)+ **JB EDT 冻结/死锁类修复**(`/stop`/`/compact`/审批回复/tab 关闭的阻塞管道 IO 全部移出 UI 线程)+ **ghost-text 进程树击杀**(取消补全不再留孤儿 `cc complete` 白烧 LLM 调用并占 SQLite 锁)+ **阻塞后台 Agent 可见**(`waiting_permission`/`pendingApprovals`,配合 cc ≥ 0.162.168,「等待审批」徽标 + 排最前 + JB Resume 可用)+ **budget/retry 流事件**(API 重连与预算停止渲染为带原因 info 行,fixture 契约钉死双端 parity)+ deep-link 包含性 / Plugin Trust-Untrust scope / JB 会话索引并发安全 / 管道 CJK byte-carry。验证:VS 914 测试全绿 + vsix 解析级包验;JB JUnit+smokeTest 1213/0 + verifyPlugin Compatible。 ## 2026-07-16 发布 — **cc CLI 0.162.168:增量 gap-analysis 第二批接线(后台 Agent「等待审批」真实状态 / hook trace·parent 溯源 / LSP 多根+重启退避默认开 / 严格 hook 合并真并行 / 大仓 subagent worktree·子树指令 / run_code install 审计)** > CLI-only 发版(0.162.167 → **0.162.168**,npm `latest`,provenance)。后台 agent 卡人工审批时把 `phase:"waiting_permission"` + 实时 `pendingApprovals` 写进共享 state(Dashboard "Needs input" 从此有真数据)+ 统一 install 审计扩到 `run_code` 的 pip 自动安装(识别 `python -m pip install` 含 sudo 包裹,一份 `install-commands.jsonl` 覆盖所有「下载并运行第三方代码」入口)+ hook 事件溯源(`event_id`/`trace_id`/`parent_id` 四 payload 构造点,子 agent hook 事件跨深度关联父 trace)+ strictest-merge 决策合并(opt-in `CC_HOOK_STRICT_MERGE=1`,修「较早 ask 掩盖较晚 block」缺口)与 PreToolUse 真并行 + LSP 重启退避默认开(1s→2s→4s→8s,`CC_LSP_RESTART_BACKOFF_MS=0` 关)与多根 `code_intelligence`(`--add-dir` 根拿自己项目的语言服务器)+ 子树指令懒注入默认开(工具首访子树附 `cc.md`/`CLAUDE.md`/`AGENTS.md`,`CC_SUBTREE_INSTRUCTIONS=0` 关)+ subagent worktree 稀疏检出透传 / agent-file `background:true` 真生效 / headless `--add-dir` seed MCP roots。命令数 **175 不变**。 ## 2026-07-16 发布 — **cc CLI 0.162.167:增量 gap-analysis 收尾(P0 沙箱远程脚本执行检测 / 4 个生命周期事件钩子 / doctor 孤儿子进程 / 4 项杂项接线)** > CLI-only 发版(0.162.166 → **0.162.167**,npm `latest`,provenance)。统一「代码获取」分类器把 20+ 包管理器安装命令与 `curl … | sh` 一类下载即执行远程脚本归类,shell 审批抬高风险地板 + 落审计(`remoteExec` 标记;`cat file | sh` 与仅下载不误报)+ 4 个生命周期钩子真实生产者(`CwdChanged` / `WorktreeCreate`·`WorktreeRemove` / `InstructionsLoaded`——携权威指令文件清单绝不含内容,observe-only 零字节默认)+ `cc doctor` 孤儿 agent 子进程检测(进程起始时间锚定防 PID 复用,给 `taskkill`/`kill` 修复命令)+ async-hook 持久重唤队列崩溃恢复 / MCP roots/list_changed 广播 / LSP 就绪安装缺口检查 / Session Mirror at-rest 加密·删除·保留·密钥轮换。命令数 **175 不变**。 ## 2026-07-15 发布 — **cc CLI 0.162.166:P1-9「Capability Manifest 与脱敏诊断包」收官(协议文档 CI byte-diff / 离线协议回放 / 治理覆盖率指标)** > CLI-only 发版(0.162.165 → **0.162.166**,npm `latest`,provenance)。协议能力文档从唯一源 `capability-manifest.js` 单源生成 + 测试内 byte-diff 断言(manifest 加字段未重生成即测试红,drift 不可能 merge 绿)+ 离线协议回放与前向兼容审计(录制 stream-json 会话按协商上下文回放/审计,携带 gate-OFF wire 字段即违规 fail-closed)+ 治理覆盖率指标(高风险调用 Ledger/Trace 覆盖率 + Plugin/MCP/Skill/Hook 溯源可追溯率,双 100% 才 `ok`,离线工具可对 CI 强制)。命令数 **175 不变**。 ## 2026-07-13 发布 — **cc CLI 0.162.165:精简项目记忆(`--no-project-memory` 全关 / `CC_PROJECT_MEMORY=lean` 只留入口文件 / IDE 聊天「精简上下文」默认开)** > CLI-only 发版(0.162.164 → **0.162.165**,npm `latest`,provenance)。文档密集仓库里 `cc agent` 每轮重发整套项目记忆(实测 ~12k token/轮)——现分三档:`full`(默认不变)/ `lean`(保留 `cc.md` > `CLAUDE.md` > `AGENTS.md` 首个入口文件,丢 `CLAUDE.local.md`、`.claude/rules/*`、`.chainlesschain/rules.md`,实测 ~12k → ~5k)/ `off`(`--no-project-memory` 跳过整个层级)。IDE 侧经环境变量下发(旧 `cc` 不认自动回退 full)。命令数 **175 不变**。 ## 2026-07-13 发布 — **cc CLI 0.162.164:IDE 增量 gap-analysis 全批接线(凭据脱敏三导出面 / /rewind 从这里分支 / cc session pr-status / Diff 行评论锚定 / worktree 清理安全闸 / 崩溃恢复台账 / 脱敏诊断包)** > CLI-only 发版(0.162.163 → **0.162.164**,npm `latest`,provenance)。`cc session export` / OTLP / `cc doctor --export-bundle` 三导出面共用 recall-first secret-scan(导出物离机朝「不泄漏」失败)+ 崩溃恢复两阶段副作用台账(`--resume` reconcile,started-未落定-非幂等 op 注入 Recovery notice 而非盲重跑)+ `/rewind --branch` 从选中 turn 派生独立会话(父会话绝不截断)+ review finding 锚到代码而非裸坐标(file+baseHash+行原文,改后 reanchor/标 outdated)+ `cc session pr-status`(PR/CI 状态条 + 默认关的 auto-merge 合格性穷举判定)+ worktree reaper fail-closed 安全闸(未提交/未 push/关联 PR 任一即保留)+ `cc doctor`「Execution context」段 + 无人值守动作门 + 跨设备操作指纹全元组校验。命令数 **175 不变**。 ## 2026-07-13 发布 — **cc CLI 0.162.163:增量 gap-analysis last-mile 运行时接线(Subagent 契约全轴强制 / 跨 Agent 授权边界 / hook 事件日志+replay / plugin consent 生命周期 / /goal 循环 / --json-schema / OTel)** > CLI-only 发版(0.162.162 → **0.162.163**,npm `latest`,provenance)。0.162.162 announce 的纯核整批落成真实运行时接线:spawn 真正消费 `resolveSubagentContract`(tighten-only)+ 本地 headless 审批链路携带并校验授权信封 + 会话完成条件引擎接线 + Turn↔Checkpoint 绑定持久化与 coverage-aware `/rewind` + 副作用台账崩溃恢复纯核 + 持久 Scheduler jitter + `cc plugin consent` 再同意 + `cc hook replay`/`events-log` + REPL `/goal` 循环 + `--json-schema` 结构化输出 + 统一 OTel id。命令面只加子命令与 flag,**顶层命令数 175 不变**。本地三层全绿(unit+integration 25,008 + e2e 628)。 ## 2026-07-12 发布 — **cc CLI 0.162.162:增量 gap-analysis 收尾(Subagent 契约/Turn-Checkpoint 绑定/Plugin 能力 Schema/Hooks 事件总线/JSON Schema/多 Agent Review + LSP 诊断/Doctor+文档+OTel)+ IDE gap P0** > CLI-only 发版(0.162.161 → **0.162.162**,npm `latest`,provenance)。对照 `docs/CLAUDE_CODE_CLI_INCREMENTAL_GAP_ANALYSIS_2026-07-12.md`(vs Claude Code v2.1.207)**P0/P1/P2 全部章节收口**:P1 Subagent 契约(tighten-only 继承/覆盖,权限加宽钳回父级、capabilities 取交集、memory 父拒不授予)+ Turn↔Checkpoint 绑定(覆盖度 FULL/PARTIAL/NONE,恢复计划永不过度承诺)+ Plugin 能力声明与配置 Schema(默认 DENY + 加宽需重新同意 + 敏感选项拒 project 配置);P2 Hooks 统一事件总线(信封 + `event_id` + 决策最严胜出 + 决策类 replay 必须显式 sandbox)+ JSON Schema 结构化输出(Draft 2020-12 子集 + `schema_digest` + `structured_result`)+ 多 Agent Review 聚合核(dedupe 跨维度合并 + verifier 复现剔除 + 结构化 path/line/category/severity/failure_scenario/evidence)与 LSP 自动诊断调度(debounce/throttle + token 上限先丢最不严重)+ Doctor Runtime Checkup(agenda 逾期/慢·熔断 Hook/失效 Plugin·LSP/冗长指令文件)+ CLI 参考文档漂移检测(从 manifest 175 + 工具 26 生成并双向 diff)+ 统一 OTel id(九 id 归一 + content 默认脱敏 `[redacted]` + 基数收敛,每 span 带 workflow.run_id+session.id)+ IDE gap P0(远程审批绑定操作指纹 + 会话生命周期状态机)。命令数 **175 不变**。发版前本地三层全绿(unit 23,182 / integration 1,044 / e2e 628)。 ## 2026-07-12 发布 — **cc CLI 0.162.161:增量 gap-analysis(后台状态机/跨 Agent 授权/凭据代理/完成条件/Monorepo 排除/持久 Scheduler)+ bg-\* WS relay 协议硬化** > CLI-only 发版(0.162.160 → **0.162.161**,npm `latest`,provenance)。跨事件 `trace_id`(stream-json 每行 run-scoped,字符集 ≤128)+ 后台 Agent Idle/Needs-input 状态机(仪表板分组)+ 跨 Agent 授权信封(`origin→authority`,仅 user/permission_tool/认证 approve-scoped remote 可批准,approval binding 常数时间 fail-closed 防冒用)+ 凭据代理(子进程默认屏蔽长效凭据哨兵 `cc-cred-redacted:`,审计绝不记录还原明文,approved-host fail-closed 注入)+ 会话级完成条件引擎(exit-zero/file-exists/contains/regex/model/裸 + 预算 + 可恢复快照)+ Monorepo `instructionExcludes`(glob 排除 legacy/vendor/generated,@import 也跳过防凭据进 prompt)+ 统一持久 Scheduler 规划器(FNV-1a 确定性 jitter 防惊群 + 自适应唤醒 + 过期退休)+ bg-\* WS relay 序号缺口 replay / 出站背压 / 跨语言 fixture 契约。命令数 **175 不变**。 ## 2026-07-11 发布 — **cc CLI 0.162.160:运行时安全与确定性 8 批(沙箱严格模式 + 依赖/凭据安全 + 确定性 Headless + Subagent 契约 + MCP 生命周期 + Hooks 硬化)** > CLI-only 发版(0.162.159 → **0.162.160**,npm `latest`,provenance)。⚠️ **三处行为变更**:`run_code` 的 pip 依赖默认不再自动安装(改 opt-in + allowlist + 审计 JSONL);agent 脚本默认写 OS 临时目录(`persist:true` 才进项目);headless/agent 退出码细化(最大轮次→3 / 预算→4 / 模型错误→5 / 配置错误→6)。另含 `--ephemeral` 只读回放 + init 事件补协议/持久化/指纹字段 + `cc agent --capabilities` 机读能力清单 + `llm.apiKeyHelper`(外部命令→OS 凭据库,失败 fail-closed 告警一次绝不静默替换)+ 沙箱 `failIfUnavailable` 启动期强制探测引擎(不可用即拒绝启动,不再静默降级)+ Subagent `disallowedTools`/`maxTurns`/`isolation:worktree`(并修出子代理工具白名单从未传入 LLM 面的真 bug)+ `cc session rename/prune` · `cc daemon rm` · `cc mcp trust-project` + MCP `list_changed` 合并式重拉 + `.mcp.json` 指纹变更 fail-closed 重信任 + Hook payload `schema_version` + 连续失败熔断。命令数 **175 不变**(只加子命令)。 ## 2026-07-11 发布 — **cc CLI 0.162.159:Claude-Code 平价 gap-analysis 14 项收口(cloud handoff + /tui + /voice + /fast + plugin 治理 + session SQLite 索引)** > CLI-only 发版(0.162.158 → **0.162.159**,npm `latest`,provenance)。对照 `docs/internal/cli-claude-code-gap-analysis-2026-07-11.md` 14 项全落地:**`cc cloud`** 自托管 cloud handoff(`git bundle` 上传私有 runner→回流 patch/PR,无 Anthropic 云依赖)+ **`/tui`** 全屏无闪烁视图(备用屏缓冲 + diff 重绘 + `CC_NO_FLICKER=1`)+ **`/voice`** 语音听写(local-first STT,SSH/headless 清晰降级)+ **`/fast`** 延迟档(最小化推理 + 换低延迟模型,不覆盖 `/model` 钉过的模型)+ **插件治理**(manifest `dependencies` semver 约束 + LSP 注册表候选表回退 builtin + 被动组件不误判"未使用")+ **`cc session index`** 外部 session 存储(JSONL 权威 + SQLite 索引增量同步/搜索 + 可插拔 fs/http mirror)。命令数 **173 → 175**(新增 `cc cloud` + `cc routine`)。 ## 2026-07-10 发布 — **cc CLI 0.162.158:browser_state agent 工具 + REPL /remote-control 赛跑审批 + web-panel 直连配对/审批卡片 + 交付物预览下载** > CLI-only 发版(0.162.157 → **0.162.158**,npm `latest`,provenance)。**`browser_state` 第 25 个 agent 工具**(Chrome CDP 观察:URL/标签页/console/失败网络/DOM 快照/截图,纯只读仅 loopback,plan 模式可用)+ **REPL `/remote-control`**(交互会话内配对手机,终端 prompt 与远端设备赛跑审批——远端静默永不代键盘用户 auto-deny)+ **web-panel 直连(direct-LAN)配对与 `permission.request` 一等审批卡**(relay E2EE 与直连双方案自动识别,断线幂等 commandId+seq)+ **交付物 Markdown 预览与浏览器完整下载**。安全修复 ×2:直连配对明文 ws:// 收紧到私网/回环主机(钓鱼配对 URI 无法导走 serverToken/审批决定)+ chrome-connector launch-arg 加固(`--` 开头 URL 不再被 Chrome 当开关解析)。命令数 173 不变,AGENT_TOOLS 24 → 25。 ## 2026-07-10 发布 — **IDE 插件 VS Code 0.37.12 / JetBrains 0.4.56:IDE 内配对二维码 + Remote Control relay 设置面(gap 清单收口)** > IDE-only 双端发版(Open VSX + JetBrains Marketplace 均已上架)。Remote Control 配对不再要求盯终端:一次性配对 URI 直接在 IDE 内渲染成二维码(VS webview / JB 对话框,双端共享同一自包含 QR 编码器纯核),手机扫码即配对;relay(E2EE 跨网)模式的 `--relay-url` / `--peer-id` 也有了 IDE 设置面(VS settings / JB「Relay settings…」对话框)。至此 IDE gap-analysis 清单全部非环境阻塞项收口(#5 行范围 mention `@file#L12-40` 核实为早已落地的 stale 记录;#8 `browser_state` 一等 agent 工具已进主线,工具数 24 → 25,随下次 cli 发版上 npm)。验证:VS 70 测试文件 / 605 绿 + vsix 解析级检查 7/7;JB test + smokeTest + buildPlugin 绿 + zip 解析级检查 6/6。同日主线还落了 web-panel 直连(direct-LAN)配对 + `permission.request` 审批卡片(批 28,随下次 cli 发版)。 ## 2026-07-10 发布 — **cc CLI 0.162.157:IDE diff 审阅修订摘要 + plan 审阅快照 + `cc browse chrome` + `--bare`/无斜杠/读屏模式** > CLI-only 发版(0.162.156 → **0.162.157**,npm `latest`,provenance)。IDE 深度整合增量:**diff 审阅里你改了什么 agent 现在看得见**(accepted 结果携带 `userAmendments` -/+ 行级修订摘要,配合 JetBrains 0.4.55 可编辑右栏端到端闭环)+ plan 批准/拒绝携审阅快照写入会话 transcript(可审计回放)+ `cc browse chrome`(CDP attach 用户真 Chrome,登录态复用,console/网络/DOM/截图观察)+ **Artifacts v1**(`publish_artifact` 工具+`cc artifacts`——交付物只有元数据进对话)+ **Windows/PowerShell 一等**(run_shell `shell` 参数/显式 argv/`PowerShell(...)` 权限伞形)+ `--bare` 最小攻击面裸模式 / `--disable-slash-commands` / `--ax-screen-reader` 读屏友好。命令数 **172 → 173**。发版前干净 worktree 三层全绿。 ## 2026-07-09 发布 — **cc CLI 0.162.156:`cc agenda` + `cc batch`(第四阶段收口)+ `@chainlesschain/agent-sdk` 0.1.0 npm 首发** > CLI-only 发版(0.162.155 → **0.162.156**,npm `latest`,provenance);**`@chainlesschain/agent-sdk` 0.1.0 同 run 首发 npm**。命令数 **170 → 172**:`cc agenda`(notify/schedule 双 agent 工具的持久化消费端——wakeup/cron/monitor 意图落 `~/.chainlesschain/agent-schedule/`,到期 spawn `cc agent -p`)+ `cc batch`(大改动拆独立单元、每单元独立 git worktree 并行、`--test` 门控 + `--merge` 顺序集成,冲突报告不强合)。发版前本机三层全绿(unit+integration 23,447 / e2e 628)。SDK 详情见下条主线。 ## 2026-07-09 主线 — **平台化第三阶段:`@chainlesschain/agent-sdk` TypeScript 接入套件 + 四端契约化(已随 0.162.156 发 npm)** > 新包 `packages/agent-sdk` 把 `cc agent` 的 stream-json 双工协议固化为**版本化正式契约(Agent Protocol v1)**:流式事件、审批回调、检查点、会话恢复不再靠各消费端手拼 argv、手写 NDJSON 解析,而是 `import` 即得(`protocol.ts` 单一来源 + 语言中立 `docs/PROTOCOL.md`)。**VS Code 扩展**(vendored CJS,vsce `--no-dependencies` 约束)与 **web-panel**(vite alias 直指 TS 源,`bg-*` 帧全走 SDK 构造/判别)已迁移;**JetBrains 插件**(Kotlin/Java)声明实现同一份协议文档。`AgentSession` 内置 Windows 加固(`cmd.exe /c` shim + `NoDefaultCurrentDirectoryInExePath` 反劫持 + `taskkill /T` 进程树回收),审批回调 fail-closed。SDK 自带**真 CLI e2e**(fake ollama,断言 init/流/审批真写盘/resume 四契约),落地当天抓出并齐修两个真 bug:**两 IDE 首会话不落盘**(匿名流式会话按 CLI 设计不持久化 → IDE 重载后 resume 静默空会话,重载前上下文全丢;修复=面板首启即声明 `panel--` session id,VS Code + JetBrains 同修)+ `.js` 入口 spawn 失败。验证:agent-sdk 36/36(单元+真管道集成+真 CLI e2e)、vscode-ext 58 文件/512、JetBrains smoke 663/0、web-panel 2458/2458。用户文档 [`docs-site/docs/chainlesschain/agent-sdk.md`](docs-site/docs/chainlesschain/agent-sdk.md) | 设计文档 [`docs/design/modules/103_Agent_SDK平台化方案.md`](docs/design/modules/103_Agent_SDK平台化方案.md)。 ## 2026-07-09 发布 — **cc CLI 0.162.155:权限模式/auto 分类器 + 后台会话可交互接管 + MCP Tool Search(第一阶段收口,已发 npm latest)** > gap-analysis「第一阶段:安全与可运营性」全量收口(批 1-18,命令数 165→170):**权限模式补齐 `manual`/`auto`/`dontAsk`**(headless + 交互 REPL 双面;`auto`=settings `autoMode.decisions` 可配置分类器,支持 riskLevel 与 tool/commandPattern 细粒度规则;`dontAsk`=需确认动作直接 deny 不弹审批);**决策逐层解释链**(被拒命令附 settings-rules→shell-policy→approval-gate 各层判定,`cc permissions recent` 跨会话回看);**后台会话可运营**(顶层 `cc logs/attach/daemon status|view|stop|rename|resume`,崩溃会话一条命令续接同一对话);**`cc attach` 可交互接管**(worker 每会话本地 session transport,键入即发 follow-up prompt 多轮续跑);**web-panel「后台 Agent」面板**(`bg-*` WS 协议复用同一 transport,接管 token 永不过网络边界);外加 `cc remote-control` 统一远控入口与移动端远程审批桥。已发 npm `latest`(provenance),旧版已标弃用。 - **MCP Tool Search(同版并入)**:接入多个 MCP server 后全部工具 schema 随每次请求发送、轻松吃掉 10–30% 上下文窗口的问题收口(对标 Claude Code ToolSearch)——schema 超阈值(默认窗口 10%,settings `mcp.toolSearch` / `CC_TOOL_SEARCH` 可配)时自动换成 `[deferred]` 紧凑 stub + 内部 `tool_search` 检索工具,完整 schema 经工具结果按需返回。真机实测 12 工具 server 省 ~14k tokens。 - **prompt cache 友好**:stub 常驻且字典序稳定、schema 装载走对话内容(append-only)、晚连接 server 追加不重排——Anthropic 路径的尾部 `cache_control` 缓存断点跨 turn 保持命中。 - **直调自愈**:未先检索就直接调 deferred 工具 → 返回内嵌完整 schema 的错误并标记已装载(不打真 server),重试即通过。 - **`/context` 增强**:REPL `/context` 新增 MCP tool schemas 一节——per-server token/窗口占比、tool search 状态(deferred/loaded/节省量)与优化建议(`alwaysLoad` 收窄 / 断开点名的最大 server)。 - **顺带**:MCP `initialize` 的 server `instructions` 不再被丢弃,随 `tool_search` 结果按 server 附带。 - **gap-analysis 第四阶段「跨端与长任务」补齐(remote-control 随 0.162.155、agenda/batch 随 0.162.156 均已发 npm)**:`cc remote-control start/status/stop`(进程内起 WS server + 常驻 loopback HOST 会话 + 打印配对 URI/二维码,relay E2EE 或 direct-LAN 双模)与 `cc agent --remote-control`(confirm 级审批路由到已配对移动/Web 设备,超时 fail-closed)**已随 0.162.155 发 npm**;`cc agenda`(Monitor/Cron/Push 长任务调度消费者 + `notify`/`schedule` 两个 Agent 工具)与 `cc batch`(把大改动拆成独立单元、各跑自己的 git worktree 并发执行、测试与合并冲突预览的动态批处理,支持 `--decompose` 自动拆分)**已随 0.162.156 发 npm**(命令数 170 → 172)。三层测试全绿(remote-control 36 / agenda 29 / batch 17)。用户文档 [`cli-remote-control.md`](docs-site/docs/chainlesschain/cli-remote-control.md) · [`cli-agenda.md`](docs-site/docs/chainlesschain/cli-agenda.md) · [`cli-batch.md`](docs-site/docs/chainlesschain/cli-batch.md)。 ## 2026-06-18 主线 — **cc CLI 客户端/传输层稳健性硬化(对照 Claude Code CLI)+ 三层测试普查** > 对照 Claude Code CLI 排查 cc 自身的网络/IO 客户端层(并行平价循环未覆盖的一层),修复一批「静默失败 / 永久挂起 / 截断不报错」类稳健性问题,全部带专项单元测试。三层测试普查全绿(CLI 单元 19523 / 集成隔离 24 / e2e 604),普查另暴露并修 1 个 `--verbose` 回归 + 2 个陈旧断言。 - **写入完整性**:`write_file` / `edit_file` 落盘后校验实际字节数,网络盘 / 云同步盘静默截断或 0 字节写不再假成功。 - **MCP 韧性**:`tools/list` 失败显式「! Connected · tools fetch failed」/ stdio 进程猝死立即拒绝在途请求(不挂 30s)/ HTTP 请求补 30s 超时(`longRunning` 豁免,顺带接通预留未消费的元数据)/ `cc mcp serve` 请求体上限 + 超时 + 错误处理。 - **安装下载完整性**:`cc setup` 校验 Content-Length(截断即弃不安装)+ 停滞超时(防挂死镜像冻结安装)。 - **资源清理**:SIGTERM→SIGKILL 升级定时器 `unref` + 进程退出即清,杀任务后不再占住事件循环、延迟 CLI 退出。 ## 2026-06-16 主线 — **JetBrains IDE 插件 0.4.0:对齐 VS Code 扩展功能(已发 JetBrains Marketplace)** > `packages/jetbrains-plugin/` 一次性补齐与 VS Code 扩展(0.22–0.30)的功能差距,经 `./gradlew runIde` 沙箱逐特性人工验证后发版(tag `ide-jetbrains-v0.4.0` → CI `publishPlugin`)。 - **多会话 tab**:Chat 工具窗变多会话——每个 tab 独立 `cc agent` 子进程、`+ 新建` / 单 tab `×` 关闭 / 即时切换 / 每 tab resume id 跨 IDE 重启保留。 - **审批模式 + 扩展思考**:面板斜杠命令 `/auto`·`/bypass`·`/normal` + `/think`·`/ultrathink`·`/think-off`(spawn-time 标志,切换即以新标志重启子进程);面板斜杠 `/new`·`/stop`·`/cost`·`/context`·`/plan`·`/approve`·`/reject`。 - **上下文用量行 + 新建/重开快捷键**:每轮后刷新 `⊟ context …/…(n%)`;`Ctrl/Cmd+Alt+N` 新会话、`Ctrl/Cmd+Shift+T` 重开最近关闭(续接)。 - **选区动作 + @文件引用**:编辑器右键 Explain / Refactor(注入 `@selection`);`Ctrl/Cmd+Alt+K` 插入 `@#L<起>-<止>` 选区行范围;输入 `@` 弹出补全(`@selection`/`@diagnostics` + 项目文件)。 - **原生 diff 评审**:openDiff 升级为 Accept / Request changes…(行内批注回喂)/ Reject;`openMultiDiff` 多文件批量评审(全接受 / 挑选文件 / 拒绝)→ `mcp__ide__openMultiDiff`。 - **交互 Plan / 审批卡**:plan 与工具审批以带 Approve/Deny(Approve/Reject)按钮的卡片呈现,按钮回喂同 VS Code 的 stdin 协议。 - **App 内嵌预览**:Start App Preview 拉起 dev 脚本 → 解析 URL → JCEF 内嵌(不支持时回退外部浏览器);Stop 杀进程树。 - **修复(runIde 验证中发现,编译查不出)**:多会话重构曾让回复被静默丢弃(turnState 类型错→首个流事件 CCE 杀掉读线程);New-UI 工具窗图标空白(栅格内嵌 SVG → 真 PNG);输入框过窄(改为独占整行)。 --- ## 2026-07-03 发布 — **v5.0.3.134:CLI OAuth 命令注入修复 + MCP 列表加固 + workflow resume 重驱动(cli 0.162.148 / Android cc bundle 20260703 · USR 74)** > CLI 安全 patch 上船真机:`mcp-oauth` 授权 URL 曾经 cmd.exe 被 `&` 注入任意命令(远程 MCP metadata 可影响),改 http(s)-only + rundll32 无 shell;MCP 服务器列表一条坏行不再炸整列表;桌面 workflow-engine 断点/审批恢复真正重驱动执行。`chainlesschain` 0.162.148 已发 npm,随本版打入 Android in-app cc bundle。逐版完整明细见 [CHANGELOG.md](CHANGELOG.md)。 ## 2026-06-28 发布 — **v5.0.3.131–133:个人数据中台采集/分析三连(MIUI 浏览历史 + 账单月份/时间线修复 + 微博私信)(pdh 0.4.39 / cli 0.162.129)** > 累计 v5.0.3.131–133:MIUI/AOSP 默认浏览器历史采集器;PDH 分析层两处日期正确性修复上设备;微博私信采集(device-verified schema,高敏感 opt-in)。逐版完整明细见 [CHANGELOG.md](CHANGELOG.md)。 - **v5.0.3.131 — MIUI/AOSP 浏览历史采集器**:新增 `browser-history-aosp` 适配器,直读 `com.android.browser` 的 `browser2.db`(`history`/`bookmarks`,列名经 `PRAGMA table_info` 动态解析,ROM 变体安全),复用 Chrome 适配器的 `normalize()` 产出一致的 `BROWSE` Event / `LINK` Item,闭合 schema 字典记录的 MIUI 默认浏览器「适配缺口」。 - **v5.0.3.132 — PDH 分析层日期修复上设备**:账单月份从 `dueDate` 推算时 naive `setMonth(getMonth()-1)` 在还款日 29–31 号溢出到错误月份(改 `new Date(year, month-1, 1)`);时间线显式 `sinceMonths` 被默认 7 天窗口静默遮蔽(改为仅未给窗口时套默认)。新增桥接连通集成测试(6 测试,自动化跨设备验证法)。 - **v5.0.3.133 — 微博私信采集**:补全 `message_.db`(`t_buddy`→PERSON / `t_session`→TOPIC / `t_message`→EVENT,列名真机 device-verified),**高敏感 → opt-in `includeDm:true`(默认关)**,不影响既有 posts/likes/follows。 - **版本面**:productVersion v5.0.3.130 → v5.0.3.133;pdh 0.4.36 → 0.4.39 + `chainlesschain` 0.162.117 → 0.162.129 已发 npm;Android cc bundle `internal-binaries-android-v20260628c`(USR_VERSION 61)。 --- ## 2026-06-24 发布 — **v5.0.3.130:QQ空间一键采集 + 微信朋友圈采集 + §8.3 学习层备份上设备 + 个人助手 UX 收口(pdh 0.4.36 / cli 0.162.117)** > 累计 v5.0.3.127–130:QQ空间(Qzone)App 内嵌 WebView 一键采集(说说/留言板/相册)+ 微信朋友圈明文采集;§8.3 学习层备份命令上设备;个人助手卡死看门狗 + 待裁决信任卡固定可见。逐版完整明细见 [CHANGELOG.md](CHANGELOG.md)。 - **QQ空间一键采集**:Qzone 本地无可读库 → 走 API。新增 `pdh/lib/forensics/qzone-collect.js`(`g_tk`=bkn hash over qzone 域 `p_skey`;说说/留言板/相册 → EVENT)+ `cc hub collect-qzone`;Android「QQ空间」一键采集卡——内嵌 WebView 打开 `ptlogin2` 登录(QR / 账号密码)→ 抓 cookie → in-APK 采集入设备金库。真机端到端验证:扫码登录 → **采集 404 事件(329 说说 + 73 留言 + 2 相册)**。 - **微信朋友圈采集**:`SnsMicroMsg.db` 是明文 SQLite(无需密钥);新增 `parseSnsEvents`(SnsInfo → EVENT,正文取 protobuf TimelineObject)。本机真机采 2824 条。 - **§8.3 学习层备份上设备**:`cc memory/instinct/learning export/import`(层次化记忆 + 学习习惯 + 自进化轨迹)随新 cc bundle 上设备,与 vault 命令合并覆盖全资产端到端加密备份,密钥归个人不上云。 - **个人助手 UX**:卡死静默看门狗(20s 安抚 / 120s 友好超时 + 重试 / 进程退出自动重启)+ 待裁决信任卡固定(sticky)可见,不再被消息流滚走。 - **版本面**:productVersion v5.0.3.126 → v5.0.3.130;pdh 0.4.36 + `chainlesschain` 0.162.117 已发 npm;Android cc bundle `internal-binaries-android-v20260624`(USR_VERSION 58)。 --- ## 2026-06-22 发布 — **v5.0.3.126:个人数据中台 on-device 采集大扩展 + §8.3 跨设备加密备份 + 桌面安全硬化(pdh 0.4.31 / cli 0.162.99)** > 累计 v5.0.3.122–126:PDH 端侧采集(QQNT / 微信 / 通用明文库 + 多 app Magisk 守护进程)大幅扩展;§8.3 跨设备加密备份引擎落地;桌面 IPC/权限安全硬化转 ENFORCE;CLI 健壮性与 IDE 配置体验完善。逐版完整明细见 [CHANGELOG.md](CHANGELOG.md)。 - **PDH 端侧采集**:QQNT `collect-qq`(frida-free,nt_msg.db 解密入库)/ 微信 `collect-wechat`(派生密钥解密 + 解析)/ 通用明文库 `collect-db`;多 app 通用 Magisk 守护进程(MIUI 全自动上设备);个人助手 PDH 工具上设备 + node DNS 修复(in-APK cc 外网打通)。 - **§8.3 跨设备加密备份**:增量同步 + N 路版本并列冲突合并 + 加密块信封 + DID 派生备份密钥 + libp2p P2P 块传输 + 协调器(坏块跳过不中断整体恢复)。 - **桌面安全硬化**:IPC 发送方帧信任 / actor-identity / param-identity 守卫默认 ENFORCE;权限 grant/revoke/delegate/bulk-grant 的 RBAC 授权。 - **CLI / 后端 / IDE**:数值选项 NaN 守卫 + config.llm 一致化(cc agents·command·cowork·orchestrate 不再误走 ollama)+ cc agents 接线修复;后端校验 500 修复 + 大批新测试;VS Code / JetBrains 配置 LLM 预填(免重输模型 + key)。 - **版本面**:productVersion v5.0.3.121 → v5.0.3.126;pdh 0.4.31 + `chainlesschain` 0.162.99 已发 npm。 --- ## 2026-06-19 发布 — **v5.0.3.121:个人数据中台分析/采集修复 + FAMILY-67 通话/通知体验 + Android 键盘遮挡修复(pdh 0.4.29 / cli 0.162.82)** > 个人数据中台(PDH)一批分析管线 + 查询解析 + 抖音/头条采集修复;FAMILY-67 通话/消息通知体验完善;Android 全局键盘遮挡一处修复。release 发 18 个安装包资产。逐版完整明细见 [CHANGELOG.md](CHANGELOG.md)。 - **PDH 分析管线**:`spending` 总额改用 `sumEventAmount`(不再被每子类型 5000 行上限少计);`overview` byApp/byType/total 用 facetCounts(不再被 1 万行上限截断);`timeline` 排除使用画像聚合基线事件。 - **PDH 查询解析**:补收入类金额词 +「多少/几」量词对称;移除 income 裸「收到」误判;「最近 N 个月」月末不再月份溢出丢整月;「花了多少钱」无「总共」时不再误判为列表(应为求和)。 - **PDH 采集**:抖音使用画像 + 观看记录 vault ingest;头条明文文章 reader(标题在 share_info blob);可复现微信 EnMicroMsg.db 解密入库脚本。 - **FAMILY-67 通话/通知**:断网重连宽限(ICE DISCONNECTED 不静默挂死);好友连接自愈(仅 DataChannel 已连时才发起 E2EE 握手);未接来电通知 + CallStyle 锁屏来电 +「保持在线接听」前台服务;好友消息通知深链进对应聊天 + 运行时申请 POST_NOTIFICATIONS(Android 13+)。 - **Android 键盘遮挡**:edge-to-edge 下加全局 `imePadding`,一处修复所有页面输入框被键盘遮挡。 - **版本面**:productVersion v5.0.3.120 → v5.0.3.121 / desktop 5.0.3-alpha.121 / Android versionCode 503121 / iOS CFBundleVersion 121(check-version-sync 绿);pdh 0.4.29 + `chainlesschain` 0.162.82 已发 npm;Android cc bundle `internal-binaries-android-v20260619`(USR_VERSION 49)。 ## 2026-06-18 发布 — **v5.0.3.120:FAMILY-67 好友通话历史 + 来电铃声 + CLI 网络鲁棒性(cli 0.162.81)** > 好友语音/视频通话历史落库可查看 + 来电铃声/振动/去电回铃音 + CLI 各处网络 fetch 加超时防永久挂起。release 发 18 个安装包资产,文档三站(docs / design / www)已同步部署上线。逐版完整明细见 [CHANGELOG.md](CHANGELOG.md)。 - **通话历史**:好友语音/视频通话终态经 `CallHistoryRecorder` 落库 `call_history`(来/去电、未接、音视频类型、挂断原因);好友资料页「查看通话记录」按好友 DID 过滤或查看全部(Flow 实时读取)。 - **来电铃声/振动 + 去电回铃音**:来电播放系统铃声 + 振动(尊重静音/振动模式),去电播放回铃音,修「来电无声音」。 - **CLI 网络鲁棒性**:webhook 通知 / `cc update`·`vcheck` 更新检查 / provider 连通性探针均补超时(dead endpoint 不再永久挂起);reputation / 插件收益分账拒绝 NaN 的 score/amount。 - **版本面**:productVersion v5.0.3.119 → v5.0.3.120 / desktop 5.0.3-alpha.120 / Android versionCode 503120 / iOS CFBundleVersion 120(check-version-sync 绿);`chainlesschain` 0.162.80 → 0.162.81 已发 npm。 ## 2026-06-15 发布 — **v5.0.3.114:个人数据中台 gov-ixiamen 端点真机静态校验 + Android cc bundle v20260615d(pdh 0.4.25 / cli 0.162.71)** > 用已 root 真机对 PDH「端点抓包」runbook 跑**静态分析层**(只读 APK 二进制,无任何登录态/账号介入)。修正 `gov-ixiamen` 采集器的虚构占位主机——旧 `app.ixm.gov.cn` 实为不存在域名;真机 dex 静态分析确认 i 厦门真实后端为 `*.ixiamen.org.cn`(业务网关 `https://buss.ixiamen.org.cn/pbc/`),已改为真实网关(`opts.listUrl` 可覆盖),子路径 + 请求体仍 `unverified`(body 经 `libzxprotect` 加密静态不可见)。中行(SecNeo 壳)/工行(请求体加密+签名)维持 snapshot;12123 域名早已正确。`@chainlesschain/personal-data-hub` 0.4.24→0.4.25 + CLI 0.162.70→0.162.71 已发 npm;Android cc bundle 滚到 `v20260615d`、`USR_VERSION` → 45。桌面 / Android / iOS 全 surface 对齐 .114(check-version-sync 绿)。 ## 2026-06-15 发布 — **v5.0.3.113:npm 发布/安装链路加固(修复中国大陆镜像装机 E404 + 版本弃用 workflow)+ VS Code 扩展 0.28/0.29 + CLI 0.162.70** > 桌面 / Android / iOS 全 surface 对齐 .113(check-version-sync 绿);Android cc bundle 滚到 `v20260615c`(携 cli 0.162.70 + pdh 0.4.24,`USR_VERSION` → 44)。 - **修复中国大陆镜像 `npm install` E404**([#33](https://github.com/chainlesschain/chainlesschain/issues/33)):`@chainlesschain/core-infra@0.1.0` 在 `registry.npmmirror.com` 仅有元数据、tarball 未缓存 → 默认走淘宝镜像的用户装机硬失败。已手动触发镜像 sync API 修复线上(tarball 404→200);`npm-publish.yml` 新增「发版后自动 PUT 镜像 sync API」步(best-effort,不阻断发版),后续发版自动补齐;README 中英补「改用官方源 `npm i -g chainlesschain --registry https://registry.npmjs.org`」说明。 - **`npm-deprecate.yml`**:参数化 workflow,用 CI 的 `NPM_TOKEN` secret 弃用/取消弃用已发布版本(本地 token 已过期)。已弃用误从陈旧 tag 发布、漏 8 个 PDH adapter wiring(douban/ximalaya/keep/didi/mercedes/eleme/xianyu/vipshop)的 `chainlesschain@0.162.68`;`0.162.69` 为完整修复版,`0.162.70` 为当前 npm `latest`。 - **VS Code 扩展 0.28.0 / 0.29.0(已发 Open VSX)**:后台 tab 完成信号;聊天面板 `/` slash 命令 + `@` 补全 + `/rewind` 回到 agent checkpoint。 --- ## 2026-06-15 发布 — **cc CLI 0.162.66:Claude-Code 编码闭环补齐——`cc review`(diff-first + `--fix`/`--comment`)+ headless 硬化 + `cc insights` + 全局 run/verify 技能**(已发 npm) > 对照 Claude Code CLI 的剩余高价值缺口一次性补齐。`chainlesschain` 0.162.65 → 0.162.66 已发 npm(全局安装实测 `cc review` / `cc insights` / `cc agent` 新 flag 全通)。 - **`cc review` — diff-first 代码审查(`/code-review` 平价)**:默认审工作区 vs HEAD,可 `--staged` / `--base `(PR 式 `base...HEAD`)/ `--range A..B` / `--paths`,并内联未跟踪新文件;`low|medium|high` 力度档;`--security`(/security-review)与 `--simplify`(/simplify,只清理不抓 bug)两种视角。只读模式走 plan 权限(不可改文件)出 Markdown 报告;`--fix` 走 acceptEdits + 自动 checkpoint 直接落地修复(每次编辑可 `cc checkpoint restore` 回滚);`--comment` 解析机读 JSON findings → 经 `gh` 在当前分支 PR 上发行内评论(`--dry-run` 预览 + 交互确认)。 - **headless 无人值守硬化**:`--max-budget-usd ` 硬花费上限(按 cc cost 价格表累计每次调用成本,到顶前停下,免跑飞);`--strict-mcp-config`(只用 `--mcp-config` 服务器,忽略已注册 + IDE 桥,工具面可复现);`--replay-user-messages`(stream 输入模式回显用户消息便于转录/对账)。 - **`cc insights [id]` — 会话分析报告(`/insights` 平价)**:轮次 / 工具调用与错误率 / 时长 / token 用量 + 估算 $ 成本,纯 JSONL 复盘;比 `cc cost` 更强——从 `session_start` 回填模型为 headless 会话定价。 - **全局 `run` / `verify` 技能**:新增 `cli-bundled` 技能层(随 cc 包发布),`run`(按项目类型拉起并实跑)+ `verify`(观测真实行为给 VERIFIED / NOT VERIFIED / BLOCKED 裁决);放 CLI 自有层而非桌面 builtin,**不动桌面端「144 技能」计数**。 --- ## 2026-06-14 主线 — **全栈测试普查修复 + project-service 项目导出 UTF-8 编码 bug**(待并入下一发版) - **真实 bug 修复**:`project-service` 项目导出写 ZIP 条目时用平台默认编码(GBK 默认 JVM),导出含中文内容的项目后,UTF-8 的导入端读取时抛 `MalformedInputException`、无法回环重导入;改为始终 UTF-8 写入 + 文件内容为 null 时写空条目兜底。 - **测试套件普查**:跑通 CLI(单元/集成/e2e)、桌面(store/集成/全量单元)、Web Panel、core 包、后端 **Java**(`mvn test`)与 **Python**(`pytest`)全栈,修复全部真实失败,仅余环境受限项(需 Ollama/Qdrant 服务或 GPU 本地推理)。 - **关键修复**:CLI deprecated-shim 导出平价 + `hub` 子命令清单 + `skill sources` 4→6 层 + 24 个 e2e 文件子进程超时 15s→30s(消除 Windows 冷启动抖动);桌面内置技能计数 145→146 + 纯文档型技能白名单;后端 Java `mvn test` 32 失败→0;后端 Python `git_manager`/`code_generator` 过期断言对齐(pytest 15→41+ 通过)。 - **e2e server-readiness 二次硬化**(上一条的正交轴,commit `26a811874`):4 个 e2e 文件 16 个失败全部根因于 singleFork 满负载下子服务器冷启动慢、**就绪等待器/per-test 预算**太紧(非产品 bug——`cc ui` 独立跑约 3.3s 即就绪)。ui-command/web-panel 就绪 fallback 8s/10s→25s(旧逻辑到期静默返回空输出,级联砸 13 个测试)、coding-agent `waitForReady` 10s→25s、mtc-audit 给显式 120s、orchestrate 修 timeout 倒挂 20s→40s(旧值比子命令自身 30s 超时还短)。验证 89/89。详见内部手册 trap #31。 --- ## 2026-06-11 主线 — **cc CLI 0.162.41:Claude-Code 平价终章——项目记忆(cc.md)+ REPL steering + 结构化输出**(已发 npm,待并入下一发版) - **项目记忆体系(claude CLAUDE.md 平价,自有主名 `cc.md`)**:`cc agent` 启动自动加载 `cc.md` > `CLAUDE.md` > `AGENTS.md` 层级(用户级/项目链/local 伴随/`.chainlesschain/rules.md`/路径作用域 `.claude/rules`,`@path` 递归 import,48K/192K 预算 fail-open);`cc init` 默认改为**项目盘点**生成 cc.md(`/init` 平价,模板退 `-t`,`--ai` 用有界 agent 精炼约定),已有 CLAUDE.md 自动 `@import` 防遮蔽;`cc memory files` 查看实际加载链。 - **REPL steering 三件套 + 快捷键**:回合中输入 FIFO 排队(修掉并发回合 race)、Esc 即时中断(复用 agentLoop AbortSignal)、`/rewind` + 空闲双 Esc 会话回退(原文回填改完重发);`! ` bash 直通(输出回灌上下文)、`# ` 一键记入 cc.md、`/` 命令 TAB 补全、`/context` 实时窗口占用、`--resume` 离线恢复摘要。 - **结构化输出与生态出口**:`cc agent -p --json-schema `(回答经 JSON Schema 校验 + 自动纠错重试,stdout 只出合规 JSON);`cc mcp serve`(本机文件工具反向暴露为 MCP server,root 限域 + Bearer);`cc session export`(agent 转录 Markdown)/ `cc session search`(跨会话全文检索);启动被动版本提醒(缓存 + detached 后台刷新,热路径零网络)。 - **npm 包**:`chainlesschain` CLI 0.162.40 → 0.162.41 已发 npm(发布产物全局安装实测:init 盘点/记忆链/json-schema/mcp serve 全通)。 --- ## 2026-06-11 主线 — **IDE 实时感知:选区/打开文件随 prompt 自动注入 + 编辑后诊断自动回喂**(待并入下一发版) - **提交时自动共享编辑器状态**:IDE 桥接连上后,每条 prompt(headless / stream / REPL)自动附带 `` 块——活跃文件、打开标签页、当前选中代码,模型即时知道"你正看着什么",无须手动粘贴;只进在途消息、不写会话持久化(`--resume` 回放原话)。 - **编辑后诊断自动回喂**:agent 改完文件,编辑器语言服务器的 error/warning 自动回流到工具结果,模型在同一循环内看到并修掉刚引入的报错。 - **开关与测试**:`CC_IDE_CONTEXT=0` 一键关闭;新增 37 项测试(31 单测 + 4 集成 + 2 真进程 e2e,全部免编辑器宿主可跑)。 --- ## 2026-06-18 — **好友 P2P 加密语音 / 视频通话(FAMILY-67,Android)** > 在好友端到端加密消息(FAMILY-67)之上补齐 **1:1 实时语音 / 视频通话**:纯 P2P + DTLS-SRTP 端到端加密,信令复用既有信令服务器中继(与消息同一好友 DID 路由),媒体走独立 WebRTC PeerConnection。设计文档 [`docs/design/FAMILY-67_Friend_P2P_AudioVideo_Call_Design.md`](docs/design/FAMILY-67_Friend_P2P_AudioVideo_Call_Design.md) §10。 - **P0 信令状态机**:`CallManager`(呼叫/响铃/接听/拒接/挂断 + glare 双呼仲裁 + 超时)+ `CallSignalingClient`(`call:*` 信令经信令服务器中继,DataChannel 没建过也保送达)。 - **P1 语音**:独立媒体 `PeerConnection`(复用消息侧 `PeerConnectionFactory` + ICE/TURN 配置)+ 音频路由(`MODE_IN_COMMUNICATION` + 听筒/扬声器)。 - **P2 视频**:懒建带 `EglBase` + 编解码工厂的视频版 `PeerConnectionFactory`,前置摄像头采集 + 远端全屏 + 本地 PiP + 摄像头翻转。 - **P3 后台/锁屏**:来电前台服务(`microphone|camera`,保锁屏/熄屏麦克风不被杀)+ 全屏来电通知(越锁屏点亮屏幕 + 接听/拒接)+ 接近传感器贴耳息屏。 - **测试**:状态机/信令/集成(Robolectric)/握手 e2e 共 **34 个 JVM 单测全绿**;真机双向音视频 + 锁屏来电验收需两台真机。 ## 2026-06-14 发布 — **v5.0.3.110:个人数据中台采集器扩面 — 13 个新平台 adapter(出行 / 购物 / 社交 / 文档 / 音乐 / 视频 / 招聘)** > 一轮 `/loop` 把 PDH 采集覆盖补齐:完成阶段所有 ≥⭐⭐⭐ 平台 + 可行的长尾全部落地。逐项明细见 [CHANGELOG.md](CHANGELOG.md)。 - **新增 13 个采集 adapter**:同程旅行 / 滴滴企业版 / 大众点评 / 知乎 / CSDN / WPS 云文档 / 腾讯文档 / 百度网盘 / 酷狗音乐 / 爱奇艺 / 腾讯视频 / BOSS 直聘(每个均 snapshot + cookie-api 双模)。 - **3 个同形平台共享工厂**:`_document-base`(文档/云盘)、`_video-base`(视频观看史),复用既有 shopping/travel/im base 模式。 - **已发布**:`@chainlesschain/personal-data-hub` 0.4.18 + CLI 0.162.60(npm);Android cc bundle → `internal-binaries-android-v20260614b`(携全部新 adapter)。 - **版本面**:productVersion v5.0.3.109 → v5.0.3.110 / desktop 5.0.3-alpha.110 / Android versionCode 503110 · USR_VERSION 36 → 37 / iOS CFBundleVersion 110。 --- ## 2026-06-14 发布 — **v5.0.3.109:修复 Android 发布 APK 缺 cc bundle(release.yml 补 downloadInternalBinaries + 硬验证 gate)** > v5.0.3.108 真机验证发现发布的 APK 不含 `cc-cli.tgz`(设备上 local-terminal/cc 不可用)。根因:release.yml 只跑 `assembleRelease`,`downloadInternalBinaries` 的 preBuild dependsOn 在 CI 不触发。逐版完整明细见 [CHANGELOG.md](CHANGELOG.md)。 - **修复**:build-android 在 assemble 前独立跑 `downloadInternalBinaries`(保证 cc-cli.tgz 落盘),build 后加硬 gate(`unzip -l apk | grep cc-cli.tgz` 缺则 fail),杜绝再发无 bundle 的 APK。 - **纯打包修复**:bundle 内容不变(pdh 0.4.6 / internal-binaries-android-v20260613 / USR_VERSION 25)。 - **版本面**:productVersion v5.0.3.108 → v5.0.3.109 / desktop 5.0.3-alpha.109 / Android versionCode 503109 / iOS CFBundleVersion 109。 --- ## 2026-06-13 发布 — **v5.0.3.108:个人数据中台拼多多采集补全(snapshot-only → cookie-api,anti_token signProvider seam)+ Android cc bundle v20260613(pdh 0.4.6 / cli 0.162.48)** > 拼多多是购物三联里最后一个仅 user-export 快照、无自动采集路径的适配器;本版补齐 cookie-api 主动采集,与 taobao/jd/meituan 平价。逐版完整明细见 [CHANGELOG.md](CHANGELOG.md)。 - **拼多多 `shopping-pinduoduo` cookie-api(v0.2.0)**:`_syncViaCookie` 经注入 `fetchFn` 拉 `transaction_list`;anti_token 签名经 `signProvider` seam 注入(Android 端 WebView JS VM 产出);`orderToRecord` 映射字段(snake/camel 双兼容)+ 分→元 + 状态映射;`extractOrders` 容错嵌套;分页 watermark 提前停。capabilities 升 `sync:cookie-api`;+13 测试,PDH 全套 2094 通过 / 9 跳过。 - **发版链**:pdh 0.4.5 → 0.4.6 + CLI 0.162.47 → 0.162.48 已发 npm;Android cc bundle `internal-binaries-android-v20260613`(pdh 0.4.6)+ `USR_VERSION 24 → 25` + `binariesVersion 20260612 → 20260613`。 - **版本面**:productVersion v5.0.3.107 → v5.0.3.108 / desktop 5.0.3-alpha.108 / Android versionCode 503108 · USR_VERSION 24 → 25 / iOS CFBundleVersion 108。 --- ## 2026-06-12 发布 — **v5.0.3.107:个人数据中台 FAMILY-23 家庭守护采集器 v0.2 live fetcher 全收口(作业帮 / 华为学习中心 / 支付宝)+ Android cc bundle v20260612(cli 0.162.46 / pdh 0.4.5)** > 本版收口个人数据中台「家庭守护 telemetry」最后 3 个仅快照占位的采集器,使其具备主动 live 采集能力。逐版完整明细见 [CHANGELOG.md](CHANGELOG.md)。 - **FAMILY-23 采集器 v0.2(snapshot + live 双路)**:作业帮 `edu-zuoyebang`(ZYBUSS cookie → 学习/搜题记录)、华为学习中心 `edu-huawei-learning`(华为账号 cookie → 课程学习记录)、支付宝 `finance-alipay`(会话 cookie → mobilegw 账单明细,签名 seam + 金额元→分 + 收支方向推导,高敏感闸不变)。三者补齐 `sync:cookie` + `_syncViaLive`(normalize 不变),新增共享 `_live-json-helpers.js`。 - **测试**:+39(3 套 live 测试钉请求构造+解析契约),PDH 全套 128 文件 2083 tests 全绿。端点 best-effort(多字段名兼容,未实地验证,漂移时改 api-client 常量)。 - **Android in-APK cc bundle 刷新**:`internal-binaries-android-v20260612`(cli 0.162.46 + pdh 0.4.5,内核实测)+ `USR_VERSION 23 → 24`;真机装新 APK 触发 `LocalFilesystemBootstrapper` sentinel 23→24 重提取。 - **npm 包**:`chainlesschain` CLI 0.162.45 → 0.162.46 + `@chainlesschain/personal-data-hub` 0.4.4 → 0.4.5 已发 npm。 - **版本面**:productVersion v5.0.3.106 → v5.0.3.107 / desktop 5.0.3-alpha.107 / Android versionCode 503107 · USR_VERSION 23 → 24 / iOS CFBundleVersion 107。 --- ## 2026-06-11 发布 — **v5.0.3.106:PDH 快手 api_ph base64 采集修复 + 高德标题 bug + 全适配器测试收口(pdh 0.4.4 / cli 0.162.40)+ Android cc bundle v20260611(真机实证重提取)** > 本版以 PDH 个人数据中台采集层为主线。逐版完整明细见 [CHANGELOG.md](CHANGELOG.md)。 - **PDH 采集修复(pdh 0.4.4)**:新版快手 `kuaishou.web.cp.api_ph` cookie 改为 base64(JSON),加 `apiPhDecodeCandidates` 解码链恢复 profile 采集;travel-base `buildTitle` 加 `name` 三级回退修高德所有行程事件标题 `car: ? → ?`;订正头条/快手/邮箱 3 处过时注释。 - **测试矩阵全收口(+180)**:小红书 ADB 三件套 58 + 出行 6 模块 74 + whatsapp/shopping-base 24 + 快手 base64 9 → **全仓 55 适配器测试覆盖 100%**。 - **Android in-APK cc bundle 刷新 + 真机验证**:`internal-binaries-android-v20260611`(pdh 0.4.4 + cli 0.162.40)+ `USR_VERSION 21 → 22`;真机(Xiaomi amethyst)实证装新 APK 触发 `LocalFilesystemBootstrapper` sentinel 17→22 重提取,设备上 pdh=0.4.4 + 两处修复 grep 命中。 - **npm 包**:`chainlesschain` CLI 0.162.39 → 0.162.40 + `@chainlesschain/personal-data-hub` 0.4.3 → 0.4.4 已发 npm。 - **版本面**:productVersion v5.0.3.105 → v5.0.3.106 / desktop 5.0.3-alpha.106 / Android versionCode 503106 · USR_VERSION 21 → 22 / iOS CFBundleVersion 106。 --- ## 2026-06-10 发布 — **v5.0.3.105:cc agent MCP prompts/resources + SubagentStop hook + --fork-session(CLI 0.162.38)+ Android cc 内置 bundle 刷新** > 把 v5.0.3.104 之后 2026-06-10 的 CLI 平价主线固化为一次正式发版。逐版完整明细见 [CHANGELOG.md](CHANGELOG.md)。 - **cc CLI 0.162.38(Claude-Code 平价三连)**:MCP prompts 作为 slash 命令 + MCP resources 暴露给 agent/REPL;`SubagentStop` settings.json hook;`cc agent --fork-session`(复制既有会话为新分支继续)。 - **Android in-APK cc bundle 刷新**:`cc-cli.tgz` 重建(cli 0.162.38 + pdh 0.4.3)→ 新内部二进制 release(binariesVersion 20260610)+ `USR_VERSION 20 → 21`,补上 v5.0.3.101 以来 APK 内置 cc 跑旧代码的缺口。 - **Tests / CI**:CLI e2e 共享 helper(testHome + freePort,Layer 2)+ e2e 隔离/重试 CI 加固 + 桌面端 10 个 stale 单测修复。 - **Docs**:docs-site 补全 14 个 CLI 命令用户文档 + 全站数字对账(155 命令/145 技能/25 Android)。 - **npm 包**:`chainlesschain` CLI 0.162.38 已发 npm + `@chainlesschain/personal-data-hub` 0.4.3(沿用)。 - **版本面**:productVersion v5.0.3.104 → v5.0.3.105 / desktop 5.0.3-alpha.105 / Android versionCode 503105 · USR_VERSION 20 → 21 / iOS CFBundleVersion 105。 --- ## 2026-06-10 发布 — **v5.0.3.104:CLI 0.162.37(IDE 桥接收官聚合版)+ 全平台版本对齐 + docs/品牌清扫**(补记) > (补记)本版主体:CLI 0.162.37 发 npm;iOS/Android/desktop 版本对齐;VS Code 扩展 Open VSX 自动发布 CI + 图标重绘;JetBrains buildPlugin 修复;docs-site 新增 8 个 CLI 用户文档页 + Family Guard 用户页;发布文档脱敏;桌面端 vitest-4 stub bug + 12 个 stale 测试修复。逐版完整明细见 [CHANGELOG.md](CHANGELOG.md)。 --- ## 2026-06-10 发布 — **v5.0.3.103:cc loop(/loop 平价)+ IDE 桥接 Phase 3/4(JetBrains 平价 + 发布基建)+ VS Code 扩展可视化与品牌化** > 把 v5.0.3.102 之后 2026-06-10 的工程主线固化为一次正式发版。逐版完整明细见 [CHANGELOG.md](CHANGELOG.md)。 - **cc loop(Claude-Code `/loop` 平价)**:固定间隔循环执行 prompt / slash 命令 + `--dynamic` 自定步速(含 prompt 模式 agent flag 透传)+ `--save` / `--resume` 会话持久化 + headless(非 TTY)下稳定运行。 - **IDE 桥接 Phase 3(JetBrains 平价)**:纯 JDK 协议核(MiniJson / McpServer / LockfileWriter / IdeTools)+ IntelliJ glue,CLI 零改动双证 + 跨语言 interop 实跑验证;REPL 中 IDE 自动连接遵循 `--ide` / `--no-ide`。 - **IDE 桥接 Phase 4(发布与维护基建)**:`ide-extensions.yml`(vsce package/publish + gradlew buildPlugin/publishPlugin,tag + secret 双门控,不建 GitHub Release,缺 secret fail-fast)+ LICENSE/CHANGELOG + 发布文档。 - **VS Code 扩展可视化与品牌化**:IDE 桥接可视化(状态栏 + 侧边栏 + 仪表板,0.2.0)+ ChainlessChain 品牌 logo 作为扩展图标与 Activity Bar 图标(0.2.1)。 - **npm 包**:`chainlesschain` CLI 沿用 0.162.36 + `@chainlesschain/personal-data-hub` 0.4.3(已发 npm)。 - **版本面**:productVersion v5.0.3.102 → v5.0.3.103 / desktop 5.0.3-alpha.103 / Android versionCode 503103 / iOS CFBundleVersion 103。 --- ## 2026-06-10 发布 — **v5.0.3.102:IDE 桥接落地(cc ide + VS Code 扩展)+ cc 命令行 Claude-Code 平价收官 + cc agent 多模态视觉输入** > 把 cc 命令行向 Claude Code 的平价能力收官,并新增 IDE 桥接与多模态视觉输入。逐版完整明细见 [CHANGELOG.md](CHANGELOG.md)。 - **IDE 桥接落地**:新增 `cc ide` 命令 + VS Code 扩展,自动发现并连接编辑器内置的 MCP server,支持 `openDiff` 接受/拒绝往返(CLI 命令数 149 → 150)。 - **cc 命令行 Claude-Code 平价收官**:MCP OAuth 远程授权、自定义及内置上下文用量状态栏、输出风格、`web_search` 可插拔搜索、扩展思考、`settings.json` 全事件 hooks 及 block 语义、headless `agent -p`、`/compact` 自动压缩、`cc checkpoint` 双引擎、权限规则。 - **cc agent 多模态视觉输入**:`cc agent --image`(自动使用配置的视觉模型)。 - **npm 包**:`chainlesschain` CLI 0.162.36 已发 npm。 - **版本面**:productVersion v5.0.3.101 → v5.0.3.102 / desktop 5.0.3-alpha.102 / Android versionCode 503102 / iOS CFBundleVersion 102。 --- ## 2026-06-09 发布 — **v5.0.3.101:CLI Claude-Code 平价收尾 + PDH 微信4.0/QQ-NT 一键采集 + 安全 fail-closed 套件** > 把 v5.0.3.100 之后累积的工程主线固化为一次正式发版。逐版完整明细见 [CHANGELOG.md](CHANGELOG.md)。 - **CLI 向 Claude-Code 平价收尾**:headless `agent -p` 全家桶(`--output-format` / `--max-turns` / `--allowed-`/`--disallowed-tools` / `--permission-mode` / stdin / `--input-format stream-json` / `--system-prompt` / `--add-dir` / `--fallback-model`)+ `@file` 引用在 `ask`/`chat` 平价 + `cc cost` token 计费(可 `llm.pricing` 覆盖)+ 文件态 `cc checkpoint`/rewind。 - **CLI agent 能力扩展**:扩展思考 `--think` / `--ultrathink` / `--thinking-budget`(Anthropic,自适应 effort 与 legacy budget 自动择一)+ 多模态图像输入 `--image`(png/jpg/gif/webp,按 provider 转换:OpenAI 兼容透传 / ollama / anthropic)+ 内置 `web_search` 工具(可插拔搜索源:tavily/brave/bocha/千帆 + 免 key DuckDuckGo/百度)。 - **PDH 微信 4.0 完整采集 + QQ-NT 一键解密/解析**:微信 4.0 每库独立密钥 + zstd 消息体 + 公众号/朋友圈/收藏 + 非文本人话化;QQ-NT 端到端解密 + protobuf 解析(真机 `nt_msg.db` 验证)+ 名称补全(uin→昵称 / 群号→群名)+ `pdh-im-collect` 内置技能。 - **安全 fail-closed 套件(审计跟进)**:SAML 签名 + OAuth id_token + 通道消息签名 + permission-ipc DB 回退全部 fail-closed,删硬编码 "123456",渲染层 `days` 入参净化。 - **U-Key 口令托管层(Phase 3,默认 gated OFF)** + **桌面 DB/LLM 性能面板 V6 端口接通**(db-performance IPC 此前从未注册现接通)。 - **npm 包**:`@chainlesschain/personal-data-hub` 0.4.2 → 0.4.3 + `chainlesschain` CLI 0.162.31 → 0.162.32(待发 npm)。 - **版本面**:productVersion v5.0.3.100 → v5.0.3.101 / desktop 5.0.3-alpha.101 / Android versionCode 503101 · USR_VERSION 19 → 20 / iOS CFBundleVersion 101. --- ## 2026-06-08 发布 — **v5.0.3.100:个人数据中台采集大更新 + CLI 发布通道修复** > v5.0.3.99 把个人数据中台(PDH)采集能力大幅扩容并真机生效;v5.0.3.100 把其后的打包工作固化为一次正式发版(全平台 18 产物已 ship,GitHub Release v5.0.3.100 已发布)。逐版完整明细见 [CHANGELOG.md](CHANGELOG.md)。 - **PDH 采集大更新(v5.0.3.99)**:adapter **readiness** 止血(从宽松 `healthCheck` 分离真正「就绪」判定,解决「配置正常却采不到」死角)+ 桌面/移动端「一键采集 / 导入引导」UI + 新接通多家本地直读源(抖音 / 微信电脑版 / QQ-NT / 钉钉 / 飞书 / Apple 健康 / 网易云音乐 / 微信读书)+ email 账单 LLM 补全(Phase 5.5)+ iOS 加密备份解密(Phase 7.5b)。当前 PDH 共 **51 adapter / 121 测试文件 / 2040 测试**。 - **DB 静态加密默认开启(v5.0.3.99)**:`PHASE_1_5_DEFAULT_ON=true` 落盘即加密(preflip 自动化闸门全绿)+ DID keystore 打包态 fail-closed。 - **Android「AI 陪学」接入界面(v5.0.3.99)**:M9 积分引擎 + M10 家长温和度月报 + M5 任务可见 UI 接成家庭 tab 可交互入口;陪伴 tab 复用 core-security KeystoreFacade TEE 加密落盘。 - **CLI npm 发布通道修复(v5.0.3.100)**:`prepublishOnly → build:web-panel` 在 `npm publish` 下因父进程泄漏 `npm_config_local_prefix` 把依赖装错位置 → 隔离 temp 构建 + scrub `npm_config_*` env 修复,CLI 从此可正常发版。 - **npm 包**:`@chainlesschain/personal-data-hub` 0.4.1 + `chainlesschain` CLI 0.162.30 已发布并验证安装。 - **版本面**:productVersion v5.0.3.98 → v5.0.3.100 / desktop 5.0.3-alpha.100 / Android versionCode 503100 / iOS CFBundleVersion 100。 --- ## 2026-05-24 收口 — **PDH Phase 17:桌面本机数据五件套 land** > 一轮把 PDH 从"主要采社交/订单/出行"扩展到 **覆盖桌面本机日常数据流**:浏览器(Chrome + Edge)/ 开发工具(VSCode)/ 系统活动(Win Recent)/ Android 媒体清单。**全部 desktop-local file-import 模式 — 零扩展、零网络、零账号** — 复用既有 PDH adapter 契约 + LocalVault 加密存储 + AdapterRegistry 调度链。 - **5 新 adapter(commits `126ec9683` / `8b053843a` / `c923f627b` / `3c1e55559` / `21e125e1ee`)**: - **`browser-history-chrome` v0.1.0** — `%LOCALAPPDATA%\Google\Chrome\User Data\Default\{History,Bookmarks}` SQLite 复制读 + JSON 解。真机:14689 visits + 27 bookmarks。 - **`browser-history-edge` v0.1.0** — Chromium 子类继承(仅覆盖 `_browserConfig()` 指向 Edge profile)。真机:2022 visits。 - **`vscode` v0.1.0** — workspaceStorage/\*/workspace.json + globalStorage/state.vscdb terminal.history. 真机:22 工作区 + 32 命令 + 13 路径。 - **`win-recent` v0.1.0** — `%APPDATA%\Microsoft\Windows\Recent\*.lnk` 跨应用打开时间线。真机:52 .lnk。 - **`system-data-android` v0.2.0 → v0.3.0** — ADB 直采加 `media.list` (5 类 /sdcard 目录) + per-category include 门控。真机:3751 文件清单。 - **测试三层完整覆盖**: - 单测 76 新(chrome 17 / edge 7 / vscode 19 / win-recent 13 / SDA v0.2/v0.3 专项 5 + 助手 15)— 全绿 - 整合测:`__tests__/integration/local-data-adapters-pipeline.test.js` 6 测验 4 adapter 真走 LocalVault + AdapterRegistry round-trip + 跨 adapter source-tagged 分布断言 - E2E:`__tests__/e2e/local-data-adapters-cli.e2e.test.js` 2 测 spawn `cc hub list-adapters --json` + `cc hub sync-adapter win-recent --json`,sandbox APPDATA 防污染用户 vault - 本地 Win 测试 skip 干净(bs3mc 已知 ABI v140 vs Node 22/24 不匹配),CI Linux 真跑 - **3 wiring 全 land**:CLI `personal-data-hub-wiring.js` + desktop `wiring.js` + WS `BRIDGE_PREFERRED` skip-list 都同步加 5 adapter(避免误走 ADB auto-pull)。`categories.js` + `pdhCategories.js` 加 `browser-*` / `vscode` / `win-recent` → `system` 分类规则。 - **bug 修**:4 个 stale `system-data-android.test.js` 测试 — sensitivity medium→high / mock bridge 加 sms/call/media 3 method stub。22 旧 + 5 新 v0.2/v0.3 = 27 全绿。 - **文档**:`Personal_Data_Hub_Architecture.md` 加 v0.4 entry + Phase 17 行;本 README 加本章。 memory 沉淀(无新增):本轮所有 adapter 走既有 file-import 模式,无新 trap。Win bs3mc ABI 困境已在 `pdh_plan_a_android_standalone_design.md` §"bs3mc NODE_MODULE_VERSION mismatch" 记录。 --- ## 2026-05-22 收口 — **PDH v0.2 大爆发:11 平台真接通 + WeChat / QQ 真采集 + Android 端侧 LLM 骨架 (v5.0.3.80)** > 一日内把 PDH 从 v0.1(Bilibili 一家) 推到 **v0.2 真接通 11 平台**:社交内容 (微博/抖音/小红书/头条/快手) + 购物 (京东/美团/拼多多/淘宝/支付宝) + 出行地图 (高德/携程/百度地图/腾讯地图) + AI 助手 9 路 WebView (DeepSeek / Kimi / 通义千问 / 智谱清言 / 腾讯混元 / 文心一言 / 字节扣子 / 即梦 / 豆包) + 邮箱 4 家 IMAP (QQ / Gmail / 163 / Outlook via Jakarta Mail) 真接通。WeChat Phase 12.10 4 子阶完成 — SQLCipher 真解密 + frida-inject 真注入 + 16.5.9 binary vendored + APK ship 到 Xiaomi 真机;QQ Phase 13.5 v0.2 — XOR-IMEI 算法 byte-identical sjqz 移植,无需 SQLCipher 无需 frida,仅 root + IMEI。Android 端侧 LLM 全链路 skeleton 落地 (Ktor server + ModelManager + cc spawn + PDH 本机提问 tab)。 - **平台 v0.2 升级一览(11 placeholder 卡 → 真接通)**: - 社交内容:微博 (`c087c36eb`) / 抖音 (`20f9b2188`) / 小红书 (`20f9b2188`) / 头条 (`e1155b1d7`) / 快手 (`e1155b1d7`) — 全 dual-mode (Android in-app snapshot + 桌面 cookie) - 购物:京东/美团 dual-mode (`f3cbd0693`) / 拼多多 SAF JSON (`78695c25e`) / 淘宝 HTML + 支付宝 CSV (`799e364f0`) - 出行地图:高德/携程 cookie-scrape WebView (`0fe572f2`) / 百度地图/腾讯地图 (`3d1cf9481`) - AI 助手:9 路 WebView cookie scrape + cc sync wire (`1e7725552`);8 卡 enable (`20e0318b4`) - 邮箱:QQ/Gmail/163/Outlook 4 家 IMAP 真 Jakarta Mail 接通 (`7777f5bec`) - **WeChat in-app collector Phase 12.10 (4 sub-phase 全 land)**:12.10.1+12.10.2 scaffold (`8c52d5963`) → 12.10.3 SQLCipher 真解密 (`8081f8a0d`) sjqz MD5(IMEI+UIN)[:7] 7.x + frida 64-hex 8.x 双路径 + 3 PRAGMA profile fallback + WAL+SHM cohort → 12.10.4 frida-inject (`37a4e465d`) spawn /data/local/tmp/cc-\* + 5-symbol hook → 12.10.6 prereq vendor frida 16.5.9 arm64+armeabi-v7a APK ship (`cdfe1048e`)。Phase 12.10.5 cc syncAdapter wechat --input wire 早 land。剩 12.10.6 真机 E2E 需 root 机子 + Magisk。 - **QQ Phase 13.5 v0.2 (`a07731b46`)**:XOR-IMEI 算法 byte-identical sjqz `qq.py` 移植。**与 WeChat 路径根本不同** — QQ Android 用普通 SQLite + msgData 每行 IMEI XOR-cycle 加密,不需要 sqlcipher-android 不需要 frida — 仅 root + IMEI 输入。4 Kotlin (QQXorDecryptor / QQCredentialsStore / QQDbExtractor / QQLocalCollector) + 27 Kotlin unit tests + JS 13 snapshot + 6 longtail 全绿。 - **A3 Android 端侧 LLM 全链路 skeleton (724 LOC)**:Ktor LLM server :11434 + ModelManager + cc spawn 内嵌 OllamaClient (`f41f06441`) + KotlinLlamaCppEngine 骨架 (`8f023052a`)。架构 HTTP-Hybrid (Kotlin Ktor ↔ in-APK cc OllamaClient)。剩 Maven deps + JNI + 真机 ~5-7d (需 Mac/Linux + Android NDK)。 - **三道锁 UI + 真接通**:拒云 / 销毁 / 导出 — `cc hub export` 真接通;D11 SAF picker 升级到用户选位置 (`7e4fa844f`)。 - **AI 给出处真接通** (`3a76ee5e4`):`cc hub event-detail` + citation chip 点击跳事件详情 sheet。 - **release.yml 链路修复** (`12d1391d1`):split workspace deps publish 前置 job — 解 v5.0.3.79 desktop build chicken-and-egg。 - **测试基线刷新**:93 新 snapshot tests (weibo 8 / douyin 8 / xhs 8 / toutiao 8 / kuaishou 8 / jd 8 / meituan 8 / pinduoduo 8 / baidu-map 8 / tencent-map 8 / qq 13) + WeChat Phase 12.10 51 新单测 + QQ Phase 13.5 27 Kotlin 单测。同日 3 stale-assertion fix(longtail Douyin uid / analysis TOTALS regex / hub-command 子命令快照)— 156/156 PDH snapshot + 101/101 desktop PDH + 87/87 CLI hub 全绿。 - **版本面**:productVersion v5.0.3.78 → v5.0.3.80 / CLI 0.162.14 → 0.162.16 / npm `@chainlesschain/personal-data-hub` 0.2.1 → 0.2.3 / Android versionCode 503080 / iOS CFBundleVersion 80。 memory 沉淀:`android_wechat_collector_phase_12_10.md`(8 trap + 5 真机 blocker)+ `android_qq_collector_phase_13_5.md`(10 trap)+ `pdh_a8_weibo_v0_2_landed.md` + `pdh_a3_skeleton_landed.md` + `wechat_frida_hook_audit_traps.md`。完整 PDH v0.2 路线见 [`docs/chainlesschain/personal-data-hub.md`](docs-site/docs/chainlesschain/personal-data-hub.md) 与 [`docs/design/PDH_Article_Implementation_Plan.md`](docs/design/PDH_Article_Implementation_Plan.md)。 --- ## 2026-05-22 收口(earlier) — **PDH A8 v0.1:Android 完全独立社交数据采集(Bilibili 端到端 + 3 平台占位)** > Plan A v0.1 的 "本机数据" tab 从 1 张卡(system-data-android)扩展到 5 张。Bilibili 端到端 ship(WebView 登录 + OkHttp 4 端点 + 本机 SQLCipher vault),微博/抖音/小红书占位卡片(**v0.2 已完成 — 见上**)。**全程不依赖桌面在线** — Android 内完成 cookie 抓取 + HTTP 拉取 + JSON 解析 + 本机加密存储。 - **Bilibili 端到端**:`packages/personal-data-hub/lib/adapters/social-bilibili/{adapter,index}.js` JS adapter 重构(stateless constructor + 新 `_syncViaSnapshot(opts.inputPath)` 模式 + 保留 legacy sqlite-mode)+ 4 个 Kotlin 文件(`SocialCookieWebViewScreen` 通用 4 平台共用 / `BilibiliApiClient` OkHttp 4 endpoint / `BilibiliCredentialsStore` EncryptedSharedPreferences AES-256-GCM / `BilibiliLocalCollector` 编排器)。4 类事件(观看历史/收藏/动态/关注)yield + normalize 进 vault。 - **HubLocalScreen 多卡片重构**:5 张 adapter 卡片 + login WebView overlay + `globalSyncingAdapter` 互斥锁。微博/抖音/小红书显示 "v0.2 开放" 状态,点登录/同步触发 toast。 - **CLI + Desktop wiring 双 land**:`packages/cli/src/lib/personal-data-hub-wiring.js` + `desktop-app-vue/src/main/personal-data-hub/wiring.js` 同步加 `BilibiliAdapter` stateless 自动注册。**Adapter tab 现在也显示 2 张卡**(system-data-android + social-bilibili)。 - **测试覆盖**: - **JS unit**: 12 新 snapshot-mode 测试 (`social-bilibili-snapshot.test.js`) + 4 legacy sqlite-mode 测试重写 (`social-adapters.test.js` flat payload 形状) = 547/547 全绿 - **JS integration**: 6 新测试 (`integration/social-bilibili-pipeline.test.js`) 真 vault end-to-end + idempotency + partial + schemaVersion mismatch - **Kotlin unit**: 14 `BilibiliApiClientTest` (MockWebServer) + 8 `BilibiliLocalCollectorTest` (mockk) + 15 `HubLocalViewModelTest` = 37 新测试 - **Android E2E**: 8 场景 `@Ignore + TODO()` stub + 完整 plan `docs/design/A8_Bilibili_E2E_Plan.md`(Mac/Linux + 真机 + 真账号 ~1.5h 串行) - **bug 修复**:(1) BilibiliApiClient `extractUid` 加 `> 0L` 哨兵 — Bilibili 不发 uid=0,旧实现会把 mid-logout cookie 当合法登录 (2) JS adapter sqlite-mode 旧 `payload.row.X` 套层改 flat `payload.X` — 既有 4 test 同步迁移 - **设计文档**:[`docs/design/Adapter_Social_Cookie.md`](docs/design/Adapter_Social_Cookie.md) ~400 行(4 平台对比 + snapshot schema + JS/Kotlin layer 模板 + 7 forward-looking traps)+ [`docs/design/A8_Bilibili_E2E_Plan.md`](docs/design/A8_Bilibili_E2E_Plan.md) ~200 行 - **架构关键差异澄清**:Android 上 PDH 有**两条**路径长期被混淆:(a) Adapter tab → 桌面依赖(RemoteCommandClient → 桌面 hub registry)(b) **本机数据 tab → APK 内 cc + 本机 SQLCipher vault(完全离桌面)**。A8 全落到后者,对应"不依赖桌面"诉求。 memory 新增 `pdh_a8_social_adapters_landing.md`:7 forward-looking traps (WBI 签名 / EncryptedSharedPref keystore corruption / flat payload vs legacy row / in-APK bundle audit / DedeUserID 提取位置 / OkHttp baseUrl override 时序 / CookieManager flush 同步语义)。**v0.2 路线**:微博 ~1.5d / 抖音 ~2d(msToken+X-Bogus 签名)/ 小红书 ~2d(X-s 签名)≈ ~5d 总工期。 详见 [`docs/design/Adapter_Social_Cookie.md`](docs/design/Adapter_Social_Cookie.md)。 ## 2026-05-21 收口 — **PDH Phase 14.1 step 5 ChatBubble UI + Phase 12.9 WeChat 真机 E2E Runbook + office-skill word lib hotfix (v5.0.3.76 → v5.0.3.77 iOS .ipa re-ship)** > v5.0.3.76 维护批:office-skill 真功能修 + 3 站全量文档刷新(v5.0.3.76 sizes/版本号);并把 PDH Phase 14 Android 端 ChatBubble UI 收尾 + 新增 WeChat Phase 12.9 真机验收 runbook 一并推到 docs.chainlesschain.com / design.chainlesschain.com。**v5.0.3.77 是 .76 的 iOS .ipa re-cut**(.76 release run #1 build-ios 失败 + finalize 自动 flip 已发布 → run #2 .ipa 上传被 GitHub immutable-releases blocked;tag burn 走 [github_immutable_release_tag_burn 流程](docs/internal/hidden-risk-traps.md),重新 cut .77 全 18-asset 干净 ship 一次)。 - **Phase 14.1 step 5(Android)— ChatBubble UI**:`HubAskScreen` 把 flat `Surface + plain text` 升级成 `HubChatBubble`(左下 4dp / 右下 4dp 不对称圆角 = 经典 bubble tail;assistant `secondaryContainer` 左对齐 + user `primaryContainer` 右对齐;max width 320dp 防长答案撑屏)+ `HubBlinkingCursor`(500ms reverse-fade `▎`)填充 in-flight 推理态。`HubAskUiState` 加 `submittedQuestion` field 把「输入框实时内容」与「已提交问题快照」解耦,bubble 显示历史问的同时用户可继续编辑下一题。+2 单测覆盖 submit 快照与 clear 重置;`HubAskViewModelTest` 累计 10/10 + PDH 5-file 总 44/44 全绿(pure UI/state,无 IPC 改动;framework 全 reuse Phase 5 iOS pattern)。Streaming token-by-token wire-up 仍 defer 待 Phase 14.5。 - **Phase 12.9 WeChat 真机 E2E Runbook (新设计文档)**:`docs/design/Personal_Data_Hub_Phase_12_9_WeChat_RealDevice_E2E_Runbook.md` ~21 KB。11 场景验收(首次 ingest / 解密 spot-check / ask Q&A / citation 反查 / 5 万条性能 / 增量 / hook resilience / 反检测 / 失败恢复 / 隐私 gate / 24h 长稳)+ 6-8h 执行预估 + dataset 量级门槛(≥ 5w 条 message 才能上 §12.9.5 大库基准)。与既有 `Adapter_WeChat_SQLCipher_Frida_Setup.md`(setup-only)+ `Personal_Data_Hub_E2E_Runbook.md §11`(注册流程)三件套构成 Phase 12.6 完整验收链。 - **office-skill bug fix(`aabe7d0f7`)**:(1) `readWord` stub 替换为真实 `mammoth` 实现(之前 stub 让 Word 解析路径 silently 返空);(2) wordLib cache 与 paragraph cache 拆分 + 修 paragraphs silent drop。 - **3 站文档全量刷新**:docs-site `chainlesschain-docs-v5.0.3.76` 487 HTML / docs-site-design `design-docs-v5.0.3.76` 200 + Phase 12.9 HTML / docs-website-v2 v5.0.3.76 sizes 真值(11 平台 size 全 sync gh release)+ 「144 条 CLI 命令 / 141 内置 Skills」反 stale(之前 dist baked 112/139)。两 sync 脚本 ROOT_FILE_MAP 加 Phase 12.9 显式映射 防 unmapped 文件 silent 落 `unknown-unmapped.md` 互相覆盖(per memory `docs_site_sync_unmapped_fallthrough`)。 测试摘要:本轮验过 5 个 PDH Android 测试类 44/44 + 桌面 PDH 4 文件 93/93 + WeChat 适配器 8 文件 107/107 + mobile-skill-whitelist + unified-config-manager 17/17 = **19 文件 / 261 测试 / 0 失败**。E2E(Phase 14.4 + Phase 12.9)需 Mac+iPhone+Xiaomi+真桌面 + Xiaomi+Frida-server,Win 单 dev box 不能跑,已 follow-up。 详见 [`docs/design/Personal_Data_Hub_Phase_14_Mobile_Native_Entry.md`](docs/design/Personal_Data_Hub_Phase_14_Mobile_Native_Entry.md) 与 [`docs/design/Personal_Data_Hub_Phase_12_9_WeChat_RealDevice_E2E_Runbook.md`](docs/design/Personal_Data_Hub_Phase_12_9_WeChat_RealDevice_E2E_Runbook.md)。 ## 2026-05-21 收口 — **WeChat Phase 12.6.7-10:bootstrap 编排层 + IPC/WS + cc hub wechat CLI + Vue UI 向导 (v5.0.3.75)** > WeChat 8.0+ frida-dep 路径一晚从零件凑齐到端到端可用全收口(§18.7 的 6 sub-phase 之上加 4 个新 sub-phase)。 - **12.6.7 bootstrap.js**:把 env-probe → KeyProvider 选择 → WechatAdapter ctor 拼成单入口,IPC/WS/CLI 三 caller 不再各自重发明 wiring。md5/frida/unsupported 决策矩阵 + `opts.keyProviderOverride` 旁路 + 全注入 test seam(`_probe` / `_md5Provider` / `_fridaProvider` / `_WechatAdapter`)。14 单测全 hermetic(无 adb、无 Frida、无真设备)。 - **12.6.8 IPC + WS**:4 个 IPC 通道 + 4 个 cc ui WS 主题(`wechat-env-probe` / `register-wechat` / `unregister-wechat` / `list-wechat-accounts`)。`register-wechat` / `unregister-wechat` 加入 `approvalChannelsForMobile` privileged whitelist —— 防 mobile peer 偷偷往攻击者控制的 dbPath 注册 adapter 或触发 Frida session。15 wiring 单测 + 2 whitelist regression 单测。 - **12.6.9 `cc hub wechat` CLI**:`env-probe / register --uin --db --wechat-data-path [--force-provider] / list / unregister ` 4 个 verb 镜像 4 WS 主题,`--json` 全 verb 可机读,脚本与 Plan A 手机内嵌终端可用。14 CLI 单测。 - **12.6.10 Vue UI 向导**:`WechatWizard.vue` 295 行 3-step drawer(env-probe checklist 动态 Tag 着色 → uin + dbPath + wechatDataPath + forceProvider 表单 → result 结构化错误 + probe.reasons 反馈)+ `PersonalDataHub.vue`「添加 WeChat」按钮 + composable 4 method。6 composable 单测。 - **集成测试**:9 个端到端测试 covering md5 happy / frida happy / unsupported / md5 缺 wechatDataPath / 幂等重注册 / 两 uin 共存 / override 双向 —— 全部不触真 adb / Frida / 真设备。 - **真机 E2E 准备**:`Personal_Data_Hub_E2E_Runbook.md` §11 新增 3 个 WeChat 真机场景(pre-8.0 md5 / 8.0+ frida rooted / 8.0+ unrooted 优雅拒绝)+ 性能基准表。Phase 12.9 待 rooted Android 设备真跑。 - **顺带修 stale 注释**:docs-site 之前称 iOS Phase 14.2 UI scaffold "lost-to-race / 待重做",实际已在 `3db7b5a73 + 1d0c473a3` 全部 land(650 LOC `PersonalDataHubViews.swift` + 3 ViewModel + RemoteDependencies wire + 1491 LOC iOS Hub tests)。 本轮累计:**1223 测试 / 67 文件**(1068 hub 包 + 183 desktop + 46 CLI + 18 web-panel + iOS 1491 LOC Hub tests)。下一站需物理设备:Phase 12.9 rooted Android 真机 E2E、Phase 14.4 移动端真机 E2E。 详见 [`docs/design/Adapter_WeChat_SQLCipher.md`](docs/design/Adapter_WeChat_SQLCipher.md) §18.10 与 [`docs-site/docs/chainlesschain/personal-data-hub.md`](docs-site/docs/chainlesschain/personal-data-hub.md)。 ## 2026-05-20 收口 — **Personal Data Hub 一晚 13-phase burst + iOS keychain hotfix repackage (v5.0.3.71/.72)** > Personal Data Hub 从 Phase 4 真接通真三方一直推到 Phase 13.7 七 social adapter 全部落地,一晚 15 commits `763047a22 → b2baf4eda`。同时 `.72` 修了 `.71` desktop build 全 EUSAGE 的 release 工程 bug。 - **Phase 4.5 — Python sidecar bridge + SystemDataAdapter**:JS↔Python 进程间 JSON-RPC 桥接接 4 个 Android system source(通讯录 / 通话记录 / 短信 / 位置)借 sjqz 项目 17 个真已写 parser 避免重写。 - **Phase 7 / 7.5 / 9 — 三大消费场景 adapter 齐落**:Shopping three-pack(Taobao + JD + Meituan)/ Mobile Extraction Layer(Android ADB + iOS iTunes encrypted backup 双路)/ Travel four-pack。 - **Phase 10.1 + 10.2 — AIChat 9/9 vendors 全部 live**:DeepSeek + Kimi 逆 h5 私有 API + 通义千问 + 智谱清言 GLM + 腾讯混元 + 百度千帆 + 字节扣子 + Dreamina + 豆包,HttpClient infra 接 retry-with-backoff + progress streaming。 - **Phase 11 — 5 个内置 analysis skill** 跨 hub 数据源调用,LLM 直接调。 - **Phase 12 v0.5 — WechatAdapter 切 frida-independent slice**,T3 风险高→中。完整 SQLCipher dump 仍走 v1.0 frida 路径。 - **Phase 13.3-13.7 — 5 social adapter 落地**:Douyin + Xiaohongshu + QQ + Telegram + WhatsApp。WhatsApp 完成 sjqz parser port。+ 13+ Bilibili + Weibo 借 sjqz parser。 - **质量面**:50 test files / 952 tests 全绿(含新增 6 个跨 Adapter 集成 + 3 个 E2E 用户旅程场景 + 3 个 toutiao/kuaishou/doubao scaffold 用例)。2026-05-20 收尾 test sweep 顺手扫出并修了 2 个真 bug:SpendingSkill 漏覆盖 `subtype: "order"` (Phase 7 Shopping 事件不进消费报表) + AlipayBillAdapter 漏导出 `extra.counterparty` (分析技能按商户分组失败)。 - **Phase 14.1 + 14.2 手机端远程入口数据层完整(UI 接通在路上)**:Android Phase 14.1 `PersonalDataHubCommands.kt` 22 method typed wrapper(21 数据 + `runSkill` 分析)+ 9 UI 文件(Ask / Adapters / Audit 三屏 + HealthCard + AcceptNonLocalDialog + 3-tab 容器)+ 22 单元测试。**iOS Phase 14.2 数据层完整**:22 method wrapper + 16 Codable model + 28 单元测试(22 happy + 6 input-guard)— 1:1 对齐 Android,全 kebab-case wire 名,每个测试都断言 method 名防回归。`ios-build.yml` CI run `26150064237` `Build & Test (SPM)` job 72s 通过含 28 新单测。预发版静态审计抓住 Android 17 处 camelCase / kebab-case 跨端 method 名错配(首调即 404),sed 修齐生产 + 单测 + 桌面 whitelist 测试。剩:iOS SwiftUI View + ViewModel 接通(数据层已就绪,UI 待下一轮 iteration);Phase 14.3 流式同步进度 + Phase 14.4 真机 E2E 未启。 - **`.72` release 工程修复**:`.71` 全 5 平台 desktop build EUSAGE — root `package-lock.json` 与 `personal-data-hub/package.json` 不同步(Phase 12/13 加的 `adm-zip` + `iconv-lite` optional dep 未注册到 root lock)。`5d8ba08b5` sync lock + `d03c87d0a` packages/cli root lock bump 到 `0.162.7` 收口,`.72` repackage 同样 iOS keychain Logger NSLock 修真出包 18 assets 完整。**`.71` GitHub Release 不存在**(代码在 main + npm 0.162.7 已发,仅 desktop installer 缺),实际只发了 `.72`。 ## 2026-05-20 收口 — **iOS 三件套 hotfix:PIN-unlock crash + AppIcon 真编进包 + SQL bind (v5.0.3.70)** > 三个 iOS 真 bug 一次扫净 + bundle .69 forward。`.69` release 因 `publish-cli` npm 404 卡 draft 8h+;`.70` 重打 `.69` 的所有变更 + AppIcon wiring 修复,重跑 `publish-cli` 成功 PATCH 发布(最终 18 assets 全齐 Latest)。 - **iOS 16 PIN-unlock 闪退**:`CoreCommon/Utilities/Logger.swift` 的 metadata 字典在多线程并发改写下 iOS 16 必崩(EXC_BAD_ACCESS)。`NSLock` 保护 read/write 路径 + 并发 fan-out 单测覆盖。 - **AuthViewModel.createPrimaryDID SQL 参数没真绑**:之前用 `DatabaseManager.execute(_:)` 不带 parameters 的重载,prepared statement 里参数始终空,插入失败/silent skip。改走 `execute(_:parameters:)` 重载。 - **AppIcon 从未真正编进包**:`Assets.xcassets` 在 `pbxproj` 里被声明为 `PBXGroup`(逻辑文件夹)而不是 `PBXFileReference type=folder.assetcatalog`,且**没加进 `PBXResourcesBuildPhase`**。结果 18 张 AppIcon + 3 张 LaunchIcon 全套素材在仓里 v0–v0.69 **从未被 `actool` 调用编译**,主屏一直是 wireframe 占位。`2441b0d8b` 修 pbxproj wiring,`.70` 真正出 `Assets.car` 进 `ChainlessChain.app`。 - **Release pipeline 操作记录**:`.69` `finalize-release` skipped 因 `publish-cli` 上游 npm 404;rerun `--failed` 重试 `.70` 的 `publish-cli` 成功 PATCH draft→published。18 assets 完整:4 Android + macOS dmg + Linux AppImage/rpm/deb + Windows Setup/Portable + iOS .ipa + 3 latest.yml + blockmaps。 ## 2026-05-19 收口 — **Android Phase 5.6/5.8 cc Chat 自然语言 — 用户大白话直接问 (v5.0.3.67)** > 个人中心 → 「cc Chat (自然语言)」打开后,直接输入"列下我最近的笔记 / 搜下 RAG 相关的 / 我有哪些 skill",AI 自动识别意图 → 调本机 cc 命令 → 把命令 + 结果回贴聊天。再也不用记 cc 子命令 + flag 怎么拼。 - **Phase 5.6 LLM tool-use 协议接通**:OpenAI(`tool_calls` + `type:function` 信封)、Doubao 豆包(wire-compat 直 delegate)、Claude / Anthropic(`tool_use` 内容块 + `tool_result` 走 `role=user`)三家原生接 tool-use;不支持的厂商(Qwen / Ernie / Spark 等)自动走"防幻觉 fallback",明确告知用户切模型而不是编笔记。 - **Phase 5.7 cc Chat 屏**:5 状态进度条(思考 / 准备调用 / 执行 cc / 处理结果 / 整理)+ 工具卡片(命令 + exitCode + 耗时 + stdout 折叠展开 + 取消按钮)。8 个只读子命令(`note list/show/view` / `search` / `memory list/show` / `skill list` / `status` / `session list` / `mcp list` / `did show`)走白名单,写/删/安装类 LLM 即便编也会被拦截(exitCode=126)。`ProcessBuilder` 绕过 shell,无 shell 注入风险。 - **Phase 5.8 真机 E2E SOP**:9 个场景 E1-E9 完整 reproducer + 自动化 preflight 脚本 `android-app/scripts/e2e/phase_5_8_preflight.ps1`(设备/bundle/APK 检查 + 残留扫描);待 Xiaomi 24115RA8EC 真机跑通。 - **代码审计 + bug 修复**:静态审计 8 个新 Cc\* 文件找到 3 个 Blocker/High:(1) `CcExecService.executeArgv` JVM pipe buffer 死锁修(双 async drain,避免 `cc search` 大输出 hang 到 timeout)/ (2) `CcChatOrchestrator.runFallback` 不再 silently 丢 `StreamChunk.error`(HTTP 401 / 网络错显式弹 Failed event)/ (3) `CcAllowlist.check` 明确拒"有 `allowedSubcommands` 但用户没传子命令"的情况。 - **测试覆盖**:127 新测试全绿 — `feature-ai` 89 单测(CcAllowlistTest 38 + CcExecServiceTest 19 + CcToolCallDispatcherTest 17 + CcChatOrchestratorTest 14)+ `:app` 28 (CcChatViewModelTest 19 + CcChatIntegrationTest 9 端到端走真生产图:VM → 真 Orchestrator → 真 Dispatcher → 真 Allowlist → mock CcExecService,覆盖 E1 happy / E5 deny / E6 fallback / E7 cancel / E9 dedup)。 - **设计文档**:[Phase 5.8 E2E SOP](docs/design/Android_AI_Chat_CC_Exec_Phase_5_8_E2E_SOP.md) + [Phase 5.8 打印版 Checklist](docs/design/Android_AI_Chat_CC_Exec_Phase_5_8_Checklist.md);docs-site / docs-site-design 通过 `sync-*.js` 已同步刷新。 ## 2026-05-18 收口 — **iOS Phase 6 sprint 全套:Knowledge 30 + AI Extended 25 + 15 main tab + 多模态 v0.3 + Agent streaming** > 一晚 19 commits 收口 iOS 端 Phase 6.3/6.4 全套 hybrid(OQ-3.2=C / OQ-3.3=C),桌面 +55 method + iOS 56 wrap + 2 新 SwiftUI tab + 5 sub-tab UI + 实时录音 + Agent 流式输出。iOS CI 真编 2 轮抓 2 bug 已修,**绿基线 `1fb947b32`**。 - **Phase 6.3 — Knowledge 桌面 30 method 全 hybrid**(commits `d5525c1d1` → `874b3b83c`)—`knowledge-handler.js` 老 9 + step 1 (folders 5 + tags CRUD 3 + getNote alias 2) + step 2 (versions 4 + star/pin 6) + step 3 (archive 3 + import-export 4 + tags 高级 3) = **30/30 完成 ✅**。新增 SQLite 表 `knowledge_folders` + `knowledge_note_versions` + ALTER notes 加 starred/pinned/last_viewed_at/archived 列。**92 cumulative tests** 联跑 7.94s。 - **Phase 6.3 — iOS KnowledgeCommands actor wrap 31 method**(commit `5b0e82c97`)—`Modules/CoreP2P/Sources/RemoteSkills/Knowledge/`:actor 31 method(30 + getNote alias)+ 25 Sendable Response struct + 35 envelope/decode tests。复用 `invokeAndDecode` helper 模板。 - **Phase 6.4 — AI Handler 桌面 25 method 全 hybrid**(commits `b6da42ef2` + `d23d41cc9` + `d0bb48733`)—`ai-handler.js` 老 5 + Phase 5 fix 7 + Phase 6.4 25 = **37 method total**:Conversations 高级 5 + Prompt templates 3 + RAG 5 + Multimodal 4 + Code helpers 4 + Agents 4。新表 `ai_prompt_templates`。RAG/Multimodal/Agents 用 defensive method 检测(双路径 `mgr.list || mgr.listAgents`),查询缺 dep 降级 `available: false`,mutating throw。**101 cumulative ai tests** 联跑 1.7s。 - **Phase 6.4 — iOS AIExtendedCommands actor wrap 25 method**(commit `cf75e822f`)—与 AIChat (Phase 5 12) 并列共 37 ai method 完全覆盖桌面。SeedRegistry methodCount 53 → 37 对齐真实。 - **Phase 6.4 UI — KnowledgeView + AIExtendedView 2 新 tab → RemoteOperateView 15 main tab**(commit `b92ffe640`)—Knowledge 4 filter segmented + 搜索 + 新建 sheet + swipe action;AIExtended 5 sub-tab(Templates/Code 3 mode/RAG)。iOS 16 PhotosUI / TextField axis: .vertical / SwiftUI Outer/Inner + StateObject init 模式(解 `@EnvironmentObject` init() 不可用)。 - **Phase 6.4 v0.2 — Multimodal + Agents UI**(commit `d897d3cdf`)—AIExtendedView +2 sub-tab → 5 sub-tab(5 触 HIG 软上限,picker 切 horizontal scroll)。Multimodal:PhotosPicker → OCR / 文本生图 AsyncImage / TTS AVAudioPlayer / file picker 转文字。Agents:list/detail/run/stop + 4 色状态 chip。 - **Phase 6.4 v0.3 — Agent streaming + 实时录音**(commits `a2d41fc7e` + `073af9ed4`): - 桌面 `runAgentStream` 复用既有 `activeStreams` Map(streamId-agnostic 与 chat stream 共用),10 desktop tests - iOS 3 wrap method (runAgentStream + getAgentStreamChunk + cancelAgentStream) + VM 后台 Task 250ms poll loop + Agents UI 闪烁蓝点 + 实时累积渲染,4 iOS VM tests - 新文件 `MultimodalAudioRecorder.swift` (@MainActor + AVAudioSession + 16kHz mono AAC 录到 NSTemporaryDirectory) + transcribeAudioSection 加 [开始录音] 红色 button + 闪烁红点 + 时长 monospaced - **iOS CI 真编 verify**(commits `fa0746860` + `1fb947b32`)—iOS GitHub Actions `ios-build.yml` 2 轮抓 2 真 bug 修:(1) `RemoteAIExtendedViewModel.swift:425` `nextChunkIdx: Int?` 类型不匹配 → `?? sinceChunk` (2) `StreamChunkResponse` 模型缺 `error` 字段 → 加。Win 无 Swift 编译器,iOS CI 是 1500+ LOC Swift 唯一编译验证路径。绿基线 **`1fb947b32`**(Build & Test SPM + Build Release SPM 三 job 全绿)。 - **设计文档**:(1) [`iOS_对标_Android_Phase_6_Plan.md`](docs/design/iOS_对标_Android_Phase_6_Plan.md) §11 加 19 commits 时序表 + 实际 vs 计划偏差 + 5 个新模式;(2) [`iOS_Phase_6_3_6_4_Knowledge_AI_Desktop_Debt.md`](docs/design/iOS_Phase_6_3_6_4_Knowledge_AI_Desktop_Debt.md) — Phase 6.3/6.4 debt 审计;(3) [`iOS_Phase_6_6_Desktop_Skill.md`](docs/design/iOS_Phase_6_6_Desktop_Skill.md) + [`iOS_Phase_6_7_Extension_Skill.md`](docs/design/iOS_Phase_6_7_Extension_Skill.md) — Coverage Trap T2/T4 误判修正;(4) [`iOS_Phase_6_0_RealDevice_E2E_Plan.md`](docs/design/iOS_Phase_6_0_RealDevice_E2E_Plan.md) v1.0 — 38 场景跨 7 段 reproducer + bug 模板 + 通过/失败 P0/P1/P2 分级。 - **memory** 新增 4 entries(type=feedback/project):`phase_6_knowledge_ai_hybrid_complete` / `better_sqlite3_text_number_trap` (Number→TEXT "1.0" 5 处 String() 包) / `ios_inner_view_stateobject_pattern` / `ios_ci_only_verify_path_on_win`(Win 无 Swift,"Phase X 完成 ✅" 必须等 iOS CI 真绿)。 - **剩余真机 E2E**(plan §11.4 唯一未闭环 follow-up):Mac + iPhone + 桌面在场跑 38 场景。Win dev box 不可推进,移交用户。 ## 2026-05-18 发布 — **Android Sub-phase 5-6 v2 + 10 v2:LOCAL 项目终端 picker + 全量项目内容拉取** > 承接 `3319febc4` 真机反馈:"弹补填对话框但找不到同名 PC 项目"+"项目文件同步没做"两条阻塞,两件事一次性收口。 - **Issue 1 LOCAL 终端入口改 picker**:旧 v1 让用户在手机上敲 Windows 长路径,UX 失败。新 v2 dialog 打开拉桌面 `project.list` 显示 PC 项目列表 → tap row → 直接保存 pcRootPath + 跳终端,零输入。同名项目高亮 "同名" 标置顶;列表为空时自动展开自定义路径 fallback。 - **Issue 2 全量内容拉取**:旧 v1(Sub-phase 7)只存 metadata;用户拉了之后离线打开项目还是 0 文件。新 v2 在 pullSingle 之后循环 `project.getFile(fileId)` 真把每个文件 content 存 Room project_files。单文件失败 continue + log;content > 1MB skip 占位 row 防 OOM;PullProgress StateFlow 暴露进度 → UI 显 LinearProgressIndicator + "下载文件 N/M: "。 - **78 新测试**:`RemoteContextViewModelTest` × 16 / `RemoteProjectBrowserViewModelTest` × 7 / `mobile-bridge-sync.test.js` × 15(含 6 新 `handleProjectUpdatePath`)/ `project-management-handler.test.js` × 33(含 9 新 file CRUD)/ `project-handlers.test.js` × 7。同步修了 3 个 stale 测试断言(504bd6dde 改 userId 过滤后没同步更新)。 - **设计文档**:[`docs/design/Android_Project_Remote_Terminal_Entry.md §12`](docs/design/Android_Project_Remote_Terminal_Entry.md) 加 v2 picker 设计 + 全量拉文件设计 + 真机 E2E 8 场景矩阵。 - **commit**:`09bd0ec0f` (`feat(mobile): LOCAL 项目终端 picker + 全量项目内容拉取`)。 - **剩余真机 E2E**:8 场景需 Mac/Win PC + Android 双机配对环境,dev box 无法独验。 ## 2026-05-18 发布 — **iOS v5.0.3.64:版本号 4 段制 + AppConstants stale 硬编码清零 + 测试三层覆盖** > v5.0.3.63 发版后用户反馈:(1) iOS Settings 「版本」只显示 3 段制 `5.0.3` 或 stale `0.32.0`(实际几个月没更过硬编码常量);(2) PIN 闪退仍报告(待 crash log 复现)。本版三件事: - **A 修 stale 硬编码(真 bug,找到根因)**:`AppConstants.App.version` 几个月一直写死 `"0.32.0"`、`buildNumber` 写死 `"32"`、`bundleId` 写死错值 `"com.chainlesschain.ios"`(CodeSign 实际用 `.ChainlessChain`)→ 全改用 `Bundle.main` 动态读。`AIDashboardView.swift:95` 硬编码 `v0.16.0` + `PluginManager.swift:118` fallback `1.7.0` 一并扫净。 - **B iOS 17 API 二次审计**:全仓 596 个 `.swift` × 29 个 pattern(`assumeIsolated` / `@Observable` / `SwiftData` / `symbolEffect` / `ContentUnavailableView` / `KeyframeAnimator` / `sensoryFeedback` / `Previewable` 等)扫描,**0 处新增违规**。`AppState.swift` v5.0.3.63 修(`assumeIsolated` → `Task @MainActor`)已就位。 - **C 测试三层覆盖**:11 BundleVersionTests + 7 AppStateNotificationTests + 2 XCUITest(`testSettingsVersionDisplaysFourSegmentTag` / `testPINUnlockDoesNotCrashOnFirstLaunch`),锁死版本号格式 + PIN 解锁不崩两类回归。 - **新 Bundle extension**:`Bundle.appShortVersion` / `appBuildNumber` / `appFullVersion`(4 段制 `5.0.3.64`)/ `appFullVersionTag`(`v5.0.3.64`)/ `appDisplayName`,所有 UI 统一调。SettingsView 关于栏显示 `v5.0.3.64` 完整 4 段制 + 加「Bundle ID」一栏让用户能直接确认安装的真版本。 - **待用户反馈**:v5.0.3.63 PIN 闪退根因未在代码层复现。装 v5.0.3.64 仍崩请附 crash log(Xcode → Devices and Simulators → View Device Logs)。SettingsView 新「Bundle ID」字段可帮确认安装的是 v5.0.3.64 真版本。 ## 2026-05-17 发布 — **Android 远程文件 skill 端到端(浏览 / 上传 / 下载 / app 内打开)** > Android 手机配对桌面后,三大能力一次性落地:浏览 PC 任意目录(无 sandbox)、上传本机文件到 PC `~/Downloads/`、PC 文件下载到手机**公共 Download 目录**(MediaStore.Downloads,原生「文件管理」/「相册」/「阅读器」都能直接看到)。Snackbar 「打开」按钮 `Intent.ACTION_VIEW(content://...)` 拉系统 viewer,**不跳出 app**。 - **修 6 个互锁 bug**([设计文档 §4-§5](docs/design/Android_Remote_File_Skill.md)):(1) `P2PClient.kt:538-542` chainlesschain:\* skip guard 太宽屏蔽 P2PClient 自己的响应 → 缩窄成只 skip incoming `request` / (2) Plan C 不调 `P2PClient.connect()` 致 `sendCommand` 立即 `"Not connected"` → `RemoteCommandClient` 改 delegate `SignalingRpcClient` / (3) PC `handleFileCommand` 旧 stub 含 `dialog.showOpenDialog` 弹文件夹框 + 缺 `listDirectory` case → 新 `android-file-handler.js` 11 action / (4) `FileTransferHandler` (web-shell sandboxed) 不可复用 → 不复用 / (5) checksum `"sha256-prefix:"` vs Repository 期望 `"md5:"` → 返 null / (6) `getExternalFilesDir` 用户找不到下载文件 → `MediaStore.Downloads` 公共目录。 - **5 个 UI 入口**:📁 浏览远程目录 + ☁️↑ 上传 + ☁️↓ 下载面板 + 📱 **app 内**本机下载文件夹列表 + 🧹 清理历史。 - **测试**:PC 单测 `android-file-handler.test.js` 30 cases 全绿;Android `RemoteCommandClientTest.kt` 4 cases 锁死 SignalingRpc delegate + 不走 `p2pClient.sendCommand`;真机 E2E 8 场景已跑通(Xiaomi 24115RA8EC × Windows 桌面)。 - **设计文档**:[`docs/design/Android_Remote_File_Skill.md`](docs/design/Android_Remote_File_Skill.md) — 协议接口 11 action + 字段映射 + 4 互锁 bug + 2 UX 坑 + 真机 E2E 8 场景。 - **用户文档**:[`docs-site/docs/guide/remote-file.md`](docs-site/docs/guide/remote-file.md)。 ## 2026-05-15 发布 — **Android GA 后续 scope #21 P1 主体 5/5 全闭环**(A.1 + A.2 + B.1 + B.5 + C.1) > v1.0 GA 上架后 issue #21 跟进的 5 项主体 scope 一日内全部 land,累计约 270 单测全绿,最终 sweep 修 2 个 Robolectric `@Config(sdk=[33])` 漏标。P2 候选 4 项 (B.3/B.4/C.2/C.3) 等 GA Play Store + 真用户反馈复评。 - **A.1 桌面 Linux native 配对**(57 单测)— `cc pair preflight` 5 项 LAN 诊断(平台 / 网卡 / multicast / port 5353 holders / firewall hint,exit 0/1/2 分级 CI 可用)+ `cc pair token generate/list/show/revoke` 子命令组(one-active-DID 不变量 + atomic file write,SSH dev box 场景预生成)+ [`dist-tools/systemd/chainlesschain.service`](dist-tools/systemd/chainlesschain.service) hardening 全套模板 + [`docs/linux/PAIRING.md`](docs/linux/PAIRING.md) 9 段用户指南(3 场景 / 5 blocker 修复 / 诊断包收集)。**Audit 反驳**:设计文档说"Linux 需补 mDNS systemd 单元"是误解 — `@libp2p/mdns` + `bonjour-service` 纯 JS 不依赖 avahi-daemon。 - **A.2 三端 UI consistency 设计文档** v0.1 baseline([`docs/design/三端_UI_Consistency_设计文档.md`](docs/design/三端_UI_Consistency_设计文档.md))— 4 项必须一致(语义色 / 高风险红色 hex / DID 短显规则 6+4 字符 / m-of-n 进度展示 m/n + 分隔符)+ 4 项必须不同(手表大按钮 ≥48dp / 桌面侧栏 / 车载 voice-only / 手机 thumb zone)。 - **B.1 web-shell 私钥签字 UI**(113 单测)— `MultisigSigner` ukeyManager adapter(4 driver return shape normalisation)+ `multisig.sign` in-process WS topic(绕开 cc subprocess 6-10s 冷启)+ `signWithExternal` async API(core-multisig 新增)+ `SignProposalModal.vue`(Pinia store + member dropdown + dev-only hex source)+ `unified-key-manager` DID-based signer routing。 - **B.5 跨链桥 outbound × m-of-n 多签**(Layer 1+2 共 8 PRs)— Layer 1:CLI `bridge --require-multisig` + `bridge-consume` + web-shell `crosschain.bridge.consume` in-process topic + Multisig.vue 执行按钮。Layer 2:`cc_bridges` m-of-n provenance 列 + crosschain-mtc `attachMultisigProvenance`/`stripMultisigSigsForCanonical` helpers + `buildMultiHopBridgeEnvelope` 3rd arg + `verifyMultiHopBridgeEnvelope` auto-runs provenance check + `bridge-consume --mtc` 把 multisig provenance 带入 staging。Layer 3 external-blocked Q-COMP-3(真 testnet 锚定 + contract audit + KYC)不计入本 scope。 - **C.1 watch face → VoiceMode shortcut**(33 单测)— phone-side `VoiceLaunchActions` + `VoiceTriggerSource` 4 enum + NavGraph 路由 + `CcPhoneVoiceListener` Data Layer service(`/cc/voice/start` MessageClient path)+ wear `VoiceSender` + `VoiceShortcutTileService` standalone tile + `VoiceComplicationService` + `VoiceForwardActivity`(intent + 50ms vibration + 3s timeout)。**安全约束**:`trigger_source` 字段 wear 侧仅信息用途,phone 侧锁 `WEAR_FORWARD` 防伪 — 防 wear 端伪造 trigger_source 提权到 `AUTO_BUTTON`/`PHONE_SHORTCUT`。 - **最终 sweep bug 修**(commit `f1d283833`)— C.1 PR1 `VoiceLaunchActionsTest` + PR2 `CcPhoneVoiceListenerTest` 漏标 `@Config(sdk=[33])`,Robolectric `DefaultSdkPicker` 拒收 compileSdk=35(maxSdkVersion=34)— 统一与 `:app` 其它 Robolectric 测试一致。 详见 [issue #21](https://github.com/chainlesschain/chainlesschain/issues/21) + [Android 重新定位 §10 GA 后续 scope](docs/design/Android_重新定位_设计文档.md)。 ## 2026-05-18 收口 — **iOS Phase 5 AI Chat 静态审计 4 真实 bug 修复 + 4 集成测试** > Phase 5.1-5.6(远程 LLM 对话 + token-by-token 流式 + 8 method + cancel + 对话管理 + 离线 enqueue)已落,但 41 单测全是同模块内 mock,缺端到端集成 + UI/VM 交互 edge case 覆盖。本轮静态审计找到 4 真实 bug,每个 1 个回归单测;同时补 4 个集成测试验真链路。 - **Bug #1 — 空字符串穿透 nil-coalesce**:`RemoteAIChatViewModel.finalizeStreamingPlaceholder` 旧代码 `messageId ?? oldMsg.id`。`ChatStreamEnd.parseFromEnvelope` 在 server 缺 `messageId` 时填 `""`(不是 nil),nil-coalesce 不兜底,`""` 直接覆盖本地 `local-assistant-` 占位 id,SwiftUI `ForEach(messages, id: \.id)` 身份被击穿(多条 row 共享空 id)。改为 `if let mid = messageId, !mid.isEmpty` 显式 guard。 - **Bug #2 — 删除当前对话失败时半回滚**:`deleteConversation` 失败时仅恢复 `conversations` 列表,`currentConversation` / `messages` 留在已清空状态。新增 `rollbackDelete` 私有方法 + 入口处 `wasCurrent`/`originalCurrent`/`originalMessages` 快照,全量原子回滚。 - **Bug #3 — `sendMessage` 缺 stream-in-flight 防御**:UI 在流式中切到 cancel button 形态,但 VM 不能假设上层禁掉了 send 入口(programmatic 调用 / 双击竞争)。在 DC gate 前加 `guard currentStreamId == nil else { lastError = "请先等待当前响应完成或取消"; return }`。 - **Bug #4 — `selectConversation` stale streamId 污染**:切对话时不清 `currentStreamId`,依赖 `messages.last.isStreaming` guard 兜底。edge case:新 conv 末条恰为 streaming 占位(前次未 finalize)时,prev stream 的 delta 会越界改新 conv 的 last。改为显式 `currentStreamId = nil; isStreamingMessage = false`。 - **集成测试 +4** — `Tests/CoreP2PTests/Integration/Phase5AIChatIntegrationTests.swift`:`testFullChatStreamHappyPathThroughFanout` (真 fan-out 端到端) / `testCancelOrderingDiscardBeforeRpc` (cancel 顺序 50ms 窗口验证) / `testOfflineCreateConversationDrainsOnRecover` (DC 恢复 drainer 触发 ai.createConversation) / `testCrossConversationStreamIsolation` (切对话清 streamId + sA 不污染 conv B)。 - **单测从 41 → 45** — `RemoteAIChatViewModelTests.swift` +4 回归(每个 bug 1 条);总 iOS 单测 ~313 + 45 = **~358**;集成测试 6 → **10**。 - **文档**:[`docs/design/iOS_Phase_5_AI_Chat_Skill.md`](docs/design/iOS_Phase_5_AI_Chat_Skill.md) §8.1 / §8.2 / §8.3(静态审计 4 bug 详表)/ §8.4(Phase 5.8 真机 E2E 8 场景 reproducer 详步骤)全刷;docs-site 与 docs-site-design 通过 `sync-*.js` 同步刷新(162 文件)。 - **真机 E2E(Phase 5.8)** 仍待 Mac+iPhone+真桌面在场,reproducer 详步骤已就绪。Win dev box 上 `swift test` 不可跑,验收依赖 iOS CI `swift build --target CoreP2P` 编译通过 + 静态审计 + 集成测试设计无 mock 绕过真链路。 ## 2026-05-15 发布 — **iOS Phase 1+2+3+4 完整移植(桌面配对 + 远程终端 + 远程操控 framework + 4 skill + Notification skill)** > Android 端 v1.0 GA 验证后,iOS 端启动镜像移植。**一日内四 Phase 框架级全 land**:~145 文件 / ~313 单测 / 4 完整设计文档 / 4 实施 trap memory。 - **Phase 1 — 桌面配对三流**(commit `c30b415a8`)— Flow B 摄像头扫桌面 QR(最常用) + Flow A 桌面扫手机 QR(Signal e2ee 高级路径) + 手输 6 位 code 兜底;`Modules/CoreP2P/Pairing/` (9 files) + `Features/Pairing/` (8 files) + 71 单测 7 套件;桌面端 follow-up `pairing-code:` signaling 别名监听 220 LOC。 - **Phase 2 — 远程桌面终端 (Plan A.1 移植)**(commit `7613ea710`)— `RemoteWebRTCClient` 5 步 handshake actor + `WebRTCPeerConnectionTransport` Google SDK 抽象 + `TerminalRpcClient` 双路径 invoke + xterm.js WKWebView + `TerminalListView`/`SessionView` 全套;163 单测 12 套件;Phase 1 SignalClient `forwardedMessages: AsyncStream` 多订阅入口同期补齐(实施暴露后回填)。 - **Phase 3 — 远程操控 framework + 4 typed skill**(commit `759a1e907`)— `RemoteCommandClient` 通用 RPC actor (Phase 2 `TerminalRpcClient.invoke` 抽出) + `RemoteSkillRegistry` 23 SeedRegistry 1:1 mirror Android (795 method) + `OfflineCommandQueue` UserDefaults JSON crash recovery + `OfflineQueueDrainer` false→true edge detection + 4 typed skill (Clipboard / File / Screenshot / SystemInfo) + `RemoteOperateView` 5-tab segmented shell + 4 skill UI;~264 单测累计 20+ 套件。**Phase 3.6 refactor 提前到 3.3**:`TerminalRpcClient.invoke` 删除 + delegate to commandClient + 改用 commandClient.events 流(修 AsyncStream 单消费者切分事件 bug)。 - **bug 修 (P0)** — code review 后期修两处 continuation 泄漏:`RemoteCommandClient.invoke` timeout 不清 `pendingResponses[reqId]` + `RemoteWebRTCClient.waitForAnswer` 同模式不清 `pendingAnswer`;长期运行下 pool 涨。修法 `do/catch` 包 TaskGroup 显式清池 + 加 `pendingCount()`/`hasPendingAnswer()` 诊断 accessor;2 regression test + 1 集成 test 验池清。 - **集成测试** — `Tests/CoreP2PTests/Integration/Phase3IntegrationTests.swift` 6 跨组件测试覆盖 ClipboardCommands 端到端 / TerminalRpc demux / Drainer 边缘 / 离线 → 恢复 → drain / concurrent invoke 池共享 / continuation 泄漏防御。 - **Phase 4 — Notification skill**(design `cf7a7be78` + 6 sub-phase commits `45b485fdd` → `5877b5d84`)— `NotificationCommands` actor (11 method 1:1 mirror Android `NotificationCommands.kt`) + `NotificationEventDispatcher` 订 commandClient.events + LRU dedup + 触发既有 `PushNotificationManager.scheduleSystemNotification` (531 LOC PushManager 0 改动,仅加 1 行 `extension PushNotificationManager: RemoteNotificationPushTarget {}`) + `RemoteNotificationsViewModel` 乐观更新 + offline gate 三分支 + `NotificationsView` UI 镜像 Android `NotificationCenterScreen.kt` (filter / List + swipe / detail sheet / settings sheet) + `RemoteOperateView` 第 6 tab "通知" + `SkillTabPickerView` REWRITE 为 horizontal scroll + button row + Capsule unread badge (per design §7.9 备选 B,Discord/Slack pattern)。**41 新 unit tests** (18 + 10 + 13)。**新发现 trap**: events fan-out — cmdClient.events 单消费者,多 skill 订阅必须 RemoteDeps 内 fan-out task 拆。 - **设计文档**:[`docs/design/iOS_Phase_1_Pairing_Flow_B.md`](docs/design/iOS_Phase_1_Pairing_Flow_B.md) + [`iOS_Phase_2_Remote_Terminal.md`](docs/design/iOS_Phase_2_Remote_Terminal.md) + [`iOS_Phase_3_Remote_Operate_Framework.md`](docs/design/iOS_Phase_3_Remote_Operate_Framework.md) + [`iOS_Phase_4_Notification_Skill.md`](docs/design/iOS_Phase_4_Notification_Skill.md) — 各含 §6 sub-phase + §7 实施 traps + §8.3 真机 E2E 矩阵。 - **iOS UI 镜像 Android 已验证布局** — 用户拍板 "iOS 页面布局参考安卓端,安卓端有检测过"。Compose Screen 信息架构 / 流程 / 字段顺序照抄到 SwiftUI;HIG 偏离限白名单 6 项(NavigationLink / Form / ToolbarItemGroup keyboard / Sheet / Alert / Segmented Picker)。 - **剩余真机 E2E**(需 Mac+iPhone+真桌面):Phase 1.7 三流配对 + Phase 2.7 4 终端场景 + Phase 3.7 4 skill 各跑一次 + **Phase 4.7 8 通知场景** (拉历史 / 桌面 push 弹 banner / LRU dedup / markAsRead 双轨 / 离线 enqueue / quiet hours silenced / authorization denied / 后台 1min)。Win dev box 不可验,移交用户。 ## 2026-05-14 发布 — **v5.0.3.53 Plan A.1 远程终端 Android↔桌面 WebRTC DataChannel 直连(Phase 1–5 一日全落)** > v5.0.3.52 Plan A 真机首测(Xiaomi 24115RA8EC × Win desktop dev)暴露 1 个**架构性**问题:4 跳信令链路(手机→路由器→公网中继→桌面 RelayClient)NAT idle / 蜂窝运营商间歇杀 TCP,整链路 fragile。 > 落地:**Plan A.1** — 把高频高吞吐终端流量从 signaling 链路切到 **WebRTC DataChannel 直连**,绕开中间所有跳;signaling 路径保留为兜底。 性能预期 → 端到端 RTT p50 200-500ms → **30-80ms LAN / 50-200ms TURN**;p99 1.5-30s timeout 频发 → **200-800ms**;稳定性 20s-2min 间歇断 → **数小时持续**(依赖 ICE keepalive)。 - **Phase 1 — Trap 1 修复 + DC 路由 helper**(commits `d22b7ac8a` + `bb759bc78`)— `SignalClient.forwardedMessages` 改 **multi-subscribe SharedFlow**(替代单 listener 的 `setOnForwardedMessageReceived`)。原 bug:`WebRTCClient.initialize` 装的 ice:config 拦截器在用户进 TerminalListScreen 时被 `TerminalRpcClient.start()` 后写覆盖 → ice:config 推送丢 → iceServers 24h 过期后跨 NAT 完全不通。新增 `WebRTCClient.dataChannelReady: StateFlow` derived flag(READY 才真意味 DC `OPEN`,避免 ICE-connected 但 DC 未开的误判)。 - **Phase 2 — DC fast path + 双 listener pending pool**(commit `a01eeac47`)— `SignalingRpcClient.invoke` 内置 transport selector:`connectionState==READY && preferDataChannel` → `webRTCClient.sendMessage`(DC),失败或未 ready → fallback signaling。两路 listener 同时订阅 `signalClient.forwardedMessages` + `webRTCClient.messages`,同一 `requestId` 对同一 `CompletableDeferred`(二次 complete 是 no-op,dual delivery 安全无需显式 dedup)。所有 RPC clients(TerminalRpc + system._/ai._)单点 chokepoint 自动受益。 - **Phase 3 — Android 触发 handshake + UI 路径指示**(commit `91e77e489`)— `TerminalListViewModel.init` 检测 DC 未 ready 即异步触发 `RemoteConnectionManager.connect`;UI chip 显示 "P2P 直连"(绿)vs "中继路径"(黄),用户可见路径状态。 - **Phase 4 — 双向 LRU 去重**(commit `dd9b1227e` Android + `fc3752360` desktop)— Android `TerminalRpcClient` 双订阅 signaling + DC SharedFlow,stdout 按 `(sessionId|seq)` 256-LRU 去重 / exit 按 `sessionId` 64-LRU。桌面 `mobile-bridge.bridgeToLibp2p` 加 128-LRU / 30s-TTL 按 `payload.id` 去重 mobile→desktop command request(防 `terminal.stdin` 双跑 / PtyManager 误处理)。 - **Phase 5 — 既有 wiring 组合**(无新代码)— DC 失效 fallback = Phase 2 `trySendViaDataChannel` 抛 IllegalStateException 自动落 signaling;自动重建 = `P2PClient.scheduleReconnect` 指数退避 1s→60s / maxAttempts 10(既有);恢复后自动切回 = `isDcReady()` 每次 `invoke()` 入口重检;UI 实时映射 = Phase 3 `dataChannelReady` chip。 - **测试**:Android `TerminalRpcClientTest` +3 dedup / `SignalingRpcClientTest` +4 transport selection / `WebRTCClientTest` +1 Trap 1 回归;desktop `mobile-bridge.test.js` 新 14 测覆盖 LRU dedup 5 维 + sendToMobile DC 优先 vs signaling-relay 双发兜底 5 维。3 套件全绿(11 + 15 + 21 Android + 14 desktop 新 + 既有未动)。真机 e2e §5.3 矩阵移交用户(LAN / 蜂窝 / 双 NAT / DC 强制失效 / DC 恢复 5 场景)。 - **bug 修**:WebRTCClientTest 12 个测试 regression — `mockk(relaxed=true)` 对 `StateFlow>` 泛型擦除致 `.value` 返 relaxed Object 而非 List → 生产端 `pairedDesktopsStore.devices.value.firstOrNull { ... }` 抛 `Object cannot be cast to Iterable` → `connect()` catch 套成 `"连接失败: ..."`;测试 setup 加 `every { mockPairedDesktopsStore.devices } returns MutableStateFlow(emptyList())` 修。 - **设计文档**:[`docs/design/Android_Remote_Terminal_Plan_A1.md`](docs/design/Android_Remote_Terminal_Plan_A1.md) v1.0(含 §1.2 三个 trap 完整分析 + §3.7 不复用 :core-p2p DataChannelTransport 的决策 + §5.3 真机 e2e 5 场景验收矩阵)。 - **遥测**:`[SignalingRpc.metric] path=dc|signaling reqId=...` 埋点上线,发版第一周观察 fast-path 占比,目标 ≥80%(用户基数 ≥10 设备)。 - **分发**:桌面 binary v5.0.3.52 → v5.0.3.53 重打;CLI `chainlesschain` 0.161.12 不变(Plan A.1 不动 packages/cli/);Android versionCode/Name 不变(v1.0.0 GA 维持,本批 desktop + Android `app/` 共改)。 ## 2026-05-14 发布 — **v5.0.3.52 Plan A 远程终端:Android↔桌面 PTY 全链路(Phase 1–4 全部 + 162 测试全绿)** > 用户痛点:"PC 上开了很多终端,能不能在 Android 上看到这些终端的输出并远程输入指令?" > 硬约束:Windows 上已经在跑的外部终端**不能被另一进程 attach**(OS 句柄私有)。 > 落地:**Plan A** — ChainlessChain 桌面端用 `node-pty` 托管**新开**终端,复用 #21 Remote Operate signaling-relay 通道把 stdin/stdout 流到 Android。 桌面端 `PtyManager` **单例**同时被 web-shell WS 网关 + cc ui WS 网关 + V6 native IPC 共享 — 用户在任一壳开会话,其它壳都能看到。 - **桌面主进程** — `PtyManager`(lazy `node-pty` + 256KB ring buffer + 24h idle kill + shell 白名单 `pwsh/cmd/bash/wsl` + 8 session 上限)+ `terminal-handlers.js`(8 个 WS topics: create/list/stdin/resize/close/history + server-push stdout/exit)+ `terminal-ipc.js`(V6 native IPC bridge)+ `confirmation-dialog.js`(高危关键字 Electron messageBox + 永久信任 per-cmd cache)。`handleMobileCommand` 加 `terminal.*` namespace + mobile-bridge per-peer stdout/exit subscription fanout。 - **CLI workspace mirror** — `attachTopicHandlers` 共享 helper(抽出 `ws-cli-loader` dispatcher 包装为 ESM helper);`agent-runtime.startUiServer` 调一遍 → `cc ui` 也能 `/terminal`。`node-pty` 加为 optionalDependencies(workspace hoist 解决 + 装不上不破坏 install)。 - **Web Panel** — `useTerminal` composable(singleton fan-out + base64↔UTF-8 编解码)+ `Terminal.vue` route `/terminal`(xterm.js lazy import + 多 session 标签 + history 补帧 + ResizeObserver + 高危关键字拦截 toast)+ 侧栏菜单 + i18n。 - **V6 plugin widget** — `plugins-builtin/terminal/plugin.json` + `shell/widgets/TerminalWidget.vue` + `shell/TerminalPanel.vue`(xterm.js 嵌入 + IPC bridge `electronAPI.terminal.*`)+ slash 命令 `/terminal`。 - **Android** — `TerminalRpcClient.kt`(复用 `SignalingRpcClient` envelope pattern + observeStdout/observeExit SharedFlow)+ `TerminalWebView.kt`(WebView ↔ Kotlin JS bridge)+ `xterm-shell.html` + xterm.js / addon-fit / xterm.css vendored 入 `assets/terminal/` + `TerminalListScreen` / `TerminalSessionScreen` Compose + softkey toolbar(Ctrl/Tab/Esc/方向/Ctrl+C/D)+ NavGraph 2 路由 + `RemoteOperateScreen` 加 "打开远程终端" 按钮。 **测试 162 新增全绿** —— Desktop main 61(RingBuffer 7 + PtyManager 15 + terminal-handlers 15 + terminal-ipc 12 + confirmation-dialog 5 + ws-smoke 6 + **真 PTY spawn cmd.exe integration 1 — 真 spawn `cmd.exe`、真发 `echo PLAN_A_PROBE_42`、stdout 流回包含 probe**)+ CLI cc ui 21(PtyManager 10 + handlers 8 + ws-mirror-smoke 3 含真 `ChainlessChainWSServer` + `attachTopicHandlers` + 真 WS client)+ Web Panel 17 useTerminal composable + **3 e2e**(真 `cc ui` subprocess + 真 WebSocket + 真 shell stdin/stdout round-trip via probe echo)+ Android 10 `TerminalRpcClientTest`。 **修 pre-existing test drift** —— `widget-registry.test.ts`(PREVIEW_WIDGETS 已扩到 7 个)/ `dashboard-store.test.js`(缺 `mcp.list_tools` mock)/ `views-mount-smoke.test.js` 5 个尾部视图(Notification + Pinia 状态污染:Projects i18n 修 + 其余 4 个拆独立 worker)/ 删除过时 `Projects-folder-picker.test.js`。 **文档**:[Android Remote Terminal Plan A 设计文档](docs/design/Android_Remote_Terminal_Plan_A.md) + [用户文档](docs-site/docs/guide/remote-terminal.md)(双站同步)。Future A.1 流量切 WebRTC DataChannel 绕中继带宽 / Future B 已开外部终端只读快照(截图 + OCR + Win32 SendInput)留后续。 ## 2026-05-13 后续推进 — **Android 社交功能产线化(demo → production)** 10K LOC 社交骨架(14 屏 + 9 VM + 4 Repo)建好已久,但只有 2 路由真接通;其它 7 个 `registerPlaceholder("temporarily simplified")`,`SocialScreen` 三 tab 中 Friends/Timeline 显示固定字串。本次一次性收口: - **`NavGraph.kt` 7 占位换实屏 + 2 新路由**(`PublishPost / PostDetail / FriendDetail / UserProfile / AddFriend / CommentDetail / EditPost` 实接 Composable;新增 `NotificationCenter` + `BlockedUsers` 路由,DID 加载期渲染 spinner 占位) - **`SocialScreen.kt` 3 tab 全升级** — Friends → `FriendListScreen`;Timeline → `TimelineScreen`(myDid 走 `DIDViewModel.didDocument`);Notifications → `NotificationCenterScreen`(带筛选/批量已读/清理菜单,删旧内联 basic 列表) - **`PostReportDao` 落地** — entity 早在 schema v23 在册,但 DAO 缺失:`reportPost()` 构造完 entity 不入库 + `getUserReports()` hardcoded 空。新 DAO 加去重(`(postId, reporterDid)` idempotent)+ status 流转 + Robolectric 8 测试覆盖 - **PROFILE_QUERY/RESPONSE 协议** — `MessageType` 加 2 项;`RealtimeEventManager.queryProfile(targetDid, 5s timeout)` 用 `onSubscription` 解 SharedFlow replay=0 订阅竞态;`SelfProfileProvider` 接口 + `DefaultSelfProfileProvider`(DID-suffix 占位)在 `ChainlessChainApplication.delayedInit` 注入;`FriendRepository.searchUserByDid()` 本地未命中即 fallback 远端 - **`BlockedUsersScreen` 接 ViewModel** — `FriendViewModel` 注入 `DIDManager`,加 `loadBlockedUsers()` + `unblockFriend` 走完整 `unblockUser(myDid, did)` 路径(清 `BlockedUserEntity` 行,不再 flag-only 留孤儿记录) **测试**:39 新单测全绿——6 个 `RealtimeEventManagerProfileQueryTest`(race-fix:`runTest` 跑挂改 `runBlocking`,因 manager 内部 scope 用 `Dispatchers.IO` 与 virtual-time TestDispatcher 不在同一调度图)+ 4×3 feature-p2p(Post/Friend repo + FriendViewModel)+ 2 `DefaultSelfProfileProvider` + 8 `PostReportDaoTest` 真 Room in-memory + 11 路由 + tab 结构性回归(不需要模拟器)。设计文档 [Android_Social_Wiring_2026-05.md](docs/design/Android_Social_Wiring_2026-05.md),三大文档站本次同步刷新。 ## 2026-05-13 中期推进 — **[#21](https://github.com/chainlesschain/chainlesschain/issues/21) v1.2 GA 反馈整合:项目工作流 P1+P2+P3A + #2 删除 fix + #3 日常模板** v1.2 GA 反馈 5+3 项整合(#2/#3/#4/#5/#7/#8)。北极星:"手机端做 AI 项目交互要像电脑端那样丝滑"。 - **#2 项目无法删除 fix** (`fc24f9856`) — `EnhancedProjectCard` 完全没有 delete UI;加 3-dot 菜单 + 确认 dialog → DAO softDelete → Room Flow 自动从列表移除。 - **#3 模板改日常 11 个** (`99d38bf69`) — 砍 11 IDE 模板,整个 `ProjectTemplates` 重写:购物清单 / 旅行计划 / 读书笔记 / 灵感收集 / 健身计划 / 食谱记录 / 学习计划 / 家庭账本 / 工作日志 / 会议记录 / 空白。`TemplateCategory` 加 5 个新类目。 - **#4/#7 桌面 CLI + REMOTE handler P1** (`32ccabdb5`) — `cc project init/list/show/delete` 直写 desktop `chainlesschain.db`(WAL 并发安全)+ `project-management-handler.js` 6 actions 给 Android L3 REMOTE。CLI 7 + handler 21 tests。 - **#4 Android→Desktop 反向 sync P2** (`2646bbb4e`) — 修补反向同步缺口;新增 `ProjectSyncWalker` + `CompositeSyncRepositoryWalker`(`:app` 聚合)+ Hilt 绑定。CREATE/UPDATE/DELETE 完整。Composite 7/7 + walker 12 tests。 - **#5/#8 web-shell Projects + in-process WS P3 Part A** (`bfdde637d`) — 6 in-process WS topics 包装 P1 handler(DRY: 同 handler 服 web-shell + mobile L3)。新 `Projects.vue` 项目管理列表 + 移老内容到 `ProjectInit.vue`。project-handlers 7/7 tests。 **测试**:阶段 1 P0 全过 + 阶段 2 project workflow:Android `:app` 80/80 + Desktop combined 51/51。**P3 Part B 待办**:Android `ProjectCommands.kt`(让手机用 REMOTE 调 project.\* 看/操作桌面项目),等用户验证 P1+P2+P3A 后再做。 ## 2026-05-13 前期推进 — **[#21](https://github.com/chainlesschain/chainlesschain/issues/21) Android v1.3+ P0 前置三项 GA-independent + AI-3 forward-compat + 2 bug fix** v1.2 GA 上架前的 P0 前置批次(**未 bump version**,与 P1 主体一起 release): - **A.3 ADR Review v2.0** (`348896382`) — 8 ADR 全 audit 结论 **5 keep / 2 amend / 1 revise**。新增 [Android*ADR*重评估\_v2.0.md](docs/design/Android_ADR_重评估_v2.0.md)。ADR-2(M2 DID wallet 走软件 Ed25519,blocks B.3 DID rotate)待 v1.2 GA Play Console API level 数据决策选项 A/B/C;ADR-7/ADR-8 文本 amend 对齐真实(cc-mobile.json 从未创建走 user_settings + `mobile.*` scope;registry 实际 disk-first + push-based 非 pull)。同 commit §10 v1.3+ scope triage 分层(12 子项 P0/P1/P2 + 5 依赖链)。 - **B.6 PQC 严格模式 verifier gate** (`e24386d00`) — `LandmarkCache.strictPqMode` opt-in,拒收任何 `alg === "Ed25519"` 的 partial sig + publisher_signature;与现 heterogeneous federation 数据格式兼容,0 schema 改动;生产者侧 0 改动。 - **B.2 in-process multisig.\* + marketplace.consume topics** (`b1c7cfd95`) — 7 个 in-process WS topics 镜像 CLI `--json` 输出 shape,desktop web-shell `Multisig.vue` 用 `useShellMode().isEmbedded` 分发;**性能 asar:true 子进程冷启 6-10s → in-process ~20ms (SQLite open) + 查询,60-100× 提升**。UX 0 改动。 - **A.3 AI-3 SkillMetadata.signature forward-compat** (`45a88270e`) — Android `ManifestSignatureVerifier` interface + `NoOpManifestVerifier` always-accept stub + `RemoteSkillRegistry.setManifestVerifier()` swap seam,为 marketplace M0 上线(#21 AI-5)做接线准备。 - **修复 wear test imports** (`c0d061328`) — `CcPhoneDecisionListenerTest` 缺 `kotlinx.coroutines.{launch,delay,GlobalScope,DelicateCoroutinesApi}` imports 自 v1.2 P0.2 起 block 整个 `:app:compileDebugUnitTestKotlin`,加 4 imports 解锁。 - **修复 B.6 strict mode disk-load gate**(本次 QA sweep 发现)— `LandmarkCache.loadFromDisk()` bypass strict-mode gate,重构 per-snapshot 严格检查到 `_validateAndStoreSnapshot()` 头部,+2 新 disk-load integration tests 锁回归。 **测试**:B.6 strictPqMode 11/11 + B.2 multisig-handlers 23/23 + AI-3 ManifestSignatureVerifier 10/10 + Android `:app` regression 57/57 + web-shell 379 regression(25 files)全过。 ## 2026-05-13 发布 — **v5.0.3.51 远程操控 Plan A + B 基础设施落地(WebRTC 透传中继 + STUN/TURN 部署 + iceServers 凭证签发)** productVersion **v5.0.3.50 → v5.0.3.51**。Plan C(v5.0.3.50)信令转发让低频命令通了 100-400ms p99,但有两个硬约束:吞吐(中继带宽全平台共享 → 流式 token / 文件 / 视频不能走)+ 隐私(公网 wss TLS 之外中继服务器仍看到 payload 明文)。Plan A+B 解决这两条:真 WebRTC P2P DataChannel = 端到端加密 + 直连带宽。三段位完整图景:低频命令走 Plan C signaling forward / 高吞吐流式 token + 文件走 Plan A WebRTC DC / NAT 穿透兜底走 Plan B STUN/TURN。设计文档:[Android Remote Operate Plan A+B](docs/design/Android_Remote_Operate_Plan_AB.md)。 - **Plan A — WebRTC signaling 透传中继**(commit `e9f9d6275` + `af11daa6e`)—— signaling-relay `server.js` `handleMessage` switch 新增 case `offer/answer/ice-candidate/ice-candidates/peer-status` 与 `type=message` 同路径 forward + 注入 `from` 字段(与 LAN signaling-handlers 行为一致)。桌面 main `startRelayClient.onMessage` 简化为统一 dispatch:pair-ack 仍单独路由写 sessionState,其余(command:request / offer / answer / ice)交给 `mobileBridge.handleSignalingMessage` 同款 dispatcher —— LAN 路径与 relay 路径完全等价。 - **Plan B — coturn STUN/TURN 部署** —— `turn.chainlesschain.com` (47.111.5.128) 监听 `0.0.0.0:3478` UDP+TCP + `5349` TLS + `49152-65535` UDP relay;docker compose host network 模式避免 NAT;Let's Encrypt @gitee 镜像 acme.sh 续证;`use-auth-secret` time-limited credentials。 - **iceServers HMAC-SHA1 24h ephemeral creds** —— `signIceCredentials(userId)` 签发 `username = expiry-ts:user-id` + `credential = base64(HMAC-SHA1(TURN_SECRET, username))`,返回 `stun:turn.chainlesschain.com:3478` + `turn:3478?transport=udp/tcp` + `turns:5349` 三档优先级 + 凭证。env `CC_TURN_SECRET` **强制必填**源码无 fallback **绝不硬编码 secret**(任何 fork 也无法签出生效凭证),缺 env 时降级 STUN-only。 - **iceServers 不塞 QR 改信令推送** —— QR payload 650+ 字符 + 高纠错 280px 扫描识别率暴跌(2026-05-14 实测阻塞 30s 扫不出);改成扫码后异步推送:桌面 pair-ack matched 后 `pushIceServersToMobile(ackPayload)` LAN signaling + 公网中继**双发** `type chainlesschain:ice:config` payload `{pcPeerId, iceServers, iceExpiry}` 给手机;Android `WebRTCClient.setOnForwardedMessageReceived` 拦截 + `persistIceConfigMessage` upsert `PairedDesktopsStore.iceServersJson`;`SignalingRpcClient.handleIceConfigMessage` 同步备份 race-tolerant。 - **Android `WebRTCClient.createPeerConnection`** —— 注入 `PairedDesktopsStore`,`resolveIceServersFor(pcPeerId)` 用 stored iceServers 含 TURN,过期/缺失 fallback Google STUN;`parseIceServersJson` 支持 `urls` 既可 string 又可 array。 - **`backend/signaling-relay-service/` 入仓** —— `server.js` + `Dockerfile` + `docker-compose.yml` + nginx vhost + `deploy.sh` + README,使二方部署有路径。 **已知约束 / Trade-offs**:iceServers TTL 24h 过期后 fallback Google STUN 跨 NAT 不通(v1.4 GA 前补 mobile 检测 expiry 临近经信令请求新凭证);WebRTC P2P 端到端真机跨 NAT 实测待补(phone 4G + desktop home WiFi 完整 file-transfer 流);Signal Protocol E2EE 待 Plan A DC 通了再考虑(DC 已是直连 TLS,Signal 收益边际);阿里云安全组要求 UDP 3478 / TCP 3478 / TCP 5349 / UDP 49152-65535 全开放给 0.0.0.0/0,未开端口 coturn 容器跑但外部不可达 ICE 收集失败。 **部署 / 分发**:桌面 binary v5.0.3.50 → v5.0.3.51 重打;signaling-relay-service 部署在 `47.111.5.128`;CLI `chainlesschain` 0.161.10 → 0.161.11;Android versionCode/Name 不变;三大文档站本次同步刷新:docs-site / docs-site-design tagline 升 v5.0.3.51 + 设计文档 Plan A+B 同步。 ## 2026-05-13 发布 — **v5.0.3.50 Android Remote Operate Plan C 信令转发 RPC(桌面遥控器真接通)** productVersion **v5.0.3.49 → v5.0.3.50**。配对完成(v5.0.3.49 W3.7 Flow B QR pairing)后,手机要"操控"桌面——点 Ping / 系统状态 / 系统信息 按钮、桌面执行、响应返回——需要把命令送达桌面。Plan A(WebRTC P2P 直连)+ Plan B(STUN/TURN 穿透)工程量大;Plan C 复用配对已通的信令 forward 管道,单次低频命令先跑通,A+B 留后续。设计文档:[Android Remote Operate Plan C](docs/design/Android_Remote_Operate_Plan_C.md)。 - **`SignalingRpcClient` 落地** —— 手机端 RPC 入口:构 `{type:"chainlesschain:command:request", payload:{id, method, params, auth, timestamp}}` → `PairingSignalingGate.sendAck`;一次性安装 `setOnForwardedMessageReceived` listener 按 `requestId` 关联 `CompletableDeferred` resolve 响应;30s `withTimeout` 兜底;**LAN sendAck 失败时自动 reset gate → 切公网中继 URL → re-register → 重试一次**,与 `ScanDesktopPairingViewModel` 配对路径同模式。 - **`RemoteOperateScreen` + ViewModel** —— 极简 UI:3 个 chip 按钮(Ping / 系统状态 / 系统信息)+ 响应 JSON 显示 + 解除配对。首页"已连接桌面"卡片点击 → NavGraph 跳 `remote_operate/{peerId}`。 - **`PairedDesktopsStore` 持久化** —— SharedPreferences JSON 落已配对桌面列表(pcPeerId / deviceName / lanSignalingUrl / relayUrl / pairedAt / lastSeenAt);upsert idempotent by pcPeerId;首页改读 store 而非 `p2pClient.connectedPeers` —— Plan C 不建持久 P2P 连接,扫码后信令立刻断 connectedPeers 即空,UX 反直觉的根因。 - **Desktop `RelayClient` 外网中继外联** —— `desktop-app-vue/src/main/p2p/relay-client.js` outbound 长连 `wss://signaling.chainlesschain.com`,`register` 桌面 pcPeerId(必须与 mobileBridge.peerId 一致,否则外网手机找不到目标 peer),`onMessage` 路由 pair-ack / 一般 mobile command 进 `recordPairAck` / `handleMobileCommand`(与 LAN 同一管道);指数退避自重连 max 60s。 - **`mobile-bridge.handlePairAckFromRelay`** —— bug fix:`main/index.js` 调 `this.mobileBridge?.handlePairAckFromRelay(...)` 但方法之前不存在,optional-chain `?.` 静默吞掉 relay 路径 pair-ack 不触发任何事件;补 EventEmitter 通知与 LAN 行为对称。 - **`MobileBridgeHeaderStatus.vue`** —— web-panel header 显示已配对 mobile 数量,5s 轮询 `cc p2p devices --type mobile`。`parseJsonOutput` 跳过 CLI log 前缀(`[AppConfig]` / `[DatabaseManager]` 等)避免 false-positive 匹配为 JSON-array 开头。 - **i18n** —— `RemoteOperateScreen` 11 个字符串提取到 `values/strings.xml` + `values-zh-rCN/strings.xml`(ro_title / ro_subtitle / ro_peer_id_fmt / ro_quick_commands / ro_cmd_ping/status/info / ro_executing_fmt / ro_error_label / ro_response_label / ro_unpair)。 **测试**:3 个新单测文件 / 20 测试全绿 —— `PairedDesktopsStoreTest` 7(mocked SharedPreferences 而非 Robolectric,核心 store 启动快几个数量级)/ `SignalingRpcClientTest` 7(FakeSignalClient + CapturingGate;happy / 无 DID fail fast / LAN→relay fallback / 双失败 / response 含 error 字段 / withTimeout 真超时 / 未知 rid silent ignore)/ `RemoteOperateViewModelTest` 6(mockk + StandardTestDispatcher;state 转移 + null 错误兜底 + unpair 调 store.remove)。两个关键技术决策:(1) 用 `runCurrent()` 而非 `advanceUntilIdle()` —— SignalingRpcClient 内部 `withTimeout(30000)` 用虚拟时间,advanceUntilIdle 会把时间推到 30s 后触发误超时;runCurrent 只跑当前时间点 ready 任务;(2) 新增 `testImplementation("org.json:json:20240303")` —— Android SDK 自带的 `org.json.JSONObject` 在 `isReturnDefaultValues=true` 下方法静默返默认值而非真解析 JSON。`ScanDesktopPairingViewModelTest` `signaling gate failure surfaces Failed` 改期望 `sendAckCallCount == 2`(LAN+relay 双打)。Desktop vitest 7600+ 套全绿。Plan C 真机 E2E(Android↔desktop relay 命令往返)入用户出场清单,与 Flow B 验证 pattern 一致。 **已知约束 / Trade-offs**:信令一跳 + 公网中继多一跳,p99 延迟 100-500ms,低频命令可接受;流式 token / 文件不适用 → 走 Plan A.2 WebRTC DataChannel;中继 TLS 但中继服务器看得到 payload,端到端加密需上 Signal Protocol session(已有 e2ee 模块但 Plan C 当前未挂);中继宕 = Plan C 不可用,LAN 仍工作。 **路线图**:Plan C ✅ 落地 → Plan A.1 (DataChannel 复用,DC 不可用时退信令) → Plan A.2 (高吞吐场景真 P2P 直连绕中继带宽) → Plan B (STUN/TURN 穿透,让真 NAT 隔离两端也能 A.1)。 **部署 / 分发**:桌面 binary v5.0.3.49 → v5.0.3.50 重打;`chainlesschain` npm 版本不变(CLI 0 改动);Android versionCode/Name 不变(v1.0.0 GA 维持,本批 Plan C 走桌面端 v5.0.3.50 优先 + 后续 Android v1.1 minor 一并 ship 完整移动客户端)。三大文档站本次同步刷新:docs-site / docs-site-design 由 sync 脚本拉新 Plan C 设计文档 + docs-site tagline 升 v5.0.3.50 + README/README_EN 加本节 changelog。 ## 2026-05-12 发布 — **v5.0.3.49 M-of-N multisig Phase 1d + Phase 2a marketplace mediator + Phase 2b web-panel Multisig view + Flow B QR pairing 收口 + 测试补丁** productVersion **v5.0.3.48 → v5.0.3.49**。本版四条主线: **(1) `@chainlesschain/core-multisig` package + `cc multisig` CLI 落地**(commit `3c890dcac`,v1.2 m-of-n Phase 1d)—— 新建 npm workspace package 含 5 lib(policy / store / proposals / signing / governance-log),CLI 加 8 subcommands(propose / sign / cancel / finalize / list / show / sweep / policy);75 lib 单测 + 10 CLI integration 测试全过。SQLite native(better-sqlite3-multiple-ciphers)→ sql.js WASM 自动 fallback,CLI 跨平台开箱即用。 **(2) Phase 2a marketplace.purchase mediator**(commit `2755093d0`,设计文档 §6.1 落地)—— `cc marketplace purchase ` 大额(≥¥1000 默认 `LARGE_PURCHASE_THRESHOLD_FEN = 100000` fen)自动走 M-of-N 多签 propose,小额走 direct;`cc marketplace consume ` 在 threshold 达成后 finalize + 执行业务。抽出 `packages/cli/src/lib/multisig-runtime.js` 共享 SQLite cascade + manager loader 让 multisig + marketplace 复用(−130 行 dedup,Phase 1 10/10 零行为变更)。8 新 E2E 测试全过(大额 2-of-2 全 walkthrough / 小额 direct / `--threshold-fen` override / 6 个错配 exit 2)。marketplace.purchase / did.rotate / 跨链 bridge 三大典型 domain 由此真接通业务侧 — marketplace 是第一个 mediator 实例。总 **18 multisig integration test 全 green**(Phase 1 10 + Phase 2 8)。 **(3) Phase 2b web-panel Multisig 视图落地**(commit `c758492d9`,设计文档 §8.1 落地)—— web-shell(默认桌面入口)加 M-of-N 多签查看 / 操作面板。新 `packages/web-panel/src/views/Multisig.vue` (468 行):6-card 顶部 stats(总数 / pending / reached / consumed / cancelled / expired)+ 两 tab 提案列表(state+domain 过滤、详情/取消/执行购买 actions)/ 域策略(marketplace.purchase / did.rotate / crosschain.outbound)+ 640px Detail drawer(payload JSON + 签名列表 + 取消/执行购买/finalize 操作按钮)+ info Alert "web shell 不持私钥 sign 走 CLI"。AppLayout.vue + router/index.js 加 sidebar 入口(TeamOutlined)+ `/multisig` 路由 + i18n fallback "M-of-N 多签"。WS 通信走 `ws.executeJson('multisig list --json')` CLI 子进程,冷启动 6-10s(asar:true 开销)可接受;Phase 3 follow-up 可加 in-process WS handlers 削延迟、私钥签名 UI 接 Unified KeyStore、实时推送、Marketplace.vue purchase modal 集成。同份 SPA 在 desktop web-shell + cc ui 两边自动可用(per memory `feedback_cross_shell_feature_pattern`)。 **(4) Android v1.1 W3.7 Flow B QR pairing 落地**(commit `c47cbc649`)—— desktop 显 QR / phone 摄像头扫的主流应用通用 UX(微信/支付宝/Discord/WhatsApp Web 同模式),Xiaomi 24115RA8EC 真机 E2E verified。9 项实战坑全排清。同步补齐 Flow B commit 漏掉的 2 个测试文件:`ScanDesktopPairingViewModelTest` 10 项 + `desktop-pair-handlers.test.js` 19 项。 **新增 — M-of-N multisig core(v1.2 #20 P0.3 Phase 1d)**: - **`@chainlesschain/core-multisig` package** —— lib 5 文件:`policy.js`(域级 `{m, n, members[], requirePqc, defaultExpiryMs}` validate + normalize)/ `store.js`(SQLite 3 表 schema + helpers)/ `proposals.js`(状态机 `pending → reached → consumed` + `cancelled` / `expired` terminal)/ `signing.js`(JCS canonicalize + DOMAIN_PREFIX `"MULTISIG:"` 防回放 + Ed25519/SLH-DSA dispatcher + verifyThreshold strip-all-sigs)/ `governance-log.js`(append-only JSON Lines 审计,每态转捕);75 单测全过。 - **`cc multisig` CLI 8 subcommands** —— `propose` / `sign` / `cancel` / `finalize` / `list` / `show` / `sweep` / `policy {set, show}`;全 `--json` 输出;10 CLI integration 测试全过。 - **SQLite driver cascade** —— native `better-sqlite3-multiple-ciphers` / `better-sqlite3` 失败时自动降级 `sql.js` WASM,无须每平台预装 native prebuild(per memory `feedback_sqlite_wasm_fallback`)。 - **测试基础修复 3 项**:`core-multisig vitest.config.js` 设 `globals: true`(vitest 4 不接 CJS `require("vitest")`);5 test 文件改 ESM import;`multisig-cli.test.js` import 路径 `@chainlesschain/core-mtc/signers/ed25519.js` → 去 `.js` 后缀(core-mtc exports key 无后缀)。 **新增 — Phase 2a marketplace.purchase mediator(v1.2 #20 P0.3 Phase 2)**: - **`cc marketplace purchase ` + `cc marketplace consume ` 两 subcommand** —— amount ≥ threshold 必须有 `marketplace.purchase` policy 才能 propose;threshold 默认 ¥1000(`LARGE_PURCHASE_THRESHOLD_FEN = 100000` fen),可 `--threshold-fen` 覆盖;amount < threshold 走 direct path 不创 proposal;`consume` 校验 `domain == "marketplace.purchase"` + `state == "reached"` 后 finalize + 打印订单 + governance log 写 `consumed` 事件。 - **共享运行时** `packages/cli/src/lib/multisig-runtime.js` —— 抽出 commands/multisig.js 内联的 SQLite cascade + manager loader + readSecretKey/readJsonArg helpers,commands/marketplace.js 复用。multisig.js 同步 refactor 替代内联,-130 行 dedup,Phase 1 10/10 integration test 零行为变更。 - **8 新 E2E test 全过**(`marketplace-multisig-e2e.test.js`):大额 ¥1500 2-of-2 全 walkthrough(policy → purchase → sign×2 → reached → consume → governance.log `proposed`/`signed`×2/`reached`/`consumed`)/ 小额 ¥500 direct / threshold override / 大额无 policy exit 2 / consume pending exit 2 / consume 错域 exit 2 / `--help`。 **新增 — Phase 2b web-panel Multisig 视图(v1.2 #20 P0.3 Phase 2b)**: - **`packages/web-panel/src/views/Multisig.vue`** —— 6-card stats + 提案列表 tab(state/domain 过滤 + 详情/取消/执行购买 actions)+ 域策略 tab(marketplace.purchase / did.rotate / crosschain.outbound 已知 policy)+ 640px Detail drawer(domain/state/threshold/sigs/initiator/payload JSON + 签名列表 + 操作按钮)+ info Alert "web shell 不持私钥 sign 走 CLI"。 - **router + AppLayout** —— `/multisig` 路由 + sidebar security/audit 组 multisig 入口(TeamOutlined)+ 折叠模式同步 + i18n fallback "M-of-N 多签"。 - **WS 走 CLI 子进程** —— `ws.executeJson('multisig list --json')`,复用 Phase 1 CLI;冷启动 6-10s(asar:true)可接受。 - **Phase 3 follow-up**:私钥签名 UI(需 Unified KeyStore)、in-process WS handlers、实时推送、Marketplace.vue 集成入口。 **新增 — Android v1.1 W3.7 Flow B QR pairing(issue #19)**: - **跨模块 DI 拆解** —— `PairingSignalingGate.sendAck` interface 落 `:core-p2p` 避免 `:feature-p2p` 反依赖 `:app`;`WebSocketPairingSignalingGate.sendAck` 实现在 `:app` 内 `ensureRegistered + Mutex` 串行化;`WebRTCClient.SignalClient.sendForwardedMessage(toPeerId, payload)` 桥接 mobile 端的 signaling forward。 - **Mobile 端 UI**:`ScanDesktopPairingScreen` + `ScanDesktopPairingViewModel` 用非-social `QRCodeScannerScreen`(ZXing 透传,social variant 校验 reject 我们的 desktop-pairing JSON);NavGraph + SettingsScreen 加"扫描桌面 QR"入口。 - **Desktop 端 WS topics 三件套** `desktop-pair-handlers.js`:`desktop.pair.generate-qr` / `poll-ack` / `reset`;`mobile-bridge.js` 加 `this.peerId` 持久化 + 拦截 `type=pair-ack` 经 `recordPairAck` 匹配 + 写 SQLite。 - **Vue UI** `MobileBridge.vue` Flow B tab(默认)+ Flow A + 手输 3-tab;`antd.js` 注册 `AQrcode`。 **测试补丁**: - **Android `:feature-p2p:testDebugUnitTest` 41s 全绿**(138 actionable tasks)—— 新 `ScanDesktopPairingViewModelTest` 10 测试 + existing `DesktopPairingViewModelTest` + MessageQueueViewModelTest + P2PChatViewModelTest + P2PDeviceViewModelTest。 - **Desktop 3 文件 / 45 测试全绿** —— 新 `desktop-pair-handlers.test.js` 19 测试 + `mobile-pair-handlers.test.js` 9 测试 + `web-shell-bootstrap.test.js` 17 测试。 **部署 / 分发**:桌面 binary:v5.0.3.48 → v5.0.3.49 重打(含 Flow B + multisig 新代码;auto-updater 比对 `5.0.3-alpha.49 > 5.0.3-alpha.48`)。`chainlesschain` npm 0.161.8 → 0.161.9(cli 加 multisig command + dep `@chainlesschain/core-multisig`)。Android:versionCode/Name 不变(v1.0.0 GA 维持);Flow B 桌面端首发,后续 Android v1.1 minor release 一并 ship 完整移动客户端。三大文档站本次同步刷新:docs-site / docs-site-design / docs-website-v2 tagline 升 v5.0.3.49 + 加本节 changelog。 --- ## 2026-05-12 发布 — **v5.0.3.48 Android M3 capture suite (5/5 code) + M4 RemoteSkillRegistry method-level + ApprovalUI 4-category + ProgressViewer + alias 兼容窗口** productVersion **v5.0.3.47 → v5.0.3.48**。Android v1.0 RFC M3 + M4 收尾批次:7 commit / 187 新单测 / Android 总单测 196+ → 383+。**Android M7 GA flip 一并落地(commit `ffe722162`):versionCode 37 → 100,versionName 0.37.0 → 1.0.0 GA**。无桌面 / CLI 源码改动,CLI npm 0.161.7 → 0.161.8(force publish 走 release.yml 同步轨道)。下一步 tag `v1.0.0` 在 `ffe722162` 推 gitee+github。 **新增 — Android M3 capture suite (5/5 代码层落地)**: - **VoiceMode 连续语音串联**(commit `47bebed80`)—— ASR → REMOTE chat → TTS pipeline 在 home 入口串通。 - **CameraOCR 拍照入 KB 流水线**(commit `a69269ced`)—— `ai.ocrImage` + `knowledge.createNote` 走完,OCR 元数据自动写入。 - **LocationTagger Play Services FusedLocationProvider + Foreground Service**(commit `3f5ac8647`)—— GPS 数据进 `createNote.metadata`。 - **SharePayloadFlusher 接 SyncCoordinator → knowledge.createNote**(commit `3d1a6e3a8`)—— 5 种 SharePayload(Text / Url / SingleImage / MultiImage / GenericFile)转 note 字段;SyncCoordinator 30s push 循环末尾 drain SharedInboxRepository,失败 re-enqueue。19 新单测。 - **PushNotifier 本地通道 + FCM 骨架**(commit `c0d990c91`)—— 4 NotificationChannel(Cowork / Marketplace / SystemAlert / ShareInbox)+ 协议中立 `CcPushNotificationService` 入口;FCM 真接入按 `android-app/docs/M3_FCM_SETUP.md` 5 步走(google-services.json 由用户出场)。36 新单测。 **新增 — Android M4 收尾**: - **RemoteSkillRegistry method-level 元数据**(commit `6e49270fd`)—— `MethodMetadata` data class + 4 个 accessor;`knowledge.*` + `ai.*` 各 10 methods seeded(8 riskOverride 演示);其他 21 namespace pending 桌面 mobile-skill-whitelist 下发。16 新单测。 - **ApprovalUI 4 category 适配**(commit `f4f83cc67`)—— `ApprovalCategory` enum {Sign / Cowork / Marketplace / SystemCritical} + fromMethod 推断;`AndroidApprovalGate` 4-arg overload 透传 category;Dialog 按 category 切 icon / tint / title / footer。9 新单测。 - **ProgressViewer 长时任务面板**(commit `f4f83cc67`)—— `LongTaskRegistry` `@Singleton` MutableStateFlow + `TaskProgressCommandRouter` 接 `task.*` reverse-RPC + Compose `ProgressViewerScreen`(StatusChip + Linear / indeterminate Circular + dismiss / clear-terminal,MAX_TASKS=100 滑窗)。34 新单测。 - **§8.3 RemoteSkillRegistry alias 兼容窗口**(commit `0bc8e2797`)—— `SkillMetadata.aliases` 字段 + 内部 `aliasIndex` 反查;所有公共 accessor 自动经 `resolveAlias`。未来 namespace 改名 1 版内不 break。7 新单测。 - **§8.1 README + v1.0 GA 检查清单**(commits `0bc8e2797` `3da484e9c`)—— `android-app/README.md` M3 (2/5) → (5/5 code)、M4 补 method-level + ApprovalUI + ProgressViewer;新增 `ANDROID_v1_GA_CHECKLIST.md`。M7 GA flip 已由 `ffe722162` 落地,余下 4 项待用户出场:M3 真机 E2E / M4 D2 真机 / FCM 凭证 / M6 性能实测。 **测试**:Android 187 新单测全绿,覆盖 capture / push / registry / task / approval-category / composite-router 全部新模块。Desktop store 回归 26 文件 / 773 测 ✓;CLI lib 169 文件 / 7185 测 ✓(确认 Android 工作未污染 desktop / CLI 路径)。 **部署 / 分发**:桌面 binary 重打 v5.0.3.47 → v5.0.3.48(无桌面源码改动;auto-updater 比对 `5.0.3-alpha.48 > 5.0.3-alpha.47`,v5.0.3.47 用户重启拿到新 build)。`chainlesschain` npm 0.161.7 → 0.161.8(CLI 自身 0 源码改动;force publish 走 release.yml 同步轨道)。Android:versionCode 37 → 100, versionName 0.37.0 → **1.0.0 GA**(commit `ffe722162`);`android-app/CHANGELOG.md` 加 `[1.0.0] - 2026-05-12` GA entry,`android-app/README.md` 标题切 "🎉 v1.0.0 — GA"。三大文档站本次同步刷新:tagline 升 v5.0.3.48 + 新增本节 changelog。 --- ## 2026-05-10 发布 — **v5.0.3.46 Phase 3d 桌面 ↔ Android 双向同步全套 + Android 0.37.0 七件套 + e2e CI 静默回归洞收口** productVersion **v5.0.3.45 → v5.0.3.46**。Android **0.36.0 → 0.37.0**(versionCode 36 → 37)。本次主线三条:(1) **Phase 3d Mobile-Bridge-Sync 桌面 ↔ Android 双向社交数据同步全套落地**(M2 → v1.2 共 12 commit · 5 ResourceType walker + tombstones + Room cursor + sync.\* JSON-RPC handlers + DeviceManager + SyncCoordinator auto-trigger · gate 1-4 全部 Ed25519 真签真验);(2) **Android 0.37.0 一次落 7 件用户可见功能**(Volcengine SeedASR 语音 + APK 自更新 issue #21 + Splash 重做 + Claude coral 主题 + i18n 三地区 + 生物识别 + DID Key 屏);(3) **e2e CI 静默回归洞收口**(drop e2e-tests workflow JOB 级 `continue-on-error: true` —— 之前让 3/3 OS 失败显示 success "No team IPC interface found" 沉了几周 + Playwright 浏览器 cache 加速)。 **新增(Phase 3d 桌面 ↔ Android 双向同步)**: - **M2 桌面 sync engine 落地**(commits `491fb4758` → `9a8e3635d`)—— scaffold mobile-bridge-sync provider,drop dead `MobileSyncManager`;rewrite 5 ResourceType walker(`note` / `conversation` / `did` / `community` / `channel`)+ apply 路径;tombstone 触发器 + `resource_type` 列;`mobile.ts` 真 provider + IPC wire-up;52 个 mobile sync 测试,过程中找出并修 3 个 prod bug。 - **M3 Android 侧 SocialSyncAdapter wiring + Room cursor + JSON-RPC handlers**(commits `28c85dad5` → `1131e35a2`)—— 用 `dagger.Lazy` 解 4 处 Hilt 循环依赖;MESSAGE outgoing path;Room 持久化 `SyncRemoteCursor`;`sync.*` JSON-RPC handlers 在 SyncManager 落地;transport wiring + outbound JSON-RPC。 - **M4 桌面设置页 + DeviceManager + 手动配对**(commits `0bf5f00b9` `17ea9b69d`)—— Settings 加 SyncMobile 移动设备同步页面;DeviceManager wire-up + 手动 pairing 表单。 - **v1.1 真填 handlePullRpc + DID auth + 自动 trigger**(commits `2d841dfdc` → `b77e0773b`)—— Android walker 真填 `handlePullRpc` 不再 stub;`sync.*` topic 加 DID 签名验证;`SyncCoordinator` socket 连上后自动 trigger push/pull。 - **v1.2 真 Ed25519 + Android gate 4**(commits `c739d77d0` `4ecb7c8ef`)—— 桌面侧 placeholder 签名 → 真 `@noble/ed25519`;Android gate 4 验签,gate 1-4 全部 strict-verify。 **新增(Android 0.37.0,commit `1348636ad`)**: - **Volcengine SeedASR 语音识别** —— `WavRecorder`(16kHz mono PCM → WAV)+ `VolcengineAsrClient`(HTTP submit + 800ms poll)+ `HomeStatusViewModel` 状态机 + `AsrSettingsScreen` x-api-key 入口 + Recording/Transcribing dialogs。 - **APK 自更新(issue #21)** —— `UpdateChecker`(GitHub Releases API,tag prefix `android-v`,arm64-v8a asset 选择)+ `UpdateInstaller`(DownloadManager + FileProvider + ACTION_VIEW)+ `UpdateDialog`(changelog scroll + REQUEST_INSTALL_PACKAGES 权限流)+ Settings "检查更新" 入口。 - **Splash + 主题大改** —— SplashScreen 紫色渐变 + 旋转环 + TT logo + 3-dot breathing + progress;`rememberUpdatedState` 修 splash race;Claude coral palette(`#D97757` primary)+ `dynamicColor=false` 默认保品牌色。 - **i18n(issue #16)** —— `resourceConfigurations` 用 `zh-rCN` / `zh-rTW` / `zh-rHK` 显式 qualifier(fix:`zh` 作 language-only 在 build 时把 `values-zh-rCN/` 全过滤掉);`AppCompatDelegate.setApplicationLocales` 接线;`MainActivity` → `AppCompatActivity` + `Theme.AppCompat.Light.NoActionBar`。 - **Auth + DID + 生物识别** —— `AuthRepository.register` 幂等回退 verifyPIN(fix race:AuthVM 异步 DataStore read vs splash navigate 抢跑);SettingsScreen 生物识别 toggle;新增 `KeyManagementScreen`(DID + public key hex + clipboard + trusted devices + reset)。 - **Home page UX** —— LLM 未配置 banner(点击跳 LLM Settings);Send-from-home prefill 通路;BrandSection / AboutScreen logo 切 `R.mipmap.ic_launcher`;FunctionEntryCard 12 硬编码彩色 → 统一 surfaceVariant + 44dp icon chip。 - **顺手修的 latent bug**:`OpenAIAdapter.{chat,chatWithTools,checkAvailability,streamChat}` 加 `withContext IO` + `flowOn`(之前 block main thread → 12s 主页冻结);`RemoteConnectionManager.invoke{,WithRetry}` inline reified ``;`SystemMonitorScreen.kt:149` `os?.type/version` null-safe;256 个 `rs_*` string stub 自动生成。 **修复**: - **Android `sync.*` DID auth strict-mode flip + release build unblock**(commit `49f1440ca`)。 - **2 个 mobile-ipc 测试 stale after M4.5**(commit `d34de0ac0`)—— DeviceManager wire-up 改了 IPC shape,把测试同步对齐。 - **官网移动端 hamburger 菜单**(commit `0bb62675d`)—— `SiteHeader.astro` 在小屏下 nav 列表撑满整行无折叠,加 `