Commit Graph
100 Commits
Author SHA1 Message Date
cruldra 77037924ef feat(vscode): 会话 tab 可交接对话给同事 2026-08-27 15:14:42 +08:00
cruldra 5ee8226167 🔖 chore(vscode): bump 0.2.99 2026-08-27 13:41:26 +08:00
cruldra ad90209d2a 11 2026-08-27 13:40:29 +08:00
cruldra 70575e7ac6 🐛 fix(vscode): 下拉按最长项加宽,避免 profile 名被截断 2026-08-27 13:15:46 +08:00
cruldra b242a64267 🔖 chore(vscode): bump 0.2.97
Claude-Session: https://claude.ai/code/session_011cEyL6k351U2BzX1Qmygph
2026-08-26 19:05:32 +08:00
cruldra 71a91fe7ec 🐛 fix(vscode): 接管时把会话文件里的发送方路径重写为本机路径
Claude-Session: https://claude.ai/code/session_011cEyL6k351U2BzX1Qmygph
2026-08-26 19:04:09 +08:00
cruldra 07c40897e2 🐛 fix(vscode): 移交只对负责人显示;接管后审查会话立即可点
Claude-Session: https://claude.ai/code/session_011cEyL6k351U2BzX1Qmygph
2026-08-26 18:58:04 +08:00
cruldra 71fc38e0c5 🐛 fix(vscode): 接管流程 getIssue 纳入兜底,补关闭工单与不存在工单的拒绝
Claude-Session: https://claude.ai/code/session_011cEyL6k351U2BzX1Qmygph
2026-08-26 17:19:03 +08:00
cruldra 0acfd04b54 🐛 fix(vscode): 移交终审修正:schema 墓碑、顶层兜底、前置复查、分支保护、清单校验
Claude-Session: https://claude.ai/code/session_011cEyL6k351U2BzX1Qmygph
2026-08-26 17:09:39 +08:00
cruldra aa98dfb4e1 📝 docs(vscode): README 补移交/接管
Claude-Session: https://claude.ai/code/session_011cEyL6k351U2BzX1Qmygph
2026-08-26 16:48:34 +08:00
cruldra 6770570f09 feat(vscode): webview 移交/接管按钮、选人弹窗与待接管角标
Claude-Session: https://claude.ai/code/session_011cEyL6k351U2BzX1Qmygph
2026-08-26 16:41:35 +08:00
cruldra 6d3720d424 🐛 fix(vscode): 完成列归档会话改为整包搬迁并清理重复 sid
Claude-Session: https://claude.ai/code/session_011cEyL6k351U2BzX1Qmygph
2026-08-26 16:33:54 +08:00
cruldra e066c26583 🐛 fix(vscode): 移交回滚顺序、done 信号与无 branch 守卫
Claude-Session: https://claude.ai/code/session_011cEyL6k351U2BzX1Qmygph
2026-08-26 16:28:44 +08:00
cruldra 605f69f6a5 feat(vscode): 移交/接管扩展端流程与消息分发
Claude-Session: https://claude.ai/code/session_011cEyL6k351U2BzX1Qmygph
2026-08-26 16:17:17 +08:00
cruldra f7b97bbe9e feat(vscode): handoff 纯决策与 state/UI payload
Claude-Session: https://claude.ai/code/session_011cEyL6k351U2BzX1Qmygph
2026-08-26 16:09:14 +08:00
cruldra bffdcb4d42 feat(vscode): Gitea API 增加 assignees 列表与工单附件读写
Claude-Session: https://claude.ai/code/session_011cEyL6k351U2BzX1Qmygph
2026-08-26 16:02:36 +08:00
cruldra 332205a2fe feat(vscode): handoff 会话包 stage/pack/unpack/install
Claude-Session: https://claude.ai/code/session_011cEyL6k351U2BzX1Qmygph
2026-08-26 15:54:36 +08:00
cruldra 65cd404350 feat(vscode): handoff 清单类型与校验
Claude-Session: https://claude.ai/code/session_011cEyL6k351U2BzX1Qmygph
2026-08-26 15:49:00 +08:00
cruldra 569f24c11a feat(vscode): sessionBundle 会话文件查找/安装/去重原语
Claude-Session: https://claude.ai/code/session_011cEyL6k351U2BzX1Qmygph
2026-08-26 15:44:00 +08:00
cruldra ad82808dd0 feat(vscode): ensureWorktreeFromRemote 从远端分支重建 worktree
Claude-Session: https://claude.ai/code/session_011cEyL6k351U2BzX1Qmygph
2026-08-26 15:37:49 +08:00
cruldra 24fc09cb0e 🔖 chore(vscode): bump 0.2.96 2026-08-26 15:36:51 +08:00
cruldra 9a64805746 🎨 style(vscode): 修正 sessions.ts 导入顺序与多余空行
Claude-Session: https://claude.ai/code/session_011cEyL6k351U2BzX1Qmygph
2026-08-26 15:33:21 +08:00
cruldra 3bc73d9dd6 ♻️ refactor(vscode): 抽出 worktreePath 模块(slug / 目录模板解析)
Claude-Session: https://claude.ai/code/session_011cEyL6k351U2BzX1Qmygph
2026-08-26 15:27:35 +08:00
cruldra 4b66d567b0 feat(vscode): state JSON 新增 handoffAttachmentId/handoffFrom,Issue 透出 assignees
Claude-Session: https://claude.ai/code/session_011cEyL6k351U2BzX1Qmygph
2026-08-26 15:20:23 +08:00
cruldra 3ddafafe3d 📝 docs(vscode): 工单移交实施计划
Claude-Session: https://claude.ai/code/session_011cEyL6k351U2BzX1Qmygph
2026-08-26 15:07:13 +08:00
cruldra ef648cc89e 📝 docs(vscode): 工单移交(handoff)设计 spec
Claude-Session: https://claude.ai/code/session_011cEyL6k351U2BzX1Qmygph
2026-08-26 14:56:58 +08:00
cruldra 0945b9ee30 📝 docs(vscode): 按当前 Gitea 工单看板形态重写 README
Claude-Session: https://claude.ai/code/session_01FAA5YEyR7fzWj7gYQiLSqy
2026-08-26 14:23:36 +08:00
cruldra f6c878edaa 💄 style(vscode): 换成看板+闪电的扩展图标并 bump 0.2.95
Claude-Session: https://claude.ai/code/session_01FAA5YEyR7fzWj7gYQiLSqy
2026-08-26 13:48:27 +08:00
cruldra aff36b09f0 🔖 chore(vscode): bump 0.2.94
Claude-Session: https://claude.ai/code/session_01FAA5YEyR7fzWj7gYQiLSqy
2026-08-26 13:42:45 +08:00
cruldra 06fb5ecec2 🐛 fix(vscode): 修好单个会话 tab 从看板点回时不反向选中所属工单
Claude-Session: https://claude.ai/code/session_01FAA5YEyR7fzWj7gYQiLSqy
2026-08-26 13:42:30 +08:00
cruldra eee0170a63 🔖 chore(vscode): bump 0.2.93 2026-08-25 22:18:10 +08:00
cruldra 9f9d6be911 🐛 fix(vscode): 修好属性网格 SelectMenu 选项点击被捕获阶段处理器吞掉 2026-08-25 22:18:07 +08:00
cruldra 58ff296f30 🔖 chore(vscode): bump 0.2.92 2026-08-25 20:12:51 +08:00
cruldra 8d86d3ef95 feat(vscode): 用自定义 SelectMenu 替换原生 select 修复暗色样式 2026-08-25 20:12:51 +08:00
cruldra 4de284578e 🔖 chore(vscode): bump 0.2.91 2026-08-25 18:56:06 +08:00
cruldra 6c05b7f7e3 feat(vscode): 支持重置回待办并修好待办依赖拖拽 2026-08-25 18:53:55 +08:00
cruldra 75dec8fa90 11 2026-08-25 17:25:27 +08:00
cruldra ce0622b6fe 🔖 chore(vscode): bump 0.2.90 2026-08-25 16:05:18 +08:00
cruldra afdb98ad55 🐛 fix(vscode): 实施启动自动丢掉残留 worktree 再新建 2026-08-25 16:04:45 +08:00
cruldra 23ebdc0509 🔖 chore(vscode): bump 0.2.89 2026-08-25 14:46:29 +08:00
cruldra 24b1ae2ecf 🐛 fix(vscode): 实施启动改为复用已有 feature 分支 2026-08-25 14:45:53 +08:00
cruldra 0db43f4cc3 🔖 chore(vscode): bump 0.2.88 2026-08-25 13:07:15 +08:00
cruldra 07b2bf75a0 feat(vscode): 历史会话可换 profile 恢复 2026-08-25 13:06:48 +08:00
cruldra 1c3e66bdc7 🔖 chore(vscode): bump 0.2.87 2026-08-20 19:25:40 +08:00
cruldra 466bf3fe13 🐛 fix(vscode): 看板实时响应工单指派事件
Gitea 的 issue_assign 事件 X-Gitea-Event 值为 issues、action 为
assigned/unassigned,coordinator 此前只处理 opened/reopened/edited,
指派事件被丢弃。现复用 decideIssueAppend 门禁:指派给我 → issue/append
实时上卡(已在板上则原位刷新),与我无关 → issue/remove 撤卡。
2026-08-20 19:24:55 +08:00
cruldra 6fb8a31406 🔖 chore(vscode): bump 0.2.86 2026-08-20 13:53:30 +08:00
cruldra 416861fc75 feat(vscode): URI handler 外部触发开 claude 会话 tab 2026-08-20 13:53:12 +08:00
cruldra 7b6e263b84 🔖 chore(vscode): bump 0.2.85 2026-08-20 12:47:00 +08:00
cruldra 32a4371cae 🐛 fix(vscode): PR 统计条改全量口径与 Gitea 一致,已查看分母仍为可见文件数 2026-08-20 12:46:38 +08:00
cruldra c24b9aebf8 🔖 chore(vscode): bump 0.2.84 2026-08-20 10:00:32 +08:00
cruldra 15424eb275 feat(vscode): 审查提示词加临时 worktree 清理指令 2026-08-20 10:00:32 +08:00
cruldra ac35c5f572 🔖 chore(vscode): bump 0.2.83 2026-08-19 20:41:11 +08:00
cruldra fea7b2e604 🐛 fix(vscode): issue opened 广播按看板 scope 门禁,mine 不再凭空上别人的卡 2026-08-19 20:41:11 +08:00
cruldra ea4c4e4658 📝 docs(vscode): 约定本机装 VSIX 必须 --profile augment 2026-08-19 19:37:11 +08:00
cruldra 6251ba0d2a feat(vscode): 审查会话链接按本机 codex 会话文件存在判定,不再绑 worktree 2026-08-19 19:24:57 +08:00
cruldra bf3f7f9e67 🔖 chore(vscode): bump 0.2.81 2026-08-19 18:56:07 +08:00
cruldra 1bc3561236 🔖 chore(vscode): 版本号提到 0.2.80 入库,约定改码后自动加版本+打包 2026-08-19 18:39:59 +08:00
cruldra 4a1ae45425 feat(vscode): 属性格动作值改双击触发+spinner反馈,热区收窄到内容 2026-08-19 18:10:51 +08:00
cruldra c9eaca2904 🐛 fix(vscode): 状态分层读侧补漏——四处 handler 改走 readIssueState 叠加本地状态 2026-08-19 17:01:05 +08:00
cruldra faf227412e feat(vscode): 多人协作二期:状态分层/写校验/签名/团队视图
- 本机状态(会话id/worktree/profile/prDiffFile)迁 workspaceState,
  共享 state JSON 只留团队字段;读侧本地记录叠加,旧数据兜底
- mergeStateJsonComment 写后读回校验,并发覆盖时在最新状态上重放一次
- webhook 支持 Gitea secret,校验 X-Gitea-Signature(HMAC-SHA256),
  不匹配 401;设置面板新增 Webhook Secret 字段
- 看板新增 我的/全部 范围切换(团队视图),按工作区持久化
2026-08-19 00:32:06 +08:00
cruldra c370214d12 feat(vscode): webhook 副作用按 assignee 门禁,适配多人协作 2026-08-18 23:57:21 +08:00
cruldra c20bd86370 test(vscode): 更新 spawnClaude 断言以匹配绝对路径解析 2026-08-18 23:57:21 +08:00
cruldra 9255b55625 🐛 fix(vscode): GUI 下解析 claude 绝对路径(含 ~/.local/bin 官方安装) 2026-08-05 14:57:48 +08:00
cruldra 81ab00bdba 🐛 fix(vscode): 详情属性格 data 引用变化不再清掉选中导致 PR 打不开 2026-08-05 14:39:04 +08:00
cruldra a9e4d6e9b9 🐛 fix(vscode): issue/patch 用 null 清空 worktree 字段以便 webview 即时刷新 2026-08-05 14:08:03 +08:00
cruldra 29aaabdabf 🐛 fix(vscode): 完成列/删 worktree 时自动杀掉占用进程再删目录 2026-08-05 13:31:00 +08:00
cruldra 23e6f67373 ♻️ refactor: brainstorm 续聊提示词切回 superpowers:brainstorming 2026-07-31 10:27:16 +08:00
cruldra 0d79cb7c73 11 2026-07-31 08:20:42 +08:00
cruldra 0d078e848c 11 2026-07-31 06:52:09 +08:00
cruldra 532f9e09b5 feat(vscode): 设置面板支持 brainstorm 续聊提示词并切换 grill-with-docs 2026-07-31 06:50:38 +08:00
cruldra d68603ee06 🐛 fix(vscode): 改动 tab 默认统一视图并保留阅读位置 2026-07-25 11:08:48 +08:00
cruldra 84a5cda8d2 feat(vscode): 提交代码按钮可配置 Claude profile 2026-07-25 07:29:05 +08:00
cruldra e9543d37ce 🐛 fix(vscode): 导入/恢复会话时从 transcript 推断 profilePath 2026-07-25 01:59:22 +08:00
cruldra 45b2a7797d feat(vscode): 新增会话 transcript 推断 profilePath 纯模块 2026-07-25 01:57:05 +08:00
cruldra 8d00676bba 11 2026-07-24 14:26:56 +08:00
cruldra dc522064ce feat(vscode): 会话管理支持导入已 /rename 的命名会话 2026-07-24 00:12:28 +08:00
cruldra 7c67d220db feat(vscode): 设置面板可配置 Claude profiles 目录并修正探测顺序 2026-07-23 21:52:53 +08:00
cruldra a3e557f9ee ♻️ refactor(vscode): 对齐 state schema 与 knownStateFields 漂移 2026-07-16 01:55:35 +08:00
cruldra b45257a38d 🐛 fix(vscode): resume 会话用 resolveWorktreePath 避免误判 worktree 已清理 2026-07-16 01:51:08 +08:00
cruldra aff4ee2758 🐛 fix(vscode): 删 worktree 前扫 /proc 检测进程占用,命中则中止清理
dev server 常驻在 worktree 里持续写构建产物,递归删除与写入竞态导致
rmdir 撞 ENOTEMPTY。新增 findProcessesUsingWorktree 扫 /proc 找 cwd 或
fd 落在 worktree 下的进程,三处删除调用点(拖到完成列 / 手动删 / 删整工单)
命中即弹错误 toast 列出 pid+命令并中止(不删、不杀进程),用户停掉后重试。
非 Linux 无 /proc 返回空,降级为原直接删除。
2026-07-13 09:26:23 +08:00
cruldra b585016cd7 feat(vscode): 头脑风暴 profile 独立 + codex 命令统一组装收尾
- 头脑风暴/实施/测试会话 profile 彻底独立,互不回退,各自空值回落默认
- 新建工单弹窗的 profile 选择改为头脑风暴专用 brainstormProfilePath
- 详情面板新增「头脑风暴配置文件」下拉
- 删除从未接线的死代码 reviewFlow.ts(runReview 全仓库无调用方)
- codexCommand 精简为仅 resume/interactive 两种终端命令形态
- 版本号 0.2.55 → 0.2.60
2026-07-13 07:50:39 +08:00
cruldra 5188c23765 feat(vscode): codex 命令统一组装,模型/思考级别可在设置面板配置
新增 cc/codexCommand.ts 作为 codex 调用的唯一出口(buildCodexArgs /
buildCodexCommandString),把 exec-review / resume / interactive 三种形态
的 flag 拼装收敛到一处;模型与思考级别作为自由文本项写入全局设置并贯穿
webview 消息通道,空值则不传 -c,沿用 codex config.toml 默认。
2026-07-13 06:43:58 +08:00
cruldra aff99c57f3 ♻️ refactor(vscode): PR 文件说明改为一句话概述改动
已缓存的 `.spx/pr-file-summaries.json` 旧长文不会自动刷新,需重新点  生成。
2026-07-09 08:47:12 +08:00
cruldra 7b4f737ce5 feat(vscode): 冲突解决会话 profile 可在设置面板配置 2026-07-09 08:41:58 +08:00
cruldra 38f15a6fe1 🐛 fix(vscode): resume 测试会话时按 testProfilePath 解析 settings 2026-07-09 08:17:23 +08:00
cruldra f39e61aa7f feat(vscode): 手动删除 worktree 时连同 feature 分支一起删(本地+远程)
抽出共享 cleanupFeatureBranch(handlers/branchCleanup.ts):受保护分支跳过、
远程走 gitea API、本地强删(git branch -D),全程 best-effort 只记日志。
「拖到完成」的分支清理改为复用它(71 行 → 12 行);handleDeleteWorktree 在
删完 worktree 目录后同样调用它,确认框与完成提示带上分支名。

放在 handlers 层而非 git/branchSync.ts:后者刻意不依赖 vscode(有单测覆盖
deleteLocalBranch),本函数需 logger(→vscode)+ gitea API。
2026-07-08 19:05:48 +08:00
cruldra 045e203590 🔖 chore(vscode): 版本号 0.2.54 → 0.2.55 2026-07-08 11:51:19 +08:00
cruldra 75cbe3c515 feat(vscode): 测试会话提示词改用 /pr-acceptance-testing 斜杠命令 2026-07-08 11:51:19 +08:00
cruldra 235cd9ea65 🐛 fix(vscode): worktree 清理改 rm -rf + prune,绕开 gitignored 产物导致的目录非空
git worktree remove 只删跟踪文件+admin 注册,不删 .next/node_modules 等 gitignored 产物,删完残留把目录撑住、最后 rmdir 撞 ENOTEMPTY。新增 removeWorktreeDir(带路径护栏的递归强删 + git worktree prune),替换 3 处 worktree remove 调用点。
2026-07-08 11:48:23 +08:00
cruldra cace658ac1 feat(vscode): profile 值编辑器改为多行+图片粘贴(图片落 .spx/profile-assets)
双击 profile 值单元格改为打开富编辑弹窗:多行 textarea + Ctrl+V 粘贴截图,
⌘/Ctrl+Enter 或点遮罩保存、Esc 取消。值仍是单个字符串,图片存磁盘
(内容寻址 sha1 命名,去重),值里只留 markdown 引用,不撑大 profiles.json。
折叠单元格显示首行 + 含图时加 🖼 徽标。key/列头仍走原内联输入。

- 抽公用 lib/imagePaste:同步探测(preventDefault) + 异步读取,新建工单改用它、行为不变
- 新增扩展侧 profileAssets handler:存图(image/* 校验)/读图(挡路径穿越)
- 新增 useProfileAssets(requestId 关联并发) 与 ProfileCellEditor 弹窗
- 消息两侧同步 profile-asset/save|load|saved|loaded
2026-07-03 16:55:40 +08:00
cruldra 35085f72f7 ♻️ fix(vscode): 「已查看」改为按文件变更指纹失效,PR 新 push 只摘变动文件的勾
原先按 head sha 存已查看,作者一推新提交 head sha 变了,全部勾一起清空——
哪怕只改了一个文件也把没动的勾全冲掉。改成 GitHub「Viewed」式的内容感知:
按每个文件的变更指纹 (status|additions|deletions) 存,拉文件时与当前指纹比对,
只有真改动过的文件掉勾,没动的保留;比对后顺手剪掉盘上失配/消失的条目。

Gitea 的 ChangedFile 不返回 blob sha、compare 端点也不支持任意 commit sha,
故用上述三元组作指纹(文件一改几乎必变其一),零额外请求。

- prReviewStore: 形状改为 issueNumber → {path: sig},导出 read/writeConfirmedSigs
- prFiles: handleGetPrFiles 按指纹过滤+剪枝,顺带去掉不再需要的 getPullRequest 调用
- 消息 pr-files/show 去掉无人消费的 headSha/mergeBase;pr-review/set 改发 {path: sig}
- usePrFiles: 删 headSha,setConfirmed 把路径映射成指纹再发
2026-06-29 16:55:11 +08:00
cruldra bd8ba714b3 ✏️ fix(vscode): 改动说明 prompt 改问「为什么改+不改的后果」并垫入 PR 描述 2026-06-29 15:37:51 +08:00
cruldra 8c5cc90eda feat(vscode): 「改动」面板加审查勾 + deepseek 增量生成文件改动说明
右栏 diff 头部加一组按钮:
- 审查对勾:与左树同一状态源,勾上则文件路径标题置灰
-  一键调 deepseek 生成该文件「一句话改动目的」

增量复用会话:首个文件开新 cc 会话并把 sessionId 记到
.spx/pr-file-summaries.json,后续文件 --resume 接上去,省去每次重新
理解 PR 的开销;resume 失败则丢弃旧 id 重开一次。说明也落盘(跨 push
保留),重载后仍显示。

- spawnClaude 增 resumeSessionId(--resume)
- 新增 prFileSummaryStore;handler handleGeneratePrFileSummary
  用 jsdiff 拼 unified diff 喂模型
- 依赖 diff(jsdiff)
2026-06-29 15:24:43 +08:00
cruldra fb505d59c5 feat(vscode): 「改动」tab 重做为整 PR 聚合的主从式内联 diff(git-diff-view)
- 左树右 diff:左栏全 PR 文件树 + 统计条(共改 N · +X−Y · 已查看 M/N),右栏选中单文件内联 diff
- 用 @git-diff-view/react 只渲染当前选中文件,绕开上万行全量渲染的性能坑
- gitea 新增 listPullRequestFiles、getPullRequest 取 merge_base/head,按需回两版原文
- diff 走 merge_base→head 三点口径(与 Gitea 网页一致),getRawFile 404 兜底成全增/全删/改名
- 已查看态按 head sha 落盘、新 push 自然重置;去掉提交列表、原生 diff 与 spx-gitea 虚拟文档 provider
2026-06-29 10:52:36 +08:00
cruldra ceea62ed16 feat(vscode): 测试会话提示词改为模拟真实用户对 PR 功能做 e2e 测试 2026-06-27 21:41:01 +08:00
cruldraandClaude Opus 4.8 7be4e38620 ♻️ refactor(vscode): claude 会话命令收口到 buildCcCommand 并移除已卸载的 serena --system-prompt
9 处手拼的 claude 启动命令(managedSessions/sessions/issues)统一改用新增的
cc/ccCommand.ts:buildCcCommand({ profilePath, effort?, resumeSessionId?, prompt? }),
去掉各处重复的 --system-prompt="$(serena prompts ...)"(serena 已卸载)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 00:57:29 +08:00
cruldraandClaude Opus 4.7 02b0aca891 feat(vscode): PyCharm 启动命令可配置(支持 ~/绝对路径),抽 expandTilde 复用
GUI 启动的 VS Code 扩展进程 PATH 常不含 JetBrains 启动器,裸 pycharm 易 ENOENT。
新增设置 pycharmCommand(默认 pycharm),贯穿 store/settings handler/messages/
KanbanPanel 与 webview,「钩子」分组在选 PyCharm 时显示「PyCharm 启动命令」输入框。
handleOpenWorktree 用该命令并经 expandTilde 展开 ~。expandTilde 从 resolveWorktreePath
抽出共用。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-24 05:29:19 +08:00
cruldraandClaude Opus 4.7 cacc60eb0e feat(vscode): worktree 打开方式可选 VS Code/PyCharm,并修复 handleOpenWorktree 不展开 ~ 的打开报错
- worktree.ts: handleOpenWorktree/handleDeleteWorktree/dispatchImplTabPostCloseAsync 三处改用 resolveWorktreePath,修复带 ~ 的存量路径被拼成 <工作区>/~/... 导致打不开
- 新增全局设置 worktreeOpenWith('vscode' | 'pycharm',默认 vscode),贯穿 store/settings handler/messages/KanbanPanel 与 webview 的 messages/useIssues/App/SettingsModal「钩子」分组新增「工作树打开方式」下拉
- handleOpenWorktree 按设置分支:pycharm 走 JetBrains pycharm 启动器,ENOENT 时提示启用命令行启动器

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-24 05:20:22 +08:00
cruldraandClaude Opus 4.7 5e7a3d20d9 🐛 fix(vscode): worktreePath 消费侧统一解析 ~/绝对/相对,修复带 ~ 的存量工单与绝对路径 worktree 误判
新增 resolveWorktreePath(stored, workspaceRoot) 三态合一解析:开头 ~ 展开为 home、
已是绝对原样、相对拼到 workspaceRoot。替换全部消费点,原先「判 isAbsolute 再 join」
不认 ~、issueLoader 算 worktreeExists 更是裸 join 连绝对路径都拼坏。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-24 03:01:08 +08:00
cruldraandClaude Opus 4.7 9a69aeed48 🔧 fix(vscode): worktree 目录配置改用插件自带设置面板,撤销 VS Code 原生配置
上一版误把 worktree 目录模板注册成 VS Code 原生设置(contributes.configuration
+ workspace.getConfiguration),但本插件有自己的设置面板(SettingsModal,存 globalState)。
改为:
- Settings 新增 worktreeDirectory 字段(默认 ~/Sources/worktree/$project_name/$feature_name,
  留空回退默认),贯穿 store/handler/两端 messages/useIssues/App/SettingsModal
- SettingsModal「钩子」分组新增「工作树目录」输入项,走既有 save/load 流程
- handleImplement 改从 getSettings(panel.context).worktreeDirectory 读模板
- 删除 package.json 的 contributes.configuration(meta.ts 为 gitignore 生成物,已本地还原)

deriveSlug / resolveWorktreeDir / ~ 展开 / 绝对路径 / feature/<slug> 逻辑不变。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-24 02:56:33 +08:00