Remote proof:
- CI run 24982271745 passed on 6122e13c9f.
- Blacksmith Testbox tbx_01kq6vwehcszjfpp52f0pb3v1q passed focused Google Meet formatting, docs/link checks, realtime consult runtime tests, Google Meet tests, extension test typecheck, the core-unit-fast-support shard, and the core support boundary shard.
Thanks @BsnizND.
Co-authored-by: BSnizND <199837910+BsnizND@users.noreply.github.com>
Trace to db09f68ce5 (Support SecretRef for voice-call credentials and bundled
plugin SecretInputs #72607). The reference page docs/reference/secretref-credential-surface.md
listed the new entries in the same SHA, but docs/plugins/voice-call.md showed
only plain-string credentials without pointing to the SecretRef surface.
- platforms/android: blockquote Note for Android app status, Note for canvas host port
- platforms/macos: Tip component for app vs CLI discovery comparison
- plugins/zalouser, channels/zalouser: blockquote Warning components for unofficial automation risk
- channels/pairing: convert two Important paragraphs to Note components for DM-vs-group scope and silent-upgrade behavior
The voice-call plugin doc was 664 lines with a flat install/setup
walkthrough, three flat 'Realtime' / 'Streaming' / 'TTS' provider
config blocks each shown twice, an italicised webhook-security
section in Title Case, and a duplicate-Voice Call body H1.
Restructure for scan-first reading without losing operational detail:
- Wrap Quick start in a Steps component (install -> configure ->
verify -> smoke), with the 'install from npm' vs 'install from
local folder' choice as a nested Tabs.
- Surface the public-webhook-URL constraint as a Warning at the top
of Quick start so readers see it before they hit setup.
- Move provider exposure caveats, streaming connection caps, and
legacy config migration notes into a single AccordionGroup so
the Configuration section reads as the canonical config plus
collapsible operational details.
- Convert the Realtime, Streaming, and TTS provider examples to
Tabs with one tab per provider (Google/OpenAI for realtime;
OpenAI/xAI for streaming; Core/ElevenLabs/OpenAI override for TTS),
removing the previous duplicate-block-per-provider pattern.
- Convert the realtime tool-policy bullet list to a 3-row table.
- Convert the agent tool action list and gateway RPC list into
small tables (action -> args).
- Surface inboundPolicy caller-ID weakness, microsoft-not-supported
for telephony, and realtime+streaming exclusivity as Warning
callouts where they were previously buried inline.
- Sentence-case 'Webhook security' (was Title Case), drop the
duplicate body H1, and refresh the Related list to alphabetical
sentence-case.
Provider names, env vars, defaults, models, voice ids, command
flags, and field semantics are unchanged. Pure restructure plus
Mintlify component upgrades.
Two recent commits added user-facing surface that left signature-style
references in docs stale:
- 4428661779 Alvin Tang (#20721, thanks @alvinttang) extends the
configured model 'input' modality set to also accept 'audio' and
'video', matching what providers like LM Studio already report.
docs/plugins/manifest.md model-fields table listed only
'text | image | document', so add 'audio' and 'video'.
- 44da034516 Vincent (thanks @oc-factus) adds a bounded openclaw.agent
attribute on the openclaw.tokens counter so per-agent dashboards can
group usage. docs/gateway/opentelemetry.md metric reference omitted
it; add it to the attrs list.