mirror of
https://github.com/openclaw/openclaw.git
synced 2026-09-09 01:29:06 +00:00
* docs(plugins): mark generated reference pages and fix their shared template Two generator files change; the other 153 files are their regenerated output from `pnpm plugins:inventory:gen`. - Emit a "generated, do not edit" banner naming the regeneration command and the manual-block markers. None of the 151 reference pages said they were generated, so a contributor edit was silently overwritten. - Give generated reference titles a `reference` suffix. Eight of them collided with a hand-written guide title (beam, geolocation, google-meet, logbook, teams-meetings, webhooks, workboard, zoom-meetings). Duplicate frontmatter titles across docs/ now total 0. - Render the surface list as a list instead of a semicolon-joined sentence, and use plain conjunctions for install routes. Strict STE hard violations across docs/plugins/reference/ drop from 178 to 20. - Drop the body H1, which duplicated the frontmatter title Mintlify already renders. - Fix a generator bug found while testing: the marker-less fallback in `extractManualReferenceSections` matched only the first line under `## Surface`, so a second `--write` run captured later bullets into a fabricated manual block. `--write` is now idempotent and `--check` passes across repeated runs. All 12 hand-written manual blocks are preserved. * test(scripts): follow resolvePluginSurface to its list contract resolvePluginSurface now returns one string per surface item instead of a semicolon-joined sentence, so the generator can render a list. The four assertions move from toBe(<joined string>) to toEqual(<array>) and pick up the capitalised labels. The "generic fallback" case changes meaning rather than disappearing. The empty manifest now yields [], and renderSurface() prints "This plugin declares no channels, providers, commands, or contracts." for an empty list, which tells a reader more than the old "plugin". The test is renamed to say what it now checks, with a comment pointing at the new home of the fallback. No generated page has an empty Surface section, so no page changes because of this.
1.8 KiB
1.8 KiB
| summary | read_when | title | |
|---|---|---|---|
| Manage Talk voice selection (list/set). |
|
Talk Voice plugin reference |
Manage Talk voice selection (list/set).
Distribution
- Package:
openclaw - Install route: included in OpenClaw
Surface
- Slash commands:
/voice
Configure a Talk voice from chat
Set talk.provider and configure the matching talk.providers.<provider> entry before using the command. The active provider must support voice listing.
/voice statusshows the active provider and selected provider-scoped voice ID. The API-key field is only a masked or unset config value; it does not prove that usable credentials are available./voice list [limit]lists voices from the active provider. The default limit is 12 and the maximum is 50./voice set <voiceId|name>resolves a voice by exact ID, exact name, or partial name, then saves it totalk.providers.<activeProvider>.voiceId.
Discord registers the native command as /talkvoice; its subcommands and arguments are the same. Status and list are read-only. Setting a voice requires an owner on a message channel or the operator.admin scope for a Gateway client.
Failures are returned visibly in chat. Missing Talk configuration identifies the required keys; provider lookup errors include the provider error; unknown voices suggest listing available voices; and unauthorized writes state the required permission.