fix: width detection prioritizes dynamic sources over config

Config `width` was position #3 in the detection chain, overriding all
dynamic detection (ioctl, process tree, stty, etc). This meant the
statusline couldn't adapt to terminal/pane resizes.

Now config `width` serves two roles:
- Max cap on dynamically detected widths (prevents absurd widths)
- Fallback when all dynamic detection methods fail

Also adds:
- ioctl on stderr (works when stdout is piped)
- stdin JSON `terminal_width` field for Claude Code to pass width
- Distinct diagnostic sources: config_cap, config_fallback, stdin_json

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Taylor Eernisse
2026-02-07 16:18:51 -05:00
parent 4e38b8259b
commit f46c3da69c
4 changed files with 113 additions and 21 deletions

28
statusline.json Normal file
View File

@@ -0,0 +1,28 @@
{
"$schema": "./schema.json",
"global": {
"justify": "spread",
"theme": "dark",
"responsive": true,
"width": 500,
"width_margin": 20
},
"glyphs": {
"enabled": true
},
"layout": "verbose",
"sections": {
"context_usage": {
"enabled": true
},
"context_trend": {
"enabled": true
},
"cost_trend": {
"enabled": true
},
"load": {
"enabled": false
}
}
}