feat: emit OVOS spec topic ovos.utterance.speak#425
Conversation
OVOSSkill.speak() now emits SpecMessage.SPEAK ('ovos.utterance.speak')
instead of the legacy 'speak' bus topic. The MessageBusClient namespace
migration also-emits the legacy 'speak' topic (emit_legacy, default on),
so existing audio consumers still receive it.
Add ovos-spec-tools>=0.9.0a1 direct dep; bump ovos-bus-client>=2.2.0a1.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Synchronizing... Check results have been successfully retrieved. 📡I've aggregated the results of the automated checks for this PR below. 🔍 LintJust a quick heads-up on the latest check. 🛎️ ❌ ruff: issues found — see job log 🔒 Security (pip-audit)Evaluating the security posture of your changes. 🛡️ ✅ No known vulnerabilities found (72 packages scanned). ⚖️ License CheckChecking for any missing license headers. ✍️ ✅ No license violations found. Policy: Apache 2.0 (universal donor). StrongCopyleft / NetworkCopyleft / WeakCopyleft / Other / Error categories fail. MPL allowed. 📋 Repo HealthScanning for any signs of 'large file' weight gain. ⚖️ ✅ All required files present. Latest Version: ✅ 🔨 Build TestsEverything is bolted down and ready to go. 🔩 ✅ All versions pass
A robot's work is never done... but this PR check is! ⚙️ |
|
Warning Review limit reached
More reviews will be available in 58 minutes and 4 seconds. Learn how PR review limits work. Your organization has run out of usage credits. Purchase more credits in the billing tab to continue. ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based credits. 🚦 How do rate limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (3)
✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
What
`OVOSSkill.speak()` now emits the OVOS spec bus topic `SpecMessage.SPEAK` (`ovos.utterance.speak`, per OVOS-UTTERANCE spec) instead of the legacy `speak` topic.
Changes
Scope guarantees
Only the literal bus topic `"speak"` was migrated. Untouched: the `speak`/`speak_dialog` method names, `mycroft.audio.speech.` topics, `recognizer_loop:audio_output_` events, and any `speak` in docstrings/log strings/dialog keys.
Backward compatibility
The MessageBusClient namespace-migration feature (both flags default ON) also-emits the legacy `speak` topic via `emit_legacy` whenever a spec topic is emitted, so existing audio consumers keep receiving it.
CI status
RED until ovos-spec-tools#26 (adds `SpecMessage`) and ovos-bus-client#230 publish. Verified locally with `PYTHONPATH` pointing at the in-dev `ovos-spec-tools` (published release lacks `SpecMessage`): `test_decorators.py` 26 passed; `test_base.py` speak tests 2 passed.
🤖 Generated with Claude Code