fix: size main pane using configured layout percentage

Main pane resize now uses main_pane_size instead of a hardcoded 50 percent fallback so post-split layout remains stable and predictable.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
YeonGyu-Kim
2026-02-17 03:40:46 +09:00
parent da3f24b8b1
commit 17da22704e
3 changed files with 17 additions and 5 deletions
@@ -22,9 +22,17 @@ export interface ActionExecutorDeps {
enforceMainPaneWidth: typeof enforceMainPaneWidth
}
async function enforceMainPane(windowState: WindowState, deps: ActionExecutorDeps): Promise<void> {
async function enforceMainPane(
windowState: WindowState,
config: TmuxConfig,
deps: ActionExecutorDeps,
): Promise<void> {
if (!windowState.mainPane) return
await deps.enforceMainPaneWidth(windowState.mainPane.paneId, windowState.windowWidth)
await deps.enforceMainPaneWidth(
windowState.mainPane.paneId,
windowState.windowWidth,
config.main_pane_size,
)
}
export async function executeActionWithDeps(
@@ -35,7 +43,7 @@ export async function executeActionWithDeps(
if (action.type === "close") {
const success = await deps.closeTmuxPane(action.paneId)
if (success) {
await enforceMainPane(ctx.windowState, deps)
await enforceMainPane(ctx.windowState, ctx.config, deps)
}
return { success }
}
@@ -65,7 +73,7 @@ export async function executeActionWithDeps(
if (result.success) {
await deps.applyLayout(ctx.config.layout, ctx.config.main_pane_size)
await enforceMainPane(ctx.windowState, deps)
await enforceMainPane(ctx.windowState, ctx.config, deps)
}
return {
@@ -86,6 +86,7 @@ describe("executeAction", () => {
expect(mockApplyLayout).toHaveBeenCalledTimes(1)
expect(mockApplyLayout).toHaveBeenCalledWith("main-horizontal", 55)
expect(mockEnforceMainPaneWidth).toHaveBeenCalledTimes(1)
expect(mockEnforceMainPaneWidth).toHaveBeenCalledWith("%0", 220, 55)
})
test("does not apply layout when spawn fails", async () => {