From c1e32b091a422ea91e7c3b00e3423c291abd7d8d Mon Sep 17 00:00:00 2001 From: Deng Liu Date: Sat, 7 Nov 2026 08:50:46 -0800 Subject: [PATCH] feat(plugins): prepare PATH in run_process and raise MAX_VIEW_MESSAGE to 8 MiB (#1942) Plugin process: programs now start with the same prepared environment as service logs (ide_core::process::prepare), so tools such as kubectl find credential helpers on the login-shell PATH when the IDE was launched from the GUI. View messages may now be up to 8 MiB (was 1 MiB) so explorer views can post large snapshots. Co-authored-by: dengliu <5108773+dengliu@users.noreply.github.com> --- crates/ide-host/src/plugins/api.rs | 4 ++- crates/ide-host/tests/plugins.rs | 23 ++++++++++++++++++ crates/ide-plugin/src/wit_host.rs | 2 +- .../tests/fixtures/jobs/dist/plugin.wasm | Bin 150177 -> 147717 bytes .../fixtures/jobs/dist/plugin.wasm.sources | 2 +- .../ide-plugin/tests/fixtures/jobs/src/lib.rs | 1 + 6 files changed, 29 insertions(+), 3 deletions(-) diff --git a/crates/ide-host/src/plugins/api.rs b/crates/ide-host/src/plugins/api.rs index 26cc5a4b9..6c8ba2dfc 100644 --- a/crates/ide-host/src/plugins/api.rs +++ b/crates/ide-host/src/plugins/api.rs @@ -1122,7 +1122,9 @@ impl HostApi for PluginApi { let binary = self.approved_program(program)?; let cwd = cwd.map(Path::to_path_buf).unwrap_or_else(|| self.shared.data_dir.join(self.id())); let _ = std::fs::create_dir_all(&cwd); - let mut child = std::process::Command::new(&binary) + let mut cmd = std::process::Command::new(&binary); + ide_core::process::prepare(&mut cmd); + let mut child = cmd .args(&args) .current_dir(&cwd) .stdin(if stdin.is_some() { std::process::Stdio::piped() } else { std::process::Stdio::null() }) diff --git a/crates/ide-host/tests/plugins.rs b/crates/ide-host/tests/plugins.rs index 937dc581c..ddb5c8d88 100644 --- a/crates/ide-host/tests/plugins.rs +++ b/crates/ide-host/tests/plugins.rs @@ -3863,3 +3863,26 @@ fn project_lookup_works_in_commands_and_provider_calls_without_an_invocation_pro f.host.set_capability("test.path-events", "events", false).unwrap(); assert!(f.run("test.path-events", "filter", Some("*")).unwrap_err().contains("events")); } + +#[test] +fn view_messages_accept_multi_megabyte_snapshots_and_cap_at_8_mib() { + let f = fixture(Limits::default()); + f.install(&sample("jobs")); + f.take_events(); + let two_mib = "x".repeat(2 << 20); + f.host.view_event("jobs", "jobs", ide_plugin::ViewEvent::Message { text: two_mib.clone() }, f.inv()).unwrap(); + let echoed = f + .take_events() + .into_iter() + .find_map(|(_, e)| match e { + PluginEvent::ViewMessage { view, message, .. } if view == "jobs" => Some(message), + _ => None, + }) + .expect("2 MiB view message round-trips"); + assert_eq!(echoed.len(), 2 << 20); + + let too_large = "x".repeat((8 << 20) + 1); + let err = + f.host.view_event("jobs", "jobs", ide_plugin::ViewEvent::Message { text: too_large }, f.inv()).unwrap_err(); + assert!(err.message.contains("limited to"), "{}", err.message); +} diff --git a/crates/ide-plugin/src/wit_host.rs b/crates/ide-plugin/src/wit_host.rs index 84229dcb4..2d1da0fb6 100644 --- a/crates/ide-plugin/src/wit_host.rs +++ b/crates/ide-plugin/src/wit_host.rs @@ -1127,7 +1127,7 @@ fn too_much_to_write(path: &str) -> wit::Error { } /// Largest message between a plugin and its view's frame. -const MAX_VIEW_MESSAGE: usize = 1 << 20; +const MAX_VIEW_MESSAGE: usize = 8 << 20; pub(crate) mod indexing_bindings { wasmtime::component::bindgen!({ diff --git a/crates/ide-plugin/tests/fixtures/jobs/dist/plugin.wasm b/crates/ide-plugin/tests/fixtures/jobs/dist/plugin.wasm index cdb25003e049eadf3c06ddddc9d0de7d999db50c..4fda3080c80108496e2474f864b0407946ff4561 100644 GIT binary patch delta 36341 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 delta 38999 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 return self.follow(), ViewEvent::Button(b) if b == "log" => return host::open_location("jobs.log", 2, 4), ViewEvent::Button(b) if b == "outside" => return host::open_location("../outside.log", 0, 0), + ViewEvent::Message(msg) => return host::post_view_message(VIEW, &msg), _ => return Ok(()), } host::refresh_view(VIEW);