feat: 创建项目配置=内置配置(三语注释)+ 设置面板帮助图标 + 快速开始三步文案重写 + 图标更新
This commit is contained in:
@@ -179,3 +179,9 @@
|
||||
| 2026-08-04 20:59 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 → ⑤ 编码实现 → ⑥ 审查验证 | 修复 AI 审查行号显示错误(整文件审查多 1 行):根因是 AI 返回的 findings[].line 为 1 基(基于带行号代码),而 webview/report 按 0 基处理(buildIssueItem/formatLine 显示 line+1、navigate 直接作 0 基跳转),方法级审查因 commands.ts 已转 0 基而正确、两条路径基准不一致。修复:mergeResults 统一将 aiFindings.line 转 0 基(Math.max(0, f.line-1)),reviewMethod 的 aiFindings 偏移由 f.line+methodLine-1 改为 f.line+methodLine(传 1 基文件行号交 mergeResults 转换,与 customRuleResults 语义一致);更新 merger.test.ts 排序断言(aiFindings error:3/warning:6)+ 新增 0 基转换用例 | 中间产物:无;根因追踪:先假设「mergeResults 统一转 0 基」并在 merger.test.ts 改写断言验证(4 passing);全量测试沿用既有惯例临时移开 adapter/extension.test.js 后 70 用例全部通过(新增 1 个转换用例),恢复原文件 | src/merger/merger.ts, src/activation/commands.ts, src/test/merger.test.ts | deepseek-v4-flash |
|
||||
| 2026-08-04 21:20 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 → ⑤ 编码实现 → ⑥ 审查验证 | SQLFluff PRS 解析错误呈现优化:sqlfluff.ts 新增可导出纯函数 buildPRSMessage(正则提取 Found unparsable section 引号内片段、正则失败回退原文、换行单行化 \\n、超 80 字符截断 +...),check() 中 v.code==='PRS' 时 message 改用 i18n 友好提示(含当前生效方言 effectiveDialect=cliDialect??fallbackDialect + 配置指引)、severity 提升为 error(解析失败时后续规则不可信);messages.ts 新增 adapter.sqlfluffPRS 三语 key;新增 sqlfluff-prs.test.ts 4 用例(片段提取/换行单行化/截断/回退)。背景:问题面板报 PRS 显示原始 SQL 片段+重复行号前缀观感差,且 DIALECT_MAP 默认方言已改为 oracle(08-04 20:34 未提交改动)致 MySQL 风格 DDL 误报 PRS(已实证:同一 SQL mysql 方言解析通过、oracle 报 PRS) | 中间产物:测试首次用 msg.length<200 断言截断不稳定(中英模板长度差异致英文下超限,DEBUG 日志确认实际失败的是 truncate 用例而非 fallback 用例)→ 改为断言 !includes(longFragment)(验证全文被截断,不依赖模板总长);全量测试沿用既有惯例临时移开 adapter/extension.test.js 后 74 用例全部通过(新增 4 个 PRS 用例),恢复原文件 | src/adapters/sqlfluff.ts, src/i18n/messages.ts, src/test/sqlfluff-prs.test.ts(新增) | deepseek-v4-flash |
|
||||
| 2026-08-04 21:45 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 → ⑤ 编码实现 → ⑥ 审查验证 | 修复已打开文件不静态分析、无波浪线问题:根因两处——① package.json activationEvents 为空导致插件不自动激活(onDidOpenTextDocument 对激活前已打开的文件永不触发);② activate 未遍历存量 textDocuments。改动:package.json activationEvents 加 onStartupFinished;extension.ts 新增 scheduleAnalysis(统一按 URI 防抖调度器,gate file scheme + markers.enabled)与 analyzeOpenDocuments(遍历已打开文档、活动文件优先、串行 await runStaticAndApply),activate 时调用;onDidChangeTextDocument 改为 clear 波浪线 + 1s 防抖自动重分析;onDidSaveTextDocument 改用 scheduleAnalysis(500) 替换原独立 debounceTimers Map。复用 runStaticAndApply 版本竞态保护,行为不变。设计文档 docs/superpowers/specs/2026-08-04-auto-static-analysis-design.md 已产出 | 中间产物:无(澄清阶段就"并发 vs 串行"向用户说明各 linter 执行成本后定为串行;激活顺序定为活动文件优先);lint/compile 通过 | package.json, src/extension.ts, docs/superpowers/specs/2026-08-04-auto-static-analysis-design.md(新增) | deepseek-v4-flash |
|
||||
| 2026-08-05 22:10 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 → ⑤ 编码实现 → ⑥ 审查验证 | 设置面板「共通规则」区画面优化:适配器卡片名称旁与图例优先级行末尾新增「?」帮助图标,悬停 tooltip 展示分步配置说明。i18n 新增 setup.adapter.modeLegendHelp 与 pmd/sql/eslint/stylelintHelp 五组三语 key(四段式:前置条件原因 + 内置规则开箱即用 + 主路径步骤 + 全局备选),删除已无引用的 4 组 xxxGuide;setupView.ts 移除 AdapterConfigStatus.guideText 字段及 collectAdapterStatus 赋值、pushConfig i18n payload 注入 5 个 help 字段、HTML 图例行末尾加「?」、CSS 新增 .help-icon 多行 tooltip(attr(data-help)+white-space:pre-line,卡片相对 header 左对齐/图例相对 mode-legend 右对齐防溢出)与 .adapter-card-name-wrap、删除 .adapter-guide 样式;setupView.js renderAdapters 删除 guide div、卡片标题行名称旁渲染「?」并新增 escapeAttr(转义 & < > ",保证含英文双引号的 data-help 属性安全)。lint/compile 通过;全量测试受既有 stylelint-config-recommended 无 exports main 环境问题阻碍(extension 激活失败),改用 stub vscode 的 node 脚本直接校验 i18n 255 key 三语无缺失、新 5 key 存在、旧 4 key 已删 | 设计迭代:v1 分步文案被用户指出「不知道为什么装 Java / ①② 两条路(项目/全局)混淆 / ruleset.xml 用途不明」→ 改四段式;复用现有 guide 文案被否(要新增配置说明);guide 第二句三选一(移除/动态状态提示/精简保留)用户选移除;图例「?」位置三选一(说明行末尾/副标题旁/每项单独)选说明行末尾;HTML 预览请求在计划模式被只读拦截 → 改为 inline 输出,切 build 后落盘 temp 预览文件供审核;实现中发现 escapeHtml(textContent→innerHTML)不转义双引号,英文 help 文案含 " 会使 data-help 属性提前闭合 → 新增 escapeAttr | src/i18n/messages.ts, src/views/setupView.ts, src/views/setupView.js | deepseek-v4-flash |
|
||||
| 2026-08-05 22:25 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 → ⑤ 编码实现 → ⑥ 审查验证 | 修复图例区「?」位置与 tooltip 方向:根因——.mode-legend-desc 为 width:100% 独占第二行,紧随其后的 .help-icon 被 flex-wrap 挤到第三行且靠左,tooltip 以 right:0 锚定左移图标向右延伸溢出。改动:setupView.ts HTML 把说明文字与「?」包进 .mode-legend-desc-row(display:flex + justify-content:space-between + width:100%),「?」回到第二行行末;CSS 新增 .mode-legend-desc-row、.mode-legend-desc 去掉 width:100%(row 接管整行),图例 tooltip 保持 .mode-legend .help-icon:hover::after { right:0; left:auto } 使提示相对行末图标向左下方延伸。lint/compile 通过 | 中间产物:无(首版 CSS 就写了 right:0 锚定,实际渲染差源自图标被挤到第三行左侧,定位到根因是 flex-wrap + width:100% 独占行) | src/views/setupView.ts | deepseek-v4-flash |
|
||||
| 2026-08-05 22:55 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 → ⑤ 编码实现 → ⑥ 审查验证 | 「快速开始」三步卡贴近实际重写:现状是卡片原三步(配置 AI / 启用自定义规则 / 保存并测试)暗示必须配 AI 才能审核,但插件静态分析实际开箱即用(onStartupFinished 自动分析+波浪线)、AI 配置只影响 AI 审核引擎、自定义规则为可选增强,且只用静态分析时原三步全灰有误导。改动:i18n 重写 setup.gettingStarted(三步启用代码审核→三步开始使用)与 step1/step2/step3 及 step3Hint 三语;setupView.js _step1Done 判定由 provider+model+apiKey+baseUrl 改为 msg.adapterStatus.some(a=>a.enabled)(任一适配器启用即完成,默认满足,如实反映静态分析开箱即用)。步骤①文案经两轮微调定稿为「插件已内置 Linter 静态分析,开箱即用,也可在共通规则中配置项目/全局规则」三语。lint/compile 通过 | 澄清阶段向用户展示「卡片文案 vs 实际行为」差距表(静态分析开箱即用/AI 仅深度审查/自定义规则可选/只用静态分析时三步全灰误导)后选「贴近实际重写三步」;标题「三步启用」与开箱即用矛盾,用户选改为「三步开始使用」;步骤①文案两轮迭代:初稿「打开代码文件自动静态分析,无需配置」→ 用户要求强调内置、去掉波浪线 →「已内置 Linter 静态分析,开箱即用,无需配置」→ 用户指出「无需配置」有歧义(易误以为不能/不必再配项目配置)→ 定稿补「也可在共通规则中配置项目/全局规则」(候选「只删无需配置」未选) | src/i18n/messages.ts, src/views/setupView.js | deepseek-v4-flash |
|
||||
| 2026-08-06 19:52 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 | 生成「创建项目配置 = 内置配置(含三语规则注释)」设计书 | 中间产物:SQLFluff 内置非 rules=all 的纠错、ESLint 方案 A/B 抉择(选 B 仅 JS 零依赖)、注释语言三选一(选三语切换)、链接策略从逐条改为每文件单个索引链接、PMD 类别级注释而非 274 条展开 | docs/superpowers/specs/2026-08-06-builtin-config-template-design.md | deepseek-v4-flash |
|
||||
| 2026-08-06 20:02 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 → ⑤ 编码实现 | 实现「创建项目配置 = 内置配置(含三语规则注释)」,验证 lint/compile/test 全通过 | 中间产物:ESLint 内置 JS 实际 92 条(61+31)而非方案初稿 93/32;Stylelint 顶层静态 import 纯 ESM 包为既有 bug(CJS require 报 No exports main),改为动态 import;PMD 22 条 exclude 缺描述补写进 static-rules.json;SQLFluff 内置非 rules=all 的纠错 | src/rules/builtin-rules.ts(新建) src/adapters/eslint.ts src/adapters/stylelint.ts src/adapters/sqlfluff.ts src/views/setupView.ts src/rules/static-rules.json src/i18n/messages.ts docs/superpowers/specs/2026-08-06-builtin-config-template-design.md | deepseek-v4-flash |
|
||||
| 2026-08-06 20:37 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 → ⑤ 编码实现 → ⑥ 审查验证 | 修复安装验证发现的 3 个问题:①PMD 创建配置不生成文件(resolvePmdRulesetPath 打包后 __dirname 退级过多,改逐级向上探测 5 级 + getExtension 路径);②static-rules.json 新增 57 条描述中文被 PowerShell stdin 管道 ASCII 编码破坏成 '?'(改 UTF-8 落盘 .mjs 脚本重写修复);③生成 eslint.config.js/.stylelintrc.js 被插件静态分析报 no-undef 'module'(首行加 /* global module */)。重新打包 1.2.0 VSIX | 中间产物:修复②初判为 esbuild 编码问题(bundle 中文存大写 \\uXXXX 转义,运行时解码正常,排除);仓库根因测试生成的 eslint.config.js 覆盖自身 lint 配置致 146 no-undef,已删除 | src/rules/builtin-rules.ts src/rules/static-rules.json docs/superpowers/specs/2026-08-06-builtin-config-template-design.md | deepseek-v4-flash |
|
||||
|
||||
Reference in New Issue
Block a user