Statusline Ansi component drops SGR 5 (blink) attribute

Resolved 💬 2 comments Opened Apr 4, 2026 by whatrwewaitingf0r Closed May 13, 2026

Description

The statusline's Ansi component correctly parses and renders most SGR text attributes (bold, dim, italic, underline, strikethrough, inverse), but drops SGR 5 (blink). Text with \033[5m renders as static colored text — the blink attribute is silently discarded.

Root Cause (from source analysis of v2.1.91)

The ANSI style-to-React-props mapper function (minified as qE4 in the compiled binary) maps 6 out of 7 standard SGR text attributes:

function qE4(H) {
    let _ = {};
    if (H.bold)          _.bold = true;        // SGR 1 ✅
    if (H.dim)           _.dim = true;         // SGR 2 ✅
    if (H.italic)        _.italic = true;      // SGR 3 ✅
    if (H.underline !== "none") _.underline = true; // SGR 4 ✅
    if (H.strikethrough) _.strikethrough = true; // SGR 9 ✅
    if (H.inverse)       _.inverse = true;     // SGR 7 ✅
    // SGR 5 (blink) — NOT MAPPED ❌
    // ... color mapping follows
    return _;
}

The same omission exists in the props-check function ($E4) and the props-equality function (OE4).

Additionally, Ink's <Text> component does not expose a blink prop, so even if the mapper extracted it, there's no way to pass it through Ink's React layer to the terminal.

Suggested Fix

Since Ink doesn't support blink natively, the fix would need to either:

  1. Bypass Ink for blink segments — emit raw \033[5m / \033[25m escape sequences directly around blink text spans (similar to how hyperlinks use raw OSC 8)
  2. Add blink support to the Ansi component — pass blink text through without stripping the escape, letting the terminal handle it

Steps to Reproduce

  1. Create a statusline script that outputs blink text:

``bash
printf '\033[5;31mBLINK\033[0m NORMAL\n'
``

  1. Configure as statusline command
  2. Observe: "BLINK" renders in red but does NOT blink
  3. Run the same printf in a plain terminal (outside CC) — it blinks correctly

Environment

  • Claude Code: 2.1.91
  • Terminal: iTerm2 3.6 (blink confirmed working outside CC)
  • OS: macOS Darwin 25.3.0

Impact

Custom statuslines that use blink for urgent alerts (e.g., overdue issues, critical usage levels) cannot achieve the intended visual effect. All other SGR attributes work as expected.

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗