cc-haha/release-notes/v0.5.12.md
2026-06-16 00:50:56 +08:00

72 lines
8.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# v0.5.12
> 这一版三条主线收尾:**Solo 模式演进成 Solo Council**A/B/C 三方案门控 + plan-critic 专家 + 评审面板 + 实施前审批)、**Workspace LSP 链路全闭合**agent 文件编辑桥 + 自动诊断同步 + 状态指示器接入工作区面板)、**插件生态成形**image-gen MCP 多 provider 图像生成 + 桌面插件可视化配置 + 内置 marketplace 随包发布 + 逆向工程 3 个验证过的 MCP server。同时品牌改名 **Code Council**,桌面端补了一批 UX/Polish/可靠性改动。
## 新功能
### Solo CouncilPlan A/B/C + 评审面板 + 审批门控
- **A/B/C plan gate + plan-critic 专家**#34。Solo 模式不再是单线流水线 — 进入 planner 阶段会 fan-out 三个候选方案 A / B / C由独立的 `plan-critic` 专家投票评分,把最优方案推回主线。
- **Council 评审面板**。Solo Council 视图新增专属 panel展示各方案的合成与冲突 / blockersUI 视觉细节同步抛光。
- **实施前必须审批**。完成评审后会强制要求用户确认才能进入 builder 阶段,不会闷头开干。
- **Ctrl+B 侧栏 toggle + thinking block 默认折叠**。多 panel 拥挤时一键收起侧栏;推理块默认折叠避免视觉噪音。
- **i18n 重命名**。"Solo Pipeline" → "Solo"5 个 locale 同步composer toggle / chat header chip / 设置文案统一。
### Workspace LSP 链路全闭合
- **Agent 文件编辑桥Phase 4**#29。FileEditTool / FileWriteTool 写盘前后调 `diagnosticTracker.beforeFileEdited` 抓 baseline写完通知 LSP `didChange` + `didSave`,下一轮 user message 自动注入 `<diagnostics>` attachment 让 agent 看到错误。Bash-tool 缺失时跳过注入(子 agent 修不了的不发)。
- **自动诊断同步**commit `d13f29e0`。Workspace 编辑器在文件 open / change / save 时调 session LSP sync API服务端启动匹配的语言服务器并接收 `textDocument/publishDiagnostics`,按文件 URI 缓存 + 跨轮去重 + 严重度限流。
- **LspStatusIndicator 接入工作区面板**#51)。原本只有简陋的 `LSP idle · N diagnostics` 文本条,换成完整 indicatorspinner / 绿勾 / 红色错误计数 chip / Retry 按钮点击展开诊断下拉Enter 跳转文件。Retry 按钮直连 `POST /api/sessions/:id/lsp/restart`,自带形状适配 `lspStateMap.ts`pure adapter + 8 单测)。
- **可编辑文件预览**。工作区面板的文件预览不再只读CodeMirror 6 ≈ 80 KB gz 接入语法高亮、行号、搜索、缩进引导,原子保存 + 冲突 banner。
- **从历史恢复后台任务**。会话重连后正在跑的 task 会被恢复,不会幽灵悬挂。
### 插件生态image-gen + 桌面配置 + Marketplace 随包
- **image-gen MCP 插件**#49)。多 provider 图像生成 MCP支持 Agnes / GPT-image-2 / DALL-E / Gemini image / Flux / Stable Diffusion 等 OpenAI 兼容 API。3 个可配置 provider 槽位按优先级 fallback每个 provider 内部支持完整参数 → 精简参数兼容重试;内置模型能力数据库供 agent 查询SSRF 防护(包括 IPv6 `[::1]` vs `::1` 旁路)。
- **桌面端插件可视化配置**。新增 `PluginConfigModal` 组件,支持配置插件 userConfig 选项PluginDetail 详情页新增 Configure 按钮(仅当插件有 userConfig 时显示);新增 `GET/POST /api/plugins/options` API敏感值返回 `********`
- **聊天内图片渲染**。Tool result 中的 MCP image content block`{ type: 'image', data, mimeType }`)现在在聊天 UI 中渲染为内联图片,同时支持 OpenAI-style `image_url` block。
- **Marketplace 随 Electron 包发布**#50)。新增 `desktop/scripts/build-plugin-seed.ts`,把 `plugins/` 复制到 `desktop/plugin-seed/marketplaces/cc-haha-builtin/` 并打进 asarsidecar 通过 `CLAUDE_CODE_PLUGIN_SEED_DIR` env 在启动时 `registerSeedMarketplaces` 注入CLI 端早就支持但桌面端从没接通 — 现在装完就能在设置-插件里直接看到 image-gen / reverse-engineering 等内置插件。
- **一键 Language Server / MCP 安装**。Settings → Plugins 新增"Install all"面板,单个 manager 失败时按平台 fallthroughwinget → scoop → choco / brew → port / apt → dnf → pacman不会一个 dependency 卡住后续全部。MCP marketplace 现在尊重 installed state 与 required env。
- **Reverse-engineering 插件 v0.4.6**#32 / #33)。
- 从 7 → 3 个 live-smoked MCP serverapktool / lldb / radare2 / jadx 上游不可用frida 换成 PyPI 的 `frida-mcp`)。新增 `scripts/smoke-reverse-engineering-mcps.ts` 走 NDJSON 框架做端到端验证。
- 新增 `apk-hardening` skill~430 行APKiD 识别 + 8 个加固家族路由360 / Tencent Legu / Bangcle / Naga / Ijiami / 阿里聚安全 / Baidu / Flutter / Unity IL2CPP / RN+ 每工具 playbookFRIDA-DEXDump / FART / Unidbg / Blutter
- triage / apk-analysis / frida-dynamic / lldb-debug 改用 Bash 直接驱动 CLI不再假设 MCP 存在。
### 品牌Code Council
- 桌面应用可见品牌从 "Claude Code Haha" 更新为 **Code Council**。About 页 / 窗口标题 / 安装包 productName 全部一致。
## 改进
- **Phase 1 UX quick wins + Sidebar refactor**。聊天 UI 视觉抛光,侧栏结构重写降耦合。
- **TabBar 不再挤压窗口控件**。修复 macOS / Windows 上 tab 多时 close/min/max 按钮被推出可视区。
- **本地图片附件预览**。聊天输入区附加图片时立即显示缩略图,不必等上传。
- **品牌重命名后的 CI 修复**。symlink test + brand-aware fixtures 同步更新。
## 修复
- **修 Windows 上"用 VS Code 打开"启动后无窗口**#52)。`defaultLaunch` 之前对 IDE 也设了 `windowsHide: true`Windows 把 `STARTUPINFO.wShowWindow=SW_HIDE` 当成传给 `ShowWindow()` 的初始 nCmdShow — 进程在任务管理器跑但主窗口被立刻隐藏。删掉这个 flagcmd flash 极短可接受。回归测试 `getDefaultLaunchSpawnOptions` 锁定 spawn 选项形状。
- **Compact 从 prompt-too-long 错误恢复**。当 API 因上下文超长拒绝时compact 流程自动触发并重试,不再卡死。
- **Text-only assistant 消息也发进度**。修复某些 provider 只回文本不调工具时进度条停在最早状态。
- **聊天用户回合前重新同步 runtime mode**。修复模式切换后第一条消息有时仍带旧 mode flag。
- **About 页产品名修复**。
- **TabBar 不再吃掉 macOS 红绿灯按钮的 hit area**。
- **修复 image-gen IPv6 SSRF bypass**`[::1]` vs `::1` 区分)。
- **修复自定义 LSP server 被内置 preset 抢占同扩展名**。
- **修复桌面设置中的自定义 LSP 配置未进入 Workspace LSP 产品链路**。
## 验证
- 服务端open-target 测试 32/32含 4 条 spawn 选项回归、conversations/Solo 3/3、soloPipelinePrompt 11/11、soloSuggestions.i18n 2/2、provider fetchUpstreamModels 5/5、seed-marketplaces-startup 4/4。
- 桌面:`bun run lint`tsc --noEmitclean、storeschatStore / sessionRuntimeStore / workspacePanelStore / openTargetStore全套通过、componentsWorkspaceEditor / LspStatusIndicator / WorkspacePanel全套通过、`src/lib/lspStateMap.test.ts` 8/8。
- AgentTool / coordinatortaskSpecQuality 18/18、lazyDelegationCheck 全套、workerContinueAdvisor 全套。
- Reverse-engineering`scripts/smoke-reverse-engineering-mcps.ts` 全 3 server live-init 通过ghidra / semgrep / frida-mcp
## 升级注意
- **零破坏**。Solo Council 默认关,需要在 `+` 菜单显式打开 toggle。LSP 反馈在 `feature('LSP_FOUNDATION')` flag 下,没装语言服务器的用户透明降级为 unavailable。
- **桌面包内置 marketplace**。安装 v0.5.12 后第一次启动,设置-插件页就能看到 cc-haha-builtin 里的 image-gen / reverse-engineering / plugin-power 等内置插件,不需要手动添加 marketplace。
- **品牌改名**app 名变成 Code Councilinstaller 文件名 `Claude-Code-Haha-${version}-${os}-${arch}.${ext}` 仍保持兼容性(不影响升级)。
- **Windows 用户**v0.5.11 之前从右上角 "Open in VS Code/Cursor" 启动后看不到窗口的问题修了,无需手动找 Code.exe。
- **逆向插件**v0.4.6 用了 PyPI 的 `frida-mcp`,需要 `uvx`uv 0.5+)。安装方式见 `plugins/reverse-engineering/README.md`