Commit Graph
107 Commits
Author SHA1 Message Date
cruldra ec34ace7cf 🐛 fix(vscode): 悬停提示不用原生 title,webview 统一用自绘提示框,代码阅读的种类图标停上去能看到种类名
VS Code 1.139 带的 Electron 43 在 macOS 上只在鼠标压着带 title 的元素自身边缘时才弹原生提示,
停在它里面的图标、文字上不弹(electron/electron#49843,Electron 38 起)。种类图标 20px 的框
几乎被 16px 的图形占满,所以基本看不到种类名;块右上角按钮同样受影响。页面上核对过:图标中心点
命中的是图标里的线条,没有盖在上面的东西。

- components/ui/tooltip.tsx 改成整页只挂一次的 TooltipHost:元素只写 data-tooltip,事件统一交给它;
  样子照 VS Code 悬停框(editorHoverWidget 那组变量、widget-shadow 阴影),停 500ms 才弹、弹着时换元素
  立刻换,移开 / 按下 / 按键 / 滚动收起;键盘聚焦立刻弹,提示不是元素自己的名字时挂 aria-describedby
- 代码阅读里所有 title(种类图标、块按钮、筛选栏、问答区、中文名的「原名」)改成 data-tooltip;
  SelectMenu 的 title 属性改名 tooltip;看板工单详情原来包一层的 Tooltip 也改成 data-tooltip
- 何时弹 / 收的规则抽成纯函数加测试;更新代码阅读 spec
2026-09-27 21:21:13 +08:00
cruldra 15790ce7c8 ✨ feat(vscode): 代码阅读的词可以讲源码里别处的名字(Segment.refers):FastAPI 路径里的 {user_id} 讲函数的参数,单击参数时跟着高亮,⌘ + 点击跳到参数 2026-09-27 21:18:19 +08:00
cruldra b186b007a4 ♻️ refactor(vscode): 代码阅读的种类图标改成插件自己定义的一组(契约里的封闭名字集合),webview 只带这些图标,不再打包 lucide 全套 2026-09-27 20:23:44 +08:00
cruldra 0798f7d1c7 ✨ feat(vscode): 代码阅读加 FastAPI 接口卡片:请求表(URL、方法、路径 / 查询参数、请求头、Cookie、请求体)、按状态码的响应表(成功、responses、函数里抛的异常、自动带的 422);别的文件里的异常状态码、类型别名经工作区索引和语言扩展查 2026-09-27 20:19:24 +08:00
cruldra 1dfc0c7b1e ✨ feat(vscode): 代码阅读的块种类只画图标(lucide,种类色),种类名放进鼠标停上去的提示和读屏文字;库规则给自己的图标 2026-09-27 20:02:32 +08:00
cruldra 0afd012c94 ✨ feat(vscode): 代码阅读加异常卡片,Python、TypeScript 的异常类画成同一张表(属性、构造参数),方法照常是子块 2026-09-27 10:42:10 +08:00
cruldra 44c221ea2b ✨ feat(vscode): 代码阅读认出代码里起的中文名(Annotated[…, Comment("…")]、@Comment 装饰器、行尾 # @Comment、docstring / JSDoc 的参数说明),预览里定义和用到它的各处都写中文名,悬停看原名,定义处后面淡淡写原名 2026-09-27 00:56:39 +08:00
cruldra 1b1299dc1f ♻️ refactor(vscode): 代码阅读不再在页面里拦 ⌘↓ / ⌘↑,快捷键只在「键盘快捷方式」里绑;跳到下一处时把浏览器自己的滚动拉回来,页面不再先滚到底 2026-09-27 00:33:18 +08:00
cruldra 49f253b80f ✨ feat(vscode): 代码阅读的名字高亮更显眼(当前那处描框、别处画细线),⌘↓ / ⌘↑ 在各处之间跳,跳到折叠处自动展开,筛选栏写第几处 2026-09-26 23:47:43 +08:00
cruldra 36d842e18e ✨ feat(vscode): 问 AI 输入框能粘贴、拖进图片随问题发给 Claude Code,缩略图能点开看大图,图片存进 .spx/code-qa 跟着问答删 2026-09-26 23:15:02 +08:00
cruldra 9efae1f496 ✨ feat(vscode): 问 AI 输入框旁边能选 Claude profile,记住上次选的,问答灰字写用哪个 profile 答的 2026-09-26 22:28:29 +08:00
cruldra f0a3ad80e1 ✨ feat(vscode): 问 AI 收起再展开、重启后接着这块最近的会话问;代码改了对不上的问答不再显示 2026-09-26 21:25:22 +08:00
cruldra fb53bb727c ✨ feat(vscode): 代码阅读加「问 AI」,块下面问 Claude Code,问答存进 .spx 挂在块下 2026-09-26 21:12:47 +08:00
cruldra c84e21ff57 ✨ feat(vscode): 代码阅读侧栏行加复制菜单,块按钮只留图标,筛选菜单加全选 / 取消全选 2026-09-26 20:39:21 +08:00
cruldra de355661f0 ✨ feat(vscode): 代码阅读加枚举卡片,Python enum 库规则和 TypeScript enum 画成同一张表 2026-09-26 20:10:36 +08:00
cruldra 2251e67ef8 ✨ feat(vscode): 代码阅读库规则卡片不再吞掉字段中间的方法,编辑时收起子块 2026-09-26 19:58:43 +08:00
cruldra 68104e2cba ✨ feat(vscode): 代码阅读加 Celery 库规则,定时任务表里的任务名能跳到任务函数 2026-09-26 19:41:07 +08:00
cruldra 1f86201373 🐛 fix(vscode): 代码阅读把 Python 赋值后面的字符串当变量说明,其余单独的字符串显示成注释 2026-09-26 18:57:07 +08:00
cruldra 5ece24cef9 ✨ feat(vscode): 代码阅读支持库规则,内置 SQLAlchemy 模型类显示成数据表卡片 2026-09-26 18:29:40 +08:00
cruldra 83adefdf5e ✨ feat(vscode): 代码阅读的输入参数排成带表头和边框的表格 2026-09-26 16:15:59 +08:00
cruldra 6416cdf714 ✨ feat(vscode): 代码阅读把推导式换成按读的顺序重排的遍历小框 2026-09-26 16:15:09 +08:00
cruldra 9c0f05362c ✨ feat(vscode): 代码阅读预览单击名字高亮它在文件里的各处出现 2026-09-26 15:51:52 +08:00
cruldra f0cd3942cc ⏪ revert(vscode): 还原悬停即显示链接,恢复按住 ⌘ / Ctrl 点击跳到定义 2026-09-26 15:08:16 +08:00
cruldra 87f68189a3 ✨ feat(vscode): 代码阅读预览悬停名字即显示链接、单击跳到定义,不再要按 ⌘ / Ctrl 2026-09-26 15:03:55 +08:00
cruldra 1c7e31c51a ✨ feat(vscode): 代码阅读预览顶部加块筛选栏
语言插件按和语言无关的 id 报块属性(通用的由宿主从 facts 推),翻译插件起名,webview 只按 id 筛;
筛选整个工作区共用、记在 workspaceState;JavaScript 不再显示「抽象:否」「仅类型:否」
2026-09-25 21:31:19 +08:00
cruldra 4930dc0d42 ✨ feat(vscode): 代码阅读把字典、对象字面量的值展开成键值树 2026-09-25 20:57:27 +08:00
cruldra 43323659e1 ✨ feat(vscode): 代码阅读类块改成属性表并默认折叠,类的说明进「说明」行 2026-09-25 14:46:33 +08:00
cruldra a53c2a6aac ✨ feat(vscode): 代码阅读的注释和函数说明按 Markdown 渲染 2026-09-25 14:28:23 +08:00
cruldra 3ac1c783fb 🐛 fix(vscode): 代码阅读跳到参数、导入项、多变量声明里的一个时只闪属性表里那一行,按源码位置判断 2026-09-25 14:11:44 +08:00
cruldra ea5935135b 🐛 fix(vscode): 代码阅读 ⌘ 悬停每次现问定义,语言扩展启动后就能链上、点击总去跳 2026-09-25 13:47:50 +08:00
cruldra 9b32d4b5a8 ✨ feat(vscode): 代码阅读函数块默认折叠,函数说明进属性表「说明」行 2026-09-25 13:09:53 +08:00
cruldra 4e146eb48f ✨ feat(vscode): 代码阅读预览按住 ⌘ / Ctrl 点名字跳到定义 2026-09-25 12:54:45 +08:00
cruldra e8a6a795f5 🐛 fix(vscode): 代码阅读属性表的输入参数、导入项可以折叠 2026-09-25 12:20:37 +08:00
cruldra dd9b39ac5d ✨ feat(vscode): 代码阅读函数、导入、常量、变量块预览改成属性表 2026-09-25 04:56:22 +08:00
cruldra 37306bd23e 🐛 fix(vscode): 代码阅读预览记住浏览位置,编辑 / 预览互切位置对齐 2026-09-25 03:21:14 +08:00
cruldra 72d33032f0 ✨ feat(vscode): 代码阅读块悬停高亮 2026-09-25 01:54:12 +08:00
cruldra af56985d9a ✨ feat(vscode): 代码阅读预览界面
Vite 加 code-reader.html 第二入口;代码块树(层级竖线、折叠、种类标签配色)、译文 / 源码按词性着色、块内直接编辑(防抖回写整行、Esc 回预览)、翻译下拉、解析失败提示;看板与代码阅读共用带类型的 acquireVsCodeApi 包装和 ErrorBoundary。
2026-09-24 21:01:34 +08:00
cruldra d604b6f426 ✨ feat(vscode): 五种会话 id 行都能用橡皮擦清除本机记录,别的机器上的旧会话不再挡着新起 2026-09-24 19:29:39 +08:00
cruldra bf4661e364 🐛 fix(vscode): 别的机器上开的会话在本机没有会话文件时,会话 id 行置灰不可双击,不再 resume 报错 2026-09-24 19:22:29 +08:00
cruldra 4ae508aee3 🐛 fix(vscode): worktree 还在的工单也能启动测试会话,不再强制要求 PR
handleStartTestSession 早就允许在工单 worktree 里测——代码就在工作目录,
不需要 PR 做参考;只有 worktree 已清理、回退主工作区时才要靠 PR 了解
合并进来的改动。详情面板的 ▶ 按钮却只看 pr,导致「有 worktree、没 PR」
的工单点不了,实际后端跑得起来。按钮条件补上 worktreeExists,与后端对齐。
2026-09-20 18:00:27 +08:00
cruldra 9e255f517b ✨ feat(vscode): 看板顶部加筛选框,按标题 / 工单号 / PR 号过滤卡片
工单多了以后靠肉眼在四列里翻太慢。顶部输入框按空白分词逐词 AND 匹配
标题、工单号、PR 号,`#427` 与 `427` 等价,纯数字按包含匹配,记不全
编号也能搜到。筛选只收窄渲染,拖拽与依赖锁定仍按全量列表算;列头角标
在筛选时显示「可见 / 总数」。
2026-09-20 17:24:54 +08:00
cruldra 73f2c3ec66 🐛 fix(vscode): 完成列缺 PR 合并时间时按工单关闭时间排序
没走 PR 流程、直接关掉的工单没有 merged_at,原先一律排在所有已合并
工单之后,在上百张卡的完成列里等于永远看不见。loader 把 Gitea issue
的 closed_at 带进 Issue,完成列排序缺 prMergedAt 时回退到它,让两类
工单落在同一条时间线上。
2026-09-20 17:23:25 +08:00
cruldra 17570749dd ✨ feat(vscode): 同一天再切发布直接把 main 新提交推进到当天分支,不再另起编号分支 2026-09-17 17:57:47 +08:00
cruldra 7bac5c8b03 ✨ feat(vscode): 七份提示词统一走 Handlebars,头脑风暴三档合一
- 模板引擎换成 Handlebars(noEscape,提示词是纯文本不能被转义),单花括号写法彻底退场
- brainstorm-continue / brainstorm-continue-prototype 两份并进 brainstorm.md,
  用 {{#if issueNumber}} 分新建 / 续聊,续聊里用 {{#if prototypeFile}} 嵌原型段落,
  设置面板对应的两个 textarea 一并删掉
- 模板上下文 = 工单 state JSON 全量字段 + issueNumber / userRequest / nonce /
  planFile / prNumber / prRef,以后模板想用新字段不用改扩展代码
- 各会话入口共用一条 state 读取路径,读失败只记 warn 按空状态继续,不拦开会话
- 升级后首次启动把存量自定义提示词迁到双花括号并合并成一份,改写前把
  settings.json 备份成 settings.json.bak-<时间戳>,迁移动作全写日志
- 装 handlebars 时给 vsce 传递依赖的老 semver 加 trustPolicyExclude 豁免,
  否则 no-downgrade 策略卡住整个装包

Claude-Session: https://claude.ai/code/session_01Kgmb1LvrPmFX3NoUDB4zZC
2026-09-15 00:44:28 +08:00
cruldra 43a0bf6bad ♻️ refactor(vscode): 续聊里的原型段落搬进模板文件
那段正文原先拼在 prompts.ts 里,设置面板看不到也改不了。现在落到
prompts/brainstorm-continue-prototype.md,面板「提示词」组多一项「续聊·原型段落」,
占位符 {prototypeFile} / {issueNumber} / {prototypeSessionId};取值为空的整行会被
删掉,免得留下半句没有值的说明。

同时把措辞收紧:原型改动只能 ListAgents + SendMessage 给已开着的原型会话,
点名禁止派子代理 / fork 分身 / 自己动插件代码。

Claude-Session: https://claude.ai/code/session_01Kgmb1LvrPmFX3NoUDB4zZC
2026-09-15 00:28:58 +08:00
cruldra 142af57d9d ✨ feat(vscode): 工单挂原型插件,详情面板一键导入 Figma
- prototypeFile 走通 state → Issue → webview 全链路(gitea/youtrack 两个
  loader、两份 KNOWN_STATE_FIELDS、issue/patch、webview types),按 planFile
  同款当共享字段;路径校验换成 .json 版,允许绝对路径
- 详情面板「计划文件」下加「原型插件路径」行:双击开 manifest.json,
  行尾按钮「在 Figma 中导入并打开」;没挂插件时只显示空态
- src/figma/:把 manifest 写进 Figma 桌面版的 localFileExtensions 再拉起
  Figma。坑是 Figma 退出会用内存状态覆盖 settings.json,所以写之前先
  osascript 优雅退出并轮询等它真没了(10s 等不到就让用户手动关,不强杀);
  写前备份 settings.json.bak-<时间戳>;已导入过就跳过写入直接打开;
  非 macOS 只把路径复制到剪贴板
- webhook 里 spec/plan 的 marker 同步改成表驱动,顺带认第三种 prototype
- 提示词:prototype.md 要求画完挂 marker;brainstorm-continue.md 新增
  {prototypeRef} 占位符,有原型插件时让续聊先读它别从零重画,没有时
  连同整段抹掉

Claude-Session: https://claude.ai/code/session_01Kgmb1LvrPmFX3NoUDB4zZC
2026-09-15 00:11:49 +08:00
cruldra b62e58d739 ✨ feat(vscode): 新增第五种工单会话「原型会话」
照测试会话那条链路补一份 prototype:

- 消息与路由:session/start-prototype、session/resume-prototype、
  issue/update-prototype-profile-path,都进只读门禁
- 会话:handleStartPrototypeSession / handleResumePrototypeSession,
  终端名 issue-N-原型;cwd 有 worktree 用 worktree、没有退主仓库根
  (原 resolveTestSessionCwd 改名 resolveWorktreeOrRootCwd 两种会话共用)
- 不要求有 PR,任何阶段都能起;前置工单锁仍然拦
- 提示词:新增 prompts/prototype.md,设置里可改,占位符 {issueNumber}
- profile:工单级 prototypeProfilePath > 设置里的原型默认 profile >
  内置默认,与其它会话互不回退
- 状态字段 prototypeSessionId / prototypeProfilePath / prototypeTabOpen
  贯通 gitea、youtrack、本机 state 与移交包
- 详情面板加「原型会话id」「原型配置文件」两行,设置面板加对应两项

Claude-Session: https://claude.ai/code/session_01Kgmb1LvrPmFX3NoUDB4zZC
2026-09-14 10:20:30 +08:00
cruldra f946e5cfee ✨ feat(vscode): 测试提示词改成可配置模板并带上工单号
启动测试会话原先硬编码发 `/pr-acceptance-testing`,不带目标,验收技能只能
反问要测哪个。现在做成 prompts/test.md 模板 + 设置里的「测试提示词」,占位符
{issueNumber} 和 {prRef}(worktree 里是分支,主仓库里是已合并的 PR)。

Claude-Session: https://claude.ai/code/session_01Kgmb1LvrPmFX3NoUDB4zZC
2026-09-13 13:19:28 +08:00
cruldra 410a04da77 ✨ feat(vscode): 实施和审查会话行加启动箭头
不用再把卡片拖到「实施中」「审查」列:

- 实施会话id 行在有计划文件且没实施会话时显示 ▶,等同拖进实施中列
- 审查会话id 行在有 PR 时显示 ▶,按 PR 事件那套流程起 codex 审查

Claude-Session: https://claude.ai/code/session_01Kgmb1LvrPmFX3NoUDB4zZC
2026-09-13 10:52:14 +08:00
cruldra 70b826123c ⚡ perf(vscode): 开会话去掉多余远程往返,spinner 跟随真实进度
开会话原先要先全量拉工单(含每张工单的评论、依赖、PR)做前置锁检查,
再各读一次 state JSON 给 pre-create 钩子和终端图标,几秒后才 createTerminal。

- 锁检查改用主进程已算好的工单快照,快照里没有该工单才回落全量拉取
- state JSON 一次读两处用,且提前发起与本地准备重叠
- 会话行 spinner 由扩展的 session/tab-settled 消息驱动,不再是固定 1.5s 假动画,
  消息丢失时 60s 超时兜底

Claude-Session: https://claude.ai/code/session_01Kgmb1LvrPmFX3NoUDB4zZC
2026-09-13 10:14:48 +08:00