Repository navigation
berd-call: own status sounds, with a menu bar toggle - #400
Conversation
A host such as the Buzz Berd Call plugin now reports whether the agent is working with `berd-call settings --conversation-status working|waiting`, and berd-call plays the cues through the session's existing status sound runtime. `--status-sounds off|working|working-and-waiting` and a Status Sounds submenu change the mode, which is saved for later calls. `status` shows both, and both survive a session restart. A call nothing reports on stays silent. Co-authored-by: Aaron <f425b86c3b780d43f8d9cf1802429d04dd985bf92eac44fca9468b5ad3887c5e@buzz.block.builderlab.xyz> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: John Tennant <jtennant@block.xyz>
A status report during stop or restart wrote to a child that may already have exited, so a broken pipe could end the call. The status is now committed and acknowledged, and the restarted session is sent it when it starts. Co-authored-by: Aaron <f425b86c3b780d43f8d9cf1802429d04dd985bf92eac44fca9468b5ad3887c5e@buzz.block.builderlab.xyz> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: John Tennant <jtennant@block.xyz>
morgmart
left a comment
There was a problem hiding this comment.
🤖 Automated code review
REQUEST_CHANGES: one blocking state-consistency defect allows an acknowledged status-sound update to be reported as failed while still changing and persisting the preference. All supplied GitHub checks for the exact head SHA completed successfully.
Deterministic publication result: 1 blocking and 0 non-blocking inline finding(s) publishable; 0 duplicate(s) suppressed; 0 blocking screenshot-evidence requirement(s) in this review body.
A status sound change sent to a running session was committed and saved before the session acknowledged it, and the control socket gave up after five seconds. A request reported as failed could still change the mode, now and in later calls. The change now commits and saves only on ConversationStatusApplied, is dropped if the session stops first, and waits without a read timeout like other session-backed settings. Co-authored-by: Aaron <f425b86c3b780d43f8d9cf1802429d04dd985bf92eac44fca9468b5ad3887c5e@buzz.block.builderlab.xyz> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: John Tennant <jtennant@block.xyz>
morgmart
left a comment
There was a problem hiding this comment.
🤖 Automated code review
APPROVE: the prior status-sound acknowledgement and persistence defect is fixed at this head, the full changed behavior is covered without a new actionable finding, and all supplied GitHub checks for the exact head SHA completed successfully.
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.
Summary
berd-call already has a status sound runtime (Pop every five seconds while the agent works, Purr while it waits), and its session protocol accepts
set_conversation_status. Butberd-call startnever sends it, and nothing outside the call could report status or change the mode. So the Buzz Berd Call plugin plays its ownafplaycues, and the menu bar can't toggle them.With this PR, berd-call plays the cues for any host that reports the agent's status:
berd-call settings --conversation-status working|waitingreports whether the agent is working. Until something reports it, the call stays silent, so a terminal call whose agent never reports status is unchanged.berd-call settings --status-sounds off|working|working-and-waitingand a new Status Sounds submenu in the menu bar change the mode. The mode is saved in the call's settings file and used by later calls (defaultworking, as before).statusshowsstatusSoundsandconversationStatus. Both survivesettings --restartand the Spokesperson switch: the new session is sent the current status as soon as it is ready.status_soundskey once a mode is chosen, so an older berd-call can still read settings that never set one.Related issue
Revives the status sounds part of #346 (closed). Unlike #346, berd-call doesn't guess when the agent is working from the transcript. The host reports it.
Testing
Live call from this branch's debug binary, with a temporary settings file:
New unit tests cover the menu (checkmark, title, and the request it sends), flag parsing, and the session actor holding the status until one is reported, sending it on later session starts, and saving the mode.
host_session::tests::spokesperson_results_change_and_save_only_its_voicealso fails onmain(629e0af). This PR doesn't touch it.