#10802: feat: add ui.waitingPhrases config for custom spinner verbs
stale
Cluster:
Multilingual Support Enhancements
## Summary
Adds a new `ui.waitingPhrases` configuration option that allows users to customize the spinner verbs displayed in the TUI while waiting for responses.
## Motivation
The default spinner phrases ("Thinking", "Processing", "Working", etc.) are functional but generic. Users may want to personalize their experience with custom phrases that match their personality or use case—whether that's more professional language, humor, or themed messaging.
## Changes
- **`src/config/types.openclaw.ts`**: Added `waitingPhrases` to the UI config type
- **`src/config/zod-schema.ts`**: Added validation schema for the new config option (array of strings)
- **`src/tui/tui.ts`**: Updated spinner logic to use custom phrases when configured, falling back to defaults
- **`src/config/config.ui-waiting-phrases.test.ts`**: Added tests for the new configuration
## Usage
Add to `openclaw.json` or `clawdbot.json`:
```json
{
"ui": {
"waitingPhrases": [
"Pondering",
"Contemplating",
"Brewing ideas",
"Crunching neurons"
]
}
}
```
If not configured, the existing default phrases are used.
## Test Plan
- [x] Added unit tests for config parsing
- [x] Manual testing with custom phrases in config
- [x] Verified fallback to defaults when not configured
<!-- greptile_comment -->
<h2>Greptile Overview</h2>
<h3>Greptile Summary</h3>
- Adds a new `ui.waitingPhrases` config option to customize the TUI spinner’s “waiting…” verbs.
- Extends the OpenClaw config type + Zod validation to accept a non-empty array of non-empty strings.
- Updates TUI waiting status logic to prefer configured phrases over `defaultWaitingPhrases`.
- Adds unit tests covering acceptance/rejection cases for the new config field.
<h3>Confidence Score: 4/5</h3>
- This PR is likely safe to merge, with one behavior mismatch to confirm around runtime config reload expectations.
- Changes are small and well-scoped (type + schema + simple selection logic) with tests for config validation. The main remaining concern is whether the TUI is expected to reflect config changes during a running session; the new value is captured once at startup and won’t update if reloads are supported.
- src/tui/tui.ts
<!-- greptile_other_comments_section -->
<sub>(2/5) Greptile learns from your feedback when you react with thumbs up/down!</sub>
<!-- /greptile_comment -->
Most Similar PRs
#9490: Add Internationalization (i18n) Support
by luuman · 2026-02-05
73.2%
#8318: feat(webchat): Add configurable user display name
by vishaltandale00 · 2026-02-03
73.0%
#10586: feat: Add Chinese (zh-CN) localization support
by Maxsong-0 · 2026-02-06
72.7%
#10943: fix(config): resolve Control UI "Unsupported schema node" for confi...
by kraftbj · 2026-02-07
72.0%
#10991: feat(gateway): add configurable instance name for Control UI title
by Annaxiebot · 2026-02-07
71.5%
#21147: feat(slack): support chat:write.customize for custom bot name/avatar
by bernardclaw · 2026-02-19
71.4%
#8086: feat(security): Add prompt injection guard rail
by bobbythelobster · 2026-02-03
71.3%
#23678: fix(ui): Control UI shows no guidance on 1008 pairing required (#23...
by yinghaosang · 2026-02-22
70.8%
#10367: CLI/Ops: resilient browser fill + failover hardening + operations t...
by cluster2600 · 2026-02-06
70.7%
#12079: TUI: improve thinking UX, tool readability, and live running status...
by rubenfb23 · 2026-02-08
70.7%