aboutsummaryrefslogtreecommitdiff
path: root/src/app/agent_view.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/agent_view.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/agent_view.rs')
-rw-r--r--src/app/agent_view.rs27
1 files changed, 13 insertions, 14 deletions
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<AgentPanelEntry
}
pub(crate) fn presented_workspace_idx(app: &AppState) -> Option<usize> {
- if app.mode == Mode::Navigate {
- app.workspaces.get(app.selected).map(|_| app.selected)
- } else {
- app.active
- }
+ app.active
}
fn normalize_source(source: &str) -> Result<String, String> {
@@ -449,6 +445,10 @@ mod tests {
state
}
+ fn projected_entries(state: &AppState) -> Vec<crate::ui::AgentPanelEntry> {
+ 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"));
}