From 901af7d17dba616b9f489956cc7aff4bd3de7ced Mon Sep 17 00:00:00 2001 From: vitaly Date: Sat, 8 Aug 2026 19:09:04 +0300 Subject: [PATCH] fix(codex): prevent sound hook timeouts --- scripts/ai-setup.sh | 4 ++-- tests/test_fixes.sh | 12 ++++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/scripts/ai-setup.sh b/scripts/ai-setup.sh index 90b40d9..7b3b8af 100755 --- a/scripts/ai-setup.sh +++ b/scripts/ai-setup.sh @@ -1138,7 +1138,7 @@ _setup_codex_sound_hooks() { paplay /usr/share/sounds/freedesktop/stereo/complete.oga 2>/dev/null || pw-play --volume=1 /usr/share/sounds/freedesktop/stereo/complete.oga 2>/dev/null || aplay /usr/share/sounds/freedesktop/stereo/complete.oga 2>/dev/null -) & +) /dev/null 2>&1 & SOUNDEOF cat > "$hooks_dir/ai-setup-sound-on-auto-compact.sh" <<'SOUNDEOF' @@ -1149,7 +1149,7 @@ SOUNDEOF paplay /usr/share/sounds/freedesktop/stereo/alarm-clock-elapsed.oga 2>/dev/null || pw-play --volume=1 /usr/share/sounds/freedesktop/stereo/alarm-clock-elapsed.oga 2>/dev/null || aplay /usr/share/sounds/freedesktop/stereo/alarm-clock-elapsed.oga 2>/dev/null -) & +) /dev/null 2>&1 & SOUNDEOF chmod +x "$hooks_dir/ai-setup-sound-on-stop.sh" "$hooks_dir/ai-setup-sound-on-auto-compact.sh" diff --git a/tests/test_fixes.sh b/tests/test_fixes.sh index d9c0b2c..913ad47 100755 --- a/tests/test_fixes.sh +++ b/tests/test_fixes.sh @@ -21,6 +21,7 @@ GEMINI_SECTION=$(awk '/^cat > "\$BIN_DIR\/ai-gemini"/,/^GEMINIEOF/' "$SCRIPT") OPENCODE_SECTION=$(awk '/^cat > "\$BIN_DIR\/ai-opencode"/,/^OPENCODEEOF/' "$SCRIPT") CURSOR_SECTION=$(awk '/^cat > "\$BIN_DIR\/ai-cursor"/,/^CURSOREOF/' "$SCRIPT") HELPERS_SECTION=$(awk '/^cat > "\$HELPERS_FILE"/,/^HELPEREOF/' "$SCRIPT") +CODEX_SOUND_HOOKS_SECTION=$(awk '/^_setup_codex_sound_hooks\(\)/,/^}/' "$SCRIPT") # ── ai-gpt: auto-install codex ──────────────────────────────────────────── test_gpt_autoinstall() { @@ -146,6 +147,16 @@ test_native_rule_files_generated() { fi } +test_codex_sound_hooks_detach_stdio() { + local detached_count + detached_count=$(printf '%s\n' "$CODEX_SOUND_HOOKS_SECTION" | grep -Fc ') /dev/null 2>&1 &' || true) + if [ "$detached_count" -eq 2 ]; then + ok "codex hooks: background sound players detach standard streams" + else + fail "codex hooks: background sound players can keep hook pipes open" + fi +} + # ── Fix 7: trap quotes $TMP correctly ──────────────────────────────────────── test_fix7_trap_tmp() { if grep -q "trap 'rm -rf \"\$TMP\"' EXIT" "$SCRIPT"; then @@ -289,6 +300,7 @@ test_gemini_native_launcher test_cursor_native_launcher test_global_rules_include_quality_guidelines test_native_rule_files_generated +test_codex_sound_hooks_detach_stdio test_fix7_trap_tmp test_android_cli_install_url test_android_init_called