Skip to content

Fix fork CI: native xcframework target, skip macOS app - #5

Merged
Jesssullivan merged 1 commit into
mainfrom
sid/fix-fork-ci
Mar 20, 2026
Merged

Jesssullivan merged 1 commit into
mainfrom
sid/fix-fork-ci

Conversation

@Jesssullivan

Copy link
Copy Markdown
Owner

Universal xcframework build fails on GitHub-hosted runners (DockTilePlugin x86_64 Swift compile). Use native target + skip macos app (matching upstream's -Demit-macos-app=false).

@Jesssullivan
Jesssullivan merged commit 9476699 into main Mar 20, 2026
5 of 13 checks passed
Jesssullivan added a commit that referenced this pull request Apr 18, 2026
The macOS build ships a system.tree RPC that flattens the entire UI hierarchy
into a single response so clients (CLIs, shell prompts, status bars) can avoid
N+1 round-trips. Linux currently exposes the leaf RPCs (window.list,
workspace.list, surface.list, pane.list) but not the composed view.

Add handleSystemTree mirroring the macOS shape:
  active: { workspace_id, surface_id, window_id }   // matches identify
  windows[]: { id, ref, index, workspace_count, selected_workspace_id,
               workspaces[]: { id, ref, index, title, selected, pinned,
                               panes[]: { id, ref, index, focused, surface_count,
                                          selected_surface_id, surfaces[]: {
                                            id, ref, index, index_in_pane, type,
                                            focused, selected, selected_in_pane,
                                            pane_id, pane_ref, title } } } }

Linux uses 1:1 panel:pane today, so each pane has exactly one surface and
pane.id == surface.id. The shape leaves room for future pane grouping
(multiple surfaces per pane) without breaking clients.

The handler is alloc-free in the steady-state error path: every writer.* call
that fails returns the same canonical empty envelope so partial responses
never leak. Workspace and panel titles flow through writeJsonString to keep
user-supplied strings safe.

The new socket round-trip test creates an extra workspace, asserts the
envelope, restores the baseline workspace selection, and closes the
scratch workspace in a finally block so it never leaves stale state.

Sprint A item #5 from #220 (TIN-183 follow-up after #218 / #221 / #222).
Jesssullivan added a commit that referenced this pull request Apr 18, 2026
The macOS build ships a system.tree RPC that flattens the entire UI hierarchy
into a single response so clients (CLIs, shell prompts, status bars) can avoid
N+1 round-trips. Linux currently exposes the leaf RPCs (window.list,
workspace.list, surface.list, pane.list) but not the composed view.

Add handleSystemTree mirroring the macOS shape:
  active: { workspace_id, surface_id, window_id }   // matches identify
  windows[]: { id, ref, index, workspace_count, selected_workspace_id,
               workspaces[]: { id, ref, index, title, selected, pinned,
                               panes[]: { id, ref, index, focused, surface_count,
                                          selected_surface_id, surfaces[]: {
                                            id, ref, index, index_in_pane, type,
                                            focused, selected, selected_in_pane,
                                            pane_id, pane_ref, title } } } }

Linux uses 1:1 panel:pane today, so each pane has exactly one surface and
pane.id == surface.id. The shape leaves room for future pane grouping
(multiple surfaces per pane) without breaking clients.

The handler is alloc-free in the steady-state error path: every writer.* call
that fails returns the same canonical empty envelope so partial responses
never leak. Workspace and panel titles flow through writeJsonString to keep
user-supplied strings safe.

The new socket round-trip test creates an extra workspace, asserts the
envelope, restores the baseline workspace selection, and closes the
scratch workspace in a finally block so it never leaves stale state.

Sprint A item #5 from #220 (TIN-183 follow-up after #218 / #221 / #222).
Jesssullivan added a commit that referenced this pull request Apr 18, 2026
#223)

The macOS build ships a system.tree RPC that flattens the entire UI hierarchy
into a single response so clients (CLIs, shell prompts, status bars) can avoid
N+1 round-trips. Linux currently exposes the leaf RPCs (window.list,
workspace.list, surface.list, pane.list) but not the composed view.

Add handleSystemTree mirroring the macOS shape:
  active: { workspace_id, surface_id, window_id }   // matches identify
  windows[]: { id, ref, index, workspace_count, selected_workspace_id,
               workspaces[]: { id, ref, index, title, selected, pinned,
                               panes[]: { id, ref, index, focused, surface_count,
                                          selected_surface_id, surfaces[]: {
                                            id, ref, index, index_in_pane, type,
                                            focused, selected, selected_in_pane,
                                            pane_id, pane_ref, title } } } }

Linux uses 1:1 panel:pane today, so each pane has exactly one surface and
pane.id == surface.id. The shape leaves room for future pane grouping
(multiple surfaces per pane) without breaking clients.

The handler is alloc-free in the steady-state error path: every writer.* call
that fails returns the same canonical empty envelope so partial responses
never leak. Workspace and panel titles flow through writeJsonString to keep
user-supplied strings safe.

The new socket round-trip test creates an extra workspace, asserts the
envelope, restores the baseline workspace selection, and closes the
scratch workspace in a finally block so it never leaves stale state.

Sprint A item #5 from #220 (TIN-183 follow-up after #218 / #221 / #222).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant