fix(ui): populate realtime talk provider and transport options from talk.catalog#93746
Merged
vincentkoc merged 8 commits intoJun 16, 2026
Merged
Conversation
vincentkoc
force-pushed
the
fix/realtime-talk-dynamic-provider-catalog
branch
from
June 16, 2026 19:42
f665a18 to
4612dca
Compare
vincentkoc
force-pushed
the
fix/realtime-talk-dynamic-provider-catalog
branch
from
June 16, 2026 20:21
4612dca to
b163d5c
Compare
Member
|
Maintainer repair is complete and this is land-ready. What changed beyond the contributor head:
Verification:
The contributor supplied live browser proof for plugin discovery. I did not rerun that live-browser scenario after the maintainer state-transition repairs; the focused UI tests, changed gate, and full PR CI cover those repairs. |
github-actions Bot
pushed a commit
to Desicool/openclaw
that referenced
this pull request
Jun 17, 2026
…alk.catalog (openclaw#93746) * fix(ui): populate realtime talk provider and transport options from talk.catalog * test(ui): cover realtime talk catalog options * fix(ui): keep realtime talk catalog selections valid * fix(ui): honor realtime browser session support * fix(ui): preserve realtime provider fallback options * fix(ui): clear stale realtime talk catalogs * fix(ui): refresh realtime talk catalog on reconnect * fix(ui): reconcile realtime talk catalog selections --------- Co-authored-by: Vincent Koc <[email protected]>
crh-code
pushed a commit
to crh-code/openclaw
that referenced
this pull request
Jun 18, 2026
…alk.catalog (openclaw#93746) * fix(ui): populate realtime talk provider and transport options from talk.catalog * test(ui): cover realtime talk catalog options * fix(ui): keep realtime talk catalog selections valid * fix(ui): honor realtime browser session support * fix(ui): preserve realtime provider fallback options * fix(ui): clear stale realtime talk catalogs * fix(ui): refresh realtime talk catalog on reconnect * fix(ui): reconcile realtime talk catalog selections --------- Co-authored-by: Vincent Koc <[email protected]>
This was referenced Jun 26, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The Provider dropdown in the realtime talk Advanced panel was hardcoded to
[Auto, OpenAI, Google]. Plugins that registerrealtimeVoiceProviders(e.g. installed via ClawHub) were invisible in the UI — users had no way to select them without manually editing config files.The Transport dropdown also showed all transport options regardless of what the selected provider actually supports.
This fix:
talk.cataloggateway method when the Advanced panel is opened and populates the Provider dropdown dynamically from the result.capabilities.transports; shows all options when Provider is Auto.talk.catalog; this PR wires that data into the UI.Out of scope: stale
provider/transportoption values are not cleared when the saved ID disappears from the catalog — this is pre-existing behavior shared with other talk option fields.Success criteria: after installing a realtime voice plugin, its provider appears in the Provider dropdown and its supported transports are the only Transport choices shown.
Real behavior proof
Behavior addressed: Provider dropdown hardcoded to Auto/OpenAI/Google; external plugin providers not selectable from the UI


Real environment tested: macOS, local dev gateway (port 19001), a locally loaded realtime voice plugin registered via the plugin SDK
Exact steps or command run after this patch: pnpm ui:build → OPENCLAW_STATE_DIR=~/.openclaw-dev pnpm gateway:watch --port 19001 → open http://127.0.0.1:19001/ → click talk button → open Advanced → observe Provider dropdown
Evidence after fix: before/after screenshots attached — Provider dropdown shows the installed plugin's provider;
Transport narrows to the provider's declared transports when selected
Observed result after fix: Provider dropdown lists the plugin's provider label; selecting it filters Transport to only the transports declared in capabilities.transports
What was not tested: iOS/Android/Desktop app UI (changes are web control UI only); ClawHub remote plugin install flow; providers with no capabilities.transports declared (expected to show all transports per fallback logic)
Tests and validation
UI-only change; no server-side logic added. Validated locally:
pnpm ui:build— clean build, no errorstsgo(UI lane) — no type errorsNo automated tests added — the behavior requires a live gateway with plugins registered and is fully covered by real behavior proof above.
pnpm check:changeddelegates to Crabbox/Testbox for UI lanes; CI will gate the full suite.Risk checklist
talk.catalogmethod, no new network surface)Current review state
Ready for review. AI-assisted implementation with human real behavior proof.