fix(microsoft,elevenlabs): add enabledByDefault so speech providers register at runtime#62846
Conversation
Greptile SummaryAdds Confidence Score: 5/5Safe to merge — purely declarative fix with no logic changes, matching the established pattern for all other bundled speech providers. The change is exactly two added lines across two JSON manifests. It corrects an omission (missing enabledByDefault: true) that is clearly verified against the three working speech provider manifests and the activation gate in src/plugins/config-policy.ts. No code was modified, no new logic introduced, and the PR author confirmed pnpm build, pnpm lint, and both extension test suites pass. No files require special attention.
|
|
CI failures are pre-existing and unrelated to this manifest change:
Extension-specific tests for both microsoft and elevenlabs pass cleanly. |
de84361 to
661cc9d
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 661cc9dd36
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9a042170ee
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
…rovider Addresses the P2 Codex review on openclaw#62846 that flagged auto-enabling ElevenLabs as a product regression for MiniMax users. Both providers claim the generic `speed` token, and parseTtsDirectives walked providers in autoSelectOrder with first-match-wins, so inputs like `[[tts:provider=minimax speed=1.2]]` silently routed speed to providerOverrides.elevenlabs once elevenlabs participated in every parse pass. The parser now pre-scans for `provider=` (honoring legacy last-wins semantics) and routes generic tokens with the declared provider tried first, falling back to autoSelectOrder when it doesn't handle the key. Token order inside the directive no longer matters: `speed=1.2` before or after `provider=minimax` both resolve to MiniMax. Adds a regression test suite covering the exact ElevenLabs/MiniMax speed collision plus fallback, mixed-token, last-wins, and allowProvider-disabled cases. parseTtsDirectives had no prior test coverage.
cc2d801 to
ed6f581
Compare
…rovider Addresses the P2 Codex review on openclaw#62846 that flagged auto-enabling ElevenLabs as a product regression for MiniMax users. Both providers claim the generic `speed` token, and parseTtsDirectives walked providers in autoSelectOrder with first-match-wins, so inputs like `[[tts:provider=minimax speed=1.2]]` silently routed speed to providerOverrides.elevenlabs once elevenlabs participated in every parse pass. The parser now pre-scans for `provider=` (honoring legacy last-wins semantics) and routes generic tokens with the declared provider tried first, falling back to autoSelectOrder when it doesn't handle the key. Token order inside the directive no longer matters: `speed=1.2` before or after `provider=minimax` both resolve to MiniMax. Adds a regression test suite covering the exact ElevenLabs/MiniMax speed collision plus fallback, mixed-token, last-wins, and allowProvider-disabled cases. parseTtsDirectives had no prior test coverage.
…egister at runtime
…rovider Addresses the P2 Codex review on openclaw#62846 that flagged auto-enabling ElevenLabs as a product regression for MiniMax users. Both providers claim the generic `speed` token, and parseTtsDirectives walked providers in autoSelectOrder with first-match-wins, so inputs like `[[tts:provider=minimax speed=1.2]]` silently routed speed to providerOverrides.elevenlabs once elevenlabs participated in every parse pass. The parser now pre-scans for `provider=` (honoring legacy last-wins semantics) and routes generic tokens with the declared provider tried first, falling back to autoSelectOrder when it doesn't handle the key. Token order inside the directive no longer matters: `speed=1.2` before or after `provider=minimax` both resolve to MiniMax. Adds a regression test suite covering the exact ElevenLabs/MiniMax speed collision plus fallback, mixed-token, last-wins, and allowProvider-disabled cases. parseTtsDirectives had no prior test coverage.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f7bffe3656
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
f7bffe3 to
80061e0
Compare
obviyus
left a comment
There was a problem hiding this comment.
Verified the Microsoft and ElevenLabs bundled speech providers now register by default, and confirmed TTS directive routing prefers the explicit or active provider so speed overrides stop landing on the wrong provider.
Maintainer follow-up: fixed the Discord voice runtime import to use an exported Plugin SDK seam and resolved the package-exports review thread on the latest head.
Local gate: pnpm test src/tts/directives.test.ts; pnpm test extensions/speech-core/src/tts.test.ts; pnpm build; pnpm check.
…enclaw#62846) (thanks @stainlu) * fix(microsoft,elevenlabs): add enabledByDefault so speech providers register at runtime * fix(tts): route generic directive tokens to the explicitly declared provider Addresses the P2 Codex review on openclaw#62846 that flagged auto-enabling ElevenLabs as a product regression for MiniMax users. Both providers claim the generic `speed` token, and parseTtsDirectives walked providers in autoSelectOrder with first-match-wins, so inputs like `[[tts:provider=minimax speed=1.2]]` silently routed speed to providerOverrides.elevenlabs once elevenlabs participated in every parse pass. The parser now pre-scans for `provider=` (honoring legacy last-wins semantics) and routes generic tokens with the declared provider tried first, falling back to autoSelectOrder when it doesn't handle the key. Token order inside the directive no longer matters: `speed=1.2` before or after `provider=minimax` both resolve to MiniMax. Adds a regression test suite covering the exact ElevenLabs/MiniMax speed collision plus fallback, mixed-token, last-wins, and allowProvider-disabled cases. parseTtsDirectives had no prior test coverage. * fix(tts): prefer active provider for generic directives * fix: register bundled TTS providers safely (openclaw#62846) (thanks @stainlu) * fix: use exported TTS SDK seam (openclaw#62846) (thanks @stainlu) --------- Co-authored-by: Ayaan Zaidi <hi@obviy.us>
…enclaw#62846) (thanks @stainlu) * fix(microsoft,elevenlabs): add enabledByDefault so speech providers register at runtime * fix(tts): route generic directive tokens to the explicitly declared provider Addresses the P2 Codex review on openclaw#62846 that flagged auto-enabling ElevenLabs as a product regression for MiniMax users. Both providers claim the generic `speed` token, and parseTtsDirectives walked providers in autoSelectOrder with first-match-wins, so inputs like `[[tts:provider=minimax speed=1.2]]` silently routed speed to providerOverrides.elevenlabs once elevenlabs participated in every parse pass. The parser now pre-scans for `provider=` (honoring legacy last-wins semantics) and routes generic tokens with the declared provider tried first, falling back to autoSelectOrder when it doesn't handle the key. Token order inside the directive no longer matters: `speed=1.2` before or after `provider=minimax` both resolve to MiniMax. Adds a regression test suite covering the exact ElevenLabs/MiniMax speed collision plus fallback, mixed-token, last-wins, and allowProvider-disabled cases. parseTtsDirectives had no prior test coverage. * fix(tts): prefer active provider for generic directives * fix: register bundled TTS providers safely (openclaw#62846) (thanks @stainlu) * fix: use exported TTS SDK seam (openclaw#62846) (thanks @stainlu) --------- Co-authored-by: Ayaan Zaidi <hi@obviy.us>
…enclaw#62846) (thanks @stainlu) * fix(microsoft,elevenlabs): add enabledByDefault so speech providers register at runtime * fix(tts): route generic directive tokens to the explicitly declared provider Addresses the P2 Codex review on openclaw#62846 that flagged auto-enabling ElevenLabs as a product regression for MiniMax users. Both providers claim the generic `speed` token, and parseTtsDirectives walked providers in autoSelectOrder with first-match-wins, so inputs like `[[tts:provider=minimax speed=1.2]]` silently routed speed to providerOverrides.elevenlabs once elevenlabs participated in every parse pass. The parser now pre-scans for `provider=` (honoring legacy last-wins semantics) and routes generic tokens with the declared provider tried first, falling back to autoSelectOrder when it doesn't handle the key. Token order inside the directive no longer matters: `speed=1.2` before or after `provider=minimax` both resolve to MiniMax. Adds a regression test suite covering the exact ElevenLabs/MiniMax speed collision plus fallback, mixed-token, last-wins, and allowProvider-disabled cases. parseTtsDirectives had no prior test coverage. * fix(tts): prefer active provider for generic directives * fix: register bundled TTS providers safely (openclaw#62846) (thanks @stainlu) * fix: use exported TTS SDK seam (openclaw#62846) (thanks @stainlu) --------- Co-authored-by: Ayaan Zaidi <hi@obviy.us>
Summary
/tts provideronly shows OpenAI, and/tts statusreportsmicrosoft (not configured)withskipped(no_provider_registered). Users configuring Microsoft voices (e.g.zh-CN-XiaoxiaoNeural) or ElevenLabs get no TTS output despite correct config; the gateway silently falls back to OpenAI.parseTtsDirectiveswalks providers inautoSelectOrderwith first-match-wins and does not honor an explicitprovider=Xtoken when routing generic tokens. Inputs like[[tts:provider=minimax speed=1.2]]would silently routespeedto whichever provider comes first in order, not to the declared MiniMax."enabledByDefault": truetoextensions/microsoft/openclaw.plugin.jsonandextensions/elevenlabs/openclaw.plugin.json, matching the pattern of other working bundled speech provider plugins (openai, minimax, vydra).parseTtsDirectivesnow pre-scans forprovider=Xand routes generic tokens to the declared provider first, falling back toautoSelectOrderonly when the declared provider doesn't handle the key. Token order inside the directive no longer matters.src/tts/directives.test.tscovering the ElevenLabs/MiniMaxspeedcollision and fallback, mixed-token, last-wins, andallowProvider-disabled cases.parseTtsDirectivespreviously had no test coverage.Change Type (select all)
Scope (select all touched areas)
Linked Issue/PR