✨ feat(vscode): 改动说明 profile 可配置
This commit is contained in:
@@ -533,6 +533,7 @@ export function App() {
|
||||
initialImplTabPostCloseScript={settings?.implTabPostCloseScript ?? ''}
|
||||
initialConflictResolutionProfilePath={settings?.conflictResolutionProfilePath ?? ''}
|
||||
initialCommitProfilePath={settings?.commitProfilePath ?? ''}
|
||||
initialPrDiffSummaryProfilePath={settings?.prDiffSummaryProfilePath ?? ''}
|
||||
initialCodexModel={settings?.codexModel ?? ''}
|
||||
initialCodexReasoningEffort={settings?.codexReasoningEffort ?? ''}
|
||||
initialProfilesDirectory={settings?.profilesDirectory ?? ''}
|
||||
|
||||
@@ -36,6 +36,7 @@ interface SubmitValues {
|
||||
implTabPostCloseScript: string
|
||||
conflictResolutionProfilePath: string
|
||||
commitProfilePath: string
|
||||
prDiffSummaryProfilePath: string
|
||||
codexModel: string
|
||||
codexReasoningEffort: string
|
||||
profilesDirectory: string
|
||||
@@ -82,6 +83,7 @@ export interface SettingsModalProps {
|
||||
initialImplTabPostCloseScript: string
|
||||
initialConflictResolutionProfilePath: string
|
||||
initialCommitProfilePath: string
|
||||
initialPrDiffSummaryProfilePath: string
|
||||
initialCodexModel: string
|
||||
initialCodexReasoningEffort: string
|
||||
initialProfilesDirectory: string
|
||||
@@ -164,6 +166,7 @@ export function SettingsModal({
|
||||
initialImplTabPostCloseScript,
|
||||
initialConflictResolutionProfilePath,
|
||||
initialCommitProfilePath,
|
||||
initialPrDiffSummaryProfilePath,
|
||||
initialCodexModel,
|
||||
initialCodexReasoningEffort,
|
||||
initialProfilesDirectory,
|
||||
@@ -198,6 +201,7 @@ export function SettingsModal({
|
||||
const [implTabPostCloseScript, setImplTabPostCloseScript] = useState(initialImplTabPostCloseScript)
|
||||
const [conflictResolutionProfilePath, setConflictResolutionProfilePath] = useState(initialConflictResolutionProfilePath)
|
||||
const [commitProfilePath, setCommitProfilePath] = useState(initialCommitProfilePath)
|
||||
const [prDiffSummaryProfilePath, setPrDiffSummaryProfilePath] = useState(initialPrDiffSummaryProfilePath)
|
||||
const [codexModel, setCodexModel] = useState(initialCodexModel)
|
||||
const [codexReasoningEffort, setCodexReasoningEffort] = useState(initialCodexReasoningEffort)
|
||||
const [profilesDirectory, setProfilesDirectory] = useState(initialProfilesDirectory)
|
||||
@@ -234,6 +238,7 @@ export function SettingsModal({
|
||||
setImplTabPostCloseScript(initialImplTabPostCloseScript)
|
||||
setConflictResolutionProfilePath(initialConflictResolutionProfilePath)
|
||||
setCommitProfilePath(initialCommitProfilePath)
|
||||
setPrDiffSummaryProfilePath(initialPrDiffSummaryProfilePath)
|
||||
setCodexModel(initialCodexModel)
|
||||
setCodexReasoningEffort(initialCodexReasoningEffort)
|
||||
setProfilesDirectory(initialProfilesDirectory)
|
||||
@@ -324,6 +329,7 @@ export function SettingsModal({
|
||||
conflictResolutionProfilePath: conflictResolutionProfilePath.trim(),
|
||||
// 提交代码 profile:空串 = 未配置 → 提交严格失败
|
||||
commitProfilePath: commitProfilePath.trim(),
|
||||
prDiffSummaryProfilePath: prDiffSummaryProfilePath.trim(),
|
||||
// codex 模型 / 思考级别:trim 后留空 = 用 codex config.toml 默认
|
||||
codexModel: codexModel.trim(),
|
||||
codexReasoningEffort: codexReasoningEffort.trim(),
|
||||
@@ -528,6 +534,30 @@ export function SettingsModal({
|
||||
/>
|
||||
</Field>
|
||||
|
||||
<Field
|
||||
label="改动说明 profile"
|
||||
hint={(
|
||||
<>
|
||||
「改动」tab 单文件说明和工单 PR 变更摘要使用此 profile。留空则生成失败,不会回退默认。
|
||||
</>
|
||||
)}
|
||||
>
|
||||
<SelectMenu
|
||||
value={prDiffSummaryProfilePath}
|
||||
onChange={setPrDiffSummaryProfilePath}
|
||||
variant="input"
|
||||
className={inputClass}
|
||||
options={[
|
||||
{ value: '', label: '(未配置)' },
|
||||
...profiles.map(p => ({ value: p.path, label: p.name })),
|
||||
...(prDiffSummaryProfilePath
|
||||
&& !profiles.some(p => p.path === prDiffSummaryProfilePath)
|
||||
? [{ value: prDiffSummaryProfilePath, label: `自定义:${prDiffSummaryProfilePath}` }]
|
||||
: []),
|
||||
]}
|
||||
/>
|
||||
</Field>
|
||||
|
||||
<Field
|
||||
label="codex 模型"
|
||||
hint={(
|
||||
|
||||
@@ -32,7 +32,7 @@ interface FileDiffPaneProps {
|
||||
summary: string | undefined
|
||||
/** 是否正在为当前文件生成说明。 */
|
||||
generating: boolean
|
||||
/** 触发 deepseek 生成当前文件说明。 */
|
||||
/** 触发生成本文件改动说明。 */
|
||||
onGenerate: () => void
|
||||
/** 统一 / 分栏;由父级从 workspaceState 拉并持久化。 */
|
||||
mode: DiffModeEnum
|
||||
@@ -158,12 +158,12 @@ export function FileDiffPane({
|
||||
>
|
||||
<Check className="size-3.5" />
|
||||
</button>
|
||||
{/* 一键调 deepseek 生成本文件改动说明 */}
|
||||
{/* 一键生成本文件改动说明 */}
|
||||
<button
|
||||
type="button"
|
||||
onClick={onGenerate}
|
||||
disabled={generating}
|
||||
title={generating ? '生成中…' : '用 deepseek 生成本文件改动说明'}
|
||||
title={generating ? '生成中…' : '生成本文件改动说明'}
|
||||
className="shrink-0 text-[var(--vscode-descriptionForeground)] hover:text-[var(--vscode-foreground)] disabled:opacity-60"
|
||||
>
|
||||
{generating ? <Loader2 className="size-3.5 animate-spin" /> : <Sparkles className="size-3.5" />}
|
||||
|
||||
@@ -54,6 +54,7 @@ export interface SettingsValues {
|
||||
implTabPostCloseScript: string
|
||||
conflictResolutionProfilePath: string
|
||||
commitProfilePath: string
|
||||
prDiffSummaryProfilePath: string
|
||||
codexModel: string
|
||||
codexReasoningEffort: string
|
||||
profilesDirectory: string
|
||||
@@ -86,6 +87,7 @@ export interface SettingsOverlayState {
|
||||
implTabPostCloseScript: string
|
||||
conflictResolutionProfilePath: string
|
||||
commitProfilePath: string
|
||||
prDiffSummaryProfilePath: string
|
||||
codexModel: string
|
||||
codexReasoningEffort: string
|
||||
profilesDirectory: string
|
||||
@@ -377,6 +379,7 @@ export function useIssues(): UseIssuesResult {
|
||||
implTabPostCloseScript: values.implTabPostCloseScript,
|
||||
conflictResolutionProfilePath: values.conflictResolutionProfilePath,
|
||||
commitProfilePath: values.commitProfilePath,
|
||||
prDiffSummaryProfilePath: values.prDiffSummaryProfilePath,
|
||||
codexModel: values.codexModel,
|
||||
codexReasoningEffort: values.codexReasoningEffort,
|
||||
profilesDirectory: values.profilesDirectory,
|
||||
@@ -763,6 +766,7 @@ export function useIssues(): UseIssuesResult {
|
||||
implTabPostCloseScript: msg.implTabPostCloseScript,
|
||||
conflictResolutionProfilePath: msg.conflictResolutionProfilePath,
|
||||
commitProfilePath: msg.commitProfilePath,
|
||||
prDiffSummaryProfilePath: msg.prDiffSummaryProfilePath,
|
||||
codexModel: msg.codexModel,
|
||||
codexReasoningEffort: msg.codexReasoningEffort,
|
||||
profilesDirectory: msg.profilesDirectory,
|
||||
|
||||
@@ -98,6 +98,7 @@ export type ExtensionToWebview
|
||||
implTabPostCloseScript: string
|
||||
conflictResolutionProfilePath: string
|
||||
commitProfilePath: string
|
||||
prDiffSummaryProfilePath: string
|
||||
codexModel: string
|
||||
codexReasoningEffort: string
|
||||
profilesDirectory: string
|
||||
@@ -169,6 +170,7 @@ export type WebviewToExtension
|
||||
implTabPostCloseScript: string
|
||||
conflictResolutionProfilePath: string
|
||||
commitProfilePath: string
|
||||
prDiffSummaryProfilePath: string
|
||||
codexModel: string
|
||||
codexReasoningEffort: string
|
||||
profilesDirectory: string
|
||||
|
||||
Reference in New Issue
Block a user