Accessibility: low-emphasis (dim) text is unreadable for colorblind users; the hardcoded `.dim()` modifier cannot be fixed via `/colors`
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 19.9k
- Forks
- 2.3k
- Avg merge
- 2d 7h
- Merged PRs (30d)
- 30
Description
Environment
- jcode v0.75.0 (5ae238574)
- Windows x64, Windows Terminal (latest, truecolor)
- User has a color vision deficiency (specific type unknown)
Problem
Several low-emphasis UI elements are too dark / low-contrast for colorblind
users, and the built-in /colors configuration cannot fix them:
- The tool-call line
tool: edit(thetool:prefix and the tool name) - The top-of-screen previous-question indicator with its number (
73>) - Box lines, diff lines, frame lines, and the streaming status line are also on
the weak-contrast side at default, but those ARE fixable via/colors.
Root cause (from source)
In crates/jcode-tui/src/tui/ui_messages.rs, render_assistant_tool_call_lines
styles the tool call line like this:
let prefix_style = Style::default().fg(tool_color()).dim(); // "tool:" prefix
let separator_style = Style::default().fg(dim_color()).dim();
let name_style = Style::default().fg(accent_color()).dim(); // tool name
The .dim() modifier is a rendering attribute applied on top of the color.
Brightening the role colors via /colors <role> #rrggbb has almost no visible
effect because the terminal still renders the text dim. There is no config to
change the dim strength or remove the hardcoded dim.
The same class of problem applies to:
- The top-of-screen previous-question indicator and its number (
73>), which
use the same low-emphasis dim styling. - Inline code spans (the "gray background, white text" look in chat). Inline
code uses the markdown renderer's dedicated code styling
(code_fg()/ code-block helpers incrates/jcode-tui-markdown), including
a fixed gray frame/background that is not one of the 22 configurable
/colorsroles, so/colorscannot change it.
Steps to reproduce
- Run jcode with default colors.
- Ask the agent to make a tool call (e.g., edit a file).
- Observe the
tool: editline: it is dim and hard to read. - Run
/colors tool #989ea6(very bright) - the line barely changes.
Expected behavior
- Low-emphasis text should remain readable for users with color vision
deficiencies on a dark background. - Ideally, the dim/weak styling should be configurable, e.g.:
- a
display.dim_strength(0-100%) setting that scales the.dim()effect, - or removing the hardcoded
.dim()and using a dedicated role value that
users can tune with/colors, - or a high-contrast low-emphasis style (brighter gray, same hue family).
- a
Notes
- The default grays (
dim #505050,tool #787878,border #64646e) are
already low-contrast on dark backgrounds; brightening them via/colors
helps, but the.dim()modifier on some elements defeats it. - A full palette override (
/colors generate) and switching to a light
terminal background were both tried and did not resolve the low-emphasis
contrast for this user.
Impact
Colorblind users (and anyone with low-contrast sensitivity) struggle to read
tool-call labels, status context, and frame lines. The color system is
impressive for the color roles themselves, but the extra hardcoded dim pass
makes some text unreachable by configuration.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start in crates/jcode-tui/src/tui/ui_messages.rs, especially render_assistant_tool_call_lines and the styles applied to the previous-question indicator. Then inspect crates/jcode-tui-markdown for code_fg() and code-block helpers, along with the /colors configuration path. Done means low-emphasis tool, indicator, frame, and inline-code text remains readable and the affected styling can be adjusted through the available configuration.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- accessibility, cli
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 52/100