diff --git a/src/App.tsx b/src/App.tsx index 404e93d49..7f7839313 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -468,13 +468,13 @@ function App() { ); case "universal": return ( -
+
); default: return ( -
+
{/* 独立滚动容器 - 解决 Linux/Ubuntu 下 DndContext 与滚轮事件冲突 */}
@@ -580,7 +580,7 @@ function App() { } >
diff --git a/src/components/common/FullScreenPanel.tsx b/src/components/common/FullScreenPanel.tsx index 93f0b4aa3..ecd6e37d3 100644 --- a/src/components/common/FullScreenPanel.tsx +++ b/src/components/common/FullScreenPanel.tsx @@ -72,7 +72,7 @@ export const FullScreenPanel: React.FC = ({ } >
@@ -94,7 +94,7 @@ export const FullScreenPanel: React.FC = ({ {/* Content */}
-
+
{children}
@@ -105,7 +105,7 @@ export const FullScreenPanel: React.FC = ({ className="flex-shrink-0 py-4 border-t border-border-default" style={{ backgroundColor: "hsl(var(--background))" }} > -
+
{footer}
diff --git a/src/components/mcp/UnifiedMcpPanel.tsx b/src/components/mcp/UnifiedMcpPanel.tsx index 8cf5659c6..19bf6e292 100644 --- a/src/components/mcp/UnifiedMcpPanel.tsx +++ b/src/components/mcp/UnifiedMcpPanel.tsx @@ -142,7 +142,7 @@ const UnifiedMcpPanel = React.forwardRef< }; return ( -
+
{/* Info Section */}
diff --git a/src/components/prompts/PromptPanel.tsx b/src/components/prompts/PromptPanel.tsx index af73626aa..aaaf67316 100644 --- a/src/components/prompts/PromptPanel.tsx +++ b/src/components/prompts/PromptPanel.tsx @@ -96,7 +96,7 @@ const PromptPanel = React.forwardRef( const enabledPrompt = promptEntries.find(([_, p]) => p.enabled); return ( -
+
{t("prompts.count", { count: promptEntries.length })} ·{" "} diff --git a/src/components/providers/forms/BasicFormFields.tsx b/src/components/providers/forms/BasicFormFields.tsx index 514343474..239c47e03 100644 --- a/src/components/providers/forms/BasicFormFields.tsx +++ b/src/components/providers/forms/BasicFormFields.tsx @@ -78,7 +78,7 @@ export function BasicFormFields({ form }: BasicFormFieldsProps) { >
-
+
-
+
form.setValue("settingsConfig", config), selectedPresetId, category, @@ -211,7 +211,7 @@ export function ProviderForm({ const { baseUrl, handleClaudeBaseUrlChange } = useBaseUrlState({ appType: appId, category, - settingsConfig: form.watch("settingsConfig"), + settingsConfig: form.getValues("settingsConfig"), codexConfig: "", onSettingsConfigChange: (config) => form.setValue("settingsConfig", config), onCodexConfigChange: () => { @@ -228,7 +228,7 @@ export function ProviderForm({ defaultOpusModel, handleModelChange, } = useModelState({ - settingsConfig: form.watch("settingsConfig"), + settingsConfig: form.getValues("settingsConfig"), onConfigChange: (config) => form.setValue("settingsConfig", config), }); @@ -371,7 +371,7 @@ export function ProviderForm({ } = useTemplateValues({ selectedPresetId: appId === "claude" ? selectedPresetId : null, presetEntries: appId === "claude" ? presetEntries : [], - settingsConfig: form.watch("settingsConfig"), + settingsConfig: form.getValues("settingsConfig"), onConfigChange: (config) => form.setValue("settingsConfig", config), }); @@ -385,7 +385,7 @@ export function ProviderForm({ isExtracting: isClaudeExtracting, handleExtract: handleClaudeExtract, } = useCommonConfigSnippet({ - settingsConfig: form.watch("settingsConfig"), + settingsConfig: form.getValues("settingsConfig"), onConfigChange: (config) => form.setValue("settingsConfig", config), initialData: appId === "claude" ? initialData : undefined, selectedPresetId: selectedPresetId ?? undefined, @@ -434,7 +434,7 @@ export function ProviderForm({ originalHandleGeminiApiKeyChange(key); // 同步更新 settingsConfig try { - const config = JSON.parse(form.watch("settingsConfig") || "{}"); + const config = JSON.parse(form.getValues("settingsConfig") || "{}"); if (!config.env) config.env = {}; config.env.GEMINI_API_KEY = key.trim(); form.setValue("settingsConfig", JSON.stringify(config, null, 2)); @@ -450,7 +450,7 @@ export function ProviderForm({ originalHandleGeminiBaseUrlChange(url); // 同步更新 settingsConfig try { - const config = JSON.parse(form.watch("settingsConfig") || "{}"); + const config = JSON.parse(form.getValues("settingsConfig") || "{}"); if (!config.env) config.env = {}; config.env.GOOGLE_GEMINI_BASE_URL = url.trim().replace(/\/+$/, ""); form.setValue("settingsConfig", JSON.stringify(config, null, 2)); @@ -466,7 +466,7 @@ export function ProviderForm({ originalHandleGeminiModelChange(model); // 同步更新 settingsConfig try { - const config = JSON.parse(form.watch("settingsConfig") || "{}"); + const config = JSON.parse(form.getValues("settingsConfig") || "{}"); if (!config.env) config.env = {}; config.env.GEMINI_MODEL = model.trim(); form.setValue("settingsConfig", JSON.stringify(config, null, 2)); @@ -541,7 +541,7 @@ export function ProviderForm({ (npm: string) => { setOpencodeNpm(npm); try { - const config = JSON.parse(form.watch("settingsConfig") || OPENCODE_DEFAULT_CONFIG); + const config = JSON.parse(form.getValues("settingsConfig") || OPENCODE_DEFAULT_CONFIG); config.npm = npm; form.setValue("settingsConfig", JSON.stringify(config, null, 2)); } catch { @@ -555,7 +555,7 @@ export function ProviderForm({ (apiKey: string) => { setOpencodeApiKey(apiKey); try { - const config = JSON.parse(form.watch("settingsConfig") || OPENCODE_DEFAULT_CONFIG); + const config = JSON.parse(form.getValues("settingsConfig") || OPENCODE_DEFAULT_CONFIG); if (!config.options) config.options = {}; config.options.apiKey = apiKey; form.setValue("settingsConfig", JSON.stringify(config, null, 2)); @@ -570,7 +570,7 @@ export function ProviderForm({ (baseUrl: string) => { setOpencodeBaseUrl(baseUrl); try { - const config = JSON.parse(form.watch("settingsConfig") || OPENCODE_DEFAULT_CONFIG); + const config = JSON.parse(form.getValues("settingsConfig") || OPENCODE_DEFAULT_CONFIG); if (!config.options) config.options = {}; config.options.baseURL = baseUrl.trim().replace(/\/+$/, ""); form.setValue("settingsConfig", JSON.stringify(config, null, 2)); @@ -585,7 +585,7 @@ export function ProviderForm({ (models: Record) => { setOpencodeModels(models); try { - const config = JSON.parse(form.watch("settingsConfig") || OPENCODE_DEFAULT_CONFIG); + const config = JSON.parse(form.getValues("settingsConfig") || OPENCODE_DEFAULT_CONFIG); config.models = models; form.setValue("settingsConfig", JSON.stringify(config, null, 2)); } catch { @@ -971,7 +971,7 @@ export function ProviderForm({ form.setValue("settingsConfig", config)} useCommonConfig={false} onCommonConfigToggle={() => {}} @@ -1172,7 +1172,7 @@ export function ProviderForm({ ) : ( <> form.setValue("settingsConfig", value)} useCommonConfig={useCommonConfig} onCommonConfigToggle={handleCommonConfigToggle} diff --git a/src/components/settings/SettingsPage.tsx b/src/components/settings/SettingsPage.tsx index f464f6a47..6fd63e0b5 100644 --- a/src/components/settings/SettingsPage.tsx +++ b/src/components/settings/SettingsPage.tsx @@ -202,7 +202,7 @@ export function SettingsPage({ }; return ( -
+
{isBusy ? (
diff --git a/src/components/skills/SkillsPage.tsx b/src/components/skills/SkillsPage.tsx index 721ac9665..7ab030e0b 100644 --- a/src/components/skills/SkillsPage.tsx +++ b/src/components/skills/SkillsPage.tsx @@ -193,7 +193,7 @@ export const SkillsPage = forwardRef( }, [skills, searchQuery, filterStatus]); return ( -
+
{/* 技能网格(可滚动详情区域) */}
diff --git a/src/components/skills/UnifiedSkillsPanel.tsx b/src/components/skills/UnifiedSkillsPanel.tsx index 9887a2bc0..5c6e6e79e 100644 --- a/src/components/skills/UnifiedSkillsPanel.tsx +++ b/src/components/skills/UnifiedSkillsPanel.tsx @@ -133,7 +133,7 @@ const UnifiedSkillsPanel = React.forwardRef< })); return ( -
+
{/* Info Section */}
diff --git a/src/components/ui/select.tsx b/src/components/ui/select.tsx index 9f3b88f05..af728026c 100644 --- a/src/components/ui/select.tsx +++ b/src/components/ui/select.tsx @@ -37,7 +37,7 @@ const SelectContent = React.forwardRef<