Summary
LIFEOS_StatusLine.sh caps its render width at a hardcoded 72 columns with no way to opt out. On a wide terminal the dashboard occupies the leftmost 72 columns and leaves everything to the right of them empty, no matter how much room is actually available.
I understand the cap is intentional — the comment says so. This is a request for an escape hatch, not a claim that the default is wrong.
Where
LifeOS/install/LIFEOS/LIFEOS_StatusLine.sh, lines 504–507 (read from main via the GitHub contents API today, so the line numbers are current):
# Content width: cap at 72 so wide terminals don't stretch, but narrow ones fit
content_width=$term_width
[ "$content_width" -gt 72 ] && content_width=72
[ "$content_width" -lt 10 ] && content_width=10
content_width feeds SEP_SOLID / SEP_DASHED / SEP_DOT, the context-bar width, and every wrap calculation, so the whole dashboard inherits the 72.
Why it matters more now than it used to
Claude Code's fullscreen renderer (/tui fullscreen) pins the statusline to the bottom of the screen instead of letting it scroll away with the conversation. Once the dashboard is permanently on screen, its height is a standing cost, and height is exactly what the width cap forces: on a 150-column terminal the current layout renders around 15 stacked rows while using less than half the available width. Anything that could sit side by side is stacked instead.
Suggested fix — 1: make the cap configurable
Three lines, default unchanged, so nobody's current render moves:
# Content width: cap at MAX_WIDTH (default 72) so wide terminals don't stretch,
# but narrow ones fit. Set LIFEOS_STATUSLINE_MAX_WIDTH=0 to use the full width.
: "${LIFEOS_STATUSLINE_MAX_WIDTH:=72}"
content_width=$term_width
if [ "$LIFEOS_STATUSLINE_MAX_WIDTH" -gt 0 ] 2>/dev/null; then
[ "$content_width" -gt "$LIFEOS_STATUSLINE_MAX_WIDTH" ] && content_width="$LIFEOS_STATUSLINE_MAX_WIDTH"
fi
[ "$content_width" -lt 10 ] && content_width=10
Suggested fix — 2: an optional wide/compact layout
With the cap lifted, the natural follow-up is a layout that actually spends the width. Pairing blocks left/right collapses the normal-mode render from roughly 15 rows to 4:
LIFEOS 7.1.1 │ CC 2.1.220 │ ALGO 8.4.0 │ <MODEL> <SESSION LABEL>
ACTIVE: <rungs> │ <cross-vendor engines> ⚡ LOW MEDIUM HIGH XHIGH MAX
🧠 OK · REVIEWED 10M AGO · NEXT IN 5 TURNS
CONTEXT: 12% │ STARTUP LOAD: 2.8% ≈ 28.6K TOK 📊 5HR 14% ↻2030 WK 38% ↻SUN@23
Two things that are easy to get wrong there, both of which cost me a debugging pass:
- Width has to be reported, not re-derived.
detect_terminal_width() has five tiers, and tiers 4–5 do not write $_width_cache. Anything downstream that re-detects the width can land on a different number than the one the separators were drawn with, and the right-hand column then sits a few columns off. Whatever composes the columns should be handed content_width directly.
- Emoji are two display columns wide but one character.
${#var} counts characters, so right-aligning a segment that starts with ⚡, 🧠 or 📊 using ${#} shifts it by one column per emoji.
A third, separate observation: hosts may not give the statusline the terminal's full width. Under Claude Code's fullscreen renderer, asking for the last column got the end of my right-hand column replaced with …; reserving a few columns fixed it. If a wide layout lands upstream, a small configurable right margin is probably worth having.
I'm happy to open a PR for fix 1 if that's useful — it's the self-contained half.
Repro
- Open a terminal at 150 columns.
- Start a session with the LifeOS statusline configured.
- The dashboard renders inside the first 72 columns; the remaining ~78 are blank.
Summary
LIFEOS_StatusLine.shcaps its render width at a hardcoded 72 columns with no way to opt out. On a wide terminal the dashboard occupies the leftmost 72 columns and leaves everything to the right of them empty, no matter how much room is actually available.I understand the cap is intentional — the comment says so. This is a request for an escape hatch, not a claim that the default is wrong.
Where
LifeOS/install/LIFEOS/LIFEOS_StatusLine.sh, lines 504–507 (read frommainvia the GitHub contents API today, so the line numbers are current):content_widthfeedsSEP_SOLID/SEP_DASHED/SEP_DOT, the context-bar width, and every wrap calculation, so the whole dashboard inherits the 72.Why it matters more now than it used to
Claude Code's
fullscreenrenderer (/tui fullscreen) pins the statusline to the bottom of the screen instead of letting it scroll away with the conversation. Once the dashboard is permanently on screen, its height is a standing cost, and height is exactly what the width cap forces: on a 150-column terminal the current layout renders around 15 stacked rows while using less than half the available width. Anything that could sit side by side is stacked instead.Suggested fix — 1: make the cap configurable
Three lines, default unchanged, so nobody's current render moves:
Suggested fix — 2: an optional wide/compact layout
With the cap lifted, the natural follow-up is a layout that actually spends the width. Pairing blocks left/right collapses the normal-mode render from roughly 15 rows to 4:
Two things that are easy to get wrong there, both of which cost me a debugging pass:
detect_terminal_width()has five tiers, and tiers 4–5 do not write$_width_cache. Anything downstream that re-detects the width can land on a different number than the one the separators were drawn with, and the right-hand column then sits a few columns off. Whatever composes the columns should be handedcontent_widthdirectly.${#var}counts characters, so right-aligning a segment that starts with⚡,🧠or📊using${#}shifts it by one column per emoji.A third, separate observation: hosts may not give the statusline the terminal's full width. Under Claude Code's fullscreen renderer, asking for the last column got the end of my right-hand column replaced with
…; reserving a few columns fixed it. If a wide layout lands upstream, a small configurable right margin is probably worth having.I'm happy to open a PR for fix 1 if that's useful — it's the self-contained half.
Repro