From 7ff1e03b1a1ffd03a736c6b3da3f8cb1d2c0d565 Mon Sep 17 00:00:00 2001 From: "Thomas G. Lopes" Date: Mon, 2 Mar 2026 15:40:53 +0000 Subject: [PATCH] fix notifications --- pi/files/agent/extensions/pi-done-notify.ts | 35 ++++++++++++++++----- pi/files/agent/settings.json | 8 ++--- 2 files changed, 31 insertions(+), 12 deletions(-) diff --git a/pi/files/agent/extensions/pi-done-notify.ts b/pi/files/agent/extensions/pi-done-notify.ts index 5aaee96..5dfc109 100644 --- a/pi/files/agent/extensions/pi-done-notify.ts +++ b/pi/files/agent/extensions/pi-done-notify.ts @@ -9,13 +9,18 @@ import type { ExtensionAPI } from "@mariozechner/pi-coding-agent"; // ============ CONFIGURATION ============ const REMOTE_HOST = "linux-pc"; // SSH host for remote notifications -const REMOTE_COMMAND = "paplay /usr/share/sounds/freedesktop/stereo/window-attention.oga & notify-send -i ~/.pi/agent/extensions/assets/pi-logo.svg 'Pi' 'Done. Ready for input.'"; +const REMOTE_COMMAND = + "paplay /usr/share/sounds/freedesktop/stereo/window-attention.oga & notify-send -i ~/.pi/agent/extensions/assets/pi-logo.svg 'Pi' 'Done. Ready for input.'"; const LOCAL_SOUND_MAC = "/System/Library/Sounds/Glass.aiff"; const LOCAL_SOUND_LINUX = "/usr/share/sounds/freedesktop/stereo/complete.oga"; // ======================================= function isSSH(): boolean { - if (process.env.SSH_CONNECTION || process.env.SSH_CLIENT || process.env.SSH_TTY) { + if ( + process.env.SSH_CONNECTION || + process.env.SSH_CLIENT || + process.env.SSH_TTY + ) { return true; } // Check for sshd-session process (works in tmux/zellij) @@ -33,7 +38,10 @@ function isSSH(): boolean { function notifyRemote(): void { const { exec } = require("child_process"); - exec(`ssh -o ConnectTimeout=2 -o BatchMode=yes ${REMOTE_HOST} "${REMOTE_COMMAND}"`, { timeout: 5000 }); + exec( + `ssh -o ConnectTimeout=2 -o BatchMode=yes ${REMOTE_HOST} "${REMOTE_COMMAND}"`, + { timeout: 5000 }, + ); } function notifyLocal(): void { @@ -41,18 +49,29 @@ function notifyLocal(): void { if (process.platform === "darwin") { execFile("afplay", [LOCAL_SOUND_MAC]); } else if (process.platform === "linux") { - exec("paplay /usr/share/sounds/freedesktop/stereo/window-attention.oga & notify-send -i ~/.pi/agent/extensions/assets/pi-logo.svg 'Pi' 'Done. Ready for input.'"); + execFile( + "paplay", + ["/usr/share/sounds/freedesktop/stereo/window-attention.oga"], + (err: any) => { + if (err) console.error("paplay error:", err); + }, + ); + exec( + "notify-send -i ~/.pi/agent/extensions/assets/pi-logo.svg 'Pi' 'Done. Ready for input.'", + (err: any) => { + if (err) console.error("notify-send error:", err); + }, + ); } } function sendNotification(): void { - // On Mac or SSH session: notify remote Linux - // On Linux locally: notify local if (process.platform === "darwin" || isSSH()) { notifyRemote(); - } else { - notifyLocal(); } + + // always notify locally too + notifyLocal(); } export default function (pi: ExtensionAPI) { diff --git a/pi/files/agent/settings.json b/pi/files/agent/settings.json index e8f77e1..2069791 100644 --- a/pi/files/agent/settings.json +++ b/pi/files/agent/settings.json @@ -1,8 +1,8 @@ { - "lastChangelogVersion": "0.54.2", - "defaultProvider": "anthropic", - "defaultModel": "claude-opus-4-5", - "defaultThinkingLevel": "medium", + "lastChangelogVersion": "0.55.0", + "defaultProvider": "openrouter", + "defaultModel": "google/gemini-2.5-flash", + "defaultThinkingLevel": "off", "theme": "matugen", "packages": [ "npm:pi-mcp-adapter"