修正 manifest kind 留痕去重范围

按 manifest 来源与资产身份去重
避免不同项目相同 ID 互相抑制日志
This commit is contained in:
2026-09-17 19:18:07 +08:00
parent 64879cfcdd
commit 8dce016552
@@ -1952,8 +1952,8 @@ pub(crate) fn read_manifest(path: &Path) -> Result<GameCreationAppManifest, Stri
/// `diagnostics/application.log`),供后续定位"谁还在写 legacy kind"。
///
/// 同一份 manifest 里的同一个资产每次进程只记一次:manifest 读得很频繁,不去重会把其它诊断
/// 刷掉。去重键**含资产身份**而不是只有原值——只按原值去重会让"第二个还在写 legacy kind 的
/// 资产"静默消失(包括另一份项目文件里的资产),那就丢了这条日志唯一的增量信息
/// 刷掉。去重键包含 manifest 来源与资产身份而不是只有原值——只按原值去重会让"第二个还在
/// 写 legacy kind 的资产"静默消失;不带来源则会让不同项目恰好复用相同 ID/路径时互相抑制
fn log_non_canonical_manifest_asset_kinds(payload: &str, source_path: &Path, label: &str) {
static LOGGED_OFFENDERS: OnceLock<Mutex<std::collections::HashSet<String>>> = OnceLock::new();
for (raw_kind, asset_id, local_path) in non_canonical_manifest_asset_kinds(payload) {
@@ -1961,7 +1961,11 @@ fn log_non_canonical_manifest_asset_kinds(payload: &str, source_path: &Path, lab
let first_seen = logged
.lock()
.map(|mut logged| {
logged.insert(format!("{}\u{1}{asset_id}\u{1}{local_path}", raw_kind))
logged.insert(format!(
"{}\u{1}{}\u{1}{asset_id}\u{1}{local_path}",
source_path.display(),
raw_kind,
))
})
.unwrap_or(true);
if !first_seen {