From d39a26477a8c739f3ba032a3122c76cccaa8b6ba Mon Sep 17 00:00:00 2001 From: Egor Date: Tue, 2 Dec 2025 21:20:29 -0800 Subject: [PATCH] minor terminal output copy updates --- package.json | 4 ++-- src/components/App/StatusBar.tsx | 21 ++++++++++++++++---- src/main/modules/koboldcpp/launcher/index.ts | 18 +++++++---------- src/main/modules/koboldcpp/tunnel.ts | 4 ++-- yarn.lock | 10 +++++----- 5 files changed, 33 insertions(+), 24 deletions(-) diff --git a/package.json b/package.json index 4f208ef..3b42541 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "gerbil", "productName": "Gerbil", - "version": "1.14.1", + "version": "1.15.0", "description": "Run Large Language Models locally", "main": "out/main/index.js", "homepage": "./", @@ -60,7 +60,7 @@ "eslint-plugin-sonarjs": "^3.0.5", "globals": "^16.5.0", "jiti": "^2.6.1", - "prettier": "^3.7.3", + "prettier": "^3.7.4", "rollup-plugin-visualizer": "^6.0.5", "typescript": "^5.9.3", "vite": "^7.2.6" diff --git a/src/components/App/StatusBar.tsx b/src/components/App/StatusBar.tsx index 13a92ee..8ec260d 100644 --- a/src/components/App/StatusBar.tsx +++ b/src/components/App/StatusBar.tsx @@ -40,7 +40,10 @@ export const StatusBar = ({ maxDataPoints = 60 }: StatusBarProps) => { const tunnelUrl = useMemo(() => { if (!tunnelBaseUrl) return null; - if (frontendPreference === 'sillytavern' || frontendPreference === 'openwebui') { + if ( + frontendPreference === 'sillytavern' || + frontendPreference === 'openwebui' + ) { return tunnelBaseUrl; } return getTunnelInterfaceUrl(tunnelBaseUrl, { @@ -48,7 +51,12 @@ export const StatusBar = ({ maxDataPoints = 60 }: StatusBarProps) => { imageGenerationFrontendPreference, isImageGenerationMode, }); - }, [tunnelBaseUrl, frontendPreference, imageGenerationFrontendPreference, isImageGenerationMode]); + }, [ + tunnelBaseUrl, + frontendPreference, + imageGenerationFrontendPreference, + isImageGenerationMode, + ]); useEffect(() => { if (!systemMonitoringEnabled) { @@ -90,7 +98,8 @@ export const StatusBar = ({ maxDataPoints = 60 }: StatusBarProps) => { }, [maxDataPoints, systemMonitoringEnabled]); useEffect(() => { - const cleanup = window.electronAPI.kobold.onTunnelUrlChanged(setTunnelBaseUrl); + const cleanup = + window.electronAPI.kobold.onTunnelUrlChanged(setTunnelBaseUrl); return cleanup; }, []); @@ -134,7 +143,11 @@ export const StatusBar = ({ maxDataPoints = 60 }: StatusBarProps) => { color={copied ? 'teal' : undefined} onClick={copy} > - {copied ? : } + {copied ? ( + + ) : ( + + )} )} diff --git a/src/main/modules/koboldcpp/launcher/index.ts b/src/main/modules/koboldcpp/launcher/index.ts index f6f7096..aa0bddb 100644 --- a/src/main/modules/koboldcpp/launcher/index.ts +++ b/src/main/modules/koboldcpp/launcher/index.ts @@ -39,7 +39,7 @@ function spawnPreLaunchCommands(commands: string[]) { for (const command of commands) { if (!command.trim()) continue; - sendKoboldOutput(`[PRE-LAUNCH] Running: ${command}\n`); + sendKoboldOutput(`Running: ${command}\n`); try { const child = spawn(shell, [shellFlag, command], { @@ -51,35 +51,31 @@ function spawnPreLaunchCommands(commands: string[]) { preLaunchProcesses.add(child); child.stdout?.on('data', (data) => { - sendKoboldOutput(`[PRE-LAUNCH] ${data.toString()}`, true); + sendKoboldOutput(data.toString(), true); }); child.stderr?.on('data', (data) => { - sendKoboldOutput(`[PRE-LAUNCH] ${data.toString()}`, true); + sendKoboldOutput(data.toString(), true); }); child.on('error', (error) => { - sendKoboldOutput( - `[PRE-LAUNCH ERROR] Failed to run "${command}": ${error.message}\n` - ); + sendKoboldOutput(`Failed to run "${command}": ${error.message}\n`); preLaunchProcesses.delete(child); }); child.on('exit', (code, signal) => { preLaunchProcesses.delete(child); if (code !== 0 && code !== null) { - sendKoboldOutput( - `[PRE-LAUNCH] Command "${command}" exited with code ${code}\n` - ); + sendKoboldOutput(`Command "${command}" exited with code ${code}\n`); } else if (signal) { sendKoboldOutput( - `[PRE-LAUNCH] Command "${command}" terminated with signal ${signal}\n` + `Command "${command}" terminated with signal ${signal}\n` ); } }); } catch (error) { sendKoboldOutput( - `[PRE-LAUNCH ERROR] Failed to start "${command}": ${error instanceof Error ? error.message : String(error)}\n` + `Failed to start "${command}": ${error instanceof Error ? error.message : String(error)}\n` ); } } diff --git a/src/main/modules/koboldcpp/tunnel.ts b/src/main/modules/koboldcpp/tunnel.ts index a58562f..5b60852 100644 --- a/src/main/modules/koboldcpp/tunnel.ts +++ b/src/main/modules/koboldcpp/tunnel.ts @@ -50,7 +50,7 @@ export const startTunnel = async () => { tunnel.on('error', (error) => { logError(`Tunnel error: ${error.message}`, error); - sendKoboldOutput(`[TUNNEL ERROR] ${error.message}`); + sendKoboldOutput(`Tunnel error: ${error.message}`); }); tunnel.on('exit', (code, signal) => { @@ -66,7 +66,7 @@ export const startTunnel = async () => { } catch (error) { const errorMessage = error instanceof Error ? error.message : String(error); logError(`Failed to start tunnel: ${errorMessage}`, error as Error); - sendKoboldOutput(`[TUNNEL ERROR] ${errorMessage}`); + sendKoboldOutput(`Failed to start tunnel: ${errorMessage}`); activeTunnel = null; return null; } diff --git a/yarn.lock b/yarn.lock index 9df713c..ec8b905 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3746,7 +3746,7 @@ __metadata: jiti: "npm:^2.6.1" lucide-react: "npm:^0.555.0" mime-types: "npm:^3.0.2" - prettier: "npm:^3.7.3" + prettier: "npm:^3.7.4" react: "npm:^19.2.0" react-dom: "npm:^19.2.0" react-error-boundary: "npm:^6.0.0" @@ -5516,12 +5516,12 @@ __metadata: languageName: node linkType: hard -"prettier@npm:^3.7.3": - version: 3.7.3 - resolution: "prettier@npm:3.7.3" +"prettier@npm:^3.7.4": + version: 3.7.4 + resolution: "prettier@npm:3.7.4" bin: prettier: bin/prettier.cjs - checksum: 10c0/ee86bb06121c74dadc54f30b6f99aff6288966d9b842ce501d6991e20d20c6ce2d45028651b3b0955ca6e5fa89c1bee1e72b6f810243a93cef8bc69737972ef7 + checksum: 10c0/9675d2cd08eacb1faf1d1a2dbfe24bfab6a912b059fc9defdb380a408893d88213e794a40a2700bd29b140eb3172e0b07c852853f6e22f16f3374659a1a13389 languageName: node linkType: hard