From 2bf412ff0d75b590f406bba43ffd8961b116d80b Mon Sep 17 00:00:00 2001 From: l0ng-ai <24760907+l0ng-ai@users.noreply.github.com> Date: Sun, 8 Nov 2026 10:01:35 +0800 Subject: [PATCH] feat(plugins): let plugin code open streaming log tabs (#2082) views.open-log-tab(key, title, process-log) (SDK host::open_log_tab) opens the read-only log tab a web view opens with open-log-tab, from a command or event of a window, reusing the Services pane's process-log. The host checks the process grant and limits when called and remembers what each key runs in that window; the tab starts it by key (plugin_log_tab_spawn) through the web-view PTY checks: pinned program, trusted project, session cap, lifecycle and grant revocation. Remote windows report that these tabs aren't available there yet. --- crates/ide-host/src/plugins/api.rs | 48 ++++++++++++ crates/ide-host/src/plugins/remote_host.rs | 1 + crates/ide-host/src/plugins/types.rs | 4 + crates/ide-host/src/plugins/web.rs | 69 +++++++++++++++++- crates/ide-host/tests/plugins.rs | 53 ++++++++++++++ crates/ide-plugin/src/runtime.rs | 3 + crates/ide-plugin/src/wit_host.rs | 50 ++++++++++++- .../tests/fixtures/commit/dist/plugin.wasm | Bin 159957 -> 159965 bytes .../fixtures/commit/dist/plugin.wasm.sources | 2 +- .../fixtures/detail-views/dist/plugin.wasm | Bin 178054 -> 178062 bytes .../detail-views/dist/plugin.wasm.sources | 2 +- .../fixtures/diagnostics/dist/plugin.wasm | Bin 162344 -> 162366 bytes .../diagnostics/dist/plugin.wasm.sources | 2 +- .../tests/fixtures/endpoints/dist/plugin.wasm | Bin 151185 -> 151193 bytes .../endpoints/dist/plugin.wasm.sources | 2 +- .../fixtures/file-templates/dist/plugin.wasm | Bin 142010 -> 142018 bytes .../file-templates/dist/plugin.wasm.sources | 2 +- .../fixtures/files-events/dist/plugin.wasm | Bin 160431 -> 160431 bytes .../files-events/dist/plugin.wasm.sources | 2 +- .../fixtures/grouped-views/dist/plugin.wasm | Bin 163151 -> 163159 bytes .../grouped-views/dist/plugin.wasm.sources | 2 +- .../tests/fixtures/hello/dist/plugin.wasm | Bin 203327 -> 203335 bytes .../fixtures/hello/dist/plugin.wasm.sources | 2 +- .../tests/fixtures/hover/dist/plugin.wasm | Bin 149297 -> 149305 bytes .../fixtures/hover/dist/plugin.wasm.sources | 2 +- .../tests/fixtures/indexer/dist/plugin.wasm | Bin 152724 -> 152732 bytes .../fixtures/indexer/dist/plugin.wasm.sources | 2 +- .../fixtures/inlay-hints/dist/plugin.wasm | Bin 151108 -> 151108 bytes .../inlay-hints/dist/plugin.wasm.sources | 2 +- .../tests/fixtures/jobs/dist/plugin.wasm | Bin 219574 -> 219582 bytes .../fixtures/jobs/dist/plugin.wasm.sources | 2 +- .../tests/fixtures/misbehave/dist/plugin.wasm | Bin 138800 -> 138800 bytes .../misbehave/dist/plugin.wasm.sources | 2 +- .../fixtures/path-events/dist/plugin.wasm | Bin 154410 -> 154410 bytes .../path-events/dist/plugin.wasm.sources | 2 +- .../fixtures/private-dir/dist/plugin.wasm | Bin 179322 -> 179330 bytes .../private-dir/dist/plugin.wasm.sources | 2 +- .../fixtures/semantic-tokens/dist/plugin.wasm | Bin 151641 -> 151641 bytes .../semantic-tokens/dist/plugin.wasm.sources | 2 +- .../fixtures/settings-pages/dist/plugin.wasm | Bin 171304 -> 171304 bytes .../settings-pages/dist/plugin.wasm.sources | 2 +- .../tests/fixtures/storage/dist/plugin.wasm | Bin 144917 -> 144925 bytes .../fixtures/storage/dist/plugin.wasm.sources | 2 +- .../tests/fixtures/symbols/dist/plugin.wasm | Bin 176288 -> 176296 bytes .../fixtures/symbols/dist/plugin.wasm.sources | 2 +- .../tests/fixtures/tables/dist/plugin.wasm | Bin 178458 -> 178466 bytes .../fixtures/tables/dist/plugin.wasm.sources | 2 +- .../fixtures/web-content/dist/plugin.wasm | Bin 142983 -> 142991 bytes .../web-content/dist/plugin.wasm.sources | 2 +- .../tests/fixtures/web-log/dist/plugin.wasm | Bin 142990 -> 147728 bytes .../fixtures/web-log/dist/plugin.wasm.sources | 2 +- .../tests/fixtures/web-log/plugin.toml | 6 +- .../tests/fixtures/web-log/src/lib.rs | 19 +++++ .../tests/fixtures/web-pty/dist/plugin.wasm | Bin 142000 -> 142008 bytes .../fixtures/web-pty/dist/plugin.wasm.sources | 2 +- plugins/README.md | 20 ++++- .../official/ai-completion/dist/plugin.wasm | Bin 213845 -> 213845 bytes .../ai-completion/dist/plugin.wasm.sources | 2 +- plugins/official/checkstyle/dist/plugin.wasm | Bin 229753 -> 229775 bytes .../checkstyle/dist/plugin.wasm.sources | 2 +- plugins/official/csv-editor/dist/plugin.wasm | Bin 192656 -> 192664 bytes .../csv-editor/dist/plugin.wasm.sources | 2 +- plugins/official/git-toolbox/dist/plugin.wasm | Bin 170655 -> 170663 bytes .../git-toolbox/dist/plugin.wasm.sources | 2 +- plugins/official/graphviz/dist/plugin.wasm | Bin 183582 -> 183604 bytes .../graphviz/dist/plugin.wasm.sources | 2 +- .../official/key-promoter/dist/plugin.wasm | Bin 161552 -> 161560 bytes .../key-promoter/dist/plugin.wasm.sources | 2 +- .../official/license-header/dist/plugin.wasm | Bin 210763 -> 210785 bytes .../license-header/dist/plugin.wasm.sources | 2 +- plugins/official/mybatis/dist/plugin.wasm | Bin 226503 -> 226511 bytes .../official/mybatis/dist/plugin.wasm.sources | 2 +- .../official/regex-tester/dist/plugin.wasm | Bin 972002 -> 972002 bytes .../regex-tester/dist/plugin.wasm.sources | 2 +- plugins/official/solidity/dist/plugin.wasm | Bin 167525 -> 167525 bytes .../solidity/dist/plugin.wasm.sources | 2 +- .../official/string-tools/dist/plugin.wasm | Bin 227128 -> 227136 bytes .../string-tools/dist/plugin.wasm.sources | 2 +- sdk/rust/openidea-plugin/src/host.rs | 16 ++++ sdk/rust/openidea-plugin/src/mock.rs | 47 ++++++++++++ sdk/rust/openidea-plugin/wit/views.wit | 8 ++ src-tauri/src/commands/mod.rs | 1 + src-tauri/src/commands/plugin.rs | 35 +++++++++ src/bindings.ts | 10 +++ .../plugins/__tests__/logEditor.test.tsx | 21 ++++-- src/features/plugins/runtimeUi.tsx | 18 +++++ src/features/plugins/views/logEditor.tsx | 8 +- src/features/plugins/views/logTab.ts | 2 + src/features/plugins/views/ptyBackend.ts | 25 ++++++- src/platform/locales/text/en.json | 3 +- src/platform/locales/text/zh.json | 3 +- wit/views.wit | 8 ++ 92 files changed, 496 insertions(+), 50 deletions(-) diff --git a/crates/ide-host/src/plugins/api.rs b/crates/ide-host/src/plugins/api.rs index 31b19d560..0b2824730 100644 --- a/crates/ide-host/src/plugins/api.rs +++ b/crates/ide-host/src/plugins/api.rs @@ -437,8 +437,18 @@ pub(super) struct Shared { pub ui: Arc, /// The UI language the windows report (BCP 47). pub locale: RwLock, + /// (plugin, window) → the log tabs its code opened there, oldest first: + /// what a tab may run when it starts. + log_tabs: Mutex>, } +/// A window's log tabs of one plugin: key → what it runs, oldest first. +type LogTabs = Vec<(String, ide_plugin::ServiceLog)>; + +/// Log tabs a plugin's code may have open in one window; opening more forgets +/// the oldest (that tab can no longer start its program). +const MAX_LOG_TABS: usize = 32; + impl Shared { pub fn new( sink: Arc, @@ -467,6 +477,7 @@ impl Shared { closed_clients: Mutex::default(), subscriptions: Mutex::default(), diagnostics: Mutex::default(), + log_tabs: Mutex::default(), }) } @@ -565,6 +576,20 @@ impl Shared { self.closed_clients.lock().remove(client); } + /// What the log tab `key` that `plugin`'s code opened in `window` runs. + pub fn log_tab(&self, plugin: &str, window: &str, key: &str) -> Option { + let tabs = self.log_tabs.lock(); + let tabs = tabs.get(&(plugin.to_owned(), window.to_owned()))?; + tabs.iter().find(|(k, _)| k == key).map(|(_, log)| log.clone()) + } + + /// Forgets the log tabs of a closed window, or of a stopped plugin. + pub fn forget_log_tabs(&self, plugin: Option<&str>, window: Option<&str>) { + self.log_tabs + .lock() + .retain(|(p, w), _| plugin.is_some_and(|plugin| plugin != p) || window.is_some_and(|window| window != w)); + } + pub fn client_closed(&self, client: &str) -> bool { self.closed_clients.lock().contains(client) } @@ -1777,6 +1802,29 @@ impl HostApi for PluginApi { Ok(()) } + fn open_log_tab( + &self, + client: &str, + key: String, + title: String, + log: ide_plugin::ServiceLog, + ) -> Result<(), HostError> { + // Fails now, rather than in the tab, when the approved file is gone or changed. + self.approved_program(&log.program)?; + { + let mut all = self.shared.log_tabs.lock(); + let tabs = all.entry((self.id().to_owned(), client.to_owned())).or_default(); + tabs.retain(|(k, _)| *k != key); + tabs.push((key.clone(), log.clone())); + if tabs.len() > MAX_LOG_TABS { + tabs.remove(0); + } + } + let event = PluginEvent::OpenLogTab { plugin_id: self.id().to_owned(), key, title, log }; + self.shared.sink.emit(Some(client), event); + Ok(()) + } + fn locale(&self) -> String { self.shared.locale.read().clone() } diff --git a/crates/ide-host/src/plugins/remote_host.rs b/crates/ide-host/src/plugins/remote_host.rs index be1a6b117..74ee904dd 100644 --- a/crates/ide-host/src/plugins/remote_host.rs +++ b/crates/ide-host/src/plugins/remote_host.rs @@ -118,6 +118,7 @@ pub fn forwarded(event: &PluginEvent) -> bool { | PluginEvent::ViewMessage { .. } | PluginEvent::OpenTerminal { .. } | PluginEvent::OpenLocation { .. } + | PluginEvent::OpenLogTab { .. } | PluginEvent::CopyToClipboard { .. } | PluginEvent::OpenUrl { .. } | PluginEvent::OpenProject { .. } diff --git a/crates/ide-host/src/plugins/types.rs b/crates/ide-host/src/plugins/types.rs index 639babe9e..df58404f3 100644 --- a/crates/ide-host/src/plugins/types.rs +++ b/crates/ide-host/src/plugins/types.rs @@ -224,6 +224,10 @@ pub enum PluginEvent { }, #[serde(rename_all = "camelCase")] OpenLocation { plugin_id: String, path: ide_core::IpcPath, line: u32, column: u32 }, + /// Open (or focus) the log tab `key` following `log` (`views.open-log-tab`); + /// it starts the program with `plugin_log_tab_spawn`. + #[serde(rename_all = "camelCase")] + OpenLogTab { plugin_id: String, key: String, title: String, log: ide_plugin::ServiceLog }, /// Plugin languages, or the servers they may start, changed: re-fetch /// `languages` (the host re-detects open documents: [`crate::Host::plugin_languages_changed`]). LanguagesChanged, diff --git a/crates/ide-host/src/plugins/web.rs b/crates/ide-host/src/plugins/web.rs index eb67a1a98..d3d9514d8 100644 --- a/crates/ide-host/src/plugins/web.rs +++ b/crates/ide-host/src/plugins/web.rs @@ -134,13 +134,47 @@ impl PluginHost { window: &str, command: WebPtyCommand, output: crate::ops::Emit, + ) -> IdeResult { + self.spawn_plugin_pty(host, plugin_id, window, output, || { + self.web_pty_options(plugin_id, view, window, command) + }) + } + + /// Starts the program of the log tab `key` that the plugin's code opened + /// in `window` (`views.open-log-tab`), with the toggles in `on`: the UI + /// names the tab, never what runs. + #[allow(clippy::too_many_arguments)] + pub fn spawn_log_tab_pty( + &self, + host: &std::sync::Arc, + plugin_id: &str, + key: &str, + window: &str, + on: &[String], + (cols, rows): (u16, u16), + output: crate::ops::Emit, + ) -> IdeResult { + self.spawn_plugin_pty(host, plugin_id, window, output, || { + self.log_tab_pty_options(plugin_id, key, window, on, (cols, rows)) + }) + } + + /// The PTY of a plugin, counted against its sessions and ended with its + /// window, project or permission; `options` authorizes it. + fn spawn_plugin_pty( + &self, + host: &std::sync::Arc, + plugin_id: &str, + window: &str, + output: crate::ops::Emit, + options: impl FnOnce() -> IdeResult, ) -> IdeResult { let _guard = self.lifecycle.lock(); let mut sessions = self.web_ptys.lock(); if self.shared.client_closed(window) { return Err(IdeError::cancelled()); } - let options = self.web_pty_options(plugin_id, view, window, command)?; + let options = options()?; let entries = sessions.entry(plugin_id.to_owned()).or_default(); entries.retain(|s| s.host.upgrade().is_some_and(|h| h.terminals.contains(s.id))); if entries.len() >= 8 { @@ -166,6 +200,7 @@ impl PluginHost { } pub(super) fn forget_web_ptys(&self, window: &str) { + self.shared.forget_log_tabs(None, Some(window)); for sessions in self.web_ptys.lock().values_mut() { sessions.retain(|session| { if session.window != window { @@ -180,6 +215,7 @@ impl PluginHost { } pub(super) fn stop_web_ptys(&self, plugin: &str) { + self.shared.forget_log_tabs(Some(plugin), None); if let Some(sessions) = self.web_ptys.lock().remove(plugin) { for session in sessions { if let Some(host) = session.host.upgrade() { @@ -198,8 +234,37 @@ impl PluginHost { command: WebPtyCommand, ) -> IdeResult { self.web_page(plugin_id, view)?; + self.get(plugin_id)?.pkg.manifest.needs_api("web view PTYs", 3).map_err(IdeError::invalid)?; + self.pty_options(plugin_id, window, command) + } + + /// The options of the log tab `key`'s program, with the toggles in `on`. + pub fn log_tab_pty_options( + &self, + plugin_id: &str, + key: &str, + window: &str, + on: &[String], + (cols, rows): (u16, u16), + ) -> IdeResult { + let log = self.shared.log_tab(plugin_id, window, key).ok_or_else(|| { + IdeError::not_found(format!("plugin {plugin_id:?} opened no log tab {key:?} in this window")) + })?; + let toggled = log.toggles.into_iter().filter(|t| on.contains(&t.id)).flat_map(|t| t.args); + let args = log.args.into_iter().chain(toggled).collect(); + let command = WebPtyCommand { program: log.program, args, env: Default::default(), cols, rows }; + self.pty_options(plugin_id, window, command) + } + + /// Checks `command` against the plugin's current grant, the limits and + /// the window's trusted project. + fn pty_options( + &self, + plugin_id: &str, + window: &str, + command: WebPtyCommand, + ) -> IdeResult { let plugin = self.get(plugin_id)?; - plugin.pkg.manifest.needs_api("web view PTYs", 3).map_err(IdeError::invalid)?; let cap = ide_extension::Capability::Process(command.program.clone()); if !plugin.meta.lock().granted.contains(&cap) { return Err(IdeError::new( diff --git a/crates/ide-host/tests/plugins.rs b/crates/ide-host/tests/plugins.rs index 7af03ed04..432737d6f 100644 --- a/crates/ide-host/tests/plugins.rs +++ b/crates/ide-host/tests/plugins.rs @@ -5016,6 +5016,59 @@ fn web_log_tabs_use_the_web_pty_permission_boundary() { } } +/// `views.open-log-tab` from the plugin's code: the host remembers what the tab +/// may run, and the tab starts it by key, through the same PTY checks. +#[test] +fn log_tabs_opened_by_code_run_only_what_the_host_approved() { + let f = fixture(Limits::default()); + f.host.install_from_dir(&sample("web-log"), &Consent::default()).unwrap(); + let err = f.run("web-log", "code", None).unwrap_err(); + assert!(err.contains("process:bash"), "{err}"); + let options = |key: &str, window: &str, on: &[&str]| { + let on: Vec = on.iter().map(|s| s.to_string()).collect(); + f.host.log_tab_pty_options("web-log", key, window, &on, (240, 40)) + }; + assert_eq!(options("code", "main", &[]).unwrap_err().kind, ErrorKind::NotFound); + #[cfg(unix)] + { + f.host.set_capability("web-log", "process:bash", true).unwrap(); + f.take_events(); + assert_eq!(f.run("web-log", "code", None).unwrap(), None); + let events = f.take_events(); + let (client, log) = events + .iter() + .find_map(|(client, event)| match event { + PluginEvent::OpenLogTab { plugin_id, key, title, log } + if plugin_id == "web-log" && key == "code" && title == "Probe logs (code)" => + { + Some((client.clone(), log.clone())) + } + _ => None, + }) + .expect("an OpenLogTab event"); + assert_eq!(client.as_deref(), Some("main")); + assert_eq!((log.program.as_str(), log.toggles[0].id.as_str()), ("bash", "verbose")); + + let got = options("code", "main", &[]).unwrap(); + assert_eq!(got.shell.as_deref(), f.host.program_for("web-log", "bash").unwrap().to_str()); + assert_eq!(got.args, log.args); + assert_eq!(got.cwd.0, f.project); + assert!(got.env.is_empty() && !got.shell_integration); + // Toggles append their arguments; unknown ones add nothing. + let verbose = options("code", "main", &["verbose", "bogus"]).unwrap(); + assert_eq!(verbose.args.last().map(String::as_str), Some("--verbose")); + assert_eq!(verbose.args.len(), log.args.len() + 1); + // Only the window it was opened in, and only that key. + assert_eq!(options("code", "other", &[]).unwrap_err().kind, ErrorKind::NotFound); + assert_eq!(options("probe", "main", &[]).unwrap_err().kind, ErrorKind::NotFound); + // A revoked grant stops it starting, and forgets the tab. + f.host.set_capability("web-log", "process:bash", false).unwrap(); + assert!(options("code", "main", &[]).is_err()); + f.host.set_capability("web-log", "process:bash", true).unwrap(); + assert_eq!(options("code", "main", &[]).unwrap_err().kind, ErrorKind::NotFound); + } +} + #[test] fn web_ptys_require_a_current_exact_program_grant_and_project() { use ide_host::plugins::web::WebPtyCommand; diff --git a/crates/ide-plugin/src/runtime.rs b/crates/ide-plugin/src/runtime.rs index fab0b8ec5..28fa745a3 100644 --- a/crates/ide-plugin/src/runtime.rs +++ b/crates/ide-plugin/src/runtime.rs @@ -245,6 +245,9 @@ pub trait HostApi: Send + Sync { cwd: Option<&Path>, ) -> Result<(), HostError>; fn open_location(&self, client: Option<&str>, path: &Path, line: u32, column: u32) -> Result<(), HostError>; + /// Opens a log tab `key` in `client`'s window following `log` (already + /// checked against the plugin's grants and limits). + fn open_log_tab(&self, client: &str, key: String, title: String, log: ServiceLog) -> Result<(), HostError>; /// The IDE's UI language as a BCP 47 tag. fn locale(&self) -> String; /// A setting of the plugin as JSON (project over global over the schema default). diff --git a/crates/ide-plugin/src/wit_host.rs b/crates/ide-plugin/src/wit_host.rs index 09efa5cca..f1b8008c0 100644 --- a/crates/ide-plugin/src/wit_host.rs +++ b/crates/ide-plugin/src/wit_host.rs @@ -117,8 +117,8 @@ pub(crate) mod views_bindings { } use bindings::openidea::plugin::{ - commit, diagnostics, editor, events, fs, invocation, log, net, process, secrets, settings, storage, tasks, - types as wit, ui, vcs, views, workspace, + commit, detail_types, diagnostics, editor, events, fs, invocation, log, net, process, secrets, settings, storage, + tasks, types as wit, ui, vcs, views, workspace, }; /// A project handle: its root. @@ -661,6 +661,8 @@ impl workspace::HostProject for StoreData { impl editor::Host for StoreData {} +impl detail_types::Host for StoreData {} + impl editor::HostTextEditor for StoreData { fn path(&mut self, this: Resource) -> wasmtime::Result { Ok(to_ipc(&self.table.get(&this)?.ctx.path)) @@ -1151,6 +1153,29 @@ impl views::Host for StoreData { Ok(self.host.open_terminal(client.as_deref(), title, &program, args, cwd.as_deref()).map_err(to_wit)) } + fn open_log_tab(&mut self, key: String, title: String, log: views::ProcessLog) -> Fallible<()> { + if let Err(e) = self.require_interactive().and_then(|()| self.require(Capability::Process(log.program.clone()))) + { + return Ok(Err(e)); + } + if let Err(message) = check_log_tab(&key, &title, &log) { + return Ok(Err(wit::Error::Invalid(message))); + } + let Some(client) = self.invocation.client.clone() else { + return Ok(Err(wit::Error::Invalid("a log tab opens from a command or event of a window".into()))); + }; + let log = crate::ServiceLog { + program: log.program, + args: log.args, + toggles: log + .toggles + .into_iter() + .map(|t| crate::ServiceLogToggle { id: t.id, label: t.label, args: t.args }) + .collect(), + }; + Ok(self.host.open_log_tab(&client, key, title, log).map_err(to_wit)) + } + fn open_location(&mut self, path: String, line: u32, column: u32) -> Fallible<()> { if let Ok(dir) = self.host.plugin_dir() && let Ok(real) = sandbox::resolve_granted(&[Capability::FsRead(to_ipc(&dir))], &path) @@ -1301,6 +1326,27 @@ impl fs::Host for StoreData { } } +/// The limits of a log tab, the same a web view's `open-log-tab` has. +fn check_log_tab(key: &str, title: &str, log: &views::ProcessLog) -> Result<(), String> { + let line = |s: &str, max: usize| !s.is_empty() && s.chars().count() <= max && !s.contains(['\0', '\r', '\n']); + let args = |a: &[String]| a.iter().all(|a| a.len() <= 4096 && !a.contains('\0')); + let total = log.args.len() + log.toggles.iter().map(|t| t.args.len()).sum::(); + let mut ids = std::collections::BTreeSet::new(); + if !line(key, 128) || !line(title, 256) { + Err("a log tab's key (at most 128 characters) and title (256) are one nonempty line".into()) + } else if !line(&log.program, 256) || log.program.trim() != log.program { + Err(format!("{:?} is not a program name", log.program)) + } else if log.toggles.len() > 32 + || log.toggles.iter().any(|t| !line(&t.id, 64) || !line(&t.label, 128) || !ids.insert(t.id.as_str())) + { + Err("at most 32 toggles, with unique ids (at most 64 characters) and labels (128)".into()) + } else if total > 256 || !args(&log.args) || log.toggles.iter().any(|t| !args(&t.args)) { + Err("at most 256 arguments in all, of at most 4096 bytes each".into()) + } else { + Ok(()) + } +} + fn too_much_to_write(path: &str) -> wit::Error { wit::Error::Invalid(format!("{path}: more than {} MiB to write", sandbox::MAX_WRITE_BYTES >> 20)) } diff --git a/crates/ide-plugin/tests/fixtures/commit/dist/plugin.wasm b/crates/ide-plugin/tests/fixtures/commit/dist/plugin.wasm index 6496bacc830eb83819ed0b21e01f11f7ca775c79..4980186337908545963e5b70e5b62a222e1acb8b 100644 GIT binary patch delta 4089 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 OIFX~xv?`N(E%AR#XskB? diff --git a/crates/ide-plugin/tests/fixtures/commit/dist/plugin.wasm.sources b/crates/ide-plugin/tests/fixtures/commit/dist/plugin.wasm.sources index 7f491aa8f..60b38a389 100644 --- a/crates/ide-plugin/tests/fixtures/commit/dist/plugin.wasm.sources +++ b/crates/ide-plugin/tests/fixtures/commit/dist/plugin.wasm.sources @@ -1 +1 @@ -6efbb6db8442a4dec21e65bb8c4c65e08b0da32082ee26e870c0419ebaf4e7fb +6d7d707c7492d487fbd9debae791ad7e3755ac005f1f518efa54e6536ec59f08 diff --git a/crates/ide-plugin/tests/fixtures/detail-views/dist/plugin.wasm b/crates/ide-plugin/tests/fixtures/detail-views/dist/plugin.wasm index c017e04d40443bc7e662a349b6d0168af13400bf..cdcf91b87537613220e01e592a9889db4d1013c4 100644 GIT binary patch delta 4177 zcma)93shBQ7QWwqFPGOPAbDH?_1sG)nv_at4d%%{J?6)@p0CQaqrvr4)4z-lD~*UnfR@4o%F@|ptyq-!jqxRq(EKwXlvS~yFuCI{rkEZovzuJ6L8d3 zOuwqD?(*F@=z9P1{{9WW7t62f&dd~OpfA*F*Y2 z@#&$6$0=oDC;}~LP?m>d8PLH06@jVP%SS{a6?>KZNHjBC<1tYf&8jPTY!oEEA_^Ti zu4F``h2adp5sMsnc(xr*(k!)OE|IV7wEh~8?~Anwl`m^C4mO({7IT_pd1U>JFs3J2 zskHQk4W#*A93I0ZJ|hi%m85tK2ikdN0{(%W%9wt5oS}kO4nQGlxlO{O6#q;KiNvjz zPy>~RJ1_;`@k|Fshky5y=1;~$CX-~6+xZ_H7>r8(kpuS*Y^xG@?R%a|DVb%Hro&|a z6^vFmowz|O9Elk3jcJUsClR~Ml=av_m;}OYa}t2a1C^S&iD4!^p94zmVAz2R{LLXa zjtffRJ$UstYCJg^`4n$WGDf4Ef0B%663>XRlT9YWniH~jP7+~4R+TyTVh^yBTZbVf z1oFcVAD8_CUgXHf=j{#F)QSNUgI$Rm=TjcG)x zva#LfUFZyuEV7#q%^`OxFU!G5BJbqT?o;{qIhf%v><2l6riFo}NdXfyKR!f{h+bZRc;7m^)9P<}*#bOBn(hTi&{d?sku1W< z#VV`(`~nP)_a#4)-6fY4JFI4-{wjACV7F0Yixf)fe^`LulGT9=={R%q=?gLZUIT@Q z=|1$lQ(k{`7lal#3|v*dZz0Bzg|3Cz)@wS1OmBJyZW5#{qK;Pi{6%<<$oWNhfJp4K z_|R@RvNhncAtYZDL^-Ygfh{b=Y_j;bLR<{ei(; z7`hhz?JC&$_eFFvs(gAe9wM@}7$=~GmGljCiO}rPG66z&nLy@G8wE1gH;T#k$|?AXn^5F4e-k_% zn*=;}Z2sTyjNdHa`Qv6>BwyRg4YPH`Wo{90tllEZ*R(}!zof0Ad|6xZ&j9o&awQ#C z^eU*Y!qAY07sYjBkq;^#S7Ec6<}+W!BD$xKzlfpqic)^4!GA!{l&Tg)@t&OsqbGzI z_phb#IX<)&ed$h|SW5u+@Q7V_n{1riMLE|i!FBin=vIEIrwa+)oM^m~^D_2?QW4CJ zc#>?r+K3ol^bSJF7L8;1?spJE25Ib|sfbU>ZAYVUE5_GpoX{=8j%fG3-ei*$At&kQ zST~o?&`YA5XYZ$5+Q%(!65LiV8Q_K^$S}gIn$U+dwaH&wPV}>^X=oPupofojr16}dc5OTG>lJ)v8{Qd=1U$)Zy=Ai0%sdF zD`ISGyds_+$s|3e={thDc8b{A`796mqmw`B!9XJGJ#<`mDQ|l)4%AuK-=!@VS8-Dw zQg4Fw%91~0bO7~3^HI9$2@sjEqQC%tZ5oPZ7$_=}ZMN3H5c}G<6!+u^58XmV50~X7Qo&Opq@S)!rmZK z5XzeA6tde`o|%q;l5l3vaMy_P8R5|b&e&rAr@-c0;Z{1s**r$gJLOK+uF?2t))q`B znA)FdTkFUEED;q-+yE9$-+tmuF{;>$g4HiAZ~G`kPBui_>pFYnF7~CFcITcXHi}MB z<+H(TsFl*?!Nb^k^15XhvuJPiZ7WzUl*CnRGz&J-AEW;^C3iI&MBhY8#Tw>fSf@zq I*!+k83yY!5*Z=?k delta 4173 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 E7ch0hCjbBd diff --git a/crates/ide-plugin/tests/fixtures/detail-views/dist/plugin.wasm.sources b/crates/ide-plugin/tests/fixtures/detail-views/dist/plugin.wasm.sources index 62ce82be6..235ce4fd6 100644 --- a/crates/ide-plugin/tests/fixtures/detail-views/dist/plugin.wasm.sources +++ b/crates/ide-plugin/tests/fixtures/detail-views/dist/plugin.wasm.sources @@ -1 +1 @@ -21520d2522afaa7212e5c9b765110a334b2a1fe69302f602f05a61dcee08cd0b +652977e0bf63bc7664807016998a4d4795d2a7eb841ee1912ef562057e5437cb diff --git a/crates/ide-plugin/tests/fixtures/diagnostics/dist/plugin.wasm b/crates/ide-plugin/tests/fixtures/diagnostics/dist/plugin.wasm index 349486d0f079a8d9b97710fdf6f0ddca4d4a5988..6aba123b1b8a3281e9fc2606f2160fafcc1b591e 100644 GIT binary patch delta 16623 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 T8|SlW(l-)LPeE-Y-#Y&TPe^x2 delta 16547 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 bOu;UttyGIB$u%@t+9i?Q72RH{((wNQ7^j0u diff --git a/crates/ide-plugin/tests/fixtures/diagnostics/dist/plugin.wasm.sources b/crates/ide-plugin/tests/fixtures/diagnostics/dist/plugin.wasm.sources index a3254c5c6..2f45ab6e3 100644 --- a/crates/ide-plugin/tests/fixtures/diagnostics/dist/plugin.wasm.sources +++ b/crates/ide-plugin/tests/fixtures/diagnostics/dist/plugin.wasm.sources @@ -1 +1 @@ -9d79e3f45abf0aaba03d30aa482decd3142d879b5964d12298b0aa6cbac581fd +42d3856b634bdaa69e21f4a42a9f375b73c2d19753a8986b82f2228bf92d37bc diff --git a/crates/ide-plugin/tests/fixtures/endpoints/dist/plugin.wasm b/crates/ide-plugin/tests/fixtures/endpoints/dist/plugin.wasm index 555b7654e6c5691c8e4ca05833078cb66ed46fda..03887b8749cc78bf877017d7886d024ab0e4ea6c 100644 GIT binary patch delta 4133 zcmai13v^6p9-rU6lgDH-NyuxGOytfaNFuR|(jwHYXE~C1Hj2fuJv7y0X)Qu)Xif!L z!VTAR#fn9xLhtB}?KB%CsEyK<5~aH-BdAnTn?2EUg8kn+cP67%E64Y{|L^~PeBZsZ zahGA+F2j)%2DD2j4d()4%C?-)8CU3dr-ro}mI(VgO`hJQQPGM>t43@U-75adW|2nh ztFBV*Sd`6+MQ({QjajT=yu!TxCpWV}%ISRUx7aC#42?jLEB}ODm&*n4O+wnR1-|6| zVc9;UgyBCLnf81kbf{H|9Jd)L6hemDr1Rq&{7@zw&KV7-^i$5`7)$MH#bVf+5A1fG z&d3FFdQP9X(oPg#yEptD2DMVeqRtGQLifezh$-u!UicGB?(&K(T?*ZP_Gx}t@?+!}&C^c7QPhp>T`MX_ldx{1g{&S> zR;gxVXb8%ruXpcZDdNR@=NgICa5#=w?T2IZXp*9&g&?IhjxkJ2fw*k|;)EX^F=&yD z$3A9IB^;MCNaeU}6{0Jyph#-2ILhFTu;;TGN%?El+{@fCxnr^U@!y`VqLT3Eb(|kx zB_ug#qd+Kd_NBGbnP({x6{QqbXVtSqIQ=Ut#+f{6lt>dl4+i<1Rhf+=(kGRpfvv)$ zzu&+CsiA5-gF2zlsbx4Ql%E=jVxjF+B0a}dZ-GnrqDkr3PL1~)YLAX%d7UD`@V@d4$=B38Ci(K4!zcv9nJX;i{N1@xK(Uls z3v_z8MlmwNq|<8uP|7%O23mwkU!J9^b-A$T88X7fi*r#S^#3XY7ll85H81hb7R5@s zPUo>>1MlAB)Ud$2B)@;|1sa5dm-+-%sgZNwFG`J<3V;e}{@3 zr{0`E9an2F7|slmdbvi>2uMqA&7+)!TaDvTCB1l?#-d(Wbtj+3BH(T*OXFGAqzufX zrbrMGem{fCmVJLwxI-NUpDObXq5l3zGQ~B=(VEdbkk%#Y>S(so^X2Bb&(s>%(wn&X zElE`RgDu!Fw%tn1X(6nGzVNj zKPJrR7PI;DE^(y^Ddgag2{9yDV?v3iV{}{dPH{m9CKKaqh${9V1igBC(hJM-mO%?f zHBNmp=2|^>jY}LCia}&yLnzjFm<}S-DPbrh#^o@zCWcN}Ow`Iwc!}U|o$#f%MZq>b z$By-JR?-=(NhmoSzahv8$5n#f5vrXxBJdtjHzSZv&?yq%5;RAuk_l0$BdRqDeF&1H zF@)gFXv~f9CT1W(1br;B=o>brpR z&Q65Q-#5sR1k57qe@MV>f*ekDNoIE>Xufp)n7~k)9eU?H!5E*!U$LUMCm_AJF&1XA z*ox_7<$)Cg2-0o%0aUmTcB)z`a-o!}SDMG{4x%2Bb%MBbwXK=y>Ph@Zy3*E9d*Y@as%2Lnx~xzqzT6jS zK~3w`mx`WmmlyTLYL@mNy@a<>EWgzsY4lkpZykUKVDdML$V8;+`eXImBZ*#>#qO=( zV=d~Im9|R73mJ4Y9pc>#DtWai4Z?A<`1W9>0CL%2{Fgc)|78eM+j5c4u&Lb3aKr}FF+KgvXGtaF2siRVL+ zPv(<7Zvhb#5Zm|H`EEtQ{SN1KT&Ry~dKO~I!;>ru&MD@0P!`Qz`zpKgVM=O=K5B~m zFC}~pYZk59Fq7c{*@$KGi{;7L_=vt`)rbi!6JWMf3ul-FV8?%l!@(bu+5~q+#ye!iI+hmw{sSq$Jn|}zKL+~ zrs0yqXCuRpMk0GIrYeV&u#4EV2rK0=x%i%XEcaVNS1t8@{!;3MLutR228q|o~Xm5{qq^saXxC#AMc-q%yoQ+wu-%$`-ZGVuAGUur_ThJ;O$8MX8GuH z)SFQ&ucaSn^xH-(+^SfS_iaUYr9JP_oQNhXzR2XQm7N4XZxx{TJk%&6^^OJ~V zJ;7-|MW4E1nrfaqRWf%PsmyZ>$iF{}?^udwL@k|XCVz{(;yilzqgFh0iQX#?Ijs)w q@~D#cL^6Q<=O`wPG3e+YL;vma1v5iUIUu*iFam>N@;VFS-}`?yR>9r? delta 4128 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 tIsFpeB%TilfMD#C47Fes zNyhDeREa@?gvFK|hkK>8X_K^3*zC-9Y_@Q%-iro6B}s}klXb%$xm&H(7R5Z;jmaj~ z;eU2DyN4&cnB0dWT6M64ON!+IO7M6n7an(A4fRAbVG=ZQDHCe@8JpJ#!F-xmSu6^L zj@HsDS{1y~f)>-fXY>pTnz_iCeJN-piL>j_=sTysJ2aCKnFiQFk}?fcrC23eZ2m?M}TngFb zz!D>LlCy&3ZZGlnf_koP%`PQEX4m`bFne)+5JEYfAE?5-KX1zdJT$c+33AEKf+)!4 z8VU|laFd+eX(D@e24Sp|J3F9^t0?@Af(|lo_Z+a1y4_}Ud9XVjwvv=RQ7G5$S!yiX zBG55dsW7RO@wDol6)B!F#xkzI%>(evkiE%pksPlJ~aK+zFrNB-) zi@$)QWXb+SC?{3>gSAJ+h`Ln5)b-nZU@3ZhabOZ6tvwLyoh$A!FixSMaT?*FHHjIL^WYIYjX*xR+*$p^1OSDVzI;3tIHeF<$J6^XM zCxBz>=VOWF(7#gP=Hc^`0K1ZO!3t-&ix+H4oWH;PkPKB^?GOC`jmCyp%CdnNE-&({ z5eLA9Ri=jQx}1oq?p_W;slGBEB_qn^S4?dA_h5FF*iJ0GJgy)zl*i#s_Uju>V&Ex2sG`#vtW+>J&Vb}tI$ta~XaOYaRtdEs6h zO0WAfP-fmAjq;oOiIGwO6|IP-{P7W?iKet3UOEYk3{hovf7cV_MNZ$0_obbLKKKL5 zr4MRRGQZA4S@LV4UOuBmRLb|{8W=lCe>fjqElS%f$L2?C1Y6xTb z(xg$!?X{DQ_9D4$_(aCGjcc2Z5jV9BMkwF6jr5nX`b=>$V&B{zh(3n)w@`l2zOg5O zI|g{vUV_VoPlUq%{bVu9NgZQRuI@PR?1qO~MJp%w1SFYH*P=`7)8Qyh&wfPt{FxA7 z*z@HmOP)ud{OS31log$V&z;T&l*eBPgVXvV9_6U63@287qD$yQU89{F{;nHsU0HZ8 zqq`35`J(}&=BGm?*jX9?Q?t_mFgJS%AQJ4nhJyY$Wo(ENf>BLW3J2IFN;r)wP6as4 z>~fX3nBoTg**bhTIn%o0Vdtp#zMKs{US4qx^TVVVvGqx*6lL^~Z^sbSCPAO{`Z z_kfwG$~^!%Vpn(yIQUXeun0_y@D^dEdW#ec@_{(5V^(Md3w{ueE<^l~iNijy+?nMi zCVuBDGO^V6x0xvO6`8;!Ms`?V_$LN^)>q7nu?q%D2>~Ay-a0BC-#6Wm)YE&m$xmeI z4S$iPJb$s3=ltP+YG~pQ8eoP{h}H;0-Lp4}Zvz#xgO4-9S|zU64ul0z&PUQP6hEN& zG!r}m%9hJkr-C1w5e%MGxn!(IBd8`z#b09#x$|ZLf|L{jt+%5 z%DRdFYbe+O8riaN2;$d-VNaluN8^MJ^4L!!;X|r?vm@K}NX%9v8Qp@>AQ^8afG5PDubAlnd7;W20D)jD}IrK1{gu#B5|QmVh4f*2RDUm1O-V3Jmfw>3a~5nOu(f zM)wx@RS%5#S+p2f@JH)lj}`R_tni-b4!rFWdo-=5l@eYXKVS?Tz;93yut5qTf3kwp zuZisv3bM0-<6sPBCH&NJupcOUj>w_6n%UAKzUT+iYR2m5oR^xZxGOH2aWRi)Vj)Zg zm3(GAWU8sWO)l))BtvAsTrvdqDVx-a$%2t58J`M9jl<0gn5SK0mI$2C2DUH(Lh=4Q z?NIj!|k9uh4r!50e%0uSlzb6C# z$qERAR~`EFIIyJ_vB)}6@wY87^)+{ui+jo{ktk#+fVHf`JGha}7MJ+FtKf_WLRydm zC)AWRhmFXGeS*H44<-0yvTlKomDsH2Z5Sbs9k5*}L{tV_&P(&-;rvyX$0u)xxfBlE z-*>=8L9Z=@iat0Q@x@@GtodwuF_`f&zor=a;cqUnxiaMv9oT-2O977O2Y!Tf$CJwPF7Uu^8bI delta 3980 zcmZ`+dsGzX72iAiU}bp<5+1A0E+A;cC!i=HOl!bMJ%aX_#QK16Y`~*Qinbb~5s{l&X6&rjcMN?ZmL0uy#AnFReGdr`aO8&Wb?)TmA-rxP* zJKyY{xvD*JRa>=K3*T_R*PhXMpDnCY=+-HiW=UH}jOW}BJ0;6c*s@6m2*#crc7L^C z6iLRNzt@UEf`rAke7i@rv{@o)y|CG7vTy!}>+oDL3@jum)=2WkJaWy>t;<#{p*ug^w{Y1=<>9tCY&4)GU9naGzz3091RHKUHGBT`Tp&%I%5rHrNv>F_Dg@q*NBtymABve7>?0 z^2ni8dgvh+1j*f5<>>(zxUP+Rl?a*L?5%@VQc)NLt=zf702Su_ac36bq1nYrU?RJV zqj0IY_^^QZ^lk&$zdHyz@u>&OIZNqL3fjq%eT$%kH0(2?%Y%LCP(V`lN1@!bf3?1R zhd{?jrNW?6#?z`_txIv2F_v>f%iI83$fyI!&`3@;1aR9Aj0dP9^?&^@RB;tw&!)gi zY!#owQL^e_BA7|-!C>uCF`_P&FbzYt9a@bZpC6imccyFHm>qS9zYW}xh8v{L>Esk!9ERh`fX9~0&yEFr^D@m7gp_Xg9T&6_hkKZNZ+fe`A5MigKIhN`%k-)1fd}_o2 zaAK9IA$zYTVye4WgHWokO-0Fwa_uz(K9^q081Pi!^$EB;^Lhv-&APr*L)lEk{nk7| zW!{>LimSVoqZ!g9CJd+ijUYFYY2x0$^A#0gb!<`Y3MyV=`|K`(q;N`MRLTd8D&{O% z*B*kSoY?je%F4ExC||VYyV+wH)wJMJboV`6ZoeCiGVERy$_4jQP*&a>j`H%oIFugu z=b_BJKN00u_Y)(f04iD$P5I&#p^2unZXP-bj0{m_bbZGi6h1D3r$b32!>;eaGP{FKG=bH;|w> zaZuL2C_qkPQ5scv(7~RS=sPB00O_;HZqh`&+O56wz$J&r*K|4zN+K)Xa!UNT4xVM+V6iAgLit_7?_? zQf{x6Z0X!1w+(M(Y}=HsxfpS4*GPo&ZP$2T8LQVU2P4*P-2vzm*!>pD_q(_B2XMsz zkGjpcT>3;P{9jL2qMXq)8RdqaOO9^18CA4$W`97E`E(PybUYo4((vqil+T|D0meLE zi_-i&0_6|SZ=$r=1fMorGs=@Mgu&@}5sz|0Z-xV_f1*?9BfS$H8@|pPUAg-H@vuwOfUg9*R}HkItG-5!6EgO?8q&}uMgu>gGPuZLi_v<3(NXEN zBFH!`;Iy#cYGDehZY^8{>({k|0N^ZJ=L%m83}KEAMxy Yi}EoT*{Y>mVN;-gATb zsH)unIbzqj3pn^ncgPl)80RU%O7#>e7~utRTKlZf3Ko1I99>5FAQQ*DV67v|OHBOQ zTV!Ij_b)S1ml6VA6P`LM9=|tzkksFMw$(>u=?!0z zrR~0AD=+%O|J2aJ9}a|hLLpi`jCRf4B7O~2%yvFb51W*@UOya`ftin_VKhJ)pJsqZ zK$R4*b*bRPW(0#fWtNQ1Xav<12obz~lzvJ9b4C8>HnPWpu`w;|nh^K~14oBK9Azuu z{}c+H0L^SwI0W$}jN%%gEi2PXEDNceyY^?Zt#kH)b>2WCnlC+YkeRs3hy(Q4lB}lYS54F@w`F@92R7 zzv_VzKaCax3;t*w?zf^|ffe2#-Hx|gVvnZ%X{Cg>gda8u4p9=|Kq-X$lNB6(Eo`q) zkd+OX0+T4)Hh%ULI0%$AU*ynJ&Fp9wKlHyPF3vPkY5I5jdfZY-s|7;`@2duI?v5 z3^ekgiSRc5yyO>8hXoL1-6{@~Oh*{`{)oZM4#M52%(KQ=oD-{5A}Brfp>a^SohLRyv&r__{f z3mZ`g<$}Im2xh#Qa(BQ-N^F*OCq^)_!*&UUh$^ro|E2kHbNs6_@yWYjF@*#7w-RU) z^rlj<48qBXuK)vO+s>v}fDy0xjTJCNiCBc&L8e@y1KY20D!_h!@ORBHN_a^nGoli1 zE5XEjaxe*y-^6Mdt$|i{#R>d;H1b_1Ad-P1c9acn^PVptoKjN?g+kBA_aVIye>{UC M6uu5NimDI$KS?s&=>Px# diff --git a/crates/ide-plugin/tests/fixtures/file-templates/dist/plugin.wasm.sources b/crates/ide-plugin/tests/fixtures/file-templates/dist/plugin.wasm.sources index 27badf73f..3fa85d991 100644 --- a/crates/ide-plugin/tests/fixtures/file-templates/dist/plugin.wasm.sources +++ b/crates/ide-plugin/tests/fixtures/file-templates/dist/plugin.wasm.sources @@ -1 +1 @@ -47c2a8deea407ed7bf6a56af8c118295f4ceed394faaff9b535e97cb4ea31115 +0d418585dca868fbceb6432d06c5c838c3d42a9e99e7a9c7641199f25fb8fbe8 diff --git a/crates/ide-plugin/tests/fixtures/files-events/dist/plugin.wasm b/crates/ide-plugin/tests/fixtures/files-events/dist/plugin.wasm index 80915c626c748224a470c7bbdab4f2795b0e6e06..3f37ce42e065eedf89c3ab6019e6148b47ee3cb2 100644 GIT binary patch delta 814 zcmZvbZAg<*6vv-)pRK)#Z8Hb15zi7uqNopLGAme`_=3}!f|yz92W8~Q`cy$qW++q; z9z{*dmJlPVjZQEt34;jVpbsYX!HH0c)vB3VGc|iQCj@mr9PXe0@7{CIIb6@Q!ZWS# z8nkgB1>iuwnF}w8gqN$Nv|BsP!zGH>l`3HY?SetG=5RQ;RHhar<}{nYtG{EHum_fL zRLFrJs52%SKZOa=-f0uSthT8)v>~hwqNXxqflR#aUP=lq&{)cp1{U$LX$lspE#0kQ z-5prB!-yyIYv2nG>@T~> zR@%iU?j!rL27s#=ET6%|vMe%GbbKPlu|8 z`PfjHGO`$^5;*k|>Z)g8iB_xQ82loQ&B|i;1JoxrgsJUd9z{!SAJ&3@DuD^I^=#%oit85p&_|}5OZ>LM8xgEGit&O(Pzv%W>PD-}0DWk8B|`_c zxjgC3>-gwjxJ-~l@z8q84O1?Tk`p#XO)u5oF~-6mxxD8#i8aLgiXntHU$*jkS7h#- z`8M_YvUv!R^x6AZ7@&_sX8{JVd?XKEl6&Ne0$OqJcp)_6gg=39jfZ4n&)fZ(&`1;h z2`x;}li;9&1-h`qpAn%Bl4LmxAV7I5&jDIV`8!vfle1*aSF#3gOui%&b1*3r|3k6w J;QyM#`kDSvK#B4|g*+9wqt0 znwpj@B_yg@cd;H43KG5`B8C3gWRZqR`Dm-=1MU9igrF|m%RPKQ=bm%!xz{-(bI!>6 zbebqJfB>Z11pE+*gi?hVXp&||2v=!zOtBpNSjFko>o%KBkW5sZ$e3c~gsLU%;10kF zj&oV?6Jzwd^cy_EY%hvI>j@h(CpC@6*JxoXdKmCy4Q$qk<1|I}yOKPv0 zw6$UNUOkrOR=_tL$t`DVqG^xX*E(nuSUHJtHndTF$8u9T(|Z4_O_{R(^`I$v6#(<- zFh7O`%*%feT4OM>pa~XeS3x|$BECKG4(93Y!Ui$AEE(jP5O3{|M$1Vz3AVDt4%6eM zwLt3mBzL3#)F8~!=N2DG=lHr612SB)Z>LYossMgb?sOkOFTO9&h8I+KW>l#B%~N_3 zNfeww6~w^VFC=KgPv_$3N<{!*nJ!rK33%{eQY_j_hLlGDYIfD~PCLOkjHXI6{GeTx zegdnA=bf-d)2g)^m`00T3)9_~>;$IiT}Bokb8RIKoLbqZwT^s*~M^iyH1O3*(0Fgs|=~Cgen%oRfyp9?W;> zz=c(gcxc8JhcmTq6CeKzmvEvm9@q@IB}!RK1zbc}d_-&R>y9eo!gSPjwcLiReW z?o9d3j!^#v#!lMr&J?oOB7Xf@3H|iz$OV9YEFH^%0opruLk5j_XwnQe^mt?Gy~&`2 zwV>6T4mRrXdNlBnzFZuZk=YJx^QMKUV^p-70WeE**4_X#Qu%r|Yn#1j!(Fri69#vp Tfm|Un{$mg}&F&{h2_*jkuXsVj diff --git a/crates/ide-plugin/tests/fixtures/files-events/dist/plugin.wasm.sources b/crates/ide-plugin/tests/fixtures/files-events/dist/plugin.wasm.sources index 0b087d8b8..22f4d5f57 100644 --- a/crates/ide-plugin/tests/fixtures/files-events/dist/plugin.wasm.sources +++ b/crates/ide-plugin/tests/fixtures/files-events/dist/plugin.wasm.sources @@ -1 +1 @@ -884a42bd59ac64d08e9a0d3a72d4f1d1f25e850ef0b828be01142b61eda8db64 +6caa94db0c866c0c7f86011dbf837b3f9edb1c891276a4d435a8d02e8f64e0cb diff --git a/crates/ide-plugin/tests/fixtures/grouped-views/dist/plugin.wasm b/crates/ide-plugin/tests/fixtures/grouped-views/dist/plugin.wasm index 6498ea44ec6a2fdccc4dda4b351cedf5fa6842a2..865a9b9571f28eaba1141ffa61b426055fdb31d4 100644 GIT binary patch delta 3948 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 GO!+TTMr#%T delta 3944 zcmai14OmoF8lLygfCz)AfD8lb%wR?VDuSQ_%1s4D4HL?K^ue|t$^N##O$n89GSEq> ziyn5P!UbEcG3mM3C8I*qU1+InmuG`^%yLT!G1SyZCU?Jk=FTww^z1XwbKmow^PTVK z{l0VVoi8sA{ruw4h5{pw%Z0{;L!#@q?bn5@(}^w(do`?<_J!Yer-OM`N2w}RngCU3 z(u4q2XwZa12V1zY7(zCZ+TWr)YR$c6nS4Qm2L$&l?iA|bPbT;@K`~EWBO3M(j zTS{L3n7`;;zQ|9M1Mj{Vg?<^U6`)*xuS5vMPN}&p4^8rrXV1l;RdUyu(OMVvs(@D6 z^!i8vO;W=4Pe{11eROb8>+`Ck;crW~IK$B|O>~;k$)DZwea^3g%;g(A>+8$Pbh;3W zU>OqkY#EKkYI)h-@j$g~fA<$X`CPj%7Uj|_^sJVe_Khc7NB8YPx3uN`ShDC;pK{y# zVZ*Rf?rPhvr}&=vv^Zppdz)%MNv8|dc??^1!>d&X7MeO_~Z9b zn2zI9=y~9H30kDA6K1r?x1TTq&C-3{i{O+(&qT|gcP9gt5_*miN#FG>7SJxGpLzyu zl6)!`4r$<29F52RxD9sc-5>K%E1@qltd^;Xh?uTZLobsS^xc5N(jWRJT-U#mQ+S?u z(^>SQPSp@Ze|>@U+xjk13azJS!zqWJ`BG0=e1C2(;E*R=07jgyP>tkxSrSjn**}}q zFz@JZMWt-}W&1UBq>hWlXppi7GN}(r1|Etl=Rx|hZG-5Uv+%GW+U23{I#9)S|C$oq zv`KYpf!Hed{8|n)$WQ#Y>>7TU0a%F!_9!5shUo=7k?!n^>G4D^zsou?%+BqetJ>B(NR>9M_)CQVs^7pJ-$s4222R%D;x< zdI7a;j}cZj)`(>6WVaZ}IG@@>Qc)-hQ01usbwZXhWf*dRDy1|G4^j5)hvB#d%}T}y zSBD|r_?n9GFR(Vcw3rjHj4 zHfoM|At={Z;!c(wjSMnT>Vc+cSV{US8pYQ%c&izcX}#Qxap+WboAJj$xLB?gcM;TC zu>>w4*Ok=@*DykN4y=dD|j;z5^$oh2tAGRpOeTKafFXVZICYzEQAmL-sNJ9{nx zE7YnaU?IWOL~JqItJNL00E?>j&qQ)(X9-D2BluksrVvyo5q-2N31bO@CtwD_ya~9I zpnd{U2s$Sqm%uU+qepoRs>}q>35C`>cBNn<=)l_9@<}Kp*gFY-B`8g%4z#lq$#~u5 z-55l{=;wLE7wzn|$y7%>3rWFvg2^ekkziR0CMWpPo#RvYP6b&FMud3W`%`c<1x2)d zW-1lj&X%MS`F6H36&8ZGQmGYO%$~GNy3@w@yPAsY}za zdC*QU*-4rXCoOz6o%0f!fu~7&J_Az;KFq*pzA71Q28({7pXK^Yyg*8cS(r$$Gz(n> zX*0N;2WDUmNhf9?i6C+&ju8AblWWFhql2XWY~D$UBC<((SVXZe0n^~&va=sVr1(}M z{8uL3gvV)X-A(v};E`F}`fIb$OwwJmc^sQ(^EixikP5pZ&cSH4C5v(pN3cGJ?~rqF zh@{oIQ2V?omrpwKFq#F-g~R9ivY>X%I7cayy*=ivmw(mb!( zS4fJVPl4E3&U_x^>iN94F3iVtnoM4RHrW3%umGU?yBA{ZwL{o^GgY4Ay%}jfh0Ev> z^09>!Ue3o-g1&st(!ND%97@k3l&MTSxR{5v@K(e!WifWq)ZGP~huQ+Za<~A0@|nMk zg0+R5g1v>mO~J`RP61gz5#(u3i@-k0MKo(EKp6QV>!aCow_z=f=^|1&8M}mYvUmyS z?1mFdWLG_aKq7Q)=$T zSqSb*mRx~Iqx(_|U3}s=dQUpoJNLsHQ}dE)VK~!Xa1g)HK5j%OJ9R&mp_wTw@E#d{ zte8k~DGkLq4>Yoq4VHM4v9Ns=2Zw0YPet#oE%57qE!eM zYN|XMWvYh5BN%s`n*gRWOs2{Im2vY-D)DC&e~y;Q_zx30Txw!o+y(#%W~9 ztGQz34n(l!s}V|jAGvz!tt+OyHZ>Biu<0{q)?9nl;{6=YD1ljUOUj)kcvBdR*s=zu z*kgC_i*{DH2I<7AV-4Pd(9X*g&K9ggsNm9sM@T@gQo0V;8|VdJza9?+5Y<$@ zQJiA9J>yIw6Am`10#Tf0ny2w7rjktheC({CagAsEnL2i|uPSgI>bGrFpKSa_OoLNd zz7aF&LsO~UMBf}#`b!QfgG-5e5t#v$T!Vx$tob#pVSO*7h00G86~hRp|C#Pg!LgOS zv;&c>qK>NT!f>5gke68i>BLNEQ*s;9SX zBfC5zwS!}{{_%cHj`g*HyGq&n20BeRsBHcS(9`zH18PFbt^>GUJ#Aln%=7E{80H|a z8FuDlgp-ctAQr>hoZ7h{!Uj);;}GAx;}EP~HSc*398^=jIfTC%DTJN>z=r{J@2=>i z%h1I}bYVALC?9oUh2C6K$$QzGg3)5o&R#FeK0;pH9L(;^4ynaYP1$q=_X*TvXO7~q ziU*FNX(-(?&-79aTDueHwi>;t)ibTNCGky JmLs&J{SQ`rV`%^Y diff --git a/crates/ide-plugin/tests/fixtures/grouped-views/dist/plugin.wasm.sources b/crates/ide-plugin/tests/fixtures/grouped-views/dist/plugin.wasm.sources index 0b14924ff..b9928c8e8 100644 --- a/crates/ide-plugin/tests/fixtures/grouped-views/dist/plugin.wasm.sources +++ b/crates/ide-plugin/tests/fixtures/grouped-views/dist/plugin.wasm.sources @@ -1 +1 @@ -48d2ab9cc824ed06ae34126d6651a9b7127599626cc00f7aa76d9b3161a2963f +8d9c6bcd572b6fb54dd42c79d66d4971e55ec3dc072fc769f5634212c2927e22 diff --git a/crates/ide-plugin/tests/fixtures/hello/dist/plugin.wasm b/crates/ide-plugin/tests/fixtures/hello/dist/plugin.wasm index 375afe93c80aae7e458d0120942372d75556eff5..fec17dc6c6389cb06628efcba4bf62694e4db40e 100644 GIT binary patch delta 4363 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 Jkz8rQ{{gB>n9%?L diff --git a/crates/ide-plugin/tests/fixtures/hover/dist/plugin.wasm.sources b/crates/ide-plugin/tests/fixtures/hover/dist/plugin.wasm.sources index c329b3bdd..9cfccba7f 100644 --- a/crates/ide-plugin/tests/fixtures/hover/dist/plugin.wasm.sources +++ b/crates/ide-plugin/tests/fixtures/hover/dist/plugin.wasm.sources @@ -1 +1 @@ -3a77168e971d60ca4248b9bb2c27516614f74409324125821e74e3a236a67fb9 +40f80dcba2f370d02e2d5ad9609b21500fc42fc7c7202b439485a9cbf7baf727 diff --git a/crates/ide-plugin/tests/fixtures/indexer/dist/plugin.wasm b/crates/ide-plugin/tests/fixtures/indexer/dist/plugin.wasm index 53e1eb07950c42d9115653aad409d33716cf540b..5bd99d2cda135a1cd58c696104ede477746275a3 100644 GIT binary patch delta 4328 zcmai1dsGzH8QLl-%Ok2CKFbmZ6P>azJ>&Q4+fj2vGw zd1j^$DXp3Ll?g?p*I(MUU<0sK8oG!xqE;BODY|nbvp-m;GwW2tcAce+1;gu{ozk@$n}H(ftbHA1YDL{tF1Jvq ztsBYZ{z1B5SH+=8sHjgP`xW(e;k)|t*e?C!=zb1`!rJ2tQ7U|X+(9A%Ctk*%gkPT+ zMbF9;zr_(D_R|O)k;Z%)2x4b6WYX5%CY!XsVHil}`pIi(kWQSM$)QcKHLk=-VPj(k zDuqjpakR#nGR{>dY(DcmwhPzKq*=C?u^gNjqhnF$mI=?CO~Nf<_Sqo`>)ut$ca7?+ z~2{_@W(GzhU5({M$Yck$KuLM2R}Qaj*O_jn~PI9+8@`^BBWJ)z{% zh=3*~b{@_vlKWC2s3br8S8h*^ZeGbIM>DPps1|Nq{Y~mIC0xsTZNmI{J+IfMrdefe z&{#&kmv^9=g_3J;P)>&HS@c|feE~KJ?(27dn7rU_E9!A~ob=(12UI(u;Gk0+UG0uURpcvyhxo^Do(8*Cxw4GnOZL`xce$4DxAJI15Hx&S1*9t zl6BvO8tKmcN<9tQhHo;7bN!o85b^N8X;iC}2X6*9KVDmBvrzXSBf3S|cj%KigM$Vj ziSy6!cCkfpJRFM_VS(~2e`u$5?Zd1dZKXaMPTcHA@o14s9&I+FLmU9iB`5%9p+mj| z+n)$2M-TOJsAC#91AjS;vjndeB;~?&=(RPb?0DvsFwtA)a%I;;&3t z!m!bVX$&I+Q5>k6a`^E~^5a0vVw^r^jAA&+jFAjinvuz{(To^|cgz^aFu4z2Vz{;s zhBG|W2a|ctqJh_?a3S;>GNy3;fqhI`kR)XfLNH0oDM2uSsZFrpMTVO!IL>fkUo2&K zsxSU%^W^GJG3uZ9B<3V`UOy~jVqf+{e}5R^_;}vfb)~@qNEVmuQy{wRKtY8On znD!b6PBNSkr+UeY!y!gL7q3Q@6R$>fHy$HsUykpOC}nzok^l!2T#}$FmL=dAqvs{6 zhh$5ly1!x|qQtW!;3u{xVy!ot?tvC2sVDERNr?5%MTo=LE#$A0u!wn>H2^mmrVsRb zC}*^35TY0k7^H?iZxB{8`obVQ%P=Gv4Gb?Q<9nKt%Y(7{3E|`nK@yYPG6bW%BHinE zV+e|w$eYh#F2m2BQR}#Es1lUiI27+Fb^7UWHOir*5GigRj$KT8;s}iM*QQt}?ns19 zOie)$V@*j>>-DzRaraU!9;udU)5xck>dZ*BROIxg#}D@dKjqp>iwC`{f=t|a`Z#`% zslLa6OI2$*DpjrJfmC%2K2OCpKQzmy#$gW7CiYK9azN*M%CR&!i{!cKxTmN6X%ny< zmGUPOkPL2XF#ru2Lf`88D+-jLCov$HdVYIEiMFn}UO6 zs&)#Vqc6j^Q}8w5mg!?Qkx(RzlxIxC`zFpMh~Lb@Y*dOlvk@k)SV}M2YPPnMF@kXM zquB_cttyTP@Us67@JQja?{;vgej z>*R)oNHCyEzWXwk`oSe$UFzvssj?1i{NEAkhck+%vQp*lnoS)oRl9qdtzF7G@YHQZ zaxh6&tCF^C;vN(GXQMxA#i=UfWaC*JlXqt$9W=XNECcnfZM|$s@-LPn&5uT{ z;&r;3P+16L#Id=^lgr=0zs z=kS>wCedA3f$=Sk<|v7mh}(5}*MLHh*X!@1&Py@OUNf4>G7tZ0=l zQ~-L<0rX5cx)PE*b|R5=FRBt&&(Z6eT|<|om|4kcBrmJPOr}ux0j!T3?&Tv+<+XeG z+Dn5scJbvwAA)|7waWiFfI2^F?|~ZZBA9m&d+3!I@CjbgPpdBJI)e1;HIO%WE{rO} zlMr20HAd+Z8RFr??9NgmpFfOWax~~^N6^I3{5RC}rnx-frq*_dx7>(Bn;h7PP;cRS z>fG3-r;ek%q6q^zPXT%`AWNU&s-AOgl*`T`1t^sp&m-ALpWa88kV|o`yo`7!wu{?i mxvTQqJeSP%*3lnF{}%br4vyM3T0R%Y2^^i)>;!J$kpBZLzyA#Y delta 4325 zcmai1YgiQL72bDtS&?OBmD_TkT@Y5qyMj>+ZoOclPet>z8b#5jHHfhW8}p+Y0~OTz ztWX_c5V2lDQjPd{nIwY|saP+li}IvYu_E=J*kClqShQGszMa`+Q8a(%-SeGuzVn{T zH}h@zuI?Lmb>Fw$7e7cleDCYSJ}a)(7(Ue48&$la;!a^tz|`3M5=9%zOdP7PPenaj z+$mU0K?zMoirq0)RjFbWGr8eVl=sS{3{%n=>=XvgwF;l7-}k$>vNl(f&3Ci63Hzt! zc#DbC(!E4!)wJ&oSVMljr7d$d0HxBPxttzV!qEAzqfS~eKQjbPLd)`SG=21FIfo|c z@rqs?>I7rnX%d?9qWmJ8@>wub`O4f}jmE(1cpqLLo0m(HeT~r55sq(!M0&PKX^s}( z@X~@#)*RnWwcRPD7RLiSrTHa~w8UU;StLq@59qm5C@YI6mbGPj(I(_8$#CK^@}xiD6w>O_Q7znU2$S~L4F=gX)HbD6UUK zxp28YmVV=G3D;gMY&!cIC4BvCim9}O5(VWrDjz_FTz&!3-+# zsHQrsk#rZgcVQ!Z@y{$A5n?W-&`4xldM7T|MboR)R@jv_-o*>{_F}2^(hg9+iY^cJ zt8;PZVQ-S0m)C$w@{51vb`|K>m23($^{RkM;pWxfC0D!Xn%1im=F4k&tvWSMMYTay z>G^J+fpQ8(*WRO?bl0=!x#;>FY!sZ=?>?Wr;Jo4Ja&@%y$;~#Zov`(`nFh1!b^?ce z!unQ=fY!n6khIQr$$ROy{mvVxP%2KXA1#G`Hvy=S=G=XU5*5zen+m5C_5JIhwq)JU z$3E%K{R%A!8y=?9=w5#q%ruYwlR~vhYFirUe73fBr%=PJ~!?v?y_2x+q)$Du(gdb~-GRmLNUDHnqW6&RkMM zkjZdch{E+u2*N$SW~;t~Eg7|kV8k%@#wHgXI#;?WMmKw^0&6+nEr~O^6VkKNWQD>; zQP+nej76&q#a4Hxb-aN(J>867GRUji|81!coaIhr^Zf+zZG1OwNixGQ;f=sAu?YB!U^Pj>Ia40Z|yhFf|HI48x)o|H;ux ztxiWHk*&8yqnY9P7{y-C z%8FAAr^YH#@?vp_$*;yKta9QMR(Intl-A|A-iUNf@6Y04Wrp+P6~~fz9Ak1uf^tYU zCn)QS`yx_2Hxxc%YXVk#*mNek#-^OSzuFMvnTsH+z7ypiZJ5gkj2jN3koqj$J)3l?Fk4Ilamm@ zR1=ewdVSyt+__ZqhAE{g9rlt^ogJo>ih|y9$KjrfQ>MPOc+k5lz`%{6kK|jhR5R*gF-8eh=2Uj-}3?FV9NFJuR(I9*adNm%ki~ zL~t7m>9P|cYscd}ILDvFt1A&G(uc~(m8*g&4MtRo(P;=nwKyUTr{EO1i8x4GRZqmL z^kw+(MEnRGlj&nNj!-0wkf%<@M+UBagZOYdW}sZmnSl^-@dA3$RP_hX(ndu}fd!IiKpD`D`&K>6rQ ztmDX$<>W4h`)&h|n{$K9P2G{|e0dW>Sw^RpB5L+Kc46 zOvLL@A>Vxq3w*eCbpjSGAgyD);#b6ka#i>X>z6}m?U@;%b}Nbi*iYX+LY=esr}?c^ ztwXcPx?1d=jo$c7oTNZbHeNxsygM7IbW@hUT?k6FdA)Z!d`F(G@~;*l#fN5X>k_(~ zP+bV4#ZkG)lgr-2zm23R_yb1Jy;iJQ=^8Q`EDKF6L5P3-|6HUZ>59?pS`kO)6YJ`Y zEVp1Wg9(+Yu!01-{H)D?`7E)%M7(&`3dOut2<46`NPO>oOvhkk0quQEJW}AA!+8Z= z4WQL)c$h_Jdy<}z_cIegjrVd>&d!St$TOt9ZqV&QC(>TzyEs^UjAzmu^3zqgXhx%a zaVwy8pFsDRqaz{t!44#_?nPF>>^^%P!>jAC6w@nMjpT(Dn8qAxK8E?(jk|f7Q+X|J zz53SR^&NV--zT8IWR3C<2TjmBU8!pc$02FWe4oWRjZT@ugr9q@mmqd4OL diff --git a/crates/ide-plugin/tests/fixtures/indexer/dist/plugin.wasm.sources b/crates/ide-plugin/tests/fixtures/indexer/dist/plugin.wasm.sources index 74a149345..a1c8782be 100644 --- a/crates/ide-plugin/tests/fixtures/indexer/dist/plugin.wasm.sources +++ b/crates/ide-plugin/tests/fixtures/indexer/dist/plugin.wasm.sources @@ -1 +1 @@ -4261434b2dd234426253f07f7e7e3daf8676fcf5680a578ac1b99f503fea2859 +a5ca61ba85297c52936cf9892ccf1c678383641c84a5a885389b24582fa1abfb diff --git a/crates/ide-plugin/tests/fixtures/inlay-hints/dist/plugin.wasm b/crates/ide-plugin/tests/fixtures/inlay-hints/dist/plugin.wasm index c4f202c4f6ff4eedb6077396c01ca7a16ccdd6b3..e8710f3dd1f68a2b49ff612805cd40c1fab9509e 100644 GIT binary patch delta 516 zcmX>yhx5oB&J9ak8D~ru2veGT-1QUJgSLYW3|R{7jxQ!3b}K~Y+PMcHaW~I!-_OJJ zqiwQan9AnbkV%Y;9h(KhnAjLsOcsvuV%)JgE@lTCs?BbVs(FrnJ zpsBf`fq{WrfkS~sfknBo0myTFu{gejiSfnegfbx}#v7B1D^3A9c9pVRj4vj~G)tM! z=s?lRqQI)a2G#nb9j8>s=C#fDIDk&->5%|BX=#rdBak}N`;*!F1jH?0n;>ps2D*hy zfdgvf3W(%9s6#=L+zL!k$sLm>sR08_ebRdC4or3Ia4-FUI2mRL2QW+-5RTp~IGLXh z7(R*%7cv9G=kStw{J;=Q+EN4z$jMi?dNcNHR@~Oj$#`e-+Wi5HXC^y5mE0_T;0HV7 zm&pPrT)+ahnLK1Rkno10&FF*1H>KKF9_ cxtENq4Yrp`G5IjDGBGeP%-McQhN;RB09g3I)c^nh delta 520 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 diff --git a/crates/ide-plugin/tests/fixtures/jobs/dist/plugin.wasm.sources b/crates/ide-plugin/tests/fixtures/jobs/dist/plugin.wasm.sources index 9ae5dcfed..53d5b7a23 100644 --- a/crates/ide-plugin/tests/fixtures/jobs/dist/plugin.wasm.sources +++ b/crates/ide-plugin/tests/fixtures/jobs/dist/plugin.wasm.sources @@ -1 +1 @@ -d0c974dee4010d0e3186bd426e3c53d09c2c56861b04e40f2187515bbb81f8d9 +dd5d41490f53a3b9b03d45ee8aba9f3fb08dd9211e835db5d3f9f7c42d3b6f9a diff --git a/crates/ide-plugin/tests/fixtures/misbehave/dist/plugin.wasm b/crates/ide-plugin/tests/fixtures/misbehave/dist/plugin.wasm index 9ea3ecf3d4b7bbfd1f56579d5c3b832b537c966f..1c6092c273f859e4770671f11d458fed9907fe2f 100644 GIT binary patch delta 645 zcmah_T}V@57(UOL4V#K%jnOGxJ1&@R$Ca*S&=3zvSB5L1Lh{aj5JICX_2y{jBD*R2 zMjwSY!Rn$hI&p-LAWFfDZbC067$kYo&#d)B94f=8cf#tTAozH{?|DC-_j#VzdRT4I z8Hpfck48+uWIvl#n6}z-0GMW{qQ(}dFk?uA&9YP{g~tuUkaUNAi^kxvov|dctS=U) z_hd{^)wOL@PinJp>|pCY5I7!xO`vmE5tw6P)V}?nB4h3S zvESl4235JHVqn8kNZu<;^_AY7?MiqR6qvu~9A4TJJt-F~_PDp9A-hx-JXo>cBh zCnV`v_O(~@%v9hCYfVSV(TQ}^pXP#XrqBAZZoeO>3euiFPwWUFYx{1D`zU=TcNEk1 zYVJswww9XjR4CyDO31dX~RxM4VLoK@5}$BkF$$;=YO>wJ^oKI9>o#;>vEU$tdy31XA*)C4M=9 y5Py@v0~ExqJ*Wi=oNiUjC-H%Rc+`RL1+jb=T{60PFpr^4vLs0vaXpWl!@mGZPw+he delta 649 zcmah_O=uHA7~Quip-o#FVhBdtm`#MV*=@9qv4Wv=Q9M-|MO2Et)gKDdil?@hZOx@3 zSR8Sxr+CnVNiZ^pK`5HuJXD&4LJk$ZRJU3+c+gfV`lS#(C^*b~Gw+*u^S<{L=IaYI z$0L{(6OlAvv7hZ4ETMHA0t)PG)Y?{gQM8nic2#Ls!c&%IDQ1POM|D)#Zaskv8`NWT zp3x;m)7U}rjIn@<2y`9*fm5-!1bX+_K#@hd3|IMO^}k@9X|tiO&m?lRd*?qzCcB69 z-{K}lG_|o-z*b2?b-${#)N)1Ph`aqLF>n7xyb;s=Ne6Q5=|F31rd$;~QY$~Cn7OS? zP%$&?+koMkufb*3nTk?Hr&FOn$wiS)UGQREd>pO|P@ld`@A4rdJh!JjpSdj6Qj8XVuNJm{=Wk5c&Put7alU``!ma4V&j($jM7i*!5VHgDvO* zmiY}g&QW^9jf23NOnC6s0gD?xoJ2)l@!=kDO?GTYBQ=vJ{20R=zwgIky8YnC0y*aS zHvDbbS+ndkGkm2DF;ejcFkB^!YyTn0M;d-K!IBSScn!?S>wB@G!sat^B-M18UyUQk x-^KA5C3$xrnt&3gU6V@*d?Fy9^dNj$t~{XU=;NV0MjI3wDy><0D~~&4zW@hd@0yo}P_8abr(Z2F-Y&A#(wATXRRUFe+)AcKKB6 zcq+cPcBUY8SzfYm%!kYsWb0lAu99PEPgH|f{@riIEVT{fh;UJ_t&yqa8JW$8!pkNN zP}WS73<}lR^$cF#F@3H=kzA@XD)YbR^Hv?QEC^Xrx}=dZDraPsnxeeRX~1DJBQ)>4 z%Pfiix0$5!2e%D7Dmblk#M4X4*MkX)v8+R3=9G-1N_>RY@F1`3odi3Px zV2M8c`)Tk}VDmB;5pwQNK=rVR0zEKI`$K^PA7 IRkBFU59T?jmH+?% delta 416 zcmY+9T`0q06vp?w%={-`qcEdCa_`PZ3DJC|C`mq+o2A@{Tb94bSi4xgWGfewG|dW~ zGR4FV(z2yoS&}PdGB>PzDN;|{YX(lZ$yiS2-W4F67)$!@)rj%$!44?YK9nWFLH*`NCd@TDp9dc= zozla%Q9H%pqdJR@VU2gqT#8VrlxPh;>+kuT^*KdRsWRkLSuLkk%qk)^MR<=*kE4VJ z$!fbxFOL4FnXLI^Kdq$jN-*J`<#-D0-0d_V$^%XV`&{I=&Pqf$TssKzJ(oc&z4}#p za%E@1P9L7b6s(bd`#KvzvK>xBa9>BAENolNY(_De1LG3h{N}714sHn*QNwv$g9Ba@ zY7viGLJ=JvY2e{PV(}$j8){Ba^|To^0&$8y9|LaMe(3-X=H6odw-^el{JCYUg-I$= NO!SC~e*pNZsapU5 diff --git a/crates/ide-plugin/tests/fixtures/path-events/dist/plugin.wasm.sources b/crates/ide-plugin/tests/fixtures/path-events/dist/plugin.wasm.sources index ab595036a..6f4fdb848 100644 --- a/crates/ide-plugin/tests/fixtures/path-events/dist/plugin.wasm.sources +++ b/crates/ide-plugin/tests/fixtures/path-events/dist/plugin.wasm.sources @@ -1 +1 @@ -3eb9c513691e5ad323d4ba6520ccec6305049a39f13e8d74dccb728ab2f0ffca +d047b5618051144ec754b481b6bc75fae428d96c83711e9f0edf78749df59016 diff --git a/crates/ide-plugin/tests/fixtures/private-dir/dist/plugin.wasm b/crates/ide-plugin/tests/fixtures/private-dir/dist/plugin.wasm index 637aff4812b329a6f33c856de1ebf02fb3dbbe3b..d437b5359264c531dcf12819c8db73e8ee32210d 100644 GIT binary patch delta 4217 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 iJpf^U-7Mg&0^O$;^?YwJ6gaKSPF delta 523 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 diff --git a/crates/ide-plugin/tests/fixtures/symbols/dist/plugin.wasm.sources b/crates/ide-plugin/tests/fixtures/symbols/dist/plugin.wasm.sources index 3d02262d2..afddaf44f 100644 --- a/crates/ide-plugin/tests/fixtures/symbols/dist/plugin.wasm.sources +++ b/crates/ide-plugin/tests/fixtures/symbols/dist/plugin.wasm.sources @@ -1 +1 @@ -162cde1d53b72a4c88a98cc51a31a2536d0506aeef60e15295b44c682be50fb7 +edac658f8a54e396f294c74d031a31787508583256659a8effa8cc3d330e9a08 diff --git a/crates/ide-plugin/tests/fixtures/tables/dist/plugin.wasm b/crates/ide-plugin/tests/fixtures/tables/dist/plugin.wasm index 1bc80c745bbb4df40b8a7f9ece7efbabc5a4b719..44219a22a437df29e61f419d109372fa5c3890af 100644 GIT binary patch delta 4152 zcmb7H3s}@u7N6gp0g-`30hRYK#LIkqqT&n9F*VJveAaIE{(KRN;-gFx8D#R2<3bI3 z6+uwZb(3ACA+Ob67nRh^5?fj=$47?Me$h(G?q^?Gd;a%7|8X$;c2_>pn2iqyv_M!#;Vw_{5 zpXgrVXo-V|<|Vt=ZhsSKamQA(Ksa3qZ#{x?cg|ax;iz+OJ2)5w=MSxB@u!@s>#(ni z>~@2}Y=MPYOcs_@XeZgGxa@~x$zKJ1*0|q0{6jceTs5CXqh-hO&lq_>akdL1{rS&N zlCbNGxZt1`&EFXpu7;!Bb*VX;-Ez7vH%Gzgj=Xv?D7t37T=0x{L1yWoFXj&YX9}RW z`(OLfh*PfKH)v7Uc=}Xa**8+iS@Dg%l*)r`u|&<&>Zf~YTc`VQN~~qrW`svP5QuDZ zT-{c6gPCl#~#IrXxxeB%&{HfY(}ah1n~`h9pd4Xye}`<5gBz$!DZs4C?rv z6eOu)V+uAv;j>cl2+r}^RAhBJCzG^ch(S&30Kb)rbXqed4ZV}A-joz?T&d=4v>8+z zX7iuHXvWes{7f@mNyjKO3JUA2k@DNn3uCD{#KqnKI&XSI^)yB&(zZ#o_Ca^x1n<}v zCvZZ1+85jIVa6T(kWHa}-;W4v(vcL4y~6k1THji_Yf=^*d${QJLYY)AdAsr^tM{FraJCb z1zI}zy0Do)GZc$a#XlWN8C3D1S$Gz^d07^&{hAG4HVn>t4-XTIhvOzO%5z5&WA$Ry zNTf0%?zz#_Os7Xt{Tn$(;~8yeFG-!oU<&nwRuHvMhKZ|Vs1I;J^c;)1ls?})4wG%{J161c zxDu(b8q=7`O5Kvif*$sjyM(t+!cdg(o|7eHPevk1uTMtyJsk#2K?dmuO~L)Ni=LT+ z&4J9Zf!}-*(^Q-~4Nnk?nrT=W7+ED3PGjAz@GV#+9(n;4jC%dc>4@xBxf3@mxBF6nPPlem+fvzvl8Xx}Ow25*EkW@K>z5D z6ygPPd;dy&Ll9D=yWK+4Ir2{M?;;swxGjG8nlAPZLzGku2q`RpSt4Yw41p(U^5ItlR4m%V)2{pJ=GF zQ}Qs;DK&N{%6#tIQP6w6q+sUy-=<*8dPxC!|0c-0TNs~jM-v` z+G5Gc>0-$VE0LTOl*q!>mEfxYG>c6e=@6nvzzvR`!Oo59(MQKvxk%rHjwTxKSB_jX zh;8NQ3Dk&BDsY`{YJRwq4&??Fy7C_@VUB6qq)rWcPk++c&UoKJwq~ACMf|t%e^lXJ z=Ge@ux6#Ha6<4<5Ux0_l?L>^Yv4g0m#}o;N%=E z3MH!0v_-Xuv#TG+%xQAb^rT37B*Iz*QSdUCE%=-$o8OR{bd%9>A zLAnJ`bR%51_uklKpXg`5;%#EU!>itw{=L$Lc2cz4r;GM__VQy(^YfIan$?MQZtP(L z^awN_+sCMduRkE*ds(#cIr|aK99#J6{nSCF;?REV0c+zbIpKW80ffS#)+&NmsozV* zUk)JEL{0m51uq5=-6M`rGIc6+l`KTzQ6%FO z&(PraM=_Y%>&>HhklIUp+CYyE<|yNRkI|)3D#jf{Rshv|)kk{eP1@jnCfmtt zvL$-S8+yTo|Dz=+Hv1)dOZmWjQP#cJMd@U$Cgrq~{B(K`>2+`4bH8ZQ{(EyiMj^23 za$b0e*z<*=2Bt4?@237(4ZTi$eF>j;M~kSx2^jTO)PD^5Z31!rC#2$TgN}Z^8habj z`jU6{h3Srkn0y zj_Sf{D5oE~u-V3$bOfo#j=m>CEGF-UF4YuzlJqw7DysiSg`X>Nuq&I%&?J(gSfh$< zF>GfLszurT?0NO@{3)3w(#;Z=!jhPyLX1pd5%kMY9y$bh=}bR@sJpAvSr7X8>Q#zw zA7Eb^$<@g|Y@qrRi1lSX1JT0!3}klNKl=u<#iP(Fl9#hd5DW9!a@Ns6{}}zZh#Lhg T6&NdG3Ym+M_1+>jXTW~|m%YfM delta 4149 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 L$Wr988QuN^X6wZq diff --git a/crates/ide-plugin/tests/fixtures/tables/dist/plugin.wasm.sources b/crates/ide-plugin/tests/fixtures/tables/dist/plugin.wasm.sources index 9f19abbc2..02312108a 100644 --- a/crates/ide-plugin/tests/fixtures/tables/dist/plugin.wasm.sources +++ b/crates/ide-plugin/tests/fixtures/tables/dist/plugin.wasm.sources @@ -1 +1 @@ -aa7327f38c6277cfd7751b921bd43ac63ab8cb615ea428ccdfe9c4750606c6ad +28e1d58c8ab50574e184cb401050a6fd2755c9398cd3a3720dc376f67461a44b diff --git a/crates/ide-plugin/tests/fixtures/web-content/dist/plugin.wasm b/crates/ide-plugin/tests/fixtures/web-content/dist/plugin.wasm index 579f2ab81bac7fdc06cbf57a0e180b78eeb32baa..176b52e9921cbf2775cfe798c874656bb8d4bc97 100644 GIT binary patch delta 4104 zcmZ`+3s_WT8lLyeg>ipR?t|KHWv*13Y1v-dXt%{yhn!6f zRPc-(YsrOnEKP2Du%k&X7MqxqRyKM&KexgsePQjiM73?)Z?La0@O}-C2wy}zlv-4(uEwz~uO@&AyEVbggj!*C zWK4>?SXFM;w(2x=FqNXU>ZbcIQc>jbVQ3a|vRy*a?cFx7XTRI}6e|P2ApiKBK-$7oj%jhX3 zFN+9Ao0PGp!blk(EsC;J@NdOL%EY{Bs0n4#@Uq{5j5fUS0Lq0EZ)BicirHMnab2r7 zR5*qIlqZs}zVb_GkSp{h%{c)k7IaZilmCt!fh5D))l&hsWE3#bKGtzXRQMz*%5Vds; z^K@UBL1TNXH1*whpjgP2n@}vJ?5?gwJ zt7}drIq;rRDPr%N%=6CrJMCRc0Z#DlLaD2M6>wU5ai9BUp$0WPL!t5-1hfd&{m-La zcxiuvqen?QFqsx-h%-d1phwubKM%D+$_Gp6S^PmRb_<;!blzC0(D`A}O;@v}gN>Jr z2@Qpe8lrd2M-BAC4~nS4b0cT)<7R-x`tk}&d6I~>&b`V-Fa%ICHAxuER~CQL2n~}TH5r#H@LALk#WJcxG)1ZS);n`b#>L? zGU^5{6W=EMy?Z3*5rx%fo?_5-W+sEXzgriox^bDEOsn;~huM0%KZC&%|4$ff_RnI_ z z%)?Wi4>H)>`40v!cRkIZqigd}-Ox%Y8fWM=@wDqZx0ESGbtf~J(4EF$VR!oI00&b8 z>iUv3$rK7Lr(j;b>CR2iBkeZ2Ok^3Ll)TRWKAkx){(d-v9pC5BEs37{hUg}>#w1g) zes0g7Nu#~zC8oaM{9_D0Jg+2p_IyIXEZ$}5PmxrHUzor&=UzzERGcB1T%?|^g%w?R zA=RN5Lqw0{-OH0KM!ox_aQMPs^`6p|O+C%O_z-jY`NdR9>4%Hyv3k;xIRScTpT88( z)aG5vV({9fwf$afXyNZ>}l~bzB|8789?vF}Qq9(M;?6f=So<*o18yhe-^c$KpW#@za9B zZ0y9iz)no?j+hBNN4DZN;2^_14lID^c!+`9>?IFmRpb}5lFg4Cf7cDy|5q55}(-=4p z>fw!XSq4-PZ^h#*P`(xawW?m6Mv;%jQ1Q405p0WMJH+ZiSk8poY;Z7~X;Uj(VZ$;e z_u4R#;dncm7$OvXXcG~Jvvb6*%T0xARPwT5FIQ`r=bc?{2ot28%6D6Gg` z5m=$n_*|4qQ$>_Y-{Qf@)~hkFYLrMzW2unt!T3`k+(0Hh(O{R8xHlTZ0|)7P!p=pj zgi)wO@z*gp#4PTLRpV2H*PR-RpiU?)0N;lPg62s~j#IgNBu?e-%Q$r^Y(wz189j1` z1CLT!>%ARJo;Gv7k|6f$G(lm%Q4<*Z zT%Fd6wM_77LJbpIRJCyMYxf}9(a4a6ZvalR5>cbV_y+49nU4Rr^uP~@zLF{~4snNEQft9vldzl&VUw&kV2ltcYy{ahp&@_fg{}EH=`SA5%v5J~5X; zodOAU>jz9tXyB)%PcAOQB96xF!e$&{c%TBi2hl*dw^Mt(;+xwsg7a*Y4{S#a{qj>9 zs}rt~L9Mq0rLW!^a#{^;Wk*vJf3*XrjPS`hyD%Qa?y7e&#)4k4t{!fRn(;oS@F*Aa mui=#Za398SgADY?(f=LtYH%sQBXTXr2^^h-DQ528wEqK~8`#_c delta 4103 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 diff --git a/crates/ide-plugin/tests/fixtures/web-content/dist/plugin.wasm.sources b/crates/ide-plugin/tests/fixtures/web-content/dist/plugin.wasm.sources index 2ad738d45..7c51baa74 100644 --- a/crates/ide-plugin/tests/fixtures/web-content/dist/plugin.wasm.sources +++ b/crates/ide-plugin/tests/fixtures/web-content/dist/plugin.wasm.sources @@ -1 +1 @@ -afece2c28e5077507159da59a93a73ede869678d168b3eaa7345962183417744 +e80605523d9aaa1c88c83deac439a39a739541bdb327e279352441547de3c232 diff --git a/crates/ide-plugin/tests/fixtures/web-log/dist/plugin.wasm b/crates/ide-plugin/tests/fixtures/web-log/dist/plugin.wasm index 348ad27aa12b31a108f1580c4f583f42e9226be2..5671f3313d7abc2bcba37f1cdd114e8eceb75d28 100644 GIT binary patch delta 28294 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 P5B>i${lCm~>6-sP;Rp@@ delta 23591 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 { + let log = ProcessLog::new("bash", &["--noprofile", "--norc", "-c", SCRIPT, "log-probe"]).toggle( + "verbose", + "Verbose", + &["--verbose"], + ); + host::open_log_tab("code", "Probe logs (code)", &log)?; + Ok(None) + } "ping" => Ok(Some("Web log ready".into())), _ => Err(Error::NotFound(id.into())), } diff --git a/crates/ide-plugin/tests/fixtures/web-pty/dist/plugin.wasm b/crates/ide-plugin/tests/fixtures/web-pty/dist/plugin.wasm index aac232f8d265d2cdf8a8a61dbd007f4e95c9ddc5..df2e4016d06eb2495215a339b2483d88bd1127a9 100644 GIT binary patch delta 4123 zcma)83se;672a=V7giPo6mSL9*~JHV6ypPkik58@)YL>{k2yXfs5Mb)9%_2DHqq6y zjcr0i^Mk)pt45bZ5fjW{h8Uul;v*bvOa(QHuf{e;NCaICM%3QfomtjM(z1tp=l=Kp z_kQ>B&-|rz=JGmo=^Qf@`C0R4L6J3u2Mw0x21mWdE7{QS$+KEDDMnSf*7;1J3Oh8x zqzYR#;oRRVy-woP#io3pd4;BQYdl_6w&wYiO>%R1Zg*5LN4lLYOTHfBavgLUa;0EL z9$PwKL7;eZz=Qx%e)5rK3pUA)bOk7(?Y-pgBhQ&o!&)C3hk7|{)Zu6}vW`<@(YQTn zs(?nh@AOUr>e+}H)g+j+yM@FzdV@vWTIqBe3>L{KnWUhE6;6^Io0wx>ELz!gqIvS- zdFRcsC4W|-`K<*hShKB=UtHK5sF2q!x-AldHH+g3(r%&^ta@>8Y+}ueKR_OPXGuJH z+^pTC1kJ$^w zStw&46(`X1nc{V{zF^ll!d9^>J$#MVzXQVz28mkFf=iMJ(ZG^qY-Kqm(GTba(z{CT zk^Y71Q8>;P6m?}a)jeg?`x`{cX6v3YK$-mQhd|`|zpAh^!weeM_3|Cr3c=VsVL_T%q5yxIRiUbQRTIVGi5~w^V(e_?a8y40g(}1X&*b)lY-7Y^>&cpdXtIgr>ZRb{A6OXa(-n{ z^l5LvM8Rr@-c848`H6r3P3Z6OtAsFvkf9a6W`kO(M8RMe^$m8TqlQ_p^rRUcapgIp zMOVfXy>TT!)aS!)l2nt`-#$&t|M@nRXt%2=L?>OHNVMo`52A;zjwEVqm`XIeVQ`3V zs}wACU`=;p*oO^?q&VBqEk?&>w1U+!tMI5UGcX-&8YxBwE@U`AVzq{6#sI_TOlt0PQe$yH@qbY`7N4`8aG-Y?yeU^)M zBiZ>YNpb$nQiYxl=Q3N6 zs5jQbT%N6Z!;F%J8urM|$>ed>%_IW2=jOm!Tc{bkW`dP7mKEV(xQ?c!k(w?@$R zCvL57^BO{4uiPr3<-#A-8Xf&%G0}{cM~VKi`z+Vt? zh}aM#Mw+!!fp-rE%`(plMmJtbA18nGKv+D-1Ue|3n?Pg4*G3|W*fA4k5*rYNZ-{jX z_68wG8+&Np4XJ`ToCb!z8~5>eTb3MV4ALPO`2@hqCz8%iXRx8xhN%yvq zqzZCM>`Z5G|H7g`XO6!f!RXke42j1oQT5RS z&!bG~E1@4rFAul1QaM~>F8rbg_50tc_yJ? ztY-H_t*Bq29*{aL!7a_2QXSpL+htEbp*=IkUYfvjnpG*NY zJ7Amdfc&4QAmHX%z?){ls$F}D`EYqH1gbi^x>*i8unp`16#S&ic8AfR`e4(80b%+e@RKc Uul8-s-pK+J=(t`Lgu{LQ3rTzmuK)l5 delta 4119 zcma)83se;672a=V7giPo6mW%AXBQvf@vT5qv}~iGrbdlD=J*JpsfkkaP}8HeK8VLg zYqz5L#os86MkPU9Um49%vr$adC0+OvD^o%`SW z-}~LiKl4|dG4G-ObTf9#FPJ|Li#<|&*kD;=aMozNf(?wGFs)IO5>%B>6QBy4*9GiN zs<2)YF8#gI?<7fGtSt&y?9-Gb8n>y+Mpr=jrQ8r*&=D2PndxAQd)z!;ZzHmbIRgh}x~G zlLXYt-KVq>aGnjxts=pk*CE1I>kk%lcWGgv!C;Y$l1U0ne!Y++=X&OxnTRGfh3E=- z-ptG9#IirC(1O;26t3A;$gj-l3RKAJ=H3$t!RmQ7g0z!p1*@9Z73*2UyxmyA-kEPB zj|WvMe=$G0HIB=5Z@eQC+P|!fwcr}tRGfrs@`uIkjTH0DTXR60Mr?cvF1B`K8ZA|A z+^J?T|LsgP61B6lZ=XY%ylc~50rf0@OCCyCMWafZ4fD&&3i`xZuy({f!Ni5QekID88ob`<@>S~LQ^q|-~S0Q z`SSkFEm*N4Wd=^MCMADW7dvd@TSd$DYWH`O@k&3P4c_o{9pkKuK zm8v~0*UF^_Rsg5uUY^310v-COfC6n5O*6`ZiM3&;D?Kt`T;&M)t#=ftY<*wXL2asl`~01 z@1Ge=G~=vF=bp6_Ej~M=#a%Jy`jPg@bDb&ZjB{^=2|gDSFHcfg-sK6zWaaYGu=rE{ zfGL920lk~fQ}WaQ{;SZ_8&nBV1|dr;{E-c6rBVcgL)14ojLsv>THBdscu4JwL`!Q& z6TMwq6dCa0FiEP(s&Ag9<^Oz>PPD`IG@|3Lk0V-oy%W)+*M|}{)=eUsSJyuxuvH3| zTCw^E3GDs46jFRq*C9d2WpqRgkAeovE4TL2x%0B5Z+}hn)o+gx&A3rObjyuRR(+3| zpok-N;7%`_cykt+9J|?-=(jh!6Sda&iwh<>JZO4^<<=)a&vQe4UVGhVh3GJnU9du4 z)~2B!IU3#|5q+UyEbUSnvV*wyh<0O$aobyOkimvq3(2_M?R=v1Z+GvfWgnI<>=P|Q zR^X@S8f;8hGd?e?xjm3Jw{Em)k)-f+A;uEe;|OzlSyp3eQZTc0p|i7au{})G8|!7u z8aL|=GfEa}Sf4u+$m8-msRVHEoxZ*FjAO-gVP*@po#Cj(<0gXjan`M1SA(k6@o79Y#qU-5iDG-CIs3U*GFZwB7fg6K(ij zboD*c}_Sw@Jb_G!RVo|c)kgAP&hY%#)z+pMI5n{CQK#PI}BeFYZvYhLXI|e z(!3ke1#>hF41G5q;i={A8mPVGNJ^xCKQqY4_}px_NeA%$yDBpd`@TljlA^ef}w(MwKA&< z8i5*RYBvlc&WR@}hf}cC0vDe?02ATnR|g=0Ul|SyIiqJgIV0ANC#E5Smd55Ijt@+u zSnj~{WO`1k@gtA968LmF4N{CVMSFc{DzBzWX;$#cfk;gJ8U1HzNFR|72W zN6>jq@~#O@AS5&28s+pz3^vg?MUTN`b)1NI*Z6aJ~h10H2<)DHnpWGbA(KYYVkvRl3t?Sk4*tJJ7innfc&4Q zAmrxh;`P&D)iLXwBDQdNq)x%%Dp6i}9-murO&Pfm5cQ(zqm1T!l;12tH?@1N!XJ%1 zrC@BfPT3nUU7%5S zm*AAj7i~gCD;mu7?Q}+bYx%_OaM0&t;daCaOV?8CcDR4`1*Tkaqr0G&palm?@@`xe z36M!f22i35*@qrsxW)?((1)v9sXKrHPORsW4_6h_1EdHh!C)}hl=Mex&$9OC3QVA* KdP@+Fb^9-yVg-l* diff --git a/crates/ide-plugin/tests/fixtures/web-pty/dist/plugin.wasm.sources b/crates/ide-plugin/tests/fixtures/web-pty/dist/plugin.wasm.sources index 9a8893eb3..c59478b01 100644 --- a/crates/ide-plugin/tests/fixtures/web-pty/dist/plugin.wasm.sources +++ b/crates/ide-plugin/tests/fixtures/web-pty/dist/plugin.wasm.sources @@ -1 +1 @@ -ebc3a1213b97addb5abcbbfcf4baaff3f7644d1b60b62e2f215d3a35f36f221b +009f7e069920bcf0e7699b57cd41954dc1dcb620977e081c24ec58ef0a9809d2 diff --git a/plugins/README.md b/plugins/README.md index 71d4af20c..158a7de05 100644 --- a/plugins/README.md +++ b/plugins/README.md @@ -1150,11 +1150,29 @@ five-tab retention limit; evicting a hidden tab stops its process. Closing the tab, disabling/updating the plugin, changing grants, switching projects or closing the window stops it, including a pending spawn. +A plugin's code opens the same tab without a page, from a command or event of a +window, with `host::open_log_tab(key, title, &log)` (WIT `views.open-log-tab`) +and the `ProcessLog` the Services pane uses: + +```rust +use openidea_plugin::details::ProcessLog; + +let log = ProcessLog::new("kubectl", &["logs", "-f", "deploy/api"]).toggle("previous", "Previous", &["--previous"]); +host::open_log_tab("api-logs", "api logs", &log)?; +``` + +The call fails at once without the `process:` grant or over the limits +above. The host remembers what each key runs in that window, and the tab starts +it by key, so nothing the tab sends names a program; a plugin keeps at most 32 +such tabs per window (opening more forgets the oldest). Tabs opened by code +don't run in remote projects yet. + The built fixture `crates/ide-plugin/tests/fixtures/web-log` exercises permission refusal, continuous Unicode output and a plugin-defined Verbose toggle. On Unix, grant its optional `process:bash` permission and use its Log Probe tool window. Its `Log Probe: Open Stream` and `Log Probe: Try Undeclared Program` commands -also ask the sandboxed page to open a tab, exercising the Wasm-to-page bridge. +also ask the sandboxed page to open a tab, exercising the Wasm-to-page bridge; +`Log Probe: Open From Code` opens one from the plugin's code. This extends the web bridge without changing released WIT signatures. ### Plugin-backed content editor tabs (API 1.3) diff --git a/plugins/official/ai-completion/dist/plugin.wasm b/plugins/official/ai-completion/dist/plugin.wasm index 6f4d6067e5da882069b67c34105fa4b643ca0e38..90c83adc3e9a46bc43598e7aa9bff108354b6591 100644 GIT binary patch delta 659 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 delta 21253 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 qOyf88_Y;{O42J>mlZ delta 4079 zcmai1d32Q36`$Xm$zmp(C4rE|%uG-~2nu3U1kFGp$Qn>UXkBoPfw~p7MKA$UM4Ccs zVs0P_NdzItki|q_kO2ar{k{9% zo2lrrm-N`1HpSp%%jTF5Bh!m&4qNO67Pr^H4gk{Dr$Ad z5(D2j+O7q9jIt&=n&y(D{VeL1HP8P@$nAsYwX46fZmqvmwMyT zPsL$KM*pr|VG!t-^%3}qKrijT1|PGyJ_>13k^R3@^T!9MCjo;{PlpoNWrGeC^6LbA z5t-b!Nw-;7SZJ}>9l{Zjv8Ir}-9Gv6G~59AWI{T=wc;ejW*`-9G)e^@P0!%fdU_@U zji{jXVXWLh6E%>FhaoN&C*@P)P-jK2v}YmDp4L^PrpmNfVk~+NrzO5h&E>GTyJU$Q zxi(bDo~d}A8KC=eFcVc&n}b_f`*{xbs{Iwsz(f?$;Th;hn|yyJnpN%cId}*j>X-u; zOXud`QLg3Qx$L=tUYm=RskOCg>XBB9(`Ly(SV;u&qFS{=+KK8 zD$D0#EYMEA`8bVwx#wQY7b5UF{jdNlv71&dL=L=kWFazGIl|90a4WL&F>D7jyW$DlV(-w9BxWXK&+158WyFz_$Ad6vSIUiDm9x7+z*r^=p49CiG7ehQ@3BxkNEetipbSQL| zkT%#X%;t)k8Uv#)MJ89M2U(%vTW}x4sxA1CVaisXI)xgxqK08kB?dD*UdcPA(D6#X z#1#6r5;rmotHQWZ!S<$_-MLLwq|+7+yPhtz<(*Y{XsB6Jo7H7w*C1UAU02PUq0qc) zI2fL<<|**fAF44e*hiDqX$x^k--h*UvU3|&u|q};9%d-2(Q0h0K}ygs$rV0Or9#~` zxPvW|YmsW0I3lt{yjgL$TcKIC7@1=BW62W3+=Z_=!>#7tDpXR7T64o}4m)qy#5yeG zsHJs$gL&yd9mb9^dyStPe&q-6?#3YWe}2=;B+ri6LVrPBDD9Q;T!+F05v$ zVHYwPx_0634DZ)#mjA5B36>7+)@JJBZe+7G{%zzXn5mL-Leez7jaz~%385?hd7Gap zh4T0Cd#li`9xeLg9(Y-D?bYg7uve?&)4doEMMgFtO&!h~8u`soXhx&vv9b|=WGTBz zoA`nzP1)Fl-NCGv)w8@AS-0tx^2N;i7s)p-LqeQgWIL?pNifcBf-5|<v-s zet44K!z)*>c7f!PQKD`;>Ti62R9W`o6T_&LLSZ5o$r_NgSu=6(E#uy)*jjgv?A zYebFkYD7Kh)s&+Talx%#tPY01jIF5$v^!?i0XTw3<_b>UIiPWpa1duXSKy!-wvr_u zM`t*5NTXnAyGB8IySAH0+wo->U-gY2@*O1tnLuT{KYgHGkTlWO7Dh3IcDXpdwH*QU@HJ^cGop@T6ZiD7Jc_YC%cspc(7pjEwGxJUoqrha>+rx(L* z{Q95p@166N8XwILF5l++0Jn7*BW-|UJ@uz4m;pCm-U>HvZ zxy5b<_hhk`_x{{u@uW4mqe2^Fvx8`d%{X;c^z1aw;?W@4qnnwS`LB853 cri(CPu~_c5{YT;=B0FrwXNN9btrVH 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 PjMMjJ<&MYLGwJ^YlMff_ delta 4388 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 delta 4187 zcma)9YgAO%6`t?T@Ej0Ol;I_p@r4MepraB*Z$yb&AE?n4V>D{w17p)9ZIlLetkZ~Q z5;1r5_&|k1lcr+C%-9SU#JZuh=((BfRTJQBg5Za!hv<%au`_?&{Wz4$3rk{9T3%Qppwzi$Z+8L3 za&hSwBs^ah9~@Wuj_NS{qYYN8PG=MiqMzvBXT6mqsa8I?KL%C&x7zu|{>y$}|O`h& zgMT#-M85K`NT+n^IiOnJT|XH$@{Ri8sCLF*KA^I3t|1GR^qVLTymB55PFy`C;8WSz zxBzu>k85U9v0Ph>@8n(AhSP8Dwck?slds26wo9&u01o+$8`EKvV_Tw~^*4qBH|4Nf zSB16`=iOU*0xIP3cis{nmdGdXOhBU?)YL~6(werxCD$}fA`-%yv%+e5G7>U%YWP+1 z+~$G!lWc2F>sMRM>G^?*q7(I!PSp^k_WAE3`O$fpR%Zpihg>f&!?RkH$!rd zi99SwE@#w#%0W$Y>`_K=@mAHT2&vTB_NWLba;|@D?ZVHt?#M^cwl$E^$|8U_;%x4m z_i8N>DC$MM)({R>3dF#{jsd?$EgK?W8Np5g^Kpr_3HagX$+9**>|GC!R=zc$O`q7{ zj#V$MKUYmbOF_hONIvo1!Y9K2!V+5%sXPfph#<7R$38PcWT{3Bg_SKZ;stH&V-i<} zU?%Rc6Ct2tP*;pr#)V=6a7WqP4X+Rl>_Hgv;7}%pV-irw91*b5dL^bi%Jn3F))UiV zRl<6qr#js)3R$RPi=yzG9=1K5dS0@z+fm4kFX9tseUe}>Q=23Sfw|sd7qO`(JVkyt zyWxxpi6q@LVOf_37e^zV=C?@h3r37usm_jgN5VnN4+^P79 zs@j!7syj9+1r~x|rC>P02PwoKElNQGfhiT)1and`m*A6BWDs0WMJ_>F8sdAo4XVrp zj}L{`M=oVy8ff>r*e?fT7Qv~(I76^`2sNXN-5Y{^CeOk^v!AG+=m}qPvC5%TNEeGv zM}LB`=}0D6k&g68Z@S~X>UMT09lhX9xhWkBNPS8Mq6l8jAhKO-M+QWKBN;jU^Y!$9KqELBQZ41 z!&LY*Z`xXH+_)GZ8uJsiW12iH9*NOpp=>1H^O+7N(@%{;B~9EM#Yu_H#43{HOpGM> zG812UOA=x>i25l$XY7-wu#uE9voM$-KMNNKaz=AIt43oDN%ux0m7q^H>IpE0YYrWQ zI+Fay^0vtwi?JlVH5SVvJvo_tJITc!ke+uYvi(f9gx6{5Aqig)6h6(ZS3Zs7BrPAu z<0u)&w(H1BrckT6*qJG?cojO37d{nRNTGBp z<`MjND(CR*G&MY>Z5pg9PX&2A+UI8>j-AfKM>O>648HY0p224>&%iFP`3}t3XTmbV zouOGLsX0=91d%*dq0^4(#M#4{oHO!!!&4DKtw=QcY6ik63i2Dzil4<=`VN~-MRl>% z*_^ExXLGjdXY+!0pM&rH=-j_Qk4`F7u)O(52|n)Nm!v`ZQrS2kEqWSXy$CDOs$5@$ z6yTE5<0br?E^_wGT12v#B?zTkl7DB>cdU)6>%%>7ElA&ZwwZ&yw1mo2!P1uE2*q@B zDUns93|Izw5!jXZe7c{gYJ{=MniVKFqK+l5!gE6F4whGr9&F1hgbKEuZsAxF2@XxD zCjmBgWfc;IR&6Y5HA3U;+uBDX>BMj;Nn_W}zA1-^92OSR{q2?BU5yyevVHFRo|Yy0 zmTfOUqDMi?^8Zoj)6oJsTu`9;Rn3u5QUH_3s^{@5iYD(fqfx0XzCkyxh!MoDehv1kwWR{}3fX>-za4{}?4|ap}xlJvBqz*b*-X`=D9y!?RP3WuQ z-c59rI+XL9==4K{67>#VK#Xe#FPeu2Uvf3ddv;{`QL~)eN|!&8LD-uu-G}wc85y@j zY35KFSrl4#F%(eCJpKbUhC^+PNG6ukcLo3MW{?iJ!-}I@-NnbkXzceqR11wccB@46 z488AG8$m-h_YnJYIgD{NyE-*isIR_VH&*Wo-fbF8ui$0BQ=#=hB)eQe;n~^2pN(|V z3H0IrxzQ55jn=3P`T!S9C{g_W z2IxJC-lF-UP{flMfX)g*J_WY$6yJe`929m6GmxQ$>#=9>sk^tdXClBi!HCpeA=Vb& zgz;1{JIg+;lCI1-jlYLbs0rVq$)7ey=mmaUD;ID8jmpaxu~bio*gxt?xrRMap^igL zT}Njj-v0w@l%bdLvH+XH8c?g^vhVT7K-4MS?$CRP`s~#vb$_v~P3mo`9Bx8Sdi3+w z@YGC8fld$qc1gHTCB^h3lGW|5iSzE_ik_@zKcH<*F~8Y{6n~Vk^2c-;Ih4LnV8}tS pGH{$Q5z3o6LXzMo=ybYS%7+t#0l;eI>s&z==s$+VlZ3-5{{s(}t7ZTI diff --git a/plugins/official/key-promoter/dist/plugin.wasm.sources b/plugins/official/key-promoter/dist/plugin.wasm.sources index 76dadfcd3..3d0ab2bcf 100644 --- a/plugins/official/key-promoter/dist/plugin.wasm.sources +++ b/plugins/official/key-promoter/dist/plugin.wasm.sources @@ -1 +1 @@ -64d1e9a8bf48355f380feba052ea0ffb5f4ae7957b04d0a62a04e1d49d6ed690 +9fca272eec5a601b8de6071aa358954e9b79db08f45714f077624418e8f616bc diff --git a/plugins/official/license-header/dist/plugin.wasm b/plugins/official/license-header/dist/plugin.wasm index 8715bb6eb3eb840d9e8e51712b259f51ea95a4f5..57a9de4964476178cbc9b2969a5c38339255e45a 100644 GIT binary patch delta 20190 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 YF2Z)Hnfuly=4Q;&$-VpvTh!tI0MD&&=l}o! delta 20286 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 RU1M&>^4hz1{LGfM`#;;rm>2*6 diff --git a/plugins/official/license-header/dist/plugin.wasm.sources b/plugins/official/license-header/dist/plugin.wasm.sources index b10c379ee..60a829496 100644 --- a/plugins/official/license-header/dist/plugin.wasm.sources +++ b/plugins/official/license-header/dist/plugin.wasm.sources @@ -1 +1 @@ -ef76535391c4186a6373ef61197d96cc3ad7c42f47505ec75328ba5385e4df6e +5adfc0d749feabe5fe7e20857fd636d01341b91f3dd8440779af6dcd14435619 diff --git a/plugins/official/mybatis/dist/plugin.wasm b/plugins/official/mybatis/dist/plugin.wasm index 259540c8f661c4734ba25c625338473eb9518740..97883f1e223c529d39123589a2cca4933700a2dc 100644 GIT binary patch delta 4504 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 o9V$H|iI;~w0rZnOegFUf delta 4501 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 delta 745 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 delta 4357 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 diff --git a/plugins/official/string-tools/dist/plugin.wasm.sources b/plugins/official/string-tools/dist/plugin.wasm.sources index 8c84ce4d3..2d44ef4df 100644 --- a/plugins/official/string-tools/dist/plugin.wasm.sources +++ b/plugins/official/string-tools/dist/plugin.wasm.sources @@ -1 +1 @@ -548c6ed16fcd5d3a053bf6d8417d52ebd0fd74138d0665e9205eb8bf32ec497a +f4e37cdac925f376bac945d5bb86c648b559787aa22737e6440835456f9f74cf diff --git a/sdk/rust/openidea-plugin/src/host.rs b/sdk/rust/openidea-plugin/src/host.rs index 7566965d0..0fe71b92b 100644 --- a/sdk/rust/openidea-plugin/src/host.rs +++ b/sdk/rust/openidea-plugin/src/host.rs @@ -451,6 +451,14 @@ mod imp { wit::views::open_terminal(title, program, args).map_err(error) } + pub fn open_log_tab(key: &str, title: &str, log: &crate::details::ProcessLog) -> Result<(), Error> { + use wit::detail_types::{LogToggle, ProcessLog}; + let toggles = + log.toggles.iter().map(|t| LogToggle { id: t.id.clone(), label: t.label.clone(), args: t.args.clone() }); + let log = ProcessLog { program: log.program.clone(), args: log.args.clone(), toggles: toggles.collect() }; + wit::views::open_log_tab(key, title, &log).map_err(error) + } + pub fn open_location(path: &str, line: u32, column: u32) -> Result<(), Error> { wit::views::open_location(path, line, column).map_err(error) } @@ -705,6 +713,14 @@ pub fn open_terminal(title: &str, program: &str, args: &[String]) -> Result<(), imp::open_terminal(title, program, args) } +/// Opens (or focuses) the read-only log tab `key` in the invoking window, +/// following `log`'s program (the approved `process:`) in the project +/// root, with its toggles above the output. Only from a command or event of a +/// window; `title` at most 256 characters, `key` 128, at most 32 toggles. +pub fn open_log_tab(key: &str, title: &str, log: &crate::details::ProcessLog) -> Result<(), Error> { + imp::open_log_tab(key, title, log) +} + pub fn open_location(path: &str, line: u32, column: u32) -> Result<(), Error> { imp::open_location(path, line, column) } diff --git a/sdk/rust/openidea-plugin/src/mock.rs b/sdk/rust/openidea-plugin/src/mock.rs index fef70b936..46edd3292 100644 --- a/sdk/rust/openidea-plugin/src/mock.rs +++ b/sdk/rust/openidea-plugin/src/mock.rs @@ -122,6 +122,7 @@ struct State { refreshed: Vec, view_messages: Vec<(String, String)>, terminals: Vec, + log_tabs: Vec, locations: Vec<(String, u32, u32)>, settings: BTreeMap, locale: Option, @@ -135,6 +136,14 @@ pub struct MockTerminal { pub args: Vec, } +/// A log tab the plugin opened. +#[derive(Clone, Debug, PartialEq, Eq)] +pub struct MockLogTab { + pub key: String, + pub title: String, + pub log: crate::details::ProcessLog, +} + /// At most 8 programs a plugin may keep running, as the host allows. const MAX_CHILDREN: usize = 8; @@ -407,6 +416,11 @@ impl MockHost { self.state.borrow().terminals.clone() } + /// Log tabs the plugin opened, the latest of each key last. + pub fn log_tabs(&self) -> Vec { + self.state.borrow().log_tabs.clone() + } + /// The value of one of the plugin's settings, as JSON (`true`, `"text"`). pub fn set_setting(&self, key: &str, json: &str) { self.state.borrow_mut().settings.insert(key.into(), json.into()); @@ -1272,6 +1286,20 @@ pub mod current { }) } + pub fn open_log_tab(key: &str, title: &str, log: &crate::details::ProcessLog) -> Result<(), Error> { + with(|s| { + require(s, &format!("process:{}", log.program))?; + let line = + |t: &str, max: usize| !t.is_empty() && t.chars().count() <= max && !t.contains(['\0', '\r', '\n']); + if !line(key, 128) || !line(title, 256) || log.toggles.len() > 32 { + return Err(Error::Invalid("a log tab's key, title or toggles are over the limits".into())); + } + s.log_tabs.retain(|t| t.key != key); + s.log_tabs.push(MockLogTab { key: key.into(), title: title.into(), log: log.clone() }); + Ok(()) + }) + } + pub fn open_location(path: &str, line: u32, column: u32) -> Result<(), Error> { with(|s| { if !is_private_path(path) { @@ -1824,6 +1852,25 @@ mod tests { assert_eq!(mock.opened_locations().len(), 2); } + #[test] + fn log_tabs_need_the_program_grant() { + let log = crate::details::ProcessLog::new("kubectl", &["logs", "-f", "api"]).toggle( + "previous", + "Previous", + &["--previous"], + ); + let _mock = MockHost::install(); + assert_eq!(host::open_log_tab("api", "api logs", &log), Err(Error::Denied("process:kubectl".into()))); + + let mock = MockHost::install().with_capabilities(&["process:kubectl"]); + host::open_log_tab("api", "api logs", &log).unwrap(); + // Reopening a key replaces that tab. + host::open_log_tab("api", "api logs again", &log).unwrap(); + assert_eq!(mock.log_tabs().len(), 1); + assert_eq!((mock.log_tabs()[0].title.as_str(), &mock.log_tabs()[0].log), ("api logs again", &log)); + assert!(matches!(host::open_log_tab("", "api logs", &log), Err(Error::Invalid(_)))); + } + #[test] fn fs_write_needs_a_grant_of_its_own() { // `fs.read` does not let a plugin write. diff --git a/sdk/rust/openidea-plugin/wit/views.wit b/sdk/rust/openidea-plugin/wit/views.wit index 92db335e7..78da35354 100644 --- a/sdk/rust/openidea-plugin/wit/views.wit +++ b/sdk/rust/openidea-plugin/wit/views.wit @@ -123,6 +123,7 @@ interface view-types { /// What a plugin's code can ask of its views. interface views { use types.{error}; + use detail-types.{process-log}; /// The view (or every custom editor of that id) shows outdated content: /// the IDE renders it again. @@ -136,6 +137,13 @@ interface views { /// `program` (pinned by a `process:` grant) with `args` in the /// project root: long-running output (logs) and interactive sessions. open-terminal: func(title: string, program: string, args: list) -> result<_, error>; + /// Opens a read-only log tab in the editor area of the window the call + /// came from, following `log`'s program (pinned by a `process:` + /// grant) in the project root, its toggles above the output: the tab a + /// web view opens with `open-log-tab`. Reopening `key` focuses that tab. + /// Only from a command or event of a window; `title` at most 256 + /// characters, `key` 128, at most 32 toggles. + open-log-tab: func(key: string, title: string, log: process-log) -> result<_, error>; /// Opens `path` (project-relative or absolute, inside the project) in an /// editor of the window the call came from, the caret at `line` and /// `column` (0-based; UTF-16 column): a view's links to code. diff --git a/src-tauri/src/commands/mod.rs b/src-tauri/src/commands/mod.rs index 0de0ec420..21196cd42 100644 --- a/src-tauri/src/commands/mod.rs +++ b/src-tauri/src/commands/mod.rs @@ -502,6 +502,7 @@ pub fn builder() -> tauri_specta::Builder { plugin::plugin_service_log, plugin::plugin_web_page, plugin::plugin_web_pty_spawn, + plugin::plugin_log_tab_spawn, plugin::plugin_web_save_file, plugin::plugin_web_read_file, plugin::plugin_line_markers, diff --git a/src-tauri/src/commands/plugin.rs b/src-tauri/src/commands/plugin.rs index 3051b72c4..1fd07a381 100644 --- a/src-tauri/src/commands/plugin.rs +++ b/src-tauri/src/commands/plugin.rs @@ -565,6 +565,41 @@ pub async fn plugin_web_pty_spawn( .map_err(|e| IdeError::internal(e.to_string()))? } +/// Starts the program of a log tab the plugin's code opened in this window, +/// with the toggles in `on`. +#[tauri::command] +#[specta::specta] +#[allow(clippy::too_many_arguments)] +pub async fn plugin_log_tab_spawn( + window: Window, + state: State<'_, AppState>, + plugin_id: String, + key: String, + on: Vec, + cols: u16, + rows: u16, + on_output: Channel, +) -> IdeResult { + let plugins = state.plugins.clone(); + let host = state.host.clone(); + let window = window.label().to_owned(); + tauri::async_runtime::spawn_blocking(move || { + plugins.spawn_log_tab_pty( + &host, + &plugin_id, + &key, + &window, + &on, + (cols, rows), + Arc::new(move |chunk| { + let _ = on_output.send(chunk); + }), + ) + }) + .await + .map_err(|e| IdeError::internal(e.to_string()))? +} + /// Largest file a web view saves or opens (`openidea.saveFile` / `openFile`). const MAX_WEB_VIEW_FILE: u64 = 64 << 20; diff --git a/src/bindings.ts b/src/bindings.ts index 394b626fc..361021fbc 100644 --- a/src/bindings.ts +++ b/src/bindings.ts @@ -1150,6 +1150,11 @@ export const commands = { /** The page of a plugin's web view or custom editor (`web = …`). */ pluginWebPage: (pluginId: string, view: string) => typedError(__TAURI_INVOKE("plugin_web_page", { pluginId, view })), pluginWebPtySpawn: (pluginId: string, view: string, command: WebPtyCommand, onOutput: Channel) => typedError(__TAURI_INVOKE("plugin_web_pty_spawn", { pluginId, view, command, onOutput })), + /** + * Starts the program of a log tab the plugin's code opened in this window, + * with the toggles in `on`. + */ + pluginLogTabSpawn: (pluginId: string, key: string, on: string[], cols: number, rows: number, onOutput: Channel) => typedError(__TAURI_INVOKE("plugin_log_tab_spawn", { pluginId, key, on, cols, rows, onOutput })), /** * Writes what a web view saves (`openidea.saveFile`) to the path the user * chose in the save dialog, on this machine. @@ -6052,6 +6057,11 @@ actions: NotificationAction[] } | { type: "viewMessage"; pluginId: string; view: string; message: string } | /** Open a terminal running `program` (already approved and verified). */ { type: "openTerminal"; pluginId: string; title: string; program: IpcPath; args: string[]; cwd: IpcPath } | { type: "openLocation"; pluginId: string; path: IpcPath; line: number; column: number } | +/** + * Open (or focus) the log tab `key` following `log` (`views.open-log-tab`); + * it starts the program with `plugin_log_tab_spawn`. + */ +{ type: "openLogTab"; pluginId: string; key: string; title: string; log: ServiceLog } | /** * Plugin languages, or the servers they may start, changed: re-fetch * `languages` (the host re-detects open documents: [`crate::Host::plugin_languages_changed`]). diff --git a/src/features/plugins/__tests__/logEditor.test.tsx b/src/features/plugins/__tests__/logEditor.test.tsx index 68e3b6097..da0293c34 100644 --- a/src/features/plugins/__tests__/logEditor.test.tsx +++ b/src/features/plugins/__tests__/logEditor.test.tsx @@ -9,11 +9,11 @@ import { usePlugins } from "../store"; import { startViewUi } from "../uiPoints"; import { registerLogActions } from "../views/logActions"; import { PluginLogEditor } from "../views/logEditor"; -import { boundedLog, logTabData } from "../views/logTab"; -import { webPtyBackend } from "../views/ptyBackend"; +import { boundedLog, logTabData, type PluginLogEditorData } from "../views/logTab"; +import { logTabPtyBackend, webPtyBackend } from "../views/ptyBackend"; import type { PtyBackend } from "../views/ptyBridge"; -vi.mock("../views/ptyBackend", () => ({ webPtyBackend: vi.fn() })); +vi.mock("../views/ptyBackend", () => ({ webPtyBackend: vi.fn(), logTabPtyBackend: vi.fn() })); const plugin = { id: "probe", enabled: true, capabilities: [{ id: "process:bash", granted: true }] } as PluginInfo; const spec = { @@ -36,7 +36,7 @@ afterEach(() => { vi.restoreAllMocks(); }); -function setup() { +function setup(extra: Partial = {}) { usePlugins.setState({ plugins: [plugin] }); let output: (text: string) => void = () => {}; let exit: Parameters[0] = () => {}; @@ -54,7 +54,8 @@ function setup() { }, }; vi.mocked(webPtyBackend).mockReturnValue(backend); - const data = logTabData("probe", "logs", spec, 100); + vi.mocked(logTabPtyBackend).mockReturnValue(backend); + const data = { ...logTabData("probe", "logs", spec, 100), ...extra }; const input = { kind: "pluginLog", key: "test-log", data }; const rendered = render(); const content = () => rendered.container.querySelector(".cm-content")!; @@ -122,6 +123,16 @@ describe("plugin streaming log tabs", () => { expect(screen.getByRole("textbox", { name: "Find" })).toBeTruthy(); }); + it("starts a tab opened by plugin code by its key, with the toggles that are on", async () => { + const f = setup({ view: "", key: "code", origin: "code" }); + expect(webPtyBackend).not.toHaveBeenCalled(); + expect(logTabPtyBackend).toHaveBeenLastCalledWith("probe", "code", []); + await act(async () => {}); + fireEvent.click(screen.getByRole("switch", { name: "Verbose" })); + await waitFor(() => expect(f.backend.kill).toHaveBeenCalledWith(42)); + expect(logTabPtyBackend).toHaveBeenLastCalledWith("probe", "code", ["verbose"]); + }); + it("kills the previous process on toggle and every lifecycle boundary", async () => { for (const boundary of ["unmount", "disable", "project", "window"] as const) { const f = setup(); diff --git a/src/features/plugins/runtimeUi.tsx b/src/features/plugins/runtimeUi.tsx index f2b2edc89..ecd86c00c 100644 --- a/src/features/plugins/runtimeUi.tsx +++ b/src/features/plugins/runtimeUi.tsx @@ -31,6 +31,8 @@ import { confirm } from "@/workbench/messages"; import { removeTask, upsertTask, useTasks } from "@/workbench/tasks"; import { pluginsBackend } from "./backend"; import { usePluginT } from "./pluginText"; +import { PLUGIN_LOG_EDITOR_KIND } from "./views/logEditor"; +import type { PluginLogEditorData } from "./views/logTab"; import { bumpView, deliverViewMessage } from "./views/viewStore"; import { revealWindowView } from "./views/viewWindows"; import { runPluginCommand, usePlugins } from "./store"; @@ -420,6 +422,22 @@ export function handleRuntimeEvent(e: PluginEvent): boolean { // The program was approved (`process:`) and verified by the host. void executeAction("terminal.runCommand", { program: e.program, args: e.args, name: e.title, cwd: e.cwd }); return true; + case "openLogTab": + void maybeEditorService()?.openInput({ + kind: PLUGIN_LOG_EDITOR_KIND, + key: `pluginLog:${JSON.stringify([e.pluginId, "", e.key])}`, + data: { + pluginId: e.pluginId, + view: "", + key: e.key, + title: e.title, + program: e.log.program, + args: e.log.args, + toggles: e.log.toggles, + origin: "code", + } satisfies PluginLogEditorData, + }); + return true; case "openLocation": void maybeEditorService()?.openFile(e.path, { selection: { line: e.line, col: e.column }, focus: true }); return true; diff --git a/src/features/plugins/views/logEditor.tsx b/src/features/plugins/views/logEditor.tsx index 7bf0ecaf4..d36c762a7 100644 --- a/src/features/plugins/views/logEditor.tsx +++ b/src/features/plugins/views/logEditor.tsx @@ -23,7 +23,7 @@ import type { EditorInput } from "@/workbench/contributions"; import { usePlugins } from "../store"; import { bindLogControls } from "./logActions"; import { boundedLog, type PluginLogEditorData } from "./logTab"; -import { webPtyBackend } from "./ptyBackend"; +import { logTabPtyBackend, webPtyBackend } from "./ptyBackend"; import { ptyBridge } from "./ptyBridge"; export const PLUGIN_LOG_EDITOR_KIND = "pluginLog"; @@ -371,7 +371,11 @@ function PluginLogEditorBody({ input, data }: { input: EditorInput; data: Plugin sequence = undefined; bridge.handle(JSON.stringify({ op: "pty-ack", sessionId: "log", sequence: consumed })); }; - const bridge = ptyBridge(data.pluginId, webPtyBackend(data.pluginId, data.view), (message) => { + const backend = + data.origin === "code" + ? logTabPtyBackend(data.pluginId, data.key ?? "", [...on]) + : webPtyBackend(data.pluginId, data.view); + const bridge = ptyBridge(data.pluginId, backend, (message) => { const m = message as Record; if (stopped) return; if (m.op === "pty-data") { diff --git a/src/features/plugins/views/logTab.ts b/src/features/plugins/views/logTab.ts index 0077803f0..0ed1dc6c9 100644 --- a/src/features/plugins/views/logTab.ts +++ b/src/features/plugins/views/logTab.ts @@ -15,6 +15,8 @@ export interface PluginLogEditorData { program: string; args: string[]; toggles: PluginLogToggleSpec[]; + /** Opened by the plugin's code (`views.open-log-tab`): the host starts what it approved for `key`. */ + origin?: "code"; } const text = (v: unknown, max: number): v is string => diff --git a/src/features/plugins/views/ptyBackend.ts b/src/features/plugins/views/ptyBackend.ts index bb2991b00..741ba0d57 100644 --- a/src/features/plugins/views/ptyBackend.ts +++ b/src/features/plugins/views/ptyBackend.ts @@ -1,11 +1,34 @@ import { Channel } from "@tauri-apps/api/core"; import { tx } from "@/platform/i18n"; +import type { TerminalInfo, WebPtyCommand } from "@/bindings"; import { call, commands, isTauri, onIdeEvent } from "@/platform/ipc"; +import { isRemoteWindow } from "@/platform/remote"; import { usePlugins } from "../store"; import type { PtyBackend } from "./ptyBridge"; /** Both frame terminals and log tabs use the backend's exact, pinned process grant. */ export function webPtyBackend(pluginId: string, view: string): PtyBackend { + return pluginPtyBackend(pluginId, (command, channel) => + call(commands.pluginWebPtySpawn(pluginId, view, command, channel)), + ); +} + +/** + * A log tab the plugin's code opened: the host runs what it approved for `key`, + * with the toggles in `on`; the command the tab builds only lends its size. + */ +export function logTabPtyBackend(pluginId: string, key: string, on: string[]): PtyBackend { + return pluginPtyBackend(pluginId, (command, channel) => { + if (isRemoteWindow()) + throw new Error(tx("Log tabs opened by plugin code are not available in remote projects yet.")); + return call(commands.pluginLogTabSpawn(pluginId, key, on, command.cols, command.rows, channel)); + }); +} + +function pluginPtyBackend( + pluginId: string, + start: (command: WebPtyCommand, channel: Channel) => Promise, +): PtyBackend { return { spawn: async (command, output) => { const current = usePlugins.getState().plugins.find((p) => p.id === pluginId); @@ -17,7 +40,7 @@ export function webPtyBackend(pluginId: string, view: string): PtyBackend { throw new Error(tx`Cannot start PTY: process:${command.program} capability not granted.`); const channel = new Channel(); channel.onmessage = output; - return call(commands.pluginWebPtySpawn(pluginId, view, command, channel)); + return start(command, channel); }, write: (id, data) => call(commands.termWrite(id, data)), resize: (id, cols, rows) => call(commands.termResize(id, cols, rows)), diff --git a/src/platform/locales/text/en.json b/src/platform/locales/text/en.json index 10fa77652..3acad903c 100644 --- a/src/platform/locales/text/en.json +++ b/src/platform/locales/text/en.json @@ -402,5 +402,6 @@ "The plugin did not save the content": "The plugin did not save the content", "Running an action applies pending settings first.": "Running an action applies pending settings first.", "Could not apply settings.": "Could not apply settings.", - "The value exceeds this setting’s limits.": "The value exceeds this setting’s limits." + "The value exceeds this setting’s limits.": "The value exceeds this setting’s limits.", + "Log tabs opened by plugin code are not available in remote projects yet.": "Log tabs opened by plugin code are not available in remote projects yet." } diff --git a/src/platform/locales/text/zh.json b/src/platform/locales/text/zh.json index 08c6ceed6..c30b9385d 100644 --- a/src/platform/locales/text/zh.json +++ b/src/platform/locales/text/zh.json @@ -6755,5 +6755,6 @@ "The plugin did not save the content": "插件未保存内容", "Running an action applies pending settings first.": "运行动作前会先应用待保存的设置。", "Could not apply settings.": "无法应用设置。", - "The value exceeds this setting’s limits.": "该值超出了此设置的限制。" + "The value exceeds this setting’s limits.": "该值超出了此设置的限制。", + "Log tabs opened by plugin code are not available in remote projects yet.": "插件代码打开的日志标签页暂不支持远程项目。" } diff --git a/wit/views.wit b/wit/views.wit index 92db335e7..78da35354 100644 --- a/wit/views.wit +++ b/wit/views.wit @@ -123,6 +123,7 @@ interface view-types { /// What a plugin's code can ask of its views. interface views { use types.{error}; + use detail-types.{process-log}; /// The view (or every custom editor of that id) shows outdated content: /// the IDE renders it again. @@ -136,6 +137,13 @@ interface views { /// `program` (pinned by a `process:` grant) with `args` in the /// project root: long-running output (logs) and interactive sessions. open-terminal: func(title: string, program: string, args: list) -> result<_, error>; + /// Opens a read-only log tab in the editor area of the window the call + /// came from, following `log`'s program (pinned by a `process:` + /// grant) in the project root, its toggles above the output: the tab a + /// web view opens with `open-log-tab`. Reopening `key` focuses that tab. + /// Only from a command or event of a window; `title` at most 256 + /// characters, `key` 128, at most 32 toggles. + open-log-tab: func(key: string, title: string, log: process-log) -> result<_, error>; /// Opens `path` (project-relative or absolute, inside the project) in an /// editor of the window the call came from, the caret at `line` and /// `column` (0-based; UTF-16 column): a view's links to code.