From 3750e0bae21c54da3947d337584f180a21d0bc67 Mon Sep 17 00:00:00 2001 From: Ogulcan Celik Date: Tue, 26 May 2026 17:10:28 +0300 Subject: feat: add pane metadata reporting refs #36 --- src/app/api.rs | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'src/app/api.rs') diff --git a/src/app/api.rs b/src/app/api.rs index 2488ce40..6319bdb6 100644 --- a/src/app/api.rs +++ b/src/app/api.rs @@ -88,6 +88,7 @@ impl App { for update in &pane_updates { self.emit_pane_state_update(update); } + self.sync_agent_metadata_deadline(); if let Some((pane_id, agent)) = released_agent { if pane_updates.iter().any(|update| update.pane_id == pane_id) { if let Some((ws_idx, _)) = self.find_pane(pane_id) { @@ -209,7 +210,7 @@ impl App { } } - fn emit_pane_state_update(&self, update: &crate::app::actions::PaneStateUpdate) { + pub(crate) fn emit_pane_state_update(&self, update: &crate::app::actions::PaneStateUpdate) { let Some(pane_id) = self.public_pane_id(update.ws_idx, update.pane_id) else { return; }; @@ -226,7 +227,9 @@ impl App { }); } - if update.previous_state != update.state { + if update.previous_state != update.state + || update.previous_presentation != update.presentation + { let agent_status = self .state .workspaces @@ -234,14 +237,17 @@ impl App { .and_then(|ws| ws.pane_state(update.pane_id)) .map(|pane| pane_agent_status(update.state, pane.seen)) .unwrap_or_else(|| pane_agent_status(update.state, true)); - let custom_status = update.custom_status.clone(); + let presentation = update.presentation.clone(); self.emit_event(crate::api::schema::EventEnvelope { event: crate::api::schema::EventKind::PaneAgentStatusChanged, data: crate::api::schema::EventData::PaneAgentStatusChanged { pane_id, workspace_id, agent_status, - custom_status, + title: presentation.title, + display_agent: presentation.display_agent, + custom_status: presentation.custom_status, + state_labels: presentation.state_labels, }, }); } @@ -413,6 +419,9 @@ impl App { Method::PaneReportAgent(params) => { return self.handle_pane_report_agent(request.id, params); } + Method::PaneReportMetadata(params) => { + return self.handle_pane_report_metadata(request.id, params); + } Method::PaneClearAgentAuthority(params) => { return self.handle_pane_clear_agent_authority(request.id, params); } -- cgit v1.2.3