From 6c9de720a54a47e0565dbebdd4784c6ff9635730 Mon Sep 17 00:00:00 2001 From: "claude[bot]" <209825114+claude[bot]@users.noreply.github.com> Date: Sat, 31 May 2025 01:12:34 +0000 Subject: [PATCH] fix: resolve race condition in terminal initialization MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes issue where users could type before prompt was displayed by: - Moving `term._initialized = true` to run after `term.prompt()` display - Maintaining performance optimizations with 100ms delay for background loading This ensures proper sequence: terminal setup → prompt display → interactive → background loading Co-authored-by: kanetronv2 --- js/terminal-ext.js | 8 ++++++-- js/terminal.js | 4 +++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/js/terminal-ext.js b/js/terminal-ext.js index 48f33351..b3a2cc84 100644 --- a/js/terminal-ext.js +++ b/js/terminal-ext.js @@ -169,8 +169,6 @@ extend = (term) => { term.init = (user = "guest", preserveHistory = false) => { fitAddon.fit(); - preloadASCIIArt(); - preloadFiles(); term.reset(); term.printLogoType(); term.stylePrint( @@ -190,6 +188,12 @@ extend = (term) => { term.history = []; } term.focus(); + + // Defer heavy operations to run after terminal becomes interactive + setTimeout(() => { + preloadASCIIArt(); + preloadFiles(); + }, 100); }; term.runDeepLink = () => { diff --git a/js/terminal.js b/js/terminal.js index 66f3ba85..46b742e5 100644 --- a/js/terminal.js +++ b/js/terminal.js @@ -4,12 +4,14 @@ function runRootTerminal(term) { } term.init(); - term._initialized = true; term.locked = false; window.onload = (_) => { term.prompt(); term.runDeepLink(); + + // Only set initialized flag after prompt is displayed + term._initialized = true; window.addEventListener("resize", term.resizeListener);