TUI: orderbook renders unreadable colours on macOS Terminal.app (truecolor RGB not supported)
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 48/100
Línea de trabajo
Comienza con crates/cdcx-tui/src/theme.rs y sigue los puntos de llamada de Color::Rgb mencionados en widgets/detail_view.rs, tabs/market.rs y ticker_tape.rs. Ejecuta cargo run -p cdcx-cli --release -- tui y reproduce el orderbook en Terminal.app; después, verifica que el comportamiento de fallback conserve los colores actuales en terminales truecolor y haga legibles los terminales de smoke-test indicados.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Reported by
Screenshot attached in thread.
Symptom
On the Market Detail orderbook (and likely other panels), font colours look random — including black-on-dark text that is effectively invisible.
Environment:
- macOS Terminal.app (stock, personal laptop)
- Theme:
terminal-pro(default) - No custom ANSI escape settings in zshrc/bashrc
- Works correctly on a different machine (company MBP — likely iTerm2)
Root cause (high-confidence hypothesis)
macOS Terminal.app does not support 24-bit truecolor ANSI escapes (\e[38;2;R;G;Bm). It is capped at 256-indexed colour. Our themes (crates/cdcx-tui/src/theme.rs) and several widgets emit Color::Rgb(...) unconditionally:
terminal-profg =Color::Rgb(220, 220, 220), bg =Color::Rgb(18, 18, 18), muted =Color::Rgb(120, 120, 120), etc. (theme.rs:50–69)- Orderbook depth bars + heatmap use
Color::Rgbgradients (widgets/detail_view.rs:500–525,tabs/market.rs:1700+) - Pressure-bar background =
Color::Rgb(0, 30, 0)/Color::Rgb(30, 0, 0)(detail_view.rs:355–373)
When Terminal.app receives a truecolor sequence it doesn't understand, behaviour varies: some chunks are dropped, some fall back to default fg (which may be black on his profile), some map poorly — producing the "random" palette Alan is seeing.
The cursor-selected Ask row also uses selected_fg: Color::Black on selected_bg: Color::Rgb(255,180,0); if the bg RGB fails to render but fg Black succeeds, you get black-on-dark → invisible.
Reproduction
- Launch macOS Terminal.app (default settings).
cargo run -p cdcx-cli --release -- tui- Enter Detail view on any instrument.
- Observe orderbook — colours are random, some text is unreadable.
Not reproducible on iTerm2, Ghostty, Alacritty, Kitty, WezTerm (all support truecolor).
Suggested fixes
Ranked by cost/benefit:
-
Detect truecolor support at startup, downgrade to 256-indexed colour when absent.
- Check
$COLORTERM == "truecolor"or"24bit"(standard signalling). - If absent, fall back to a 256-indexed palette: convert every
Color::Rgb(r,g,b)via nearest-256-colour mapping or ship parallel indexed themes. - Smallest user-facing change; no UX regression on capable terminals.
- Check
-
Ship a 256-indexed preset theme (e.g.
terminal-pro-256) and document it in the setup wizard / README — users on Terminal.app pick it explicitly. Simpler to implement but requires user knowledge. -
Hard-guard Terminal.app via
TERM_PROGRAM=Apple_Terminaland auto-swap to the indexed theme. Cheap to detect but narrow.
The right move is probably (1) + a --no-truecolor / tui.force_256 = true override so users whose detection misfires can opt in manually.
Scope of blast radius
Every Color::Rgb call site in crates/cdcx-tui/. Theme definitions in theme.rs are the big one; widget-level gradients (detail_view.rs, market.rs, ticker_tape.rs, heatmap, depth bars) all need the same downgrade path.
Acceptance
- cdcx tui is fully readable on macOS Terminal.app with the default theme.
- Existing truecolor terminals look identical to today.
- Fallback palette documented; override env var / config flag exists.
- Smoke-tested on: Terminal.app, iTerm2, Ghostty, Alacritty.
- Lenguaje dominante
- Rust
- Estrellas
- 27
- Forks
- 9
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de crypto-com/cdcx-cli
-
TUI: press Enter on book-cursor level to prefill place-order modalPosiblemente ocupada @llcro la tomó hace 183 días. Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 68/100
crypto-com/cdcx-cli#34 ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 52/100
crypto-com/cdcx-cli#32 ·
Todos los issues de crypto-com/cdcx-cli
Issues similares
-
bug cluster redis-compat
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 77/100
tangency-labs/solidcore#2839 ·
Los mantenedores suelen responder en 1 día
-
bug priority: low ui
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
storytold/gridcraft#3446 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
madeofpendletonwool/PinePods#1078 ·
Los mantenedores suelen responder en 1 día