aboutsummaryrefslogtreecommitdiff
path: root/src/api/schema/events.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/api/schema/events.rs')
-rw-r--r--src/api/schema/events.rs15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/api/schema/events.rs b/src/api/schema/events.rs
index 2fbce4d0..aff3d2a2 100644
--- a/src/api/schema/events.rs
+++ b/src/api/schema/events.rs
@@ -72,6 +72,8 @@ pub enum Subscription {
#[serde(default, skip_serializing_if = "Option::is_none")]
agent_status: Option<AgentStatus>,
},
+ #[serde(rename = "layout.updated")]
+ LayoutUpdated {},
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)]
@@ -204,6 +206,7 @@ pub enum EventKind {
PaneExited,
PaneAgentDetected,
PaneAgentStatusChanged,
+ LayoutUpdated,
}
impl EventKind {
@@ -231,6 +234,7 @@ impl EventKind {
EventKind::PaneExited => "pane.exited",
EventKind::PaneAgentDetected => "pane.agent_detected",
EventKind::PaneAgentStatusChanged => "pane.agent_status_changed",
+ EventKind::LayoutUpdated => "layout.updated",
}
}
}
@@ -259,6 +263,7 @@ pub const KNOWN_EVENT_KINDS: &[EventKind] = &[
EventKind::PaneExited,
EventKind::PaneAgentDetected,
EventKind::PaneAgentStatusChanged,
+ EventKind::LayoutUpdated,
];
pub const PLUGIN_HOOK_EVENT_KINDS: &[EventKind] = &[
@@ -325,14 +330,15 @@ mod known_event_name_tests {
}
#[test]
- fn plugin_hook_event_names_exclude_unemitted_output_change() {
+ fn plugin_hook_event_names_exclude_high_volume_events() {
let names = plugin_hook_event_names();
assert!(!names.contains(&"pane.output_changed"));
+ assert!(!names.contains(&"layout.updated"));
assert!(names.contains(&"pane.moved"));
}
}
-#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)]
+#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, schemars::JsonSchema)]
pub struct EventEnvelope {
pub event: EventKind,
pub data: EventData,
@@ -383,7 +389,7 @@ pub struct PaneAgentStatusChangedEvent {
pub state_labels: HashMap<String, String>,
}
-#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)]
+#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, schemars::JsonSchema)]
#[serde(tag = "type", rename_all = "snake_case")]
pub enum EventData {
WorkspaceCreated {
@@ -502,4 +508,7 @@ pub enum EventData {
#[serde(default, skip_serializing_if = "HashMap::is_empty")]
state_labels: HashMap<String, String>,
},
+ LayoutUpdated {
+ layout: super::panes::PaneLayoutSnapshot,
+ },
}