sirmalloc--ccstatusline
ea97ddd69e
* feat(terminal): honor CCSTATUSLINE_WIDTH env var to override probe Provide an explicit width override so users can bypass the TTY probe entirely when both ancestor-walk and `tput cols` fall through. This is the fallback case the existing probe cannot solve on its own: Claude Code >= 2.1.139 spawns statusline/hooks without terminal access, and in some configurations (IDE integrations, nested shells, certain agent-mode spawn paths) no ancestor process owns a TTY either. The ancestor walk fails, `tput cols` returns 80, and the multi-line layout truncates regardless of the actual iTerm2/terminal width. PR #377 (`stty -F`/`stty -f`) covers the case where an ancestor does hold a TTY but the legacy `< /dev/tty` form errors with ENOTTY. This patch is complementary -- it handles the case where the ancestor walk finds no TTY at all -- and gives users a knob today while upstream work on passing `terminalWidth` via stdin JSON (#308) lands. Change ------ `src/utils/terminal.ts` -- `probeTerminalWidth` now reads `CCSTATUSLINE_WIDTH` before any platform check or probe. A valid positive integer short-circuits with that value; anything else (missing, empty, non-numeric, zero, negative) falls through to the existing probe logic. Usage ----- Set the env var on the statusLine command in `~/.claude/settings.json`: ```json "statusLine": { "type": "command", "command": "CCSTATUSLINE_WIDTH=200 ccstatusline" } ``` Tests ----- Four new cases in `src/utils/__tests__/terminal.test.ts`: - override short-circuits probing entirely - non-positive override (`0`) falls back to probing - non-numeric override falls back to probing - override applies on Windows where probing is otherwise disabled `bunx vitest run src/utils/__tests__/terminal.test.ts` -> 12/12 pass. Full-suite delta vs `main`: 4 new passing tests, zero new failures (the pre-existing 105 env-specific failures in other suites are unchanged on both branches). `bun run lint` -> clean. * docs: document terminal width override --------- Co-authored-by: Matthew Breedlove <sirmalloc@gmail.com>