From d34ebe604ca2e7f45ae0dd227106a96967bb33c5 Mon Sep 17 00:00:00 2001 From: LosFarmosCTL <80157503+LosFarmosCTL@users.noreply.github.com> Date: Tue, 20 Oct 2026 17:23:02 +0200 Subject: [PATCH] Load app extensions from both supported directories --- isideload/src/sideload/bundle.rs | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/isideload/src/sideload/bundle.rs b/isideload/src/sideload/bundle.rs index 7b1fb69..5c7547d 100644 --- a/isideload/src/sideload/bundle.rs +++ b/isideload/src/sideload/bundle.rs @@ -45,23 +45,27 @@ impl Bundle { "Failed to parse Info.plist".to_string(), ))?; - // Load app extensions from PlugIns directory - let plug_ins_dir = bundle_path.join("PlugIns"); - let app_extensions = if isideload_vfs::fs::metadata(&plug_ins_dir).is_ok() { - isideload_vfs::fs::read_dir(&plug_ins_dir) - .context(SideloadError::InvalidBundle( - "Failed to read PlugIns directory".to_string(), - ))? + // Load app extensions from both supported extension directories. + let mut app_extensions = Vec::new(); + for directory in ["PlugIns", "Extensions"] { + let extensions_dir = bundle_path.join(directory); + if isideload_vfs::fs::metadata(&extensions_dir).is_err() { + continue; + } + + let extensions = isideload_vfs::fs::read_dir(&extensions_dir) + .context(SideloadError::InvalidBundle(format!( + "Failed to read {directory} directory" + )))? .filter_map(|entry| entry.ok()) .filter(|entry| { entry.file_type().map(|ft| ft.is_dir()).unwrap_or(false) && isideload_vfs::fs::metadata(&entry.path().join("Info.plist")).is_ok() }) - .filter_map(|entry| Bundle::new(entry.path()).ok()) - .collect() - } else { - Vec::new() - }; + .filter_map(|entry| Bundle::new(entry.path()).ok()); + + app_extensions.extend(extensions); + } // Load frameworks from Frameworks directory let frameworks_dir = bundle_path.join("Frameworks");