From 02a0023edc31a7db84b41b163b9d514dcf29bd79 Mon Sep 17 00:00:00 2001 From: aiongg Date: Fri, 16 Oct 2026 03:34:57 +0000 Subject: [PATCH] Integration: next's file reads go through the checked readers main's file guard requires reads to pass the automation roots. Loading styles from a path, the recent-files check and sniffing a dropped file without an extension read with std::fs directly; they use the engine's io module. --- crates/engine/src/cmd/load_styles.rs | 2 +- crates/ui-egui/src/chrome.rs | 2 +- crates/ui-egui/src/lib.rs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/crates/engine/src/cmd/load_styles.rs b/crates/engine/src/cmd/load_styles.rs index b2893c693..19a5a6794 100644 --- a/crates/engine/src/cmd/load_styles.rs +++ b/crates/engine/src/cmd/load_styles.rs @@ -82,7 +82,7 @@ impl Kind { fn source(p: &Value, id: &str) -> Result { let (bytes, name) = match (str_param(p, "path"), str_param(p, "base64")) { (_, Some(b)) => (super::file::base64_decode(b), str_param(p, "name").unwrap_or("").to_string()), - (Some(path), None) => (std::fs::read(path).map_err(|e| bad(id, format!("{path}: {e}")))?, path.to_string()), + (Some(path), None) => (crate::io::read_file(path).map_err(|e| bad(id, e))?, path.to_string()), _ => return Err(bad(id, "give `path` or `base64`")), }; if name.to_lowercase().ends_with(".idml") { diff --git a/crates/ui-egui/src/chrome.rs b/crates/ui-egui/src/chrome.rs index c6fa89796..790545ca9 100644 --- a/crates/ui-egui/src/chrome.rs +++ b/crates/ui-egui/src/chrome.rs @@ -1005,7 +1005,7 @@ fn recent_file_stat_at(ctx: &egui::Context, path: &str, now: f64) -> RecentStat { return st; } - let meta = std::fs::metadata(path).ok().filter(std::fs::Metadata::is_file); + let meta = designcraft_engine::io::metadata(path).ok().filter(designcraft_engine::io::Metadata::is_file); let st = RecentStat { exists: meta.is_some(), modified: meta.and_then(|m| m.modified().ok()), checked: now }; ctx.data_mut(|d| d.insert_temp(key, st.clone())); st diff --git a/crates/ui-egui/src/lib.rs b/crates/ui-egui/src/lib.rs index 0c4d7a408..58c8384ed 100644 --- a/crates/ui-egui/src/lib.rs +++ b/crates/ui-egui/src/lib.rs @@ -1298,7 +1298,7 @@ impl DesignApp { return self.run("swatch.load", json!({"path": path})); } let document = opens_as_document(path) - || (std::path::Path::new(path).extension().is_none() && std::fs::read(path).is_ok_and(|b| designcraft_engine::cmd::is_document(&b))); + || (std::path::Path::new(path).extension().is_none() && designcraft_engine::io::read(path).is_ok_and(|b| designcraft_engine::cmd::is_document(&b))); if document { return self.open_file("file.open", json!({"path": path})); }