aboutsummaryrefslogtreecommitdiff
path: root/src/app/api/plugins/context.rs
diff options
context:
space:
mode:
authorCan Celik <ogulcancelik@gmail.com>2026-09-01 15:48:22 +0300
committerGitHub <noreply@github.com>2026-09-01 15:48:22 +0300
commit207be3c771d281baae6e5fa0fb74be9a056e97a2 (patch)
treed7b037ecdf629224a048c841d11659efdc23507d /src/app/api/plugins/context.rs
parent8a6d697308162874a236c84aac0b0f8c7ac01f83 (diff)
refactor: render the shell in the client (#3487)
* feat: add opt-in client-rendered shell * feat: add client-owned shell mouse controls * feat: complete client-owned shell chrome * feat: add client-owned shell settings and notifications * feat: run client shell custom commands * feat: render popup terminals in client shell * feat: add client-owned scrollback and copy mode * fix: preserve client worktree trust defaults * feat: render startup diagnostics in client shell * feat: render onboarding in client shell * feat: render product announcements in client shell * feat: render release notes in client shell * feat: render mobile switcher in client shell * feat: render kitty graphics in client shell * fix: preserve client shell lifecycle coherence * refactor: route client shell commands through endpoint connections * refactor: make the client-rendered shell the default * refactor: remove monolithic launch mode * refactor: complete client-rendered shell cutover * perf: retain client pane surface updates * perf: scale retained pane surface updates * perf: remove remote pane input latency * test: make client shell checks platform-independent * fix: prevent client timer starvation * test: fix client shell platform gates * test: accept retained surfaces in cross-area checks * test: make client mode assertions platform-neutral * fix: badge only outdated integrations
Diffstat (limited to 'src/app/api/plugins/context.rs')
-rw-r--r--src/app/api/plugins/context.rs24
1 files changed, 3 insertions, 21 deletions
diff --git a/src/app/api/plugins/context.rs b/src/app/api/plugins/context.rs
index efef83b9..8aee1c31 100644
--- a/src/app/api/plugins/context.rs
+++ b/src/app/api/plugins/context.rs
@@ -357,10 +357,6 @@ impl App {
.as_ref()
.and_then(|pane| pane.cwd.clone())
.or_else(|| Some(self.default_cwd_for_workspace(ws_idx).display().to_string()));
- let selected_text = focused_pane
- .as_ref()
- .and_then(|pane| self.parse_pane_id(&pane.pane_id))
- .and_then(|(_, pane_id)| self.selected_text_for_pane(pane_id));
PluginInvocationContext {
workspace_id: Some(workspace.workspace_id),
workspace_label: Some(workspace.label),
@@ -372,7 +368,9 @@ impl App {
focused_pane_cwd: focused_pane.as_ref().and_then(|pane| pane.cwd.clone()),
focused_pane_agent: focused_pane.as_ref().and_then(|pane| pane.agent.clone()),
focused_pane_status: focused_pane.as_ref().map(|pane| pane.agent_status),
- selected_text,
+ // Selection is client presentation state. Client keybindings provide
+ // revision-validated coordinates; API callers can provide explicit context.
+ selected_text: None,
invocation_source: Some("api".to_string()),
correlation_id: Some(correlation_id.to_string()),
clicked_url: None,
@@ -380,22 +378,6 @@ impl App {
}
}
- fn selected_text_for_pane(&self, pane_id: crate::layout::PaneId) -> Option<String> {
- let selection = self.state.selection.as_ref()?;
- if selection.pane_id != pane_id || !selection.is_visible() {
- return None;
- }
- let terminal_id = self
- .state
- .workspaces
- .iter()
- .find_map(|workspace| workspace.terminal_id(pane_id))?;
- self.terminal_runtimes
- .get(terminal_id)
- .and_then(|runtime| runtime.extract_selection(selection))
- .filter(|text| !text.is_empty())
- }
-
fn default_cwd_for_workspace(&self, ws_idx: usize) -> std::path::PathBuf {
self.state
.workspaces