diff --git a/packages/coding-agent/src/live/visualizer.ts b/packages/coding-agent/src/live/visualizer.ts index ea368af3e..633273d6b 100644 --- a/packages/coding-agent/src/live/visualizer.ts +++ b/packages/coding-agent/src/live/visualizer.ts @@ -138,7 +138,7 @@ export class LiveVisualizer implements Component { } #renderLines(maxWidth: number): readonly string[] { - const width = Math.max(2, Math.min(maxWidth, 120)); + const width = Math.max(2, maxWidth); const innerWidth = width - 2; const border = (content: string): string => theme.fg("border", "│") + content + (width > 1 ? theme.fg("border", "│") : ""); diff --git a/packages/coding-agent/test/live-visualizer.test.ts b/packages/coding-agent/test/live-visualizer.test.ts new file mode 100644 index 000000000..fd42a3a72 --- /dev/null +++ b/packages/coding-agent/test/live-visualizer.test.ts @@ -0,0 +1,25 @@ +import { beforeAll, describe, expect, it } from "bun:test"; +import { visibleWidth } from "@oh-my-pi/pi-tui"; +import { LiveVisualizer } from "../src/live/visualizer"; +import { initTheme } from "../src/modes/theme/theme"; + +describe("LiveVisualizer", () => { + beforeAll(async () => { + await initTheme(false); + }); + + it("renders across the entire provided width even when wider than 120 columns", () => { + const visualizer = new LiveVisualizer({ + onStop: () => {}, + onToggleMute: () => {}, + }); + + for (const targetWidth of [80, 140, 200]) { + const lines = visualizer.render(targetWidth); + expect(lines.length).toBeGreaterThan(0); + for (const line of lines) { + expect(visibleWidth(line)).toBe(targetWidth); + } + } + }); +});