fix(mcp): initialize McpRoot with v3.7.0 unified structure by default
Problem: - On first launch, McpRoot::default() created `servers: None` - McpService::get_all_servers() would incorrectly return error "old structure detected" - This confused new users who had no legacy MCP data Root Cause: - Derived Default trait sets Option<T> fields to None - New installations should start with v3.7.0 structure immediately Solution: - Explicitly implement Default for McpRoot - Initialize `servers: Some(HashMap::new())` for v3.7.0+ structure - Legacy fields (claude/codex/gemini) remain empty, only used for deserializing old configs Impact: - First-time users get correct v3.7.0 structure immediately - migrate_mcp_to_unified() correctly detects already-migrated state - No false "old structure" errors on fresh installs
This commit is contained in:
@@ -86,7 +86,7 @@ impl McpConfig {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// MCP 根配置(v3.7.0 新旧结构并存)
|
/// MCP 根配置(v3.7.0 新旧结构并存)
|
||||||
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||||
pub struct McpRoot {
|
pub struct McpRoot {
|
||||||
/// 统一的 MCP 服务器存储(v3.7.0+)
|
/// 统一的 MCP 服务器存储(v3.7.0+)
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
@@ -101,6 +101,19 @@ pub struct McpRoot {
|
|||||||
pub gemini: McpConfig,
|
pub gemini: McpConfig,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl Default for McpRoot {
|
||||||
|
fn default() -> Self {
|
||||||
|
Self {
|
||||||
|
// v3.7.0+ 默认使用新的统一结构(空 HashMap)
|
||||||
|
servers: Some(HashMap::new()),
|
||||||
|
// 旧结构保持空,仅用于反序列化旧配置时的迁移
|
||||||
|
claude: McpConfig::default(),
|
||||||
|
codex: McpConfig::default(),
|
||||||
|
gemini: McpConfig::default(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Prompt 配置:单客户端维度
|
/// Prompt 配置:单客户端维度
|
||||||
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
|
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
|
||||||
pub struct PromptConfig {
|
pub struct PromptConfig {
|
||||||
|
|||||||
Reference in New Issue
Block a user