From 4fc3426dec082faf0c08430abbe834c778c8a502 Mon Sep 17 00:00:00 2001 From: Theo Paris Date: Sat, 28 Feb 2026 15:25:33 -0800 Subject: [PATCH 1/2] fix: improve interactive command detection Signed-off-by: Theo Paris --- internal/interfaces/repl/repl_commands.go | 25 +---------------------- 1 file changed, 1 insertion(+), 24 deletions(-) diff --git a/internal/interfaces/repl/repl_commands.go b/internal/interfaces/repl/repl_commands.go index 2d46a41..af1f594 100644 --- a/internal/interfaces/repl/repl_commands.go +++ b/internal/interfaces/repl/repl_commands.go @@ -450,34 +450,11 @@ func (m *Model) isInteractiveCommand(cmdName string) bool { } } - // List of known interactive commands - interactiveCommands := map[string]bool{ - "vi": true, - "vim": true, - "nvim": true, - "nano": true, - "emacs": true, - "less": true, - "more": true, - "top": true, - "htop": true, - "ssh": true, - "telnet": true, - "ftp": true, - "sftp": true, - "python": true, // Python REPL - "node": true, // Node.js REPL - "irb": true, // Ruby REPL - "psql": true, // PostgreSQL - "mysql": true, // MySQL - "mongo": true, // MongoDB - } - // Check base command name (without path) baseName := filepath.Base(cmdName) baseName = strings.TrimSuffix(baseName, filepath.Ext(baseName)) - return interactiveCommands[baseName] + return !m.isBuiltinCommand(baseName) } // executeShellScriptNative executes .sh/.bash script natively via mvdan.cc/sh. From 5bf14aea2500c84b92657329807f9b9ac0239ff0 Mon Sep 17 00:00:00 2001 From: Theo Paris Date: Sat, 28 Feb 2026 15:54:08 -0800 Subject: [PATCH 2/2] fix: clear before printing prompt --- internal/interfaces/repl/repl_render.go | 1 + 1 file changed, 1 insertion(+) diff --git a/internal/interfaces/repl/repl_render.go b/internal/interfaces/repl/repl_render.go index 5cda19c..9848c73 100644 --- a/internal/interfaces/repl/repl_render.go +++ b/internal/interfaces/repl/repl_render.go @@ -65,6 +65,7 @@ func (m Model) renderClassicMode() string { // When executing, simply don't render anything - command output will appear naturally. if !m.executing { // Normal prompt with input. + b.WriteString("\r\033[2K") b.WriteString(m.renderPromptForHistoryANSI()) b.WriteString(m.renderInputWithCursor()) b.WriteString(m.renderHints())