feat(mcp): add update notification badge

This commit is contained in:
Abeautifulsnow authored and GitHub committed 2026-08-05 15:52:20 +08:00
1 parent 7243f5eb06
commit 62624786dc
15 files changed
+279 -3

No files matched your search

@@ -102,6 +102,7 @@ import { executableStatementRangeCacheForDoc, executableStatementRangeStartingAt
import { EMPTY_TABLE_COLUMN_TEMPLATE_DATA_TYPE, parseTableColumnTemplateFields, TABLE_COLUMN_TEMPLATE_DATABASE_TYPES } from "@/lib/table/tableColumnTemplates";
import { DEFAULT_SQL_VARIABLE_SYNTAX_TOGGLES, normalizeSqlVariableSyntaxOverrides, SQL_VARIABLE_SYNTAX_DATABASE_TYPES, SQL_VARIABLE_SYNTAX_KEYS, SQL_VARIABLE_SYNTAX_TOKENS, type SqlVariableSyntaxOverrides, type SqlVariableSyntaxToggles } from "@/lib/sql/sqlVariableSyntax";
import { buildMcpCherryStudioConfig, buildMcpCodexConfig, buildMcpJsonConfig, buildMcpOpenCodeConfig, buildMcpTraeConfig, buildMcpVsCodeConfig, mcpWebBackendUrl, type McpLaunchConfig } from "@/lib/mcp/mcpConfigTemplates";
import { beginMcpStatusRequest, mcpUpdateAvailability } from "@/lib/mcp/mcpUpdateStatus";
import { isMcpPolicyMutationBlocked, MCP_CAPABILITY_ROWS, MCP_EXECUTION_MODE_COLUMNS, mcpExecutionModeFromPolicy, mcpPolicyFieldsForExecutionMode, type McpExecutionMode } from "@/lib/mcp/mcpPolicySelection";
import { isMacOS, isWindows } from "@/lib/backend/platform";
import { combineDataTypeForDatabase, dataTypeLengthInputValue, getDataTypeOptions, getDefaultLengthForType, isDataTypeLengthDisabled, splitDataType } from "@/lib/table/tableStructureEditorState";
@@ -185,6 +186,7 @@ const props = defineProps<{
variant?: "dialog" | "page";
initialTab?: string;
initialSection?: string;
navigationRequestId?: number;
appVersion?: string;
}>();
@@ -1780,8 +1782,15 @@ async function refreshMcpStatus() {
if (mcpStatusLoading.value) return;
mcpStatusLoading.value = true;
mcpStatusError.value = "";
const requestId = beginMcpStatusRequest();
try {
mcpStatus.value = await checkMcpServerStatus();
// 通知工具栏徽章同步:携带已获取的 update_available,避免根组件重复查询 npm registry。
window.dispatchEvent(
new CustomEvent("dbx-mcp-status-changed", {
detail: { updateAvailable: mcpUpdateAvailability(mcpStatus.value), requestId },
}),
);
} catch (e: any) {
mcpStatusError.value = e?.message || String(e);
} finally {
@@ -2291,6 +2300,15 @@ watch(
},
);
watch(
() => props.navigationRequestId,
() => {
if (!settingsVisible.value || !props.initialTab) return;
activeSettingsTab.value = props.initialTab;
void scrollToInitialSettingsSection();
},
);
watch([webdavEndpoint, webdavUsername], () => {
void refreshWebDavPasswordStatus();
});