From e8ef6d9beb55ed2b1d469cae6551b33beadfa71a Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Fri, 9 May 2025 20:38:53 +0200 Subject: [PATCH] Fix terminal height calculation GPT: Adjust terminal rows to prevent overflow --- src/lib/components/studio/terminal.svelte | 27 ++++++++++++----------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/src/lib/components/studio/terminal.svelte b/src/lib/components/studio/terminal.svelte index 58e933fbf..865e26d0c 100644 --- a/src/lib/components/studio/terminal.svelte +++ b/src/lib/components/studio/terminal.svelte @@ -2,6 +2,7 @@ import '@xterm/xterm/css/xterm.css'; import type { Action } from 'svelte/action'; import type { Synapse } from './synapse.svelte'; + import { throttle } from '$lib/helpers/functions'; type Props = { height: number; @@ -38,23 +39,21 @@ const { data } = message; if (typeof data === 'string') term.write(data); }); - const observer = new ResizeObserver(() => { + const resizer = throttle(() => { const { cols, rows } = fitAddon.proposeDimensions(); if (term.cols === cols && term.rows === rows) return; if (!Number.isInteger(cols) || !Number.isInteger(rows)) return; - term.resize(cols - 1, rows); + term.resize(cols - 1, rows - 1); + synapse.dispatch('terminal', { + operation: 'updateSize', + params: { + rows: rows - 0.5, + cols: cols - 0.5 + } + }); + }, 50); - if (resizeTimeout) clearTimeout(resizeTimeout); - resizeTimeout = setTimeout(() => { - synapse.dispatch('terminal', { - operation: 'updateSize', - params: { - rows, - cols: cols - 1 - } - }); - }, 200); - }); + const observer = new ResizeObserver(resizer); observer.observe(node); }; init(); @@ -65,6 +64,8 @@