✨ feat(vscode): 冲突解决会话 profile 可在设置面板配置
This commit is contained in:
@@ -10,6 +10,7 @@
|
||||
import type { ReactElement } from 'react'
|
||||
import { useEffect, useState } from 'react'
|
||||
import { X } from 'lucide-react'
|
||||
import type { ClaudeProfile } from '../hooks/useIssues'
|
||||
|
||||
type GroupKey = 'auth' | 'network' | 'youtrack' | 'prompts' | 'hooks'
|
||||
|
||||
@@ -30,6 +31,7 @@ interface SubmitValues {
|
||||
worktreePreRemoveScript: string
|
||||
implTabPreCreateScript: string
|
||||
implTabPostCloseScript: string
|
||||
conflictResolutionProfilePath: string
|
||||
youtrackBaseUrl: string
|
||||
youtrackProjectShortName: string
|
||||
youtrackCloseCommand: string
|
||||
@@ -69,10 +71,12 @@ export interface SettingsModalProps {
|
||||
initialWorktreePreRemoveScript: string
|
||||
initialImplTabPreCreateScript: string
|
||||
initialImplTabPostCloseScript: string
|
||||
initialConflictResolutionProfilePath: string
|
||||
initialYoutrackBaseUrl: string
|
||||
initialYoutrackProjectShortName: string
|
||||
initialYoutrackCloseCommand: string
|
||||
initialYoutrackTokenSaved: boolean
|
||||
profiles: ClaudeProfile[]
|
||||
youtrackProjects: YouTrackProjectsState
|
||||
onListYouTrackProjects: (baseUrl: string, token: string) => void
|
||||
onSubmit: (values: SubmitValues) => void
|
||||
@@ -141,10 +145,12 @@ export function SettingsModal({
|
||||
initialWorktreePreRemoveScript,
|
||||
initialImplTabPreCreateScript,
|
||||
initialImplTabPostCloseScript,
|
||||
initialConflictResolutionProfilePath,
|
||||
initialYoutrackBaseUrl,
|
||||
initialYoutrackProjectShortName,
|
||||
initialYoutrackCloseCommand,
|
||||
initialYoutrackTokenSaved,
|
||||
profiles,
|
||||
youtrackProjects,
|
||||
onListYouTrackProjects,
|
||||
onSubmit,
|
||||
@@ -167,6 +173,7 @@ export function SettingsModal({
|
||||
const [worktreePreRemoveScript, setWorktreePreRemoveScript] = useState(initialWorktreePreRemoveScript)
|
||||
const [implTabPreCreateScript, setImplTabPreCreateScript] = useState(initialImplTabPreCreateScript)
|
||||
const [implTabPostCloseScript, setImplTabPostCloseScript] = useState(initialImplTabPostCloseScript)
|
||||
const [conflictResolutionProfilePath, setConflictResolutionProfilePath] = useState(initialConflictResolutionProfilePath)
|
||||
const [youtrackBaseUrl, setYoutrackBaseUrl] = useState(initialYoutrackBaseUrl)
|
||||
const [youtrackProjectShortName, setYoutrackProjectShortName] = useState(initialYoutrackProjectShortName)
|
||||
const [youtrackCloseCommand, setYoutrackCloseCommand] = useState(initialYoutrackCloseCommand)
|
||||
@@ -189,10 +196,14 @@ export function SettingsModal({
|
||||
setReviewPrompt(initialReviewPrompt)
|
||||
setDevBranch(initialDevBranch)
|
||||
setAutoBuildBranch(initialAutoBuildBranch)
|
||||
setWorktreeDirectory(initialWorktreeDirectory)
|
||||
setWorktreeOpenWith(initialWorktreeOpenWith)
|
||||
setPycharmCommand(initialPycharmCommand)
|
||||
setWorktreePostCreateScript(initialWorktreePostCreateScript)
|
||||
setWorktreePreRemoveScript(initialWorktreePreRemoveScript)
|
||||
setImplTabPreCreateScript(initialImplTabPreCreateScript)
|
||||
setImplTabPostCloseScript(initialImplTabPostCloseScript)
|
||||
setConflictResolutionProfilePath(initialConflictResolutionProfilePath)
|
||||
setYoutrackBaseUrl(initialYoutrackBaseUrl)
|
||||
setYoutrackProjectShortName(initialYoutrackProjectShortName)
|
||||
setYoutrackCloseCommand(initialYoutrackCloseCommand)
|
||||
@@ -274,6 +285,8 @@ export function SettingsModal({
|
||||
worktreePreRemoveScript: worktreePreRemoveScript.trim(),
|
||||
implTabPreCreateScript: implTabPreCreateScript.trim(),
|
||||
implTabPostCloseScript: implTabPostCloseScript.trim(),
|
||||
// 冲突解决 profile:空串 = 用 DEFAULT_PROFILE_PATH
|
||||
conflictResolutionProfilePath: conflictResolutionProfilePath.trim(),
|
||||
youtrackBaseUrl: youtrackBaseUrl.trim(),
|
||||
youtrackProjectShortName: youtrackProjectShortName.trim(),
|
||||
youtrackCloseCommand: youtrackCloseCommand.trim(),
|
||||
@@ -424,6 +437,32 @@ export function SettingsModal({
|
||||
className={inputClass}
|
||||
/>
|
||||
</Field>
|
||||
|
||||
<Field
|
||||
label="冲突解决配置文件"
|
||||
hint={(
|
||||
<>
|
||||
拖到「完成」时若 PR 与 main/dev 冲突,自动开的冲突解决会话使用此 profile;留空用默认 official。
|
||||
</>
|
||||
)}
|
||||
>
|
||||
<select
|
||||
value={conflictResolutionProfilePath}
|
||||
onChange={e => setConflictResolutionProfilePath(e.target.value)}
|
||||
className={inputClass}
|
||||
>
|
||||
<option value="">(默认)</option>
|
||||
{profiles.map(p => (
|
||||
<option key={p.path} value={p.path}>{p.name}</option>
|
||||
))}
|
||||
{conflictResolutionProfilePath
|
||||
&& !profiles.some(p => p.path === conflictResolutionProfilePath) && (
|
||||
<option value={conflictResolutionProfilePath}>
|
||||
{`自定义:${conflictResolutionProfilePath}`}
|
||||
</option>
|
||||
)}
|
||||
</select>
|
||||
</Field>
|
||||
</>
|
||||
)}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user