← Back to PRs

#10802: feat: add ui.waitingPhrases config for custom spinner verbs

by eyekron open 2026-02-07 01:06 View on GitHub →
stale
## 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