From 207be3c771d281baae6e5fa0fb74be9a056e97a2 Mon Sep 17 00:00:00 2001 From: Can Celik Date: Tue, 1 Sep 2026 15:48:22 +0300 Subject: 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 --- src/app/agent_view.rs | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) (limited to 'src/app/agent_view.rs') diff --git a/src/app/agent_view.rs b/src/app/agent_view.rs index ba50ee3a..58c1d7de 100644 --- a/src/app/agent_view.rs +++ b/src/app/agent_view.rs @@ -7,7 +7,7 @@ use crate::api::schema::{ }; use crate::ui::AgentPanelEntry; -use super::{AppState, Mode}; +use super::AppState; const MAX_FILTER_DEPTH: usize = 8; const MAX_FILTER_NODES: usize = 64; @@ -78,11 +78,7 @@ pub(crate) fn apply_agent_view(app: &AppState, entries: &mut Vec Option { - if app.mode == Mode::Navigate { - app.workspaces.get(app.selected).map(|_| app.selected) - } else { - app.active - } + app.active } fn normalize_source(source: &str) -> Result { @@ -449,6 +445,10 @@ mod tests { state } + fn projected_entries(state: &AppState) -> Vec { + crate::ui::agent_panel_entries_from(state, &crate::terminal::TerminalRuntimeRegistry::new()) + } + fn current_workspace_view() -> AgentViewSetParams { AgentViewSetParams { source: "example.views".to_string(), @@ -468,16 +468,15 @@ mod tests { let mut state = state_with_agents(); state.agent_view_override = Some(current_workspace_view()); - assert_eq!(crate::ui::agent_panel_entries(&state)[0].ws_idx, 0); + assert_eq!(projected_entries(&state)[0].ws_idx, 0); - state.mode = Mode::Navigate; - state.selected = 1; - let entries = crate::ui::agent_panel_entries(&state); + state.active = Some(1); + let entries = projected_entries(&state); assert_eq!(entries.len(), 1); assert_eq!(entries[0].ws_idx, 1); - state.mode = Mode::Settings; - let entries = crate::ui::agent_panel_entries(&state); + state.active = Some(0); + let entries = projected_entries(&state); assert_eq!(entries.len(), 1); assert_eq!(entries[0].ws_idx, 0); } @@ -513,7 +512,7 @@ mod tests { }], }); - let entries = crate::ui::agent_panel_entries(&state); + let entries = projected_entries(&state); assert_eq!(entries.len(), 2); assert_eq!(entries[0].ws_idx, 1); assert_eq!(entries[1].ws_idx, 0); @@ -547,7 +546,7 @@ mod tests { sort: Vec::new(), }); - let entries = crate::ui::agent_panel_entries(&state); + let entries = projected_entries(&state); assert_eq!(entries.len(), 1); assert_eq!(entries[0].agent_kind_label.as_deref(), Some("custom-agent")); } -- cgit v1.2.3