From 9f6c7d7ced13b17a015f3d98e2de365ff55f5877 Mon Sep 17 00:00:00 2001 From: Tyler Vorpahl Date: Sun, 15 Mar 2026 19:35:56 -0400 Subject: [PATCH] fix(addon-fit): remove redundant same-dimension guard in fit() Terminal.resize() already no-ops internally when dimensions haven't changed. The addon's guard prevented resize() from being called at all, forcing callers using ResizeObserver-based layouts to use perturbation workarounds (resize to rows-1, then fit) that race with the observer. Co-Authored-By: Claude Opus 4.6 (1M context) --- addons/addon-fit/src/FitAddon.ts | 5 +---- addons/addon-fit/test/FitAddon.test.ts | 11 +++++++++++ 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/addons/addon-fit/src/FitAddon.ts b/addons/addon-fit/src/FitAddon.ts index a1ef53e74..87b21e99e 100644 --- a/addons/addon-fit/src/FitAddon.ts +++ b/addons/addon-fit/src/FitAddon.ts @@ -48,10 +48,7 @@ export class FitAddon implements ITerminalAddon, IFitApi { return; } - // Force a full render - if (this._terminal.rows !== dims.rows || this._terminal.cols !== dims.cols) { - this._terminal.resize(dims.cols, dims.rows); - } + this._terminal.resize(dims.cols, dims.rows); } public proposeDimensions(): ITerminalDimensions | undefined { diff --git a/addons/addon-fit/test/FitAddon.test.ts b/addons/addon-fit/test/FitAddon.test.ts index a8a2d8bbe..6a7c41fa8 100644 --- a/addons/addon-fit/test/FitAddon.test.ts +++ b/addons/addon-fit/test/FitAddon.test.ts @@ -119,6 +119,17 @@ test.describe('FitAddon', () => { strictEqual(await ctx.proxy.cols, 2); strictEqual(await ctx.proxy.rows, 1); }); + + test('same dimensions', async function(): Promise { + await setDimensions(); + await ctx.page.evaluate(`window.fit.fit()`); + const cols: number = await ctx.proxy.cols; + const rows: number = await ctx.proxy.rows; + // Calling fit() again at the same container size should not throw + await ctx.page.evaluate(`window.fit.fit()`); + strictEqual(await ctx.proxy.cols, cols); + strictEqual(await ctx.proxy.rows, rows); + }); }); });