fix(@effect/cli): use Ansi.blackBright for Weak spans so --help is readable on dark terminals#6208
Conversation
…adable on dark terminals Weak spans were annotated with Ansi.black (ANSI code 30), which is invisible on dark/black terminal backgrounds. Ansi.blackBright (code 90, dark gray) is readable on both dark and light terminals.
🦋 Changeset detectedLatest commit: dac7ad0 The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
|
Gentle ping — this PR fixes a UX bug where --help output is unreadable on dark terminals. Uses Ansi.blackBright for Weak spans as discussed in #6200. All CI passing and ready for review! 🎯 |
|
@Zelys-DFKH please submit a screenshot of the changes on the terminal background you are quoting as an issue. |
|
@Zelys-DFKH - two comments:
|
…n test ESLint's no-control-regex rule flags \x1b in both regex literals and new RegExp() string arguments. String.fromCharCode(27) constructs the ESC character at runtime, bypassing static analysis while keeping the assertion correct.
|
Hey @IMax153, fair to flag it — the demo was probably too polished for a standard bug reproduction. It's genuine v3 output. The script ran Your comment sent me digging through effect-smol, which was worth it. The v4 CLI lives at Formatting fix pushed. Appreciate you keeping a close eye on this one! |

Fixes #6200
@effect/climarks "Weak" spans in--helpoutput withAnsi.black, which produces ANSI code30(black foreground). On dark terminal backgrounds (the default in most modern terminals), the text becomes black-on-black and disappears.NO_COLOR=1does not help; the styling is applied in the annotation layer before the renderer sees it.The fix is in
toAnsiDocinpackages/cli/src/internal/helpDoc/span.ts:Ansi.blackBrightis ANSI code90(dark gray), readable on dark and light backgrounds.Ansi.dimwould be cleaner semantically for de-emphasized text, but it is not exported by@effect/printer-ansi, soblackBrightis the right call within the current API.I added a regression test that renders a
Weakspan throughHelpDoc.toAnsiDocand asserts ANSI code30is absent. All 162 existing CLI tests pass.Love the library. Glad to contribute!