From c45a3b2dc1c2877dd6ee4ea9701d17ff656fc3ca Mon Sep 17 00:00:00 2001 From: Ogulcan Celik Date: Thu, 9 Apr 2026 21:57:28 +0300 Subject: feat(api): return root panes from workspace and tab creation --- src/api/schema.rs | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) (limited to 'src/api') diff --git a/src/api/schema.rs b/src/api/schema.rs index 42a9c259..38393141 100644 --- a/src/api/schema.rs +++ b/src/api/schema.rs @@ -405,12 +405,21 @@ pub enum ResponseResult { WorkspaceInfo { workspace: WorkspaceInfo, }, + WorkspaceCreated { + workspace: WorkspaceInfo, + tab: TabInfo, + root_pane: PaneInfo, + }, WorkspaceList { workspaces: Vec, }, TabInfo { tab: TabInfo, }, + TabCreated { + tab: TabInfo, + root_pane: PaneInfo, + }, TabList { tabs: Vec, }, @@ -864,6 +873,40 @@ mod tests { assert_eq!(restored, response); } + #[test] + fn create_response_round_trips_with_root_pane() { + let response = SuccessResponse { + id: "req_2".into(), + result: ResponseResult::TabCreated { + tab: TabInfo { + tab_id: "w_1:2".into(), + workspace_id: "w_1".into(), + number: 2, + label: "review".into(), + focused: false, + pane_count: 1, + agent_status: AgentStatus::Unknown, + }, + root_pane: PaneInfo { + pane_id: "w_1-3".into(), + workspace_id: "w_1".into(), + tab_id: "w_1:2".into(), + focused: false, + cwd: Some("/tmp/review".into()), + agent: None, + agent_status: AgentStatus::Unknown, + revision: 0, + }, + }, + }; + + let json = serde_json::to_string(&response).unwrap(); + assert!(json.contains("\"type\":\"tab_created\"")); + assert!(json.contains("\"root_pane\"")); + let restored: SuccessResponse = serde_json::from_str(&json).unwrap(); + assert_eq!(restored, response); + } + #[test] fn error_response_round_trips() { let response = ErrorResponse { -- cgit v1.2.3