aboutsummaryrefslogtreecommitdiff
path: root/src/app/api.rs
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-05-26 17:10:28 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-05-26 17:10:28 +0300
commit3750e0bae21c54da3947d337584f180a21d0bc67 (patch)
tree4542d8af76b4fee0c428ca5e9378a06946ef62ca /src/app/api.rs
parent1b980eaa9d4cbc050b6b81525e4b6b72ae853be5 (diff)
feat: add pane metadata reporting
refs #36
Diffstat (limited to 'src/app/api.rs')
-rw-r--r--src/app/api.rs17
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);
}