Skip to content

Switch the Notification hook sound to Submarine - #341

Merged
ikuwow merged 2 commits into
mainfrom
noti-event-sounds-148
Jul 27, 2026
Merged

Switch the Notification hook sound to Submarine#341
ikuwow merged 2 commits into
mainfrom
noti-event-sounds-148

Conversation

@ikuwow

@ikuwow ikuwow commented Jul 27, 2026

Copy link
Copy Markdown
Owner

Refs #148. Successor to #210 (closed), landing what survives of Phase 1 idea A within noti.

Why

#210 replaced noti with a native notify.sh, partly on the assumption that noti was worth dropping as a dependency. That assumption was re-checked when reviewing the PR queue: noti migrated from GitHub to Codeberg (https://codeberg.org/roble/noti — the brew formula homepage points there) and is actively maintained (commits in 2026-04, latest release 3.8.0). With the dependency argument gone, the audible-distinction goal fits in a settings-only change.

What

claude/settings.json hooks only. Sound mapping after this PR: Stop = Glass (unchanged), Notification = Submarine (changed, so a waiting permission prompt is audibly distinct from the Stop chime).

Out of scope (stays in #148)

  • SubagentStop hook (idea E): an earlier revision of this branch added it, and because the settings.json symlink makes the checked-out branch live immediately, it got an unplanned live trial in a subagent-heavy session — "Subagent done." fired constantly and carried no actionable information. Dropped; the finding is recorded on Strengthen Claude Code notification hooks for action-needed signaling #148
  • Repo/branch in the notification title (parallel-session disambiguation) — needs a wrapper reading the hook stdin JSON; can be a thin script that ends in a noti call
  • Permission/idle content branching within Notification — same wrapper

Verification

  • jq . claude/settings.json validates
  • NOTI_NSUSER_SOUNDNAME is the same mechanism already in use on main; the Submarine variant fired via noti with exit 0 and posted a notification during PR prep (the user heard the test sounds live)
  • Live session after merge + deploy: Notification plays Submarine on a permission prompt, audibly distinct from Stop's Glass

ikuwow and others added 2 commits July 27, 2026 16:21
Lands the surviving subset of #148 idea A + E after #210 was closed:
noti is actively maintained (migrated to codeberg.org/roble/noti,
where the brew formula homepage points), so the native notify.sh
rewrite was dropped in favor of staying within noti.

- Notification: Blow -> Submarine, so a waiting permission prompt is
  audibly distinct from the Stop chime (Glass)
- SubagentStop: new hook entry with Pop

Repo/branch in the notification title and permission/idle content
branching stay tracked in #148.

Refs #148.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Vi9VXxJvaXAHgYRoyrJsQ
The hook went live immediately via the settings.json symlink when
this branch was checked out, and a session with heavy subagent use
turned "Subagent done." into a meaningless drumbeat. Subagent
completion is the parent session's signal to keep working, not the
user's signal to act — the user-actionable events are already
covered by Notification and Stop. Idea E returns to #148 with this
finding recorded.

Refs #148.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Vi9VXxJvaXAHgYRoyrJsQ
@ikuwow ikuwow changed the title Differentiate noti sounds per hook event and add SubagentStop Switch the Notification hook sound to Submarine Jul 27, 2026
@ikuwow
ikuwow marked this pull request as ready for review July 27, 2026 07:32
@ikuwow
ikuwow merged commit 9352ad5 into main Jul 27, 2026
6 checks passed
@ikuwow
ikuwow deleted the noti-event-sounds-148 branch July 27, 2026 07:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant