Commit Graph
129 Commits
Author SHA1 Message Date
cruldra ae06c8e5d1 ✨ feat(vscode): 设置和看板按仓库类型区分 GitHub 与 Gitea,GitHub 显示 gh 登录状态,文案去 Gitea 化 2026-10-19 08:25:10 +11:00
cruldra ac3c882672 ✨ feat(vscode): webhook 改认 GitHub 风格头并支持 GitHub,事件按仓库分给对应窗口
- 事件头只认 X-GitHub-Event、签名只认 X-Hub-Signature-256: sha256=<hex>(Gitea v28 也发这两个头);ping 正常应答,form 编码返回 415 并提示改成 JSON
- 只有 pull_request 事件才当 PR 事件,PR 合并状态直接取 payload;评论人只认 login
- 每个事件带上 payload 里的仓库,不是本窗口 origin 的事件整条忽略,provider 按事件里的仓库打开
- 本机多个窗口时由占到端口的窗口把验过签的请求转给其余窗口,它关掉后其余窗口自动接手端口
- 删掉不再使用的 pendingHooks 遗留代码
2026-10-19 08:23:42 +11:00
cruldra 5a1c0e20a2 ✨ feat(vscode): 发布摘提交认出 GitHub 合并提交和 squash 提交的 PR 号 2026-10-19 08:18:31 +11:00
cruldra 451bc91a6b ♻️ refactor(vscode): 工单来源 gitea 改名 forge,激活时把本机按旧名存的记录迁过去 2026-10-19 08:00:29 +11:00
cruldra 14bee9f505 ♻️ refactor(vscode): 代码托管仓库抽成统一接口,Gitea 实现搬到 provider 后面,翻页改看 Link 头 2026-10-19 07:56:40 +11:00
cruldra 38ca193434 ✨ feat(vscode): 工单状态评论改写成隐藏格式,Gitea 和 YouTrack 共用一套读写 2026-10-19 07:35:55 +11:00
cruldra 1f161c7012 🐛 fix(vscode): 接管工单不再用同事机器上的模型配置盖掉本机的,移交出去也不清自己选的配置 2026-10-17 16:31:32 +11:00
cruldra d10c29a260 🐛 fix(vscode): 提交代码改调 generate-git-commit-message 写说明 2026-10-15 15:34:18 +11:00
cruldra b83c445dd0 ✨ feat(vscode): 问 AI 和重写注释各用各的 profile,设置里加重写注释默认模型 2026-10-12 16:30:41 +11:00
cruldra 9345b6a16e 🐛 fix(vscode): 修复新建工单后会话关联丢失 2026-10-10 01:33:18 -04:00
cruldra 012daf95b5 🐛 fix(vscode): 修复看板缓存并增加问答默认模型 2026-10-09 17:00:43 -04:00
cruldra fcee4143d4 ✨ feat(vscode): 会话交接改走阿里云 OSS 收件箱、换 xz 压缩,另加从 env 文件配置移交存储的 URI
- 会话包传到 OSS 上收件人的收件箱 spx-handoff/<owner>/<repo>/session/<收件人>/<sid>!<发送人>!<会话名>.tar.xz,对象私有;owner/repo/收件人转小写
- 待接收列表就是列自己的收件箱;同一会话再交给同一人先删旧包;接收后删包,包已被别处收走时提示并刷新
- 打包换成 xz 1 级,和工单移交共用 packHandoff / unpackHandoff,删掉 gzip 版
- 删掉邮箱工单整套(mailboxIssue、MAILBOX_*、isMailboxIssue 及看板 / webhook 里的过滤、附件名编解码)和不再用的 Gitea 附件、标签、建工单接口
- session-handoff/accept 与待接收项改用 OSS 对象 key 标识
- 没配移交存储时发送、接收、刷新都提示去配,刷新回空列表
- 进度提示照工单移交:同一条提示依次显示打包、上传、下载多少 MB、解包、装会话
- 新增 URI configure-handoff-store?envFile=<绝对路径>:读 OSS_ENDPOINT / OSS_BUCKET_NAME / OSS_ACCESS_KEY / OSS_SECRET_KEY 保存,和命令共用 saveHandoffStore;URI 入口按 path 统一分发,未知 path 报错
2026-10-08 07:17:26 +08:00
cruldra 499cfad7d7 ✨ feat(vscode): 工单移交的会话包改走阿里云 OSS、换 xz 压缩,两边进度一步步显示
- 会话包传到 OSS 的 spx-handoff/<owner>/<repo>/issue-<N>-<时间>.tar.xz,上传时对象设成私有;不再挂 Gitea 工单附件
- 新命令「配置移交存储」:endpoint、bucket 存扩展设置,AccessKey 存密钥存储;没配时移交 / 接管直接提示,什么都不改
- 共享 state 字段 handoffAttachmentId 改名 handoffBundleKey(含 spx CLI 与 schema)
- 打包换成 xz 1 级(tar -cJf),去掉 100MB 上限检查和先试压一遍的重复压缩
- 发送方提示打包 / 上传了多少 MB;接管方同一条提示依次显示下载、解包、建 worktree、装会话,完成前不消失
- 会话交接(单会话)仍走 Gitea 附件,Gitea 附件白名单没有 .xz,单独保留 gzip 打包
2026-10-08 07:17:26 +08:00
chehongweo 3134201243 🐛 fix(vscode): 修复评论全量接口被误分页导致审查反馈卡住 2026-10-06 23:21:21 +08:00
cruldra a1fac829f8 ✨ feat(vscode): 申请移交时给负责人发系统通知 2026-10-04 10:01:41 +08:00
cruldra 4094ffa49e ✨ feat(vscode): 审查列可以手动标记为通过 2026-10-04 10:01:41 +08:00
cruldra 177e75910e ✨ feat(vscode): 审查通过写入工单状态并在卡片上区分 2026-10-03 03:22:20 +08:00
chehongweo a34d7d3f4d 🐛 fix(vscode): 可靠捕获并补回审查会话关联 2026-10-02 01:19:11 +08:00
cruldra 7f460d1257 ✨ feat(vscode): 代码阅读侧栏加「未提交的更改」筛选
- 标题栏新按钮「未提交的更改」:树里只剩工作区各 git 仓库里没提交的文件(暂存、没暂存、未跟踪、合并冲突),每个有改动的仓库一个根,跟着 git 状态自动重摆;上色和徽标交给 VS Code 自带的 git 装饰
- 两种筛选互斥,由 TreeFilters 统一管,上下文键合并成 superpowers.codeReader.filter(review / uncommitted)
- 改动文件树改成多根,buildChangedTree 挪到 explorer/changedTree 并改吃 {path, change}
- 内置 git 扩展 API 的类型和加载抽到 src/git/gitApi、gitExtension,提交按钮的监听也改用它
- 文件注释按文件所在的工作区文件夹记,不看树从哪个根摆下来
2026-09-29 23:42:10 +08:00
cruldra 6a2ab7eaf4 🐛 fix(vscode): 移除侵入式弹窗并过滤 PR 评论,仅对工单讨论发送简洁系统通知 2026-09-29 10:49:28 +08:00
chehongweo 3621729367 🐛 fix(vscode): 会话终端直接拉起 claude/codex,不再往 shell 里打命令,启动命令不再污染 zsh 历史
新建工单、实施、审查、测试、原型、续聊、冲突解决、会话管理和各种恢复会话,
都改成开终端时直接指定要跑的程序(用户默认 shell 以 -ilc 'exec "$@"' 拉起),
环境变量照常加载,参数原样传入。程序退出时标签页随之关闭。
提示词和配置文件路径里带单引号也不再拒绝执行,相关的转义和拦截全部删掉。
2026-09-29 04:40:35 +08:00
cruldra a2c3c1f919 ✨ feat(vscode): 支持讨论评论引用与 macOS 系统级新评论桌面提醒 2026-09-29 04:23:57 +08:00
cruldra df17821408 ✨ feat(vscode): 看板底栏新增工单讨论 Tab 并支持系统气泡与 Gitea 评论同步 2026-09-29 04:23:57 +08:00
chehongweo f2b17e5389 🐛 fix(vscode): 自动审查只认本目录的 codex 主会话,不再认错别的会话;去掉 2 分钟上限,一直等到审查终端关掉 2026-09-28 23:03:50 +08:00
chehongweo afc341fb84 🐛 fix(vscode): 审查反馈打进会话后自动发送 2026-09-28 23:00:13 +08:00
cruldra 7d70783b32 🐛 fix(vscode): 工单先建好也补上头脑风暴会话 2026-09-28 19:10:37 +08:00
cruldra 6342f39de0 ✨ feat(vscode): 审查列可以申请同事移交工单 2026-09-28 00:17:09 +08:00
cruldra c86939285d ✨ feat(vscode): 移交包不带子代理对话 2026-09-27 18:46:38 +08:00
cruldra 162134dcc0 ✨ feat(vscode): 移交时显示步骤,会话包超限先停 2026-09-27 18:36:01 +08:00
cruldra b3a829e658 🐛 fix(vscode): 选工单不再重新加载整个看板,直接列看板上摆着的「审查」列工单,文件数一项项补上,每一步记进日志 2026-09-27 17:45:48 +08:00
cruldra 8e2cdfaf17 ✨ feat(vscode): 代码阅读侧栏可以按审查工单只看 PR 改过的文件:标题栏「选工单」列出看板「审查」列,选中后树里只剩改过的文件(M / A / D 着色),点开的是本机工作副本里 PR 最新的代码,没有就拉 PR 分支建一个,「显示全部」退出 2026-09-27 17:36:02 +08:00
cruldra 2b823a32ca ✨ feat(vscode): 代码阅读入口、文件树与预览编辑器 2026-09-24 21:36:00 +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 961a4e9756 🐛 fix(vscode): 审查意见等多行消息发进会话后自动提交,不再只停在输入框 2026-09-24 16:09:11 +08:00
cruldra 7888d15a38 🐛 fix(vscode): profiles.json 在外部被改动后 Profile tab 实时刷新 2026-09-24 15:33:25 +08:00
cruldra 17570749dd ✨ feat(vscode): 同一天再切发布直接把 main 新提交推进到当天分支,不再另起编号分支 2026-09-17 17:57:47 +08:00
cruldra 936097757b 🐛 fix(vscode): 同一天再切发布分支自动编号 .2 / .3,不再报已存在 2026-09-17 17:52:26 +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 0792c9262d ✨ feat(vscode): 续聊提示词告诉规划会话怎么找原型会话
讨论里发现原型要改时,规划会话既不该自己动插件代码,也不该去翻 git log 猜
会话 id。提示词现在带上原型会话 id 和终端名,并指明走 spawning-peer-sessions
技能 SendMessage 过去;没有活会话就停下让用户从面板起一个。

Claude-Session: https://claude.ai/code/session_01Kgmb1LvrPmFX3NoUDB4zZC
2026-09-15 00:16:22 +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 743e0e7325 ✨ feat(vscode): 会话列表删除前弹确认框
删除会关掉终端 tab 并抹掉列表记录,之前点一下就执行。现在先弹 modal
确认,带上会话名字。

Claude-Session: https://claude.ai/code/session_01Kgmb1LvrPmFX3NoUDB4zZC
2026-09-13 10:45:39 +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
cruldra b182e0ac5b ✨ feat(vscode): URI 开的会话不再登记进会话管理列表
delegate-fix 等外部方通过 create-session URI 开的一次性会话,
不写入 .spx/session-names.json,也跳过 sessionId 轮询捕获;
面板内手动创建的会话仍照常登记。

Claude-Session: https://claude.ai/code/session_01Kgmb1LvrPmFX3NoUDB4zZC
2026-09-13 10:07:30 +08:00
cruldra 5bfd759822 ✨ feat(vscode): 头脑风暴会话可清除,悬停提示改窄改紧凑
工单记着的头脑风暴会话 id 此前没有清除入口,续聊只能 resume 旧会话,
把几个版本前的提示词和它当时报的错一起带回来。会话 id 行新增清除按钮,
确认后把 state JSON 的 sessionId 置空,下次续聊新开会话;会话文件不动,
手上有 id 仍可 claude --resume 找回。

悬停气泡此前贴着视口右边测量尺寸:fixed 元素的可用宽度是「视口宽 - left」,
贴边测会被挤窄、行数变多,按那个高度定位就浮高一截。改成先在左上角量再落位,
字号行高收紧,提示文案压成一行。顺带修掉「重置为待办」的错误说明——它会停
会话、删 worktree 和未合并 PR,不是原样保留。

Claude-Session: https://claude.ai/code/session_01REdhpbaNyqWASF2HWsnTFv
2026-09-13 09:21:53 +08:00
cruldra 958c59e090 ✨ feat(vscode): 设置面板可配头脑风暴/实施/测试会话的默认 profile
三类会话的 profile 此前只有工单级字段,留空就硬编码落到 official,
想整体换模型只能一个工单一个工单改。

设置面板新增三个下拉,与冲突解决/提交/改动说明的 profile 选择同区。
解析链路变成:工单级字段 > 对应的全局默认设置 > getDefaultProfilePath(),
三类之间仍互不回退。新建工单的头脑风暴会话也走同一条链路。

Claude-Session: https://claude.ai/code/session_01REdhpbaNyqWASF2HWsnTFv
2026-09-13 08:59:56 +08:00