diff options
| author | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-05-26 17:10:28 +0300 |
|---|---|---|
| committer | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-05-26 17:10:28 +0300 |
| commit | 3750e0bae21c54da3947d337584f180a21d0bc67 (patch) | |
| tree | 4542d8af76b4fee0c428ca5e9378a06946ef62ca /src/app/api.rs | |
| parent | 1b980eaa9d4cbc050b6b81525e4b6b72ae853be5 (diff) | |
feat: add pane metadata reporting
refs #36
Diffstat (limited to 'src/app/api.rs')
| -rw-r--r-- | src/app/api.rs | 17 |
1 files changed, 13 insertions, 4 deletions
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); } |
