hermes-agent/apps/desktop/src/app/settings
Teknium 20fd0bde5d
feat(desktop): full tool-backend config (pickers + per-backend settings) in Settings (#41232)
* feat(desktop): surface TTS/STT/terminal backends as Settings dropdowns

Every native tool backend that the agent supports now shows up as a
clickable picker in the desktop Settings UI instead of a free-text box.

Desktop Settings renders a config field as a <Select> only if its dotpath
is a key in ENUM_OPTIONS (helpers.ts::enumOptionsFor returns undefined ->
free-text <Input> otherwise). Three backend-selector fields were surfaced
in their sections but missing from the map, so users had to hand-type the
provider name and could reasonably assume it was unsupported:

- tts.provider — now lists all built-in TTS backends incl. xai (Grok)
- stt.provider — local/groq/openai/mistral/elevenlabs
- terminal.backend — local/docker/singularity/modal/daytona/ssh

Each list is kept in sync with its backend source of truth (TTS:
agent/tts_registry.py::_BUILTIN_NAMES + tools/tts_tool.py; STT + terminal:
hermes_cli/config.py / tools/terminal_tool.py). The existing
enumOptionsFor current-value-append keeps any hand-typed/legacy value
selected, and command-type TTS providers still work.

Reported for Grok/xAI TTS, which was already a fully-wired built-in
provider (tts.provider: xai + XAI_API_KEY) with no picker entry.

* feat(desktop): expose per-backend TTS/STT/terminal config fields in Settings

Completes the backend-coverage pass: not just the provider PICKER but every
backend's own config fields are now tunable from desktop Settings, so a user
who picks (e.g.) Grok TTS can also set its voice/language without hand-editing
config.yaml.

Also fixes the STT provider dropdown: added 'xai' (Grok STT), which the
transcription dispatcher (tools/transcription_tools.py) handles but the
config.py comment had omitted — the dispatch ladder is the source of truth.

New Settings fields (Voice section):
- TTS xai (voice_id, language), minimax (model, voice_id), mistral
  (model, voice_id), gemini (model, voice), neutts (model, device),
  kittentts (model, voice), piper (voice)
- STT openai (model), groq (model), mistral (model)

New Settings fields (Advanced section):
- terminal docker_image / singularity_image / modal_image / daytona_image

New ENUM_OPTIONS dropdowns: stt.provider (+xai), stt.openai.model,
stt.mistral.model, tts.openai.model, tts.elevenlabs.model_id,
tts.neutts.device. Each list mirrors the backend generator's accepted values
(tools/tts_tool.py, tools/transcription_tools.py, hermes_cli/config.py).

i18n: FIELD_LABELS/FIELD_DESCRIPTIONS cover all locales via the English
fallback in config-settings.tsx; added native translations to ja/zh/zh-hant.

Secrets (provider API keys, modal/daytona tokens, ssh host/key) intentionally
stay in Settings -> Keys as env vars, not duplicated as config fields.
2026-06-07 10:05:47 -07:00
..
about-settings.tsx feat: uninstall the Chat GUI without removing the agent (CLI + desktop UI) (#40355) 2026-06-06 18:22:38 -07:00
appearance-settings.tsx feat(desktop): unified overlay design system, BrandMark & onboarding redesign (#40708) 2026-06-06 16:32:47 -05:00
config-settings.tsx Refactor desktop settings i18n keys to camelCase 2026-06-06 07:51:44 -07:00
constants.ts feat(desktop): full tool-backend config (pickers + per-backend settings) in Settings (#41232) 2026-06-07 10:05:47 -07:00
credential-key-ui.tsx feat(desktop): unified overlay design system, BrandMark & onboarding redesign (#40708) 2026-06-06 16:32:47 -05:00
env-credentials.tsx Refactor desktop i18n field copy into nested structures 2026-06-06 07:51:44 -07:00
env-var-actions-menu.tsx Refactor desktop i18n field copy into nested structures 2026-06-06 07:51:44 -07:00
field-copy.ts Refactor desktop settings i18n keys to camelCase 2026-06-06 07:51:44 -07:00
gateway-settings.tsx feat(desktop): unified overlay design system, BrandMark & onboarding redesign (#40708) 2026-06-06 16:32:47 -05:00
helpers.test.ts feat(desktop): full tool-backend config (pickers + per-backend settings) in Settings (#41232) 2026-06-07 10:05:47 -07:00
helpers.ts feat(desktop): polish credentials settings and messaging env routing (#39217) 2026-06-04 14:01:15 -04:00
index.tsx feat: Add desktop language switching for Japanese and Traditional Chinese 2026-06-06 07:51:44 -07:00
keys-settings.tsx Refactor desktop i18n field copy into nested structures 2026-06-06 07:51:44 -07:00
mcp-settings.tsx Refactor desktop i18n field copy into nested structures 2026-06-06 07:51:44 -07:00
model-settings.test.tsx feat(desktop): surface every provider + models from hermes model in the GUI menus (#40563) 2026-06-06 16:31:34 +00:00
model-settings.tsx feat(desktop): surface every provider + models from hermes model in the GUI menus (#40563) 2026-06-06 16:31:34 +00:00
primitives.tsx style(desktop): migrate bespoke pills to shared Badge; tidy cron/titlebar 2026-06-03 23:52:51 -05:00
providers-settings.tsx feat(desktop): unified overlay design system, BrandMark & onboarding redesign (#40708) 2026-06-06 16:32:47 -05:00
sessions-settings.tsx Refactor desktop i18n field copy into nested structures 2026-06-06 07:51:44 -07:00
toolset-config-panel.test.tsx feat(desktop): run tool backend post-setup installs from the GUI (#40559) 2026-06-06 18:35:02 -07:00
toolset-config-panel.tsx feat(desktop): run tool backend post-setup installs from the GUI (#40559) 2026-06-06 18:35:02 -07:00
types.ts feat(desktop): dedicated Providers settings + polished Accounts/API-keys UX (#38551) 2026-06-04 03:03:42 -05:00
uninstall-section.tsx feat: uninstall the Chat GUI without removing the agent (CLI + desktop UI) (#40355) 2026-06-06 18:22:38 -07:00
use-deep-link-highlight.ts refactor(desktop): DRY/elegance pass over PR-touched files 2026-06-04 00:28:57 -05:00