From 6b0fcfbd316653f2a60731c16667c89830eca29d Mon Sep 17 00:00:00 2001 From: Augustin Date: Fri, 24 Apr 2026 22:33:49 +0200 Subject: [PATCH] fix(shell): default fontSize 10px and init new tabs immediately MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Base font size reduced from 12px to 10px - New tabs now initialize directly when added (was waiting for tab switch because the MutationObserver only fired on visibility changes, not on tab additions) - Zoom level applied to newly created terminals 💘 Generated with Crush Assisted-by: GLM-5.1 via Crush --- web/src/components/Shell.jsx | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/web/src/components/Shell.jsx b/web/src/components/Shell.jsx index 5e88be7..08e4bb2 100644 --- a/web/src/components/Shell.jsx +++ b/web/src/components/Shell.jsx @@ -350,7 +350,7 @@ export default function Shell({ api }) { const { t } = useI18n() const tabsRef = useRef({}) const nextIdRef = useRef(1) - const settingsRef = useRef({ fontSize: 12, fontFamily: "'JetBrains Mono', 'Fira Code', monospace", theme: 'system' }) + const settingsRef = useRef({ fontSize: 10, fontFamily: "'JetBrains Mono', 'Fira Code', monospace", theme: 'system' }) const pendingCommandsRef = useRef({}) const [tabs, setTabs] = useState(() => { @@ -399,7 +399,7 @@ export default function Shell({ api }) { const [editingTab, setEditingTab] = useState(null) const [editName, setEditName] = useState('') const [terminalSettings, setTerminalSettings] = useState({ - fontSize: 12, + fontSize: 10, fontFamily: "'JetBrains Mono', 'Fira Code', 'Cascadia Code', 'SF Mono', 'Menlo', monospace", theme: 'system', }) @@ -496,7 +496,7 @@ export default function Shell({ api }) { api.getConfig().then(d => { if (d.terminal) { setTerminalSettings({ - fontSize: d.terminal.font_size || 12, + fontSize: d.terminal.font_size || 10, fontFamily: d.terminal.font_family || "'JetBrains Mono', 'Fira Code', 'Cascadia Code', 'SF Mono', 'Menlo', monospace", theme: d.terminal.theme || 'system', }) @@ -511,8 +511,9 @@ export default function Shell({ api }) { if (!container) return const s = settingsRef.current + const effectiveFontSize = s.fontSize + zoomLevel * 2 const { term, fitAddon, searchAddon } = createTerminal(container, { - fontSize: s.fontSize, + fontSize: effectiveFontSize, fontFamily: s.fontFamily, theme: s.theme, }) @@ -706,6 +707,12 @@ export default function Shell({ api }) { }) } + for (const tab of tabs) { + if (!tabsRef.current[tab.id]) { + tryInitTab(tab, 0) + } + } + const wrapper = document.querySelector('.shell-layout')?.parentElement let observer if (wrapper) {