fix(electrobun): defer xterm.open() until container visible (fixes splash crash)

This commit is contained in:
Hibryda 2026-03-23 15:54:35 +01:00
parent 75391fb1e9
commit f4a51ca6c0

View file

@ -60,8 +60,30 @@
showPlaceholder: true,
}));
term.open(termEl);
fitAddon.fit();
// Defer open if container isn't visible yet (e.g., behind splash)
const tryOpen = () => {
try {
term.open(termEl);
fitAddon.fit();
} catch (e) {
console.warn('[Terminal] open failed, retrying in 500ms:', (e as Error).message);
setTimeout(tryOpen, 500);
}
};
if (termEl.offsetParent !== null) {
tryOpen();
} else {
// Container not visible — wait for it
const observer = new IntersectionObserver((entries) => {
if (entries[0]?.isIntersecting) {
observer.disconnect();
tryOpen();
}
});
observer.observe(termEl);
// Fallback: try after 2s regardless
setTimeout(() => { observer.disconnect(); tryOpen(); }, 2000);
}
// ── Read cursor/scrollback settings ─────────────────────────────────