# WezTerm Panel Layout Fix ## Problem WezTerm was not creating the correct panel layout for pi-teams. The desired layout is: - **Main controller panel** on the LEFT (takes 70% width) - **Teammate panels** stacked on the RIGHT (takes 30% width, divided vertically) This matches the layout behavior in tmux and iTerm2. ## Root Cause The WezTermAdapter was sequentially spawning panes without tracking which pane should be the "right sidebar." When using `split-pane --bottom`, it would split the currently active pane (which could be any teammate pane), rather than always splitting within the designated right sidebar area. ## Solution Modified `src/adapters/wezterm-adapter.ts`: 1. **Added sidebar tracking**: Store the pane ID of the first teammate spawn (`sidebarPaneId`) 2. **Fixed split logic**: - **First teammate** (paneCounter=0): Split RIGHT with 30% width (leaves 70% for main) - **Subsequent teammates**: Split the saved sidebar pane BOTTOM with 50% height 3. **Used `--pane-id` parameter**: WezTerm CLI's `--pane-id` ensures we always split within the right sidebar, not whichever pane is currently active ## Code Changes ```typescript private sidebarPaneId: string | null = null; // Track the right sidebar pane spawn(options: SpawnOptions): string { // First pane: split RIGHT (creates right sidebar) // Subsequent panes: split BOTTOM within the sidebar pane const isFirstPane = this.paneCounter === 0; const weztermArgs = [ "cli", "split-pane", isFirstPane ? "--right" : "--bottom", "--percent", isFirstPane ? "30" : "50", ...(isFirstPane ? [] : ["--pane-id", this.sidebarPaneId!]), // Key: always split in sidebar "--cwd", options.cwd, // ... rest of args ]; // ... execute command ... // Track sidebar pane on first spawn if (isFirstPane) { this.sidebarPaneId = paneId; } } ``` ## Result ✅ Main controller stays on the left at full height ✅ Teammates stack vertically on the right at equal heights ✅ Matches tmux/iTerm2 layout behavior ✅ All existing tests pass ## Testing ```bash npm test -- src/adapters/wezterm-adapter.test.ts # ✓ 17 tests passed ```