Enhancement
Summary
Hands-free voice control words (repeat / mute command words, the stop-word, and the stop-speech keyword) were configured per agent/instance, so they had to be re-set for every repo/agent. Move them to the global user profile so they apply across ALL hands-free sessions regardless of which agent or repo is active — with a per-instance override for the rare case someone wants different words on one agent.
Change
- Profile schema (
workers/api/src/lib/profile.ts): new group: "voice" fields — voiceRepeatWords, voiceMuteWords, voiceStopWords, voiceStopSpeechKeyword (stored in the profile custom JSON, no migration; persisted via PUT /v1/profile).
- Profile UI (
store/console/src/pages/Profile.tsx): a "Hands-free voice commands" section with those fields (global).
- Voice config (
packages/sdk/src/voice/config.ts): getVoiceConfig now also fetches /v1/profile and uses the profile control words as the default; a non-empty per-instance value still wins.
- Per-agent Settings (
store/console/src/tabs/SettingsTab.tsx): the existing keyword fields stay as an override, with a note pointing to the profile default.
Behavior
- Set your control words once in Profile → Hands-free voice commands → they apply to every agent/repo.
- A per-agent value (Settings → Voice) overrides the profile for that agent only; blank = use the profile default; blank in both = built-in defaults.
Enhancement
Summary
Hands-free voice control words (repeat / mute command words, the stop-word, and the stop-speech keyword) were configured per agent/instance, so they had to be re-set for every repo/agent. Move them to the global user profile so they apply across ALL hands-free sessions regardless of which agent or repo is active — with a per-instance override for the rare case someone wants different words on one agent.
Change
workers/api/src/lib/profile.ts): newgroup: "voice"fields —voiceRepeatWords,voiceMuteWords,voiceStopWords,voiceStopSpeechKeyword(stored in the profilecustomJSON, no migration; persisted viaPUT /v1/profile).store/console/src/pages/Profile.tsx): a "Hands-free voice commands" section with those fields (global).packages/sdk/src/voice/config.ts):getVoiceConfignow also fetches/v1/profileand uses the profile control words as the default; a non-empty per-instance value still wins.store/console/src/tabs/SettingsTab.tsx): the existing keyword fields stay as an override, with a note pointing to the profile default.Behavior