Skip to content

feat: emit OVOS spec topic ovos.utterance.speak#425

Merged
JarbasAl merged 1 commit into
devfrom
feat/speak-spec-topic
Jun 25, 2026
Merged

feat: emit OVOS spec topic ovos.utterance.speak#425
JarbasAl merged 1 commit into
devfrom
feat/speak-spec-topic

Conversation

@JarbasAl

Copy link
Copy Markdown
Member

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

  • `ovos_workshop/skills/ovos.py`: import `SpecMessage` from `ovos_spec_tools`; the single bus emission in `speak()` now uses `message.forward(SpecMessage.SPEAK, data)` / `Message(SpecMessage.SPEAK, data)`. Full payload (`utterance`, `expect_response`, `meta`, `lang`), forward/context behaviour, and the `wait`/`expect_response` handshake are unchanged.
  • `pyproject.toml`: add direct dep `ovos-spec-tools>=0.9.0a1`; bump `ovos_bus_client>=2.2.0a1`.
  • `test/unittests/test_decorators.py`: update the `_assert_spoken` topic check to `ovos.utterance.speak`.

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

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>
@github-actions

github-actions Bot commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

Synchronizing... Check results have been successfully retrieved. 📡

I've aggregated the results of the automated checks for this PR below.

🔍 Lint

Just 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 Check

Checking 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 Health

Scanning for any signs of 'large file' weight gain. ⚖️

✅ All required files present.

Latest Version: 8.2.1a1

ovos_workshop/version.py — Version file
README.md — README
LICENSE — License file
pyproject.toml — pyproject.toml
⚠️ setup.py — setup.py
CHANGELOG.md — Changelog
ovos_workshop/version.py has valid version block markers

🔨 Build Tests

Everything is bolted down and ready to go. 🔩

✅ All versions pass

Python Build Install Tests
3.10
3.11
3.12
3.13
3.14

A robot's work is never done... but this PR check is! ⚙️

@coderabbitai

coderabbitai Bot commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

@JarbasAl, we couldn't start this review because you've reached your PR review rate limit.

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 @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

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 configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 3b973a60-54cc-497c-a125-f1acb69c2e5d

📥 Commits

Reviewing files that changed from the base of the PR and between 3c81a6d and cc8f2ce.

📒 Files selected for processing (3)
  • ovos_workshop/skills/ovos.py
  • pyproject.toml
  • test/unittests/test_decorators.py
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/speak-spec-topic

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.

@JarbasAl JarbasAl marked this pull request as ready for review June 25, 2026 21:26
@JarbasAl JarbasAl merged commit 477c66c into dev Jun 25, 2026
12 checks passed
@JarbasAl JarbasAl deleted the feat/speak-spec-topic branch July 1, 2026 12:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant