mirror of
https://github.com/harivansh-afk/clanker-agent.git
synced 2026-04-15 05:02:07 +00:00
- Rename all package names from companion-* to clanker-* - Update npm scopes from @mariozechner to @harivansh-afk - Rename config directories .companion -> .clanker - Rename environment variables COMPANION_* -> CLANKER_* - Update all documentation, README files, and install scripts - Rename package directories (companion-channels, companion-grind, companion-teams) - Update GitHub URLs to harivansh-afk/clanker-agent - Preserve full git history from companion-cloud monorepo
2.1 KiB
2.1 KiB
WezTerm Panel Layout Fix
Problem
WezTerm was not creating the correct panel layout for clanker-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:
- Added sidebar tracking: Store the pane ID of the first teammate spawn (
sidebarPaneId) - 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
- Used
--pane-idparameter: WezTerm CLI's--pane-idensures we always split within the right sidebar, not whichever pane is currently active
Code Changes
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
npm test -- src/adapters/wezterm-adapter.test.ts
# ✓ 17 tests passed