Skip to content

Release 2.1.1a1 - #174

Open
github-actions[bot] wants to merge 28 commits into
masterfrom
release-2.1.1a1
Open

Release 2.1.1a1#174
github-actions[bot] wants to merge 28 commits into
masterfrom
release-2.1.1a1

Conversation

@github-actions

Copy link
Copy Markdown

Human review requested!

JarbasAl and others added 28 commits March 11, 2026 17:09
Updates the requirements on [phoonnx](https://github.com/TigreGotico/phoonnx) to permit the latest version.
- [Release notes](https://github.com/TigreGotico/phoonnx/releases)
- [Changelog](https://github.com/TigreGotico/phoonnx/blob/dev/CHANGELOG.md)
- [Commits](TigreGotico/phoonnx@0.5.4...1.3.3)

---
updated-dependencies:
- dependency-name: phoonnx
  dependency-version: 1.3.3
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Raise the upper version cap so this repo accepts the new major(s), matching the semver-major caps used across the OVOS ecosystem (bus-client <3.0.0, plugin-manager <3.0.0).

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…, STOP-1 §5.3) (#158)

* feat: consume both bus namespaces for speak and stop (PIPELINE-1 §9.6, STOP-1 §5.3)

ovos-audio is a subscriber, so it listens on BOTH namespaces (only one is ever
emitted): ovos.utterance.speak beside speak (§9.6), and ovos.stop beside
mycroft.stop / mycroft.audio.service.stop for TTS and media playback (§5.3).
Adds dual-namespace end2end tests.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* docs: document spec/legacy bus topics (OVOS-PIPELINE-1 §9.6, OVOS-STOP-1 §5.3)

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat!: migrate audio output to OVOS spec bus namespace

Consume and emit on the ovos.* spec topics via SpecMessage instead of the
legacy mycroft/recognizer_loop names (PIPELINE-1 §9.6):

- speak                            -> SpecMessage.SPEAK (ovos.utterance.speak)
- recognizer_loop:audio_output_start -> SpecMessage.AUDIO_OUTPUT_STARTED
- recognizer_loop:audio_output_end   -> SpecMessage.AUDIO_OUTPUT_ENDED
- mycroft.mic.listen                 -> SpecMessage.MIC_LISTEN

ovos-audio now subscribes to speak on a SINGLE namespace (SpecMessage.SPEAK);
the bus client's modernize flag bridges legacy 'speak' emitters onto the spec
topic, so the previous dual-listen + dedup is no longer needed. handle_speak
reads its payload defensively. The stop handshake (mycroft.stop / ovos.stop /
mycroft.audio.speech.stop), ovos.utterance.handled, and mycroft.audio.service.*
are intentionally left unchanged.

Depends on ovos-bus-client>=2.2.0a1 and ovos-spec-tools>=0.9.0a1 (stacked,
unpublished); CI stays red until those release.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* fix: bump ovos-plugin-manager floor to 2.5.0a1 for bus-client 2.x; require py>=3.10

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
…source pyproject (#167)

* fix: replace deprecated audio-plugin backends with media plugins; single-source pyproject

The ovos-audio-plugin-* local backends are deprecated; the ovos-media-plugin-*
plugins supersede them with compatible endpoints:
- ovos_audio_plugin_simple -> ovos-media-plugin-simple (test + extras)
- ovos-audio-plugin-mpv -> ovos-media-plugin-vlc (local playback; published +
  bus-client-2.x clean. ovos-media-plugin-mpv is the direct successor but is not
  yet on PyPI)
Also drop the archived ovos-tts-plugin-piper (phoonnx already provides offline
TTS), floor ovos_plugin_common_play[extractors]>=1.3.3a1 (first release allowing
ovos-bus-client 2.x), and delete the vestigial requirements/*.txt (duplicated the
pyproject [project] dependencies; dynamic sets version only).

* fix: use ovos-media-plugin-mpv (not vlc) as the default local-playback backend

ovos-media-plugin-mpv is now on PyPI (workflows modernized) and is the policy-clean
local backend: it drives mpv over subprocess JSON-IPC, no (L)GPL linkage. VLC is an
explicit exception to the permissive-by-default policy — python-vlc links libvlc
((L)GPL) — so ovos-media-plugin-vlc is NOT bundled; users opt in explicitly.
…ses (#169)

* fix: floor media-plugin chromecast/spotify to bus-client-2.x prereleases

Stable ovos-media-plugin-chromecast (0.1.2) and -spotify (0.2.7) cap
ovos-plugin-manager<2.0, so a consumer of ovos-audio[extras] backtracks onto them
and dies. Floor at the cap-free prereleases (chromecast>=0.1.4a8, spotify>=0.2.8a5)
per prerelease-floor-pin.

* fix: floor tts-plugin-server + dialog-normalizer to opm-2.x prereleases

Stable ovos-tts-plugin-server (0.0.4) and ovos-dialog-normalizer-plugin cap
ovos-plugin-manager<2.0; floor at the cap-free prereleases (server>=0.0.6a1,
dialog-normalizer>=0.0.3a1).
* feat: adopt AUDIO-1 spec output topics (dual-namespace)

Subscribe to the OVOS-AUDIO-1 spec-named topics additively, alongside
the legacy mycroft.*/speak:* names, so both namespaces drive the same
handlers:

- ovos.utterance.speak.b64 (SpecMessage.SPEAK_B64, §3.4) + legacy
  speak:b64_audio
- ovos.audio.queue (SpecMessage.AUDIO_QUEUE, §4.1) + legacy
  mycroft.audio.queue
- ovos.audio.play_sound (SpecMessage.AUDIO_PLAY_SOUND, §4.2) + legacy
  mycroft.audio.play_sound
- ovos.audio.is_speaking (SpecMessage.AUDIO_IS_SPEAKING, §5.3) + legacy
  mycroft.audio.speak.status
- ovos.audio.stop (SpecMessage.AUDIO_STOP, §6) + legacy
  mycroft.audio.speech.stop

The b64 handler now also emits ovos.audio.speech (SpecMessage.AUDIO_SPEECH,
§3.4/§4.3) with the synthesised audio and ovos.mic.listen on listen=True,
in addition to the legacy correlated .response. The speaking-status handler
replies on ovos.audio.is_speaking and guards against answering its own
reply (shared query/reply topic name). The universal ovos.stop broadcast
stays wired (§6).

Floor-pin ovos-spec-tools>=0.16.1a2 (first release carrying the six new
SpecMessage members).

Tests drive the service over a FakeBus and assert each of the six topics
works under BOTH the legacy and the spec name.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* fix: don't hand-emit the legacy b64 reply — the bus client mirrors it

handle_b64_audio emitted both ovos.audio.speech (AUDIO_SPEECH) AND the
legacy speak:b64_audio.response (via message.response). The bus client's
emit_legacy flag already mirrors ovos.audio.speech onto
speak:b64_audio.response (ovos-spec-tools MIGRATION_MAP), so the legacy
reply went on the wire twice. Emit the spec topic only and let the
migration bridge legacy.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* fix: bump bus-client + spec-tools floors for AUDIO-1 dual-namespace

handle_b64_audio relies on the bus-client emit_legacy migration and the
AUDIO MIGRATION_MAP entries (added to ovos-spec-tools in the 0.17.x line,
PR#55). Pin prerelease floors that guarantee the dual-namespace behavior
is present, resolved by pip without --pre:
  ovos_bus_client  >=2.2.0a1  -> >=2.5.1a1,<3.0.0
  ovos-spec-tools  >=0.16.1a2 -> >=0.17.3a1,<1.0.0

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* test: ovoscope e2e for b64 synthesised-audio dual-namespace delivery

OVOS-AUDIO-1 §3.4/§4.3: handle_b64_audio now emits the synthesised audio on
the spec topic ovos.audio.speech only; the bus client mirrors it onto the
legacy speak:b64_audio.response (ovos-spec-tools MIGRATION_MAP). Add an
additive ovoscope end-to-end test booting a real PlaybackService over a real
bus with an offline MockTTS, driving both the legacy (speak:b64_audio) and the
spec (ovos.utterance.speak.b64) input topics, and asserting the reply reaches a
subscriber on BOTH ovos.audio.speech and speak:b64_audio.response with the
expected b64 payload. Also covers listen=True re-opening the mic via
ovos.mic.listen.

Floor the ovoscope test dep to >=1.0.1a1 (first line whose transitive ovos-core
no longer caps ovos-bus-client<2.0.0) and wire the gh-automations ovoscope.yml
end-to-end workflow.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* test: bump ovoscope floor to >=1.0.2a1 for the MockTTS shutdown fix

ovoscope 1.0.2a1 ships the MockTTS.__del__ no-op fix (OpenVoiceOS/ovoscope#100):
a garbage-collected mock from an earlier PlaybackServiceHarness no longer stops
the shared TTS.playback thread owned by a later harness, which had been flaking
the test/end2end/ suite (TimeoutError on the 2nd+ speak). Floor-pinned (>=) so
pip resolves the prerelease with no --pre. Full test/end2end/ now green (57/57).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
spec-tools crossed to 1.x; bus-client 2.6.0a1 and the rest of the
stack now require ovos-spec-tools>=1.1.0a1. Drop the <1.0.0 cap
(keep the floor) so the stack resolves.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
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.

1 participant