Inline code is no longer read out character by character.
Claude Code renders inline code in violet because it isn't prose. It isn't speech either: said out loud, events.team_id became "events dot team eye dee" and you lost the rest of the sentence working out what you'd just heard.
Each span is now spoken as the category of thing it is:
| In the reply | You hear |
|---|---|
so `deploy.sh` is ready to run |
"so the file is ready to run" |
Run `npm test -- --watch` to confirm |
"Run that command to confirm" |
set `CLAUDESAY_MAX` to 300 |
"set that setting to 300" |
the `speak()` function |
"the function" |
it reads `transcript_path` from stdin |
"it reads it from stdin" |
Ordinary words in backticks survive as written, since those are emphasis rather than code. Unbackticked paths and URLs get the same treatment, but only in shapes nothing else takes — src/hooks/a.ts and https://… yes, and/or and e.g. no. Articles are handled, so "the auth.ts file" comes out "the file" and not "the the file file".
The substitution runs before the length, filler and dedupe checks, so all three judge the words you actually hear.
Upgrade with the usual line; it takes effect in new sessions.
curl -fsSL https://raw.githubusercontent.com/abryfs/claudesay/main/install.sh | bashFull changelog: https://github.com/abryfs/claudesay/blob/main/CHANGELOG.md