🔧 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>
This commit is contained in:
@@ -23,6 +23,7 @@ interface SubmitValues {
|
||||
reviewPrompt: string
|
||||
devBranch: string
|
||||
autoBuildBranch: string
|
||||
worktreeDirectory: string
|
||||
worktreePostCreateScript: string
|
||||
worktreePreRemoveScript: string
|
||||
implTabPreCreateScript: string
|
||||
@@ -59,6 +60,7 @@ export interface SettingsModalProps {
|
||||
initialReviewPrompt: string
|
||||
initialDevBranch: string
|
||||
initialAutoBuildBranch: string
|
||||
initialWorktreeDirectory: string
|
||||
initialWorktreePostCreateScript: string
|
||||
initialWorktreePreRemoveScript: string
|
||||
initialImplTabPreCreateScript: string
|
||||
@@ -128,6 +130,7 @@ export function SettingsModal({
|
||||
initialReviewPrompt,
|
||||
initialDevBranch,
|
||||
initialAutoBuildBranch,
|
||||
initialWorktreeDirectory,
|
||||
initialWorktreePostCreateScript,
|
||||
initialWorktreePreRemoveScript,
|
||||
initialImplTabPreCreateScript,
|
||||
@@ -151,6 +154,7 @@ export function SettingsModal({
|
||||
const [reviewPrompt, setReviewPrompt] = useState(initialReviewPrompt)
|
||||
const [devBranch, setDevBranch] = useState(initialDevBranch)
|
||||
const [autoBuildBranch, setAutoBuildBranch] = useState(initialAutoBuildBranch)
|
||||
const [worktreeDirectory, setWorktreeDirectory] = useState(initialWorktreeDirectory)
|
||||
const [worktreePostCreateScript, setWorktreePostCreateScript] = useState(initialWorktreePostCreateScript)
|
||||
const [worktreePreRemoveScript, setWorktreePreRemoveScript] = useState(initialWorktreePreRemoveScript)
|
||||
const [implTabPreCreateScript, setImplTabPreCreateScript] = useState(initialImplTabPreCreateScript)
|
||||
@@ -252,6 +256,8 @@ export function SettingsModal({
|
||||
reviewPrompt,
|
||||
devBranch: devBranch.trim(),
|
||||
autoBuildBranch: autoBuildBranch.trim(),
|
||||
// worktree 目录模板:trim 后留空 = 用默认模板(getSettings 读时回退)
|
||||
worktreeDirectory: worktreeDirectory.trim(),
|
||||
// 钩子路径保持原样 trim(前后空格无意义;空串 = 用默认 .spx/*.sh)
|
||||
worktreePostCreateScript: worktreePostCreateScript.trim(),
|
||||
worktreePreRemoveScript: worktreePreRemoveScript.trim(),
|
||||
@@ -605,6 +611,37 @@ export function SettingsModal({
|
||||
|
||||
{activeGroup === 'hooks' && (
|
||||
<>
|
||||
<Field
|
||||
label="工作树目录"
|
||||
hint={(
|
||||
<>
|
||||
实施 Plan 时创建 worktree 的目录模板。占位符
|
||||
{' '}
|
||||
<code>$project_root</code>
|
||||
(工作区绝对路径)、
|
||||
<code>$project_name</code>
|
||||
(工作区目录名)、
|
||||
<code>$feature_name</code>
|
||||
(spec/plan 的 slug);开头
|
||||
{' '}
|
||||
<code>~</code>
|
||||
{' '}
|
||||
展开为主目录。留空 = 默认
|
||||
{' '}
|
||||
<code>~/Sources/worktree/$project_name/$feature_name</code>
|
||||
。
|
||||
</>
|
||||
)}
|
||||
>
|
||||
<input
|
||||
type="text"
|
||||
value={worktreeDirectory}
|
||||
onChange={e => setWorktreeDirectory(e.target.value)}
|
||||
placeholder="~/Sources/worktree/$project_name/$feature_name"
|
||||
className={inputClass}
|
||||
/>
|
||||
</Field>
|
||||
|
||||
<Field
|
||||
label="worktree 创建后脚本"
|
||||
hint={(
|
||||
|
||||
Reference in New Issue
Block a user