From f1cecd1601c00d4045547a9e319fa722c0f50d93 Mon Sep 17 00:00:00 2001 From: lanrtop Date: Wed, 8 Apr 2026 04:00:40 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20P2=20=E4=B8=89?= =?UTF-8?q?=E5=A4=84=20Bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. get_blueprint_status 对比 effective_conventions_version() 而非 master_conventions_version(),避免用户版 CONVENTIONS 生效后治理面板 永远显示「待更新」 2. sync_blueprint_rules 成功消息改用 effective_conventions_version() 3. parse_frontmatter_version_str 修正 break 条件,正确限定在 frontmatter 范围内解析,防止文档正文中的 version: 行被误匹配 --- src-tauri/src/commands/blueprint.rs | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src-tauri/src/commands/blueprint.rs b/src-tauri/src/commands/blueprint.rs index c8b858c..bf14aae 100644 --- a/src-tauri/src/commands/blueprint.rs +++ b/src-tauri/src/commands/blueprint.rs @@ -72,12 +72,14 @@ pub(crate) fn effective_conventions_version() -> String { /// 从字符串内容解析 frontmatter version 字段。 fn parse_frontmatter_version_str(content: &str) -> Option { - for line in content.lines() { + let mut lines = content.lines(); + // 必须以 --- 开头才进入 frontmatter 模式 + if lines.next()?.trim() != "---" { return None; } + for line in lines { + if line.trim() == "---" { break; } // 遇到关闭 --- 停止 if let Some(v) = line.strip_prefix("version: ") { return Some(v.trim().to_string()); } - // frontmatter 结束标志(第二个 ---) - if line == "---" && !content.starts_with("---\n") { break; } } None } @@ -1001,10 +1003,11 @@ pub fn get_blueprint_status(project_path: String) -> Result Result Result success: true, conventions_written: true, claude_md_action: claude_action.clone(), - message: format!("CONVENTIONS.md 已同步至 v{},CLAUDE.md {claude_action}", master_conventions_version()), + message: format!("CONVENTIONS.md 已同步至 v{},CLAUDE.md {claude_action}", effective_conventions_version()), }) }