diff --git a/apps/desktop/src/components/editor/EditorSettingsDialog.vue b/apps/desktop/src/components/editor/EditorSettingsDialog.vue index a5e9b70610..2f6c1c38b5 100644 --- a/apps/desktop/src/components/editor/EditorSettingsDialog.vue +++ b/apps/desktop/src/components/editor/EditorSettingsDialog.vue @@ -156,6 +156,7 @@ import { webdavSyncSecretsStatus, webdavSyncTest, webdavSyncUpload, + listInstalledAgentsLocal, type AppSupportInfo, type McpHttpServerSettings, type McpHttpServerStatus, @@ -2229,9 +2230,30 @@ const appSupportInfoLabels = computed(() => ({ runtimeWeb: t("settings.supportInfoRuntimeWeb"), operatingSystem: t("settings.supportInfoOperatingSystem"), architecture: t("settings.supportInfoArchitecture"), + userAgent: t("settings.supportInfoUserAgent"), + databaseTypes: t("settings.supportInfoDatabaseTypes"), + localDriverVersions: t("settings.supportInfoLocalDriverVersions"), + aiProviders: t("settings.supportInfoAiProviders"), unknown: t("settings.supportInfoUnknown"), })); -const appSupportInfoRows = computed(() => (appSupportInfo.value ? buildAppSupportInfoRows(appSupportInfo.value, appSupportInfoLabels.value) : [])); +const appSupportInfoRows = computed(() => { + if (!appSupportInfo.value) return []; + const info = appSupportInfo.value; + return buildAppSupportInfoRows(info, appSupportInfoLabels.value).map((row) => { + const details: string[] = []; + if (row.key === "appVersion") { + if (info.databaseTypes?.length) details.push(`${appSupportInfoLabels.value.databaseTypes}: ${info.databaseTypes.join(", ")}`); + if (info.localDriverVersions?.length) { + details.push(`${appSupportInfoLabels.value.localDriverVersions}: ${info.localDriverVersions.map((driver) => `${driver.dbType} ${driver.version}`).join(", ")}`); + } + } + if (row.key === "operatingSystem") { + if (info.userAgent?.trim()) details.push(`${appSupportInfoLabels.value.userAgent}: ${info.userAgent.trim()}`); + if (info.aiProviders?.length) details.push(`${appSupportInfoLabels.value.aiProviders}: ${info.aiProviders.join(", ")}`); + } + return { ...row, tooltip: details.join("\n") }; + }); +}); const settingsCategoryNav = computed<{ value: SettingsCategory; label: string }[]>(() => [ { value: "appearance", label: t("settings.appearanceTab") }, { value: "editor", label: t("settings.editorTab") }, @@ -2457,7 +2479,33 @@ async function refreshAppSupportInfo() { appSupportInfoLoading.value = true; appSupportInfoError.value = ""; try { - appSupportInfo.value = await getAppSupportInfo(); + const [info, localDrivers] = await Promise.all([getAppSupportInfo(), listInstalledAgentsLocal().catch(() => [])]); + const databaseTypes = [ + ...new Set( + connectionStore.connections + .map((connection) => { + const dbType = connection.db_type.trim(); + const profile = connection.driver_profile?.trim(); + return profile && profile !== dbType ? `${dbType}/${profile}` : dbType; + }) + .filter(Boolean), + ), + ].sort(); + const localDriverVersions = localDrivers + .filter((driver) => driver.installed && driver.installed_version?.trim()) + .map((driver) => ({ dbType: driver.db_type, version: driver.installed_version!.trim() })) + .sort((a, b) => a.dbType.localeCompare(b.dbType)); + const aiProviders = [ + ...new Set( + settingsStore.aiConfigs + .filter((config) => { + const preset = getAiProviderPreset(config.provider, config.endpoint); + return config.endpoint.trim() && config.model.trim() && (!preset.requiresApiKey || config.apiKey.trim()); + }) + .map((config) => getAiProviderPreset(config.provider, config.endpoint).label), + ), + ].sort(); + appSupportInfo.value = { ...info, databaseTypes, localDriverVersions, aiProviders }; } catch (e: any) { appSupportInfo.value = appSupportInfo.value || fallbackAppSupportInfo(); appSupportInfoError.value = e?.message || String(e); @@ -6164,29 +6212,6 @@ onUnmounted(() => { -
-
-
- -

- {{ t("settings.debugLoggingEnabledDescription") }} -

-
- -
-
- - - -
-
-
@@ -9296,16 +9321,25 @@ LIMIT 100;
-
-
-
- {{ row.label }} -
-
- {{ row.value }} -
+ +
+ + +
+
+ {{ row.label }} +
+
+ {{ row.value }} +
+
+
+ + {{ row.tooltip }} + +
-
+

{{ t("settings.supportInfoLoading") }}

@@ -9326,7 +9360,28 @@ LIMIT 100; - +
+
+
+ +

+ {{ t("settings.debugLoggingEnabledDescription") }} +

+
+ +
+
+ + + +
+
@@ -9348,6 +9403,8 @@ LIMIT 100;
+ +