Skip to content

Make sidebar status indicators colorblind-safe (distinct shapes, not just color) #2260

Description

@ogulcancelik

Discussed in #824

Originally posted by jcmuller June 26, 2026
Right now the left spaces sidebar tells agent status apart almost entirely by color. state_dot() maps three different states to the same ● glyph: blocked is red, working is yellow, idle-unseen is teal. If you are colorblind, those three collapse into "a filled dot."

The agents panel on the right does not have this problem. It calls a sibling function, agent_icon(), that gives every state its own shape on top of color (◉ blocked, an animated spinner for working, ● idle-unseen, ✓ done, ○ unknown), plus a separate text label. Same (state, seen) input, accessible output. The sidebar just never got the same treatment. Switching to a monochrome theme like vesper actually makes it worse, because that removes the one thing currently carrying the distinction.

A plugin cannot fix this, since plugins cannot restyle the UI. The smallest fix is in the TUI client layer: point the sidebar (and the mobile views) at the same agent_icon mapping the agents panel already uses, and delete the duplicate state_dot. Pure presentation, no server/API/protocol change. The only visible shifts are blocked ● to ◉, working ● to the spinner, done ○ to ✓, and unknown · to ○; idle-unseen ● stays put, and every glyph is one cell so the columns do not move.

I prototyped it on my fork and it passes the full suite, with new buffer-render tests asserting blocked and done render distinct glyph cells. Happy to open a PR if you are up for it. Want me to file an issue first?

No activity

Activity on this issue will appear here.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions