diff --git a/apps/ai-game-creator-shell/src-tauri/src/export/draft/xhs_minitool/registry.rs b/apps/ai-game-creator-shell/src-tauri/src/export/draft/xhs_minitool/registry.rs index ac8739bcf..d5ed12aa5 100644 --- a/apps/ai-game-creator-shell/src-tauri/src/export/draft/xhs_minitool/registry.rs +++ b/apps/ai-game-creator-shell/src-tauri/src/export/draft/xhs_minitool/registry.rs @@ -3,11 +3,15 @@ //! 文件级细节(自动创建、严格解析、原子写入、内容指纹)都在 [`crate::export::registry`];这里 //! 只管本目标的事:注册表 ↔ 表单的映射,以及冲突判定。 //! -//! 已知取舍(评审提出、当前决定不改):这里用共享的 `load_or_create` / `save`,**不**额外检查 -//! 注册表文件与 `.export` 目录是不是符号链接。也就是说,如果 `.export/xhs-minitool.json` 被换成 -//! 链接,读写会落到项目外。这与产物(`build::conclude`)、脚本(`script::find`)不同,也与图标在 -//! 预览 / 下载时走的路径门禁不同,是有意为之:那几处是「把项目内容交给打包链」的入口,这里读写 -//! 的是用户自己项目里的草稿文件,按「项目文件由用户掌控」的前提接受这个重定向。 +//! 已知取舍(评审提出):这里用共享的 `load_or_create` / `save`,**不**额外检查注册表文件与 +//! `.export` 目录是不是符号链接。也就是说,如果 `.export/xhs-minitool.json` 被换成链接,读写会 +//! 落到项目外。 +//! +//! **决定不改,理由**:要挡的是「把项目内容交给打包链」的入口——产物(`build::conclude`)、脚本 +//! (`script::find`)和图标在预览 / 下载时走的路径门禁都拒链,因为它们把项目内容送出项目边界。 +//! 注册表读写的是用户自己项目里的一份草稿,用户既然能在磁盘上把它换成链接,就按「项目文件由用户 +//! 掌控」接受这个重定向;为它单独加守卫会改掉共享读写的契约,收益与成本不成比例。若以后注册表要 +//! 承载跨项目共享的内容,再按与那三处同口径补 `symlink_metadata` 检查。 use std::path::Path;