Skip to content

Add sounds for completed turns and user input requests#3892

Open
jakeleventhal wants to merge 3 commits into
pingdotgg:mainfrom
jakeleventhal:t3code/add-turn-status-sounds
Open

Add sounds for completed turns and user input requests#3892
jakeleventhal wants to merge 3 commits into
pingdotgg:mainfrom
jakeleventhal:t3code/add-turn-status-sounds

Conversation

@jakeleventhal

@jakeleventhal jakeleventhal commented Jul 11, 2026

Copy link
Copy Markdown
Contributor

Summary

Screen.Recording.2026-07-11.at.6.57.13.PM.mov
  • add Cuelume's synthesized success cue when a turn completes
  • add the bloom cue when a thread begins requesting user input
  • listen to global thread-shell transitions so background threads are covered
  • suppress sounds during initial thread hydration and avoid replaying unchanged states

User impact

Users receive an audible signal when agent work finishes or pauses for input, including when the affected thread is not currently open.

Validation

  • vp test apps/web/src/interactionSounds.test.ts
  • vp check
  • vp run typecheck

Note

Low Risk
Client-side UX and preferences only; no auth, data, or server behavior changes beyond a new settings field with safe defaults.

Overview
Adds audible cues when agent work finishes or pauses for the user, including for threads that are not currently open, via a root-level InteractionSoundCoordinator that watches global thread shells.

New interactionSounds logic diffs per-thread state (completed turn identity and pending user input/approval) to emit success on turn completion and bloom when user action is newly required, while skipping replay on unchanged state and suppressing audio on first hydration. Settings hydration uses a special capture path so transitions that occur before preferences load can still cue correctly afterward.

Introduces enableCompletionSounds on client settings (default on, patchable in contracts) with a General settings toggle, reset/restore-defaults wiring, and the cuelume dependency for playback.

Reviewed by Cursor Bugbot for commit f38723f. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Add sounds for completed turns and user input requests

  • Adds a cuelume-based InteractionSoundCoordinator component in routes/__root.tsx that plays a success sound when a thread's latest turn completes and a bloom sound when a thread starts requesting user input or approvals.
  • Introduces helper utilities in interactionSounds.ts to snapshot thread state and derive sound cues by comparing prior and current thread states.
  • Adds an enableCompletionSounds boolean field to ClientSettingsSchema (defaulting to true) and exposes a toggle in the General settings panel.
  • Sound playback is suppressed until settings finish hydrating to avoid spurious sounds on initial load.

Macroscope summarized f38723f.

- Add interaction sound cue detection with hydration-safe tests
- Play bloom and success cues from the web app
@coderabbitai

coderabbitai Bot commented Jul 11, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: b58959c5-1954-4e71-855d-20fa8544dd68

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot added size:M 30-99 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list. labels Jul 11, 2026
@jakeleventhal jakeleventhal marked this pull request as ready for review July 11, 2026 18:06
@macroscopeapp

macroscopeapp Bot commented Jul 11, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR adds a new feature (completion sounds) enabled by default for all users, with a new external dependency. New user-facing features warrant human review even when well-implemented.

You can customize Macroscope's approvability policy. Learn more.

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@github-actions github-actions Bot added size:L 100-499 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Jul 11, 2026

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 8387bda. Configure here.

Comment thread apps/web/src/routes/__root.tsx
Avoid advancing known thread sound state during settings hydration so turn completion and input cues are not dropped before the preference is ready.

Co-authored-by: Cursor <cursoragent@cursor.com>
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L 100-499 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant