Skip to content

feat(voice): play status cues while working or waiting - #308

Open
johnmatthewtennant wants to merge 29 commits into
mainfrom
jtennant/berd-voice-status-sounds
Open

johnmatthewtennant wants to merge 29 commits into
mainfrom
jtennant/berd-voice-status-sounds

Conversation

@johnmatthewtennant

@johnmatthewtennant johnmatthewtennant commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds low-distraction status cues to active Voice conversations. Voice settings offer Off, While working (the default), and While working and waiting. Working uses the macOS Pop cue; waiting uses Purr. There is no volume control in settings.

Cues play at the beginning of each five-second window. Submitting a prompt silences the waiting cue without changing the saved preference. The chained client enters working on the first live tool call and stays working until the run ends. Every subsequent tool call signals working idempotently, without replaying the cue or resetting its cadence. Incoming speech and outgoing audio temporarily suppress playback without changing that state; the current cue resumes immediately when audio ends. Run completion restores waiting, and cues stop with the owning Voice session.

Reviewer-reproducible examples

In Voice settings, select While working and waiting and start a chained voice conversation. Submit a request that has the agent speak briefly before its first tool call, make two consecutive tool calls that keep one run active across multiple five-second intervals without speech between the calls, speak again, and then make a final tool call. Expect the waiting cue to stop when the prompt is submitted, no working cue before the first tool call, an immediate working cue when the first call starts (unless speech is active), and five-second cadence to continue across the second call. Speech suppresses playback; the working cue resumes immediately afterward. Run completion restores waiting.

Select While working and repeat the multi-tool request. Working cues play during tool activity; no waiting cue plays after the run becomes idle. Select Off and repeat the task: speech remains audible, but neither working nor waiting cues play. End the voice conversation to stop all cues.

Live verification covers chained voice with Apple TTS and speaker output. Other voice modes and output routes were not live-tested.

@johnmatthewtennant
johnmatthewtennant force-pushed the jtennant/berd-voice-status-sounds branch 2 times, most recently from e08fff6 to 45ff8fd Compare September 9, 2026 17:28
@johnmatthewtennant
johnmatthewtennant marked this pull request as ready for review September 9, 2026 17:29
@johnmatthewtennant
johnmatthewtennant requested a review from a team September 9, 2026 17:29
Sol and others added 16 commits September 11, 2026 09:37
Signed-off-by: Sol <49aa1f65411fd096d2e2ec144f1e7aa36fdc76d1b907cfdf7be000c66f9d3b8e@buzz.block.builderlab.xyz>
Signed-off-by: Sol <49aa1f65411fd096d2e2ec144f1e7aa36fdc76d1b907cfdf7be000c66f9d3b8e@buzz.block.builderlab.xyz>
Signed-off-by: Sol <49aa1f65411fd096d2e2ec144f1e7aa36fdc76d1b907cfdf7be000c66f9d3b8e@buzz.block.builderlab.xyz>
Signed-off-by: Sol <49aa1f65411fd096d2e2ec144f1e7aa36fdc76d1b907cfdf7be000c66f9d3b8e@buzz.block.builderlab.xyz>
Signed-off-by: Sol <49aa1f65411fd096d2e2ec144f1e7aa36fdc76d1b907cfdf7be000c66f9d3b8e@buzz.block.builderlab.xyz>
Signed-off-by: Sol <49aa1f65411fd096d2e2ec144f1e7aa36fdc76d1b907cfdf7be000c66f9d3b8e@buzz.block.builderlab.xyz>
Signed-off-by: Sol <49aa1f65411fd096d2e2ec144f1e7aa36fdc76d1b907cfdf7be000c66f9d3b8e@buzz.block.builderlab.xyz>
Signed-off-by: Sol <49aa1f65411fd096d2e2ec144f1e7aa36fdc76d1b907cfdf7be000c66f9d3b8e@buzz.block.builderlab.xyz>
Signed-off-by: Sol <49aa1f65411fd096d2e2ec144f1e7aa36fdc76d1b907cfdf7be000c66f9d3b8e@buzz.block.builderlab.xyz>
Signed-off-by: Sol <49aa1f65411fd096d2e2ec144f1e7aa36fdc76d1b907cfdf7be000c66f9d3b8e@buzz.block.builderlab.xyz>
Signed-off-by: Sol <49aa1f65411fd096d2e2ec144f1e7aa36fdc76d1b907cfdf7be000c66f9d3b8e@buzz.block.builderlab.xyz>
Signed-off-by: Sol <49aa1f65411fd096d2e2ec144f1e7aa36fdc76d1b907cfdf7be000c66f9d3b8e@buzz.block.builderlab.xyz>
Signed-off-by: Sol <49aa1f65411fd096d2e2ec144f1e7aa36fdc76d1b907cfdf7be000c66f9d3b8e@buzz.block.builderlab.xyz>
Signed-off-by: Sol <49aa1f65411fd096d2e2ec144f1e7aa36fdc76d1b907cfdf7be000c66f9d3b8e@buzz.block.builderlab.xyz>
@johnmatthewtennant
johnmatthewtennant force-pushed the jtennant/berd-voice-status-sounds branch from 0b698b9 to 43cb037 Compare September 11, 2026 13:47
morgmart
morgmart previously approved these changes Sep 11, 2026

@morgmart morgmart left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

🤖 Automated code review

Engineering review found no publishable changed-line issues in the exact three-dot comparison. Supplied GitHub check evidence is structurally available but currently pending with no completed status contexts, so required checks still govern merge readiness. Recommendation: APPROVE.

Deterministic publication result: 0 blocking and 0 non-blocking inline finding(s) publishable; 0 duplicate(s) suppressed; 0 blocking screenshot-evidence requirement(s) in this review body.

Pending checks: 5 check(s) are not complete.

This approval reflects the completed code review only; merge readiness remains governed by the repository's required checks.

@johnmatthewtennant johnmatthewtennant changed the title feat(voice): add runtime status sounds feat(voice): play status cues while working or waiting Sep 11, 2026
morgmart
morgmart previously approved these changes Sep 11, 2026

@morgmart morgmart left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

🤖 Automated code review

Engineering review found no publishable changed-line issues in the exact three-dot comparison. The latest update only simplifies equivalent status-sound branching and test assertions without weakening behavior coverage. Supplied GitHub check evidence is structurally available but currently pending with no completed status contexts, so required checks still govern merge readiness. Recommendation: APPROVE.

Deterministic publication result: 0 blocking and 0 non-blocking inline finding(s) publishable; 0 duplicate(s) suppressed; 0 blocking screenshot-evidence requirement(s) in this review body.

Pending checks: 3 check(s) are not complete.

This approval reflects the completed code review only; merge readiness remains governed by the repository's required checks.

morgmart
morgmart previously approved these changes Sep 11, 2026

@morgmart morgmart left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

🤖 Automated code review

Engineering review found no publishable changed-line issues in the exact three-dot comparison. The latest changes derive chained status sounds from authoritative run state and scope native suppression to actual overlapping speech playback, with discriminating lifecycle tests. Supplied GitHub check evidence is structurally available but currently pending with no completed status contexts, so required checks still govern merge readiness. Recommendation: APPROVE.

Deterministic publication result: 0 blocking and 0 non-blocking inline finding(s) publishable; 0 duplicate(s) suppressed; 0 blocking screenshot-evidence requirement(s) in this review body.

Pending checks: 5 check(s) are not complete.

This approval reflects the completed code review only; merge readiness remains governed by the repository's required checks.

morgmart
morgmart previously approved these changes Sep 11, 2026

@morgmart morgmart left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

🤖 Automated code review

Engineering review found no publishable changed-line issues in the exact three-dot comparison. The latest change gives managed status-sound workers bounded, idempotent shutdown and suppresses native microphone input while speaker-routed cues play, with focused lifecycle tests. Supplied GitHub check evidence is structurally available but currently pending with no completed status contexts, so required checks still govern merge readiness. Recommendation: APPROVE.

Deterministic publication result: 0 blocking and 0 non-blocking inline finding(s) publishable; 0 duplicate(s) suppressed; 0 blocking screenshot-evidence requirement(s) in this review body.

Pending checks: 1 check(s) are not complete.

This approval reflects the completed code review only; merge readiness remains governed by the repository's required checks.

morgmart
morgmart previously approved these changes Sep 11, 2026

@morgmart morgmart left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

🤖 Automated code review

Engineering review found no publishable changed-line issues in the exact three-dot comparison. The latest change adds a fully propagated off preference and delays cues until a complete quiet interval has elapsed, with matching persistence, protocol, localization, and cadence tests. Supplied GitHub check evidence is structurally available but currently pending with no completed status contexts, so required checks still govern merge readiness. Recommendation: APPROVE.

Deterministic publication result: 0 blocking and 0 non-blocking inline finding(s) publishable; 0 duplicate(s) suppressed; 0 blocking screenshot-evidence requirement(s) in this review body.

Pending checks: 3 check(s) are not complete.

This approval reflects the completed code review only; merge readiness remains governed by the repository's required checks.

morgmart
morgmart previously approved these changes Sep 11, 2026

@morgmart morgmart left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

🤖 Automated code review

Engineering review found no publishable changed-line issues in the exact three-dot comparison. The latest change aligns cue suppression with actual user speech and assistant playback rather than pending recognition, and updates the protocol contract with discriminating conventional and spokesperson lifecycle tests. Supplied GitHub check evidence is structurally available but currently pending with no completed status contexts, so required checks still govern merge readiness. Recommendation: APPROVE.

Deterministic publication result: 0 blocking and 0 non-blocking inline finding(s) publishable; 0 duplicate(s) suppressed; 0 blocking screenshot-evidence requirement(s) in this review body.

Pending checks: 2 check(s) are not complete.

This approval reflects the completed code review only; merge readiness remains governed by the repository's required checks.

morgmart
morgmart previously approved these changes Sep 11, 2026

@morgmart morgmart left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

🤖 Automated code review

Engineering review found no publishable changed-line issues in the exact three-dot comparison. The latest change defines chained work onset from live tool activity, excludes replayed calls, resets the latch across runs, and restores immediate transition and resume cues, with discriminating store, notification, and voice lifecycle tests. Supplied GitHub check evidence is structurally available but currently pending with no completed status contexts, so required checks still govern merge readiness. Recommendation: APPROVE.

Deterministic publication result: 0 blocking and 0 non-blocking inline finding(s) publishable; 0 duplicate(s) suppressed; 0 blocking screenshot-evidence requirement(s) in this review body.

Pending checks: 3 check(s) are not complete.

This approval reflects the completed code review only; merge readiness remains governed by the repository's required checks.

morgmart
morgmart previously approved these changes Sep 11, 2026

@morgmart morgmart left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

🤖 Automated code review

Engineering review found no publishable changed-line issues in the exact three-dot comparison. The latest change suppresses waiting cues during tool-free active runs without altering the saved preference, then restores the selected mode when the run settles or begins tool work, with discriminating lifecycle coverage. Supplied GitHub check evidence is structurally available but currently pending with no completed status contexts, so required checks still govern merge readiness. Recommendation: APPROVE.

Deterministic publication result: 0 blocking and 0 non-blocking inline finding(s) publishable; 0 duplicate(s) suppressed; 0 blocking screenshot-evidence requirement(s) in this review body.

Pending checks: 5 check(s) are not complete.

This approval reflects the completed code review only; merge readiness remains governed by the repository's required checks.

@morgmart morgmart left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

🤖 Automated code review

Engineering review found no publishable changed-line issues in the exact three-dot comparison. The latest update only clarifies a test name so it matches the tested scheduling contract; the full behavior and coverage remain sound. Supplied GitHub check evidence is structurally available but currently pending with no completed status contexts, so required checks still govern merge readiness. Recommendation: APPROVE.

Deterministic publication result: 0 blocking and 0 non-blocking inline finding(s) publishable; 0 duplicate(s) suppressed; 0 blocking screenshot-evidence requirement(s) in this review body.

Pending checks: 2 check(s) are not complete.

This approval reflects the completed code review only; merge readiness remains governed by the repository's required checks.

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.

2 participants