aboutsummaryrefslogtreecommitdiff
path: root/src/api/schema/events.rs
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-06-29 20:39:54 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-06-29 20:39:54 +0300
commit8b74fb8a12716269c76f0b503ee7db5bbec2c921 (patch)
treee5230f94cb1e6eb70d1f00c75cd85dae8b5b9ead /src/api/schema/events.rs
parent5fffc59cd8aaea1604abb90e749e58fd97acfac0 (diff)
feat: emit placement mutation events
Diffstat (limited to 'src/api/schema/events.rs')
-rw-r--r--src/api/schema/events.rs29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/api/schema/events.rs b/src/api/schema/events.rs
index 6e489180..014288b1 100644
--- a/src/api/schema/events.rs
+++ b/src/api/schema/events.rs
@@ -22,6 +22,8 @@ pub enum Subscription {
WorkspaceUpdated {},
#[serde(rename = "workspace.renamed")]
WorkspaceRenamed {},
+ #[serde(rename = "workspace.moved")]
+ WorkspaceMoved {},
#[serde(rename = "workspace.closed")]
WorkspaceClosed {},
#[serde(rename = "workspace.focused")]
@@ -40,6 +42,8 @@ pub enum Subscription {
TabFocused {},
#[serde(rename = "tab.renamed")]
TabRenamed {},
+ #[serde(rename = "tab.moved")]
+ TabMoved {},
#[serde(rename = "pane.created")]
PaneCreated {},
#[serde(rename = "pane.closed")]
@@ -115,6 +119,9 @@ pub enum EventMatch {
#[serde(default, skip_serializing_if = "Option::is_none")]
label: Option<String>,
},
+ WorkspaceMoved {
+ workspace_id: String,
+ },
WorkspaceFocused {
workspace_id: String,
},
@@ -132,6 +139,9 @@ pub enum EventMatch {
#[serde(default, skip_serializing_if = "Option::is_none")]
label: Option<String>,
},
+ TabMoved {
+ tab_id: String,
+ },
TabFocused {
tab_id: String,
},
@@ -176,6 +186,7 @@ pub enum EventKind {
WorkspaceUpdated,
WorkspaceClosed,
WorkspaceRenamed,
+ WorkspaceMoved,
WorkspaceFocused,
WorktreeCreated,
WorktreeOpened,
@@ -183,6 +194,7 @@ pub enum EventKind {
TabCreated,
TabClosed,
TabRenamed,
+ TabMoved,
TabFocused,
PaneCreated,
PaneClosed,
@@ -201,6 +213,7 @@ impl EventKind {
EventKind::WorkspaceUpdated => "workspace.updated",
EventKind::WorkspaceClosed => "workspace.closed",
EventKind::WorkspaceRenamed => "workspace.renamed",
+ EventKind::WorkspaceMoved => "workspace.moved",
EventKind::WorkspaceFocused => "workspace.focused",
EventKind::WorktreeCreated => "worktree.created",
EventKind::WorktreeOpened => "worktree.opened",
@@ -208,6 +221,7 @@ impl EventKind {
EventKind::TabCreated => "tab.created",
EventKind::TabClosed => "tab.closed",
EventKind::TabRenamed => "tab.renamed",
+ EventKind::TabMoved => "tab.moved",
EventKind::TabFocused => "tab.focused",
EventKind::PaneCreated => "pane.created",
EventKind::PaneClosed => "pane.closed",
@@ -227,6 +241,7 @@ pub const KNOWN_EVENT_KINDS: &[EventKind] = &[
EventKind::WorkspaceUpdated,
EventKind::WorkspaceClosed,
EventKind::WorkspaceRenamed,
+ EventKind::WorkspaceMoved,
EventKind::WorkspaceFocused,
EventKind::WorktreeCreated,
EventKind::WorktreeOpened,
@@ -234,6 +249,7 @@ pub const KNOWN_EVENT_KINDS: &[EventKind] = &[
EventKind::TabCreated,
EventKind::TabClosed,
EventKind::TabRenamed,
+ EventKind::TabMoved,
EventKind::TabFocused,
EventKind::PaneCreated,
EventKind::PaneClosed,
@@ -250,6 +266,7 @@ pub const PLUGIN_HOOK_EVENT_KINDS: &[EventKind] = &[
EventKind::WorkspaceUpdated,
EventKind::WorkspaceClosed,
EventKind::WorkspaceRenamed,
+ EventKind::WorkspaceMoved,
EventKind::WorkspaceFocused,
EventKind::WorktreeCreated,
EventKind::WorktreeOpened,
@@ -257,6 +274,7 @@ pub const PLUGIN_HOOK_EVENT_KINDS: &[EventKind] = &[
EventKind::TabCreated,
EventKind::TabClosed,
EventKind::TabRenamed,
+ EventKind::TabMoved,
EventKind::TabFocused,
EventKind::PaneCreated,
EventKind::PaneClosed,
@@ -383,6 +401,11 @@ pub enum EventData {
workspace_id: String,
label: String,
},
+ WorkspaceMoved {
+ workspace_id: String,
+ insert_index: usize,
+ workspaces: Vec<WorkspaceInfo>,
+ },
WorkspaceFocused {
workspace_id: String,
},
@@ -414,6 +437,12 @@ pub enum EventData {
workspace_id: String,
label: String,
},
+ TabMoved {
+ tab_id: String,
+ workspace_id: String,
+ insert_index: usize,
+ tabs: Vec<TabInfo>,
+ },
TabFocused {
tab_id: String,
workspace_id: String,