claude-code-best/src
claude-code-best ebec3cf19f feature: 20260429 代码巡检 (#383)
* fix: 实现 snipCompact/snipProjection 存根,修复 QueryEngine mutableMessages 不收缩的内存泄漏

将 snipCompact.ts 和 snipProjection.ts 从纯存根替换为完整实现:
- snipCompactIfNeeded: 检测 snip_boundary 消息,按 removedUuids 过滤消息,释放旧消息内存
- isSnipBoundaryMessage/projectSnippedView: 边界检测与视图投影
- isSnipMarkerMessage/isSnipRuntimeEnabled/shouldNudgeForSnips: 辅助函数
- 28 个测试覆盖边界检测、消息过滤、空输入、多边界等场景

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* fix: 完善 StreamingToolExecutor.discard() 释放内部状态,修复 NO_FLICKER 模式内存泄漏

discard() 原先仅设置 flag,不释放 tools 数组、siblingAbortController 和 turnSpan。
NO_FLICKER 模式 API 重试时旧工具结果堆积无法被 GC 回收。

修复内容:
- 中止 siblingAbortController 以取消运行中的工具子进程
- 清空 tools 数组释放 TrackedTool 引用(block、assistantMessage、results、pendingProgress)
- 清理 progressAvailableResolve 和 turnSpan
- 添加 7 个测试覆盖 discard 后的各种状态验证

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* fix: 清理 useReplBridge pendingPermissionHandlers,修复 RC 权限条目保留内存泄漏

pendingPermissionHandlers Map 原定义在 async IIFE 内部,组件卸载时
cleanup 函数无法访问。修复方案:
- 将 Map 提升至 useEffect 顶层作用域
- cleanup 时显式调用 pendingPermissionHandlers.clear() 释放闭包引用
- 添加 8 个测试覆盖 handler 注册/取消/响应/cleanup 模式

同时确认 #4 空闲渲染循环已完整实现(所有 10 个 useAnimationFrame
调用者均正确传递 null 暂停时钟)。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* fix: 确认 #11 LRU 缓存键已完整实现,添加 FileStateCache 测试 + 修复类型错误

审计确认 #11 FileStateCache 已完整实现(LRU 双重限制 max+maxSize +
sizeCalculation),归类从"未实现"修正为"已确认完整"。
- 添加 16 个 FileStateCache 测试覆盖 LRU 驱逐、大小计算、路径归一化
- 添加 6 个 coerceToolContentToString 测试覆盖类型强制转换
- 修复 replBridgePermissionHandlers 测试的类型断言错误

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* docs: 完成内存泄漏审计,标记所有条目已处理

12 项审计条目全部处理完毕:
- 11 项已确认完整实现(含 4 项主动修复:#8 StreamingToolExecutor、#9 RC 权限、#12 snipCompact、#4 确认完整)
- 1 项已知限制(#7 Bun --compile 兼容性)
- 65 个测试覆盖所有修复项
- 验证报告确认所有修复代码正确实现

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* fix: highlight.js 按需注册 26 个常用语言,减少 ~80% 语法内存占用

将 `import hljs from 'highlight.js'`(190+ 语言,~5-15MB)改为
`import hljs from 'highlight.js/lib/core'` + 静态导入并注册 26 个
常用语言(TypeScript、Python、Bash、Go、Rust 等)。静态 import
在 Bun --compile 模式下正常工作,避免了 createRequire 的路径问题。

内存从 ~5-15MB 降至 ~1-2MB。添加 7 个测试验证语言注册和
highlight 功能,现有 17 个 color-diff 测试全部通过。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* fix: 修复 inProcessRunner 权限响应后未 cleanup 的 interval 泄漏

权限请求得到响应后(批准/拒绝),pollInterval 和 abort listener
未被清理,导致 setInterval 永远运行。在长时间运行的 swarm 会话
中,每次权限请求都会泄漏一个 interval 和一个 listener。

修复:在成功/拒绝路径中调用 cleanup() 以清理 interval、
unregister callback 和移除 abort listener。添加 6 个测试
覆盖 permission callback 注册/处理/清理生命周期。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* fix: LSP openedFiles Map 在 compaction 后未清理,添加 closeAllFiles() 集成

LSPServerManager 的 openedFiles Map 持续增长(代码注释标注为 TODO),
长时间会话中每次文件操作都追加条目但从不清理。添加 closeAllFiles()
方法并在 postCompactCleanup 中调用,compaction 后释放所有 LSP 服务器端
文件状态。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* fix: 修复 language-registration 测试在全量运行时因 hljs 单例污染而失败

cliHighlight.ts 导入全量 highlight.js(192 语言),与 color-diff-napi
使用的 highlight.js/lib/core 共享同一单例。全量测试运行时全量包先加载,
导致断言"未注册语言"和"不超过 30 个语言"失败。

改为验证目标 26 个语言全部存在,而非检查总数。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-29 09:14:26 +08:00
..
__tests__ feat: 正式启用 auto mode (#307) 2026-04-20 10:20:27 +08:00
assistant feat: 添加服务层增强与零散改进 2026-04-22 22:38:10 +08:00
bootstrap chore: 清理仓库审计问题——修正 CLAUDE.md、删除冗余 yoga-layout、清除 621 个未使用的类型 stub (#354) 2026-04-25 08:54:18 +08:00
bridge fix: bound agent communication memory growth (#369) 2026-04-27 14:47:18 +08:00
buddy feat: 全部类型问题解决 2026-04-11 10:24:00 +08:00
cli fix: 修复 RemoteTriggerTool 和 autonomy 测试的全量运行失败 2026-04-28 22:29:36 +08:00
commands fix: bound agent communication memory growth (#369) 2026-04-27 14:47:18 +08:00
components refactor: 移除消息流中的 diff 渲染,仅保留权限审批页的 diff 2026-04-28 21:23:38 +08:00
constants fix: resolve dependency audit findings precisely (#361) 2026-04-26 19:49:54 +08:00
context chore: 清理仓库审计问题——修正 CLAUDE.md、删除冗余 yoga-layout、清除 621 个未使用的类型 stub (#354) 2026-04-25 08:54:18 +08:00
coordinator feat: 工具层及 mcp 大重构 (#252) 2026-04-13 09:52:05 +08:00
daemon Feat/integrate lint preview (#285) 2026-04-16 20:59:29 +08:00
entrypoints fix: resolve dependency audit findings precisely (#361) 2026-04-26 19:49:54 +08:00
environment-runner feat: 全面清理类型错误 — tsc 零错误,any 标注全部消除 2026-04-01 01:00:10 +08:00
hooks feature: 20260429 代码巡检 (#383) 2026-04-29 09:14:26 +08:00
jobs Feat/integrate lint preview (#285) 2026-04-16 20:59:29 +08:00
keybindings Feature/add auto mode settings and fix bug (#368) 2026-04-26 15:43:25 +08:00
memdir Fixture/langfuse record auto mode data error (#308) 2026-04-20 13:30:05 +08:00
migrations chore: 清理仓库审计问题——修正 CLAUDE.md、删除冗余 yoga-layout、清除 621 个未使用的类型 stub (#354) 2026-04-25 08:54:18 +08:00
moreright 更新大量 tsx 原始文件; 已经迁移 login panel; 部分 (#121) 2026-04-04 23:24:27 +08:00
native-ts/file-index fix: resolve dependency audit findings precisely (#361) 2026-04-26 19:49:54 +08:00
outputStyles feat: build 2026-03-31 19:22:47 +08:00
plugins feat: 接入内建 weixin channel(同 #301 重构版本) (#303) 2026-04-19 21:33:27 +08:00
proactive Feat/integrate lint preview (#285) 2026-04-16 20:59:29 +08:00
query fix: 修复对穷鬼模式的 auto dream 和 session memory 越过 2026-04-12 23:24:12 +08:00
remote feat(remote-control): 优化 Web 展示、状态同步与桥接控制流程 (#288) 2026-04-17 16:21:27 +08:00
schemas chore: 清理仓库审计问题——修正 CLAUDE.md、删除冗余 yoga-layout、清除 621 个未使用的类型 stub (#354) 2026-04-25 08:54:18 +08:00
screens fix: 修复长时间运行会话的内存泄漏问题 2026-04-26 21:14:00 +08:00
self-hosted-runner feat: 全面清理类型错误 — tsc 零错误,any 标注全部消除 2026-04-01 01:00:10 +08:00
server feat: 全面清理类型错误 — tsc 零错误,any 标注全部消除 2026-04-01 01:00:10 +08:00
services feature: 20260429 代码巡检 (#383) 2026-04-29 09:14:26 +08:00
skills chore: 清理仓库审计问题——修正 CLAUDE.md、删除冗余 yoga-layout、清除 621 个未使用的类型 stub (#354) 2026-04-25 08:54:18 +08:00
ssh feat: 实现 SSH Remote — 本地 REPL + 远端工具执行 2026-04-24 14:25:56 +08:00
state fix: resolve dependency audit findings precisely (#361) 2026-04-26 19:49:54 +08:00
tasks test: 添加 subagent 僵死场景相关测试用例 2026-04-28 15:36:54 +08:00
types Feature/add auto mode settings and fix bug (#368) 2026-04-26 15:43:25 +08:00
upstreamproxy feat: 问就是封包 2026-03-31 23:32:58 +08:00
utils feature: 20260429 代码巡检 (#383) 2026-04-29 09:14:26 +08:00
vim feat: build 2026-03-31 19:22:47 +08:00
voice feat: 集成豆包 ASR 语音识别后端,支持 /voice doubao 切换 (#357) 2026-04-25 13:57:30 +08:00
commands.ts refactor: 解耦 BRIDGE_MODE 与 DAEMON,禁用 DAEMON 降低内存占用 2026-04-24 10:01:05 +08:00
context.ts feat: build 2026-03-31 19:22:47 +08:00
cost-tracker.ts feat: ACP 协议版本 remote control (#293) 2026-04-18 21:54:22 +08:00
costHook.ts feat: build 2026-03-31 19:22:47 +08:00
dialogLaunchers.tsx chore: 添加脚本与构建配置更新 2026-04-22 22:38:10 +08:00
history.ts feat: 添加服务层增强与零散改进 2026-04-22 22:38:10 +08:00
interactiveHelpers.tsx feat: 正式启用 auto mode (#307) 2026-04-20 10:20:27 +08:00
main.tsx feature: langfuse thinking 及 文本edit的问题修复( #371); 省略 diff 以减少内存峰值 (#376) 2026-04-27 17:06:33 +08:00
projectOnboardingState.ts feat: build 2026-03-31 19:22:47 +08:00
query.ts fix: resolve dependency audit findings precisely (#361) 2026-04-26 19:49:54 +08:00
QueryEngine.ts fix: 修复 ACP 模式下 messageSelector require 失败导致 submitMessage 崩溃 2026-04-24 09:59:23 +08:00
replLauncher.tsx Revert "Revert "feat: 第一个可以用的 ink 组件抽象 (#158)" (#175)" 2026-04-07 16:17:48 +08:00
setup.ts feat: 添加服务层增强与零散改进 2026-04-22 22:38:10 +08:00
Task.ts feat: build 2026-03-31 19:22:47 +08:00
tasks.ts feat: build 2026-03-31 19:22:47 +08:00
Tool.ts feat: 增强 auto mode 的易用性 (#312) 2026-04-20 21:13:09 +08:00
tools.ts feat: 添加 skill learning 技能学习闭环系统 2026-04-22 22:38:09 +08:00