Custom statusline compressed to 1 char/line when notification banners are active
Bug description
When a UI notification banner is active (e.g., npm-deprecation-warning, programdata-deprecation-warning), custom statusline output is compressed vertically — each character renders on its own line, making the statusline completely unreadable.
This happens because the footer layout uses flex with different shrink behaviors:
- Statusline container (
H6):flexShrink: 1— shrinks to accommodate notifications - Notifications container (
Y6):flexShrink: 0— never shrinks
When a multi-line notification banner appears, the statusline area shrinks to near-zero height, causing the text to wrap character-by-character.
Steps to reproduce
- Install Claude Code via npm (triggers
npm-deprecation-warningbanner on startup) - Configure a custom statusline in
~/.claude/settings.json:
``json``
{
"statusLine": {
"type": "command",
"command": "bash ~/.claude/statusline.sh"
}
}
- Start a new Claude Code session
- Observe the statusline is compressed/unreadable while the notification banner is visible (~15s)
- After the banner auto-dismisses, the statusline renders correctly
Expected behavior
The statusline should remain readable when notification banners are active. Either:
- Both containers should share available space proportionally
- The statusline should have
flexShrink: 0(or a minimum height) - Users should have a way to disable/suppress specific startup banners
Actual behavior
The statusline text wraps to 1 character per line, becoming completely unreadable. This persists for the duration of the notification banner (typically 15 seconds for startup banners).
Environment
- Claude Code version: 2.1.49
- Platform: Windows 11 (Git Bash)
- Terminal: Windows Terminal
- Install method: npm
Additional context
- The
addNotificationsystem that displays these banners does NOT go through theNotificationhook system, so there's no way to detect or suppress them from the statusline script - Identified ~20 notification types that can trigger this, most impactful being startup banners with 15s timeout
- The
statusLine.paddingsetting only adds horizontal spacing and does not help - No existing setting to disable specific notification banners
- Related issues: #21867, #22222, #23623 (all involve statusline layout compression in different scenarios)
This issue has 10 comments on GitHub. Read the full discussion on GitHub ↗