From bb1de6d0e49e42df34ee0511d9804a3cc2b332f3 Mon Sep 17 00:00:00 2001 From: roboomp Date: Sat, 15 Aug 2026 13:48:29 +0000 Subject: [PATCH] fix(tui): preserved welcome columns for long model names Allowed the preferred left column to grow to fit model and provider labels while retaining the minimum right-column width. Added a regression test at the 55-column layout boundary. Fixes #8657 --- packages/coding-agent/CHANGELOG.md | 4 ++++ packages/coding-agent/src/modes/components/welcome.ts | 5 ++++- .../coding-agent/test/modes/components/welcome.test.ts | 10 +++++++++- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/packages/coding-agent/CHANGELOG.md b/packages/coding-agent/CHANGELOG.md index 5597d222b..84e6f7956 100644 --- a/packages/coding-agent/CHANGELOG.md +++ b/packages/coding-agent/CHANGELOG.md @@ -2,6 +2,10 @@ ## [Unreleased] +### Fixed + +- Kept the welcome screen's Tips, LSP Servers, and Recent sessions visible when a long model name still leaves enough terminal width for both columns ([#8657](https://github.com/can1357/oh-my-pi/issues/8657)). + ## [17.3.4] - 2026-08-14 ### Changed diff --git a/packages/coding-agent/src/modes/components/welcome.ts b/packages/coding-agent/src/modes/components/welcome.ts index fdb4dfc3e..9ec8ba5b3 100644 --- a/packages/coding-agent/src/modes/components/welcome.ts +++ b/packages/coding-agent/src/modes/components/welcome.ts @@ -248,7 +248,10 @@ export class WelcomeComponent implements Component { visibleWidth(this.modelName), visibleWidth(this.providerName), ); - const desiredLeftCol = Math.min(preferredLeftCol, Math.max(minLeftCol, Math.floor(dualContentWidth * 0.35))); + const desiredLeftCol = Math.max( + Math.min(preferredLeftCol, Math.max(minLeftCol, Math.floor(dualContentWidth * 0.35))), + leftMinContentWidth, + ); const dualLeftCol = dualContentWidth >= minRightCol + 1 ? Math.min(desiredLeftCol, dualContentWidth - minRightCol) diff --git a/packages/coding-agent/test/modes/components/welcome.test.ts b/packages/coding-agent/test/modes/components/welcome.test.ts index f1d5997d1..d74a7a5ea 100644 --- a/packages/coding-agent/test/modes/components/welcome.test.ts +++ b/packages/coding-agent/test/modes/components/welcome.test.ts @@ -3,7 +3,7 @@ import { Settings } from "@oh-my-pi/pi-coding-agent/config/settings"; import { pickWeightedTip, WelcomeComponent } from "@oh-my-pi/pi-coding-agent/modes/components/welcome"; import { initTheme, theme } from "@oh-my-pi/pi-coding-agent/modes/theme/theme"; -describe("WelcomeComponent tips", () => { +describe("WelcomeComponent", () => { beforeAll(async () => { await Settings.init({ inMemory: true }); await initTheme(false); @@ -61,4 +61,12 @@ describe("WelcomeComponent tips", () => { expect(newMax).toBeGreaterThan(ordinaryMax); expect(pickWeightedTip([], 0.5)).toBe(""); }); + + it("keeps the right column visible when a long model name fits", () => { + const modelName = "DeepSeek V4 Flash (2x usage)"; + const output = new WelcomeComponent("17.3.4", modelName, "opencode-go").render(55).join("\n"); + + expect(output).toContain(modelName); + expect(output).toContain("Recent sessions"); + }); });