fix: refit terminal after sidebar toggle animation completes

toggleSidebar() flipped the sidebar--collapsed CSS class but never told
xterm.js to recalculate its dimensions. The terminal canvas kept its old
column/row count until a new session was opened (which creates a fresh
terminal that measures correctly on first fit()).

Fix: expose window._refitTerminal() from terminal.js, then call it via
a transitionend listener in toggleSidebar() so the terminal refits once
the 250ms CSS width/transform transition finishes.

Bumps version to 0.4.5.
This commit is contained in:
Brian Krabach
2026-05-02 07:08:18 -07:00
parent 493eed5a60
commit 538d11165c
4 changed files with 16 additions and 2 deletions
+7
View File
@@ -804,6 +804,13 @@ function toggleSidebar() {
var collapseBtn = $('sidebar-collapse-btn');
if (collapseBtn) collapseBtn.textContent = isOpen ? '\u2039' : '\u203a';
// Refit xterm.js after the sidebar CSS transition completes (0.25s ease).
// 'width' fires on desktop (flex layout); 'transform' fires on mobile (overlay).
sidebar.addEventListener('transitionend', function(e) {
if (e.propertyName !== 'width' && e.propertyName !== 'transform') return;
if (window._refitTerminal) window._refitTerminal();
}, { once: true });
}
/**
+7
View File
@@ -542,6 +542,13 @@ function setTerminalFontSize(size) {
window._setTerminalFontSize = setTerminalFontSize;
// Refit the terminal to its container dimensions.
// Call after layout changes (e.g. sidebar toggle) that alter available space.
window._refitTerminal = function() {
if (!_fitAddon) return;
try { _fitAddon.fit(); } catch (_) {}
};
// ---------------------------------------------------------------------------
// Mobile touch scroll — rAF-batched WheelEvent dispatch
// Mobile devices batch touchmove events irregularly; dispatching one WheelEvent
+1 -1
View File
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
[project]
name = "muxplex"
version = "0.4.4"
version = "0.4.5"
description = "Web-based tmux session dashboard — access all your tmux sessions from any browser"
readme = "README.md"
license = { text = "MIT" }
Generated
+1 -1
View File
@@ -332,7 +332,7 @@ wheels = [
[[package]]
name = "muxplex"
version = "0.4.4"
version = "0.4.5"
source = { editable = "." }
dependencies = [
{ name = "aiofiles" },