diff options
| author | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-07-13 03:26:03 +0300 |
|---|---|---|
| committer | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-07-13 03:30:13 +0300 |
| commit | 5cfe5e5e730246948b0c9428ad876b6938590aad (patch) | |
| tree | 53d4bbe1aff6887f63f279eed1b5e4e11e7331b7 /src/app/api.rs | |
| parent | 7f3364a468f7dcfd8c9c84e5737fe5699f0e3a93 (diff) | |
feat: add configurable sidebar metadata tokens
Diffstat (limited to 'src/app/api.rs')
| -rw-r--r-- | src/app/api.rs | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/src/app/api.rs b/src/app/api.rs index 9ebbbe56..c013d271 100644 --- a/src/app/api.rs +++ b/src/app/api.rs @@ -579,7 +579,6 @@ impl App { agent: update.agent_label.clone(), title: presentation.title, display_agent: presentation.display_agent, - custom_status: presentation.custom_status, state_labels: presentation.state_labels, }, }); @@ -745,6 +744,26 @@ impl App { self.event_hub.push(event); } + pub(crate) fn emit_pane_updated(&mut self, ws_idx: usize, pane_id: crate::layout::PaneId) { + if let Some(pane) = self.pane_info(ws_idx, pane_id) { + self.emit_event(crate::api::schema::EventEnvelope { + event: crate::api::schema::EventKind::PaneUpdated, + data: crate::api::schema::EventData::PaneUpdated { pane }, + }); + } + } + + pub(crate) fn emit_workspace_token_updated(&mut self, ws_idx: usize) { + // Token updates bypass plugin hooks so a hook cannot refresh its own + // token and recursively trigger workspace.updated. + self.event_hub.push(crate::api::schema::EventEnvelope { + event: crate::api::schema::EventKind::WorkspaceMetadataUpdated, + data: crate::api::schema::EventData::WorkspaceMetadataUpdated { + workspace: self.workspace_info(ws_idx), + }, + }); + } + pub(crate) fn sync_focus_events(&mut self) { let current_focus = self.state.active.and_then(|idx| { self.state @@ -816,6 +835,7 @@ impl App { &mut self, request: crate::api::schema::Request, ) -> String { + self.sync_terminal_titles(); use crate::api::schema::{ ErrorBody, ErrorResponse, Method, ResponseResult, SuccessResponse, }; @@ -908,6 +928,9 @@ impl App { Method::WorkspaceMove(params) => { return self.handle_workspace_move(request.id, params); } + Method::WorkspaceReportMetadata(params) => { + return self.handle_workspace_report_metadata(request.id, params); + } Method::WorkspaceClose(target) => { return self.handle_workspace_close(request.id, target) } |
