style(chat): custom Claude spinner verbs from ~/.claude/settings.json#356
style(chat): custom Claude spinner verbs from ~/.claude/settings.json#356mcginnessjack wants to merge 2 commits into
Conversation
Reads spinnerVerbs.verbs from ~/.claude/settings.json and cycles through them in the generating label instead of the static "Generating" text when Claude Mode is active. - Backend: _read_claude_spinner_verbs() reads ~/.claude/settings.json safely and exposes spinner_verbs in the capabilities response - Frontend: NBIConfig.spinnerVerbs getter; ChatResponse cycles through verbs using a Fisher-Yates shuffle with random 4-7s delay per verb, no immediate repeats across passes - Accessibility: separates visible label (aria-hidden) from a sr-only aria-live div containing only the verb text, so screen readers announce on verb changes only, not on every elapsed-seconds tick Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
This is absolutely unnecessary. But it's fun and I love it. Let Claude be Claude. |
If you aren't helping sisyphus with his boulder or watching LeBron highlights, you are Clauding wrong |
|
Really nice work on this, it's a fun feature and clearly built with care. A few things stood out as I read through it. A couple of things I appreciated:
Three small things I'd suggest before merge:
One note on CI: the only failing check is Prettier formatting on None of these are blockers, the feature works and reads well. Thanks for putting it together, the spinner verbs are a delight. |
- Validate spinnerVerbs shape fully on the backend: only return the object when mode == "replace", verbs is a non-empty list, and every entry is a string — malformed configs now silently fall back to "Generating" rather than potentially crashing the chat render - Add Optional return type annotation to _read_claude_spinner_verbs - Remove redundant `import json` inside the function (already imported at module level) - Fix Prettier formatting on chat-sidebar.tsx Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
e733907 to
55fa320
Compare
Summary
spinnerVerbs.verbsfrom~/.claude/settings.jsonand cycles them in the generating label when Claude Mode is active, replacing the static "Generating" textaria-hidden) from a hiddenaria-livediv containing only the verb, so screen readers announce on verb changes only — not on every elapsed-seconds tickSettings shape consumed
{ "spinnerVerbs": { "mode": "replace", "verbs": ["Doing Pull Ups", "Caffeinating", "Kwisatz-haderaching"] } }mode: "replace"is the only supported mode. Falls back to"Generating"if Claude Mode is off, verbs are absent, or the file can't be read.Test plan
~/.claude/settings.jsonhasspinnerVerbs.verbs"Generating"spinnerVerbsfrom settings — verify fallback to"Generating"🤖 Generated with Claude Code
Evidence: