aboutsummaryrefslogtreecommitdiff
path: root/src/api/schema/events.rs
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-07-13 03:26:03 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-07-13 03:30:13 +0300
commit5cfe5e5e730246948b0c9428ad876b6938590aad (patch)
tree53d4bbe1aff6887f63f279eed1b5e4e11e7331b7 /src/api/schema/events.rs
parent7f3364a468f7dcfd8c9c84e5737fe5699f0e3a93 (diff)
feat: add configurable sidebar metadata tokens
Diffstat (limited to 'src/api/schema/events.rs')
-rw-r--r--src/api/schema/events.rs22
1 files changed, 18 insertions, 4 deletions
diff --git a/src/api/schema/events.rs b/src/api/schema/events.rs
index 41b9907d..25ccc8ec 100644
--- a/src/api/schema/events.rs
+++ b/src/api/schema/events.rs
@@ -20,6 +20,8 @@ pub enum Subscription {
WorkspaceCreated {},
#[serde(rename = "workspace.updated")]
WorkspaceUpdated {},
+ #[serde(rename = "workspace.metadata_updated")]
+ WorkspaceMetadataUpdated {},
#[serde(rename = "workspace.renamed")]
WorkspaceRenamed {},
#[serde(rename = "workspace.moved")]
@@ -48,6 +50,8 @@ pub enum Subscription {
PaneCreated {},
#[serde(rename = "pane.closed")]
PaneClosed {},
+ #[serde(rename = "pane.updated")]
+ PaneUpdated {},
#[serde(rename = "pane.focused")]
PaneFocused {},
#[serde(rename = "pane.moved")]
@@ -188,6 +192,7 @@ pub enum EventMatch {
pub enum EventKind {
WorkspaceCreated,
WorkspaceUpdated,
+ WorkspaceMetadataUpdated,
WorkspaceClosed,
WorkspaceRenamed,
WorkspaceMoved,
@@ -202,6 +207,7 @@ pub enum EventKind {
TabFocused,
PaneCreated,
PaneClosed,
+ PaneUpdated,
PaneFocused,
PaneMoved,
PaneOutputChanged,
@@ -216,6 +222,7 @@ impl EventKind {
match self {
EventKind::WorkspaceCreated => "workspace.created",
EventKind::WorkspaceUpdated => "workspace.updated",
+ EventKind::WorkspaceMetadataUpdated => "workspace.metadata_updated",
EventKind::WorkspaceClosed => "workspace.closed",
EventKind::WorkspaceRenamed => "workspace.renamed",
EventKind::WorkspaceMoved => "workspace.moved",
@@ -230,6 +237,7 @@ impl EventKind {
EventKind::TabFocused => "tab.focused",
EventKind::PaneCreated => "pane.created",
EventKind::PaneClosed => "pane.closed",
+ EventKind::PaneUpdated => "pane.updated",
EventKind::PaneFocused => "pane.focused",
EventKind::PaneMoved => "pane.moved",
EventKind::PaneOutputChanged => "pane.output_changed",
@@ -245,6 +253,7 @@ impl EventKind {
pub const KNOWN_EVENT_KINDS: &[EventKind] = &[
EventKind::WorkspaceCreated,
EventKind::WorkspaceUpdated,
+ EventKind::WorkspaceMetadataUpdated,
EventKind::WorkspaceClosed,
EventKind::WorkspaceRenamed,
EventKind::WorkspaceMoved,
@@ -259,6 +268,7 @@ pub const KNOWN_EVENT_KINDS: &[EventKind] = &[
EventKind::TabFocused,
EventKind::PaneCreated,
EventKind::PaneClosed,
+ EventKind::PaneUpdated,
EventKind::PaneFocused,
EventKind::PaneMoved,
EventKind::PaneOutputChanged,
@@ -336,6 +346,8 @@ mod known_event_name_tests {
let names = plugin_hook_event_names();
assert!(!names.contains(&"pane.output_changed"));
assert!(!names.contains(&"layout.updated"));
+ assert!(!names.contains(&"workspace.metadata_updated"));
+ assert!(!names.contains(&"pane.updated"));
assert!(names.contains(&"pane.moved"));
}
}
@@ -385,8 +397,6 @@ pub struct PaneAgentStatusChangedEvent {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub agent: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
- pub custom_status: Option<String>,
- #[serde(default, skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub display_agent: Option<String>,
@@ -410,6 +420,9 @@ pub enum EventData {
WorkspaceUpdated {
workspace: WorkspaceInfo,
},
+ WorkspaceMetadataUpdated {
+ workspace: WorkspaceInfo,
+ },
WorkspaceClosed {
workspace_id: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
@@ -472,6 +485,9 @@ pub enum EventData {
pane_id: String,
workspace_id: String,
},
+ PaneUpdated {
+ pane: PaneInfo,
+ },
PaneFocused {
pane_id: String,
workspace_id: String,
@@ -515,8 +531,6 @@ pub enum EventData {
title: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
display_agent: Option<String>,
- #[serde(default, skip_serializing_if = "Option::is_none")]
- custom_status: Option<String>,
#[serde(default, skip_serializing_if = "HashMap::is_empty")]
state_labels: HashMap<String, String>,
},