v0.12.3: 全面审计修复 + 稳定性加固 + 文档更新

P0 安全/稳定性修复 (6项):
- sqlite persist 改用临时文件+rename,I/O错误日志
- IPC fs 处理器加入 checkPathAllowed 路径验证
- handleCompress 命令注入修复 + 跨平台 (powershell/tar/zip/unzip)
- browser 全页截图简化,使用 capturePage full rect
- workspace 竞态条件修复
- editFile 5MB 大小限制

P1 安全/稳定性修复 (7项):
- 大小写不敏感搜索: query 同步转换小写
- web_fetch 无 content-length 时流式读取+10MB限制防OOM
- Windows SIGTERM 改用 taskkill /PID /T /F 强制终止
- startsWith 路径检查 Windows 大小写不敏感
- 安全黑名单扩展: 33个目录路径 + 30条危险命令 (Linux+Windows)
- plan_track stepIndex 改用 typeof === 'number' 精确检查
- MCP 前缀改用双下划线分隔 mcp_{server}__{tool} 防歧义

P2 代码质量修复 (8项):
- 修复 EXECUTING→THINKING 死循环Bug (转换表缺失)
- COMPRESSING 硬上限绕过时同步 _loopState 全局状态
- Abort 路径补齐 onDone 回调, 防止UI状态残留
- 幻觉检测从4条扩展到16条规则, 覆盖全部工具类别
- 移除 getTokenEfficiency 死代码
- 跨平台路径清理 (replace(/[\/]+$/, ''))
- 动态 import 加 try/catch, 失败自动批准不阻断
- #modelSelect 加 null 守卫, 防止运行时崩溃

文档 & UI 更新:
- README.md: 版本号/特性表/架构图/安全机制/工具清单全面刷新
- 帮助面板: 新增 Plan Mode、抗幻觉&稳定性章节, Agent Loop补8状态机
- 工具面板: plan_track卡片 + plan-mode徽章样式, 标题更新为42+1
- 工作空间面板宽度: 480px → 400px
- 源码注释移除所有版本标签, 仅保留4处必要位置
- 版本号 0.12.2 → 0.12.3
This commit is contained in:
紫影233
2026-06-23 17:06:43 +08:00
parent 20cbfbd169
commit 042e00e4a6
35 changed files with 3692 additions and 784 deletions
+54 -2
View File
@@ -631,6 +631,52 @@ html, body {
background: var(--critical-bg);
}
/* ── Plan 按钮 (v0.12.0) ── */
.plan-toggle {
display: flex;
align-items: center;
cursor: pointer;
flex-shrink: 0;
user-select: none;
}
.plan-toggle input { display: none; }
.plan-btn {
width: 36px;
height: 36px;
border-radius: var(--radius-control);
background: var(--bg-card);
border: 1px solid var(--border-default);
display: flex;
align-items: center;
justify-content: center;
transition: var(--transition);
color: var(--text-tertiary);
}
.plan-btn svg {
width: 18px;
height: 18px;
}
.plan-toggle:hover .plan-btn {
border-color: var(--border-strong);
color: var(--text-secondary);
}
.plan-toggle input:checked + .plan-btn {
background: rgba(71, 132, 143, 0.1);
border-color: #47848F;
color: #47848F;
box-shadow: 0 0 16px rgba(71, 132, 143, 0.2);
}
.plan-toggle input:checked + .plan-btn:hover {
background: rgba(71, 132, 143, 0.15);
box-shadow: 0 0 20px rgba(71, 132, 143, 0.3);
}
/* ── 开关控件 ── */
.toggle-label {
display: flex;
@@ -2449,8 +2495,8 @@ html, body {
═══════════════════════════════════════════════════════════════ */
.workspace-panel {
width: 480px;
min-width: 480px;
width: 400px;
min-width: 400px;
height: 100vh;
display: flex;
flex-direction: column;
@@ -3539,6 +3585,12 @@ html, body {
border: 1px solid rgba(217, 79, 92, 0.15);
}
.tool-card-badge.plan-mode {
color: var(--accent);
background: rgba(232, 115, 74, 0.08);
border: 1px solid rgba(232, 115, 74, 0.2);
}
.tool-card-desc {
font-size: 12px;
color: var(--text-secondary);