+ {/* Title bar: fixed chrome outside the grid, composable via slots.
Layout contract (no contribution can break it):
- a full-bar DRAG BASE underneath (pointer-events-none, like
AppShell's drag strips) — everywhere without content drags
@@ -733,53 +735,54 @@ export function ContribController() {
tree-published --workspace-left/right vars (pure CSS, no rect
threading), clamped to clear the REAL TitlebarControls
clusters (fixed, z-70); center is truly window-centered. */}
-
- {/* Drag strips, AppShell-style: cut to AVOID the fixed control
+
+ {/* Drag strips, AppShell-style: cut to AVOID the fixed control
clusters instead of overlapping them — Electron's no-drag
carve-out of fixed/transformed elements is unreliable, so a
full-bar drag base kills their clicks. In-flow slot content
still carves via its own no-drag wrapper (the same pattern as
the app's session-title button). */}
-
-
-
-
-
-
+
+
+
+
+
+
-
+
- {/* "Close running tab?" — the busy/input-blocked tile close gate. */}
-
+ {/* "Close running tab?" — the busy/input-blocked tile close gate. */}
+
- {/* The REAL statusbar (model pill, command center, agents, …) with
+ {/* The REAL statusbar (model pill, command center, agents, …) with
statusBar.left/right contributions merged in. Unmounted — not
just hidden — while toggled off, so its 15s status poll and the
per-turn readouts stop with it. */}
- {statusbarVisible &&
}
-
+ {statusbarVisible &&