cc-haha/release-notes/v0.5.10.md
2026-06-11 20:55:46 +08:00

5.9 KiB

v0.5.10

本版本聚焦"新会话从上一个会话继续"体验,补全 v0.5.9 接续功能的最后一公里;同时引入插件依赖自动检测 + 一键安装,以及一批桌面端 UX / 可访问性改进。

新功能

  • 会话接续:深度模式 toggle(#13)。新建会话欢迎页"最近活动"卡片新增"深度"开关:打开后,下次点击"从这里继续"会把 verbatim 对话尾部从默认 ~4k tokens 拉到 ~12.5k tokens(60 轮 / 每轮 800 字 / 50k 总额),让新会话 AI 能看到完整的"最近 debug 转折"。开关状态持久化到 localStorage,选了一次不用每次重选。
    • 服务端零额外 LLM 成本:复用已缓存的 LLM 摘要 main / recent,只重新切片 verbatim 尾部。
    • 默认模式不变(还是 v0.5.10 的 24/600/16k),深度模式硬编码不受 env override 影响,UX 可预期。
  • 会话接续:默认 verbatim 尾部翻倍(#12)。SessionSummary.recentRaw 的默认尺寸从 v0.5.9 的 12 轮 / 400 字 / 8000 字符总额提升到 24 轮 / 600 字 / 16000 字符总额(≈ 4k tokens),覆盖一整个 debug 转折的前因后果。env override 上限同步从 50/30k 拉到 80/50k。
    • 用户反馈:v0.5.9 的尾部只覆盖 ~6 个 user-AI 对,接续后 AI 经常不知道"刚才到底卡在哪",新尺寸覆盖 ~12 对,实测够用。
  • 插件依赖自动检测 + 弹窗(#8)。开启 MCP 插件时,服务端用 where / command -v 探测每个 stdio server 声明的 host 命令是否在 PATH,缺啥直接弹"缺少依赖"模态,带文档链接、可复制安装命令、affected servers 列表。检测纯只读,不 spawn 工具本体;结果 60s 缓存避免一次开 7 个 server 触发 7 次重复探测。
    • 配套 schema 扩展(McpStdioServerConfigSchema.prerequisites)、prerequisitesServiceGET /api/plugins/prerequisitesPluginPrerequisitesModal
  • 一键安装缺失依赖(#9)。PluginPrerequisitesModal 底部新增"一键安装(N)"按钮:打开终端 tab → 等待终端就绪 → 按 150ms 间隔逐条注入每行依赖的首选安装命令(winget / scoop / brew / apt / dnf 看平台)。Watched automation 而非静默执行,用户全程能看到、能 Ctrl-C 打断。
  • 逆向插件依赖声明(#10)。reverse-engineering 插件的 7 个 stdio server(ghidra / radare2 / gdb / lldb / jadx / apktool / frida)全部声明 prerequisites[],弹窗去重后呈现 5 个独立行:uvx / npx / radare2 / gdb / java,各自带 win32 / darwin / linux 的安装命令。
  • 桌面 UX Phase 1 + Sidebar 重构(#11)。
    • 可访问性:MessageListrole="log" + aria-live="polite",StreamingIndicatorrole="status",TabBar 滚动按钮加 aria-label,浏览器地址栏 / 浏览面板硬编码中文字符串改走 i18n。
    • 新共享组件:Skeleton(text / rect / circle 三种变体,带 role="status" + aria-label="Loading")和 Tooltip(DOM 实现,支持快捷键提示槽)。
    • 侧边栏骨架占位:Sidebar 初始拉取阶段不再显示 "Loading..." 文本,改用 6 行 skeleton 网格;TraceListSkeleton 也迁移到共享组件。
    • Sidebar 重构:Sidebar.tsx 从 1979 行精简到 ~1150 行,抽出 sidebarUtils.ts(项目分组 / localStorage 持久化 / 偏好 / 路径处理 / 时间格式化)和 sidebarComponents.tsx(图标 / NavItem / ProjectHeaderMenu / SessionRowMeta 等)。纯结构拆分,行为不变。

改进

  • i18n 完整覆盖。本版本所有新增 UI 字符串(深度接续 toggle、依赖弹窗、Skeleton / Tooltip 提示等)在 5 个语种(en / zh / zh-TW / jp / kr)同步落地。

范围

  • 接续:src/server/services/sessionSummaryService.ts(默认尺寸三常量 + 深度模式三常量 + rebuildRecentRawForHandoff + readTurnsFromTranscript 抽离)、src/server/ws/{events,handler}.ts(set_handoff_summarydeep?: boolean)、desktop/src/components/welcome/RecentActivityCard.tsx(toggle pill + localStorage)、desktop/src/pages/{EmptySession,ActiveSession}.tsx(透传 deep)、desktop/src/types/chat.ts、5 个 i18n locales。
  • 插件依赖检测:src/server/services/prerequisitesService.ts + pluginService.tssrc/server/api/plugins.tssrc/services/mcp/types.ts(schema 扩展)、desktop/src/components/plugins/PluginPrerequisitesModal.tsxdesktop/src/components/plugins/PluginList.tsxdesktop/src/api/plugins.tsdesktop/src/types/plugin.tsdesktop/src/lib/terminalCommandInjection.ts(一键安装注入)、5 个 i18n locales。
  • 逆向插件:plugins/reverse-engineering/mcp/servers.json(7 个 server 加 prerequisites[])、plugins/reverse-engineering/.claude-plugin/plugin.json(0.4.2 → 0.4.3)、plugins/reverse-engineering/README.md
  • 桌面 UX:desktop/src/components/{shared/Skeleton,shared/Tooltip,chat/MessageList,chat/StreamingIndicator,layout/TabBar,browser/BrowserAddressBar,browser/BrowserSurface,layout/Sidebar,layout/sidebarComponents,layout/sidebarUtils}.tsx?desktop/src/pages/TraceList.tsx、5 个 i18n locales。

验证

  • 服务端 bun test src/server/services/sessionSummaryService.test.ts:11 passed(含 PR #12 / #13 三条尺寸 lock 测试)
  • 桌面端 bun run lint(tsc --noEmit)
  • 桌面端 bun run test --run src/components/shared/Skeleton.test.tsx src/components/shared/Tooltip.test.tsx:14/14 passed
  • 桌面端全套测试:172 / 174 文件通过(剩下 2 个失败的 electron/services/{sidecarManager,terminal}.test.ts 是 main 上预存在的 Windows 路径 / 可执行位 infra 问题,与本版本无关)
  • 插件依赖检测:McpJsonConfigSchema().safeParse 对逆向插件的 7 个 server 全部通过

升级注意

  • 零破坏。本版本所有新字段(McpStdioServerConfig.prerequisitesSessionSummary.recentRawset_handoff_summary.deep)都是可选的,旧的 v0.5.9 缓存 / 配置 / WS 消息全部继续生效。
  • 新功能默认行为。深度接续 toggle 默认关闭(走 v0.5.10 的 24/600/16k 默认尺寸),用户主动开启才会切到 60/800/50k。