From ac690c11d58e48dd3ba76a1b72f2263123e56541 Mon Sep 17 00:00:00 2001 From: Vuong Hoang Date: Sun, 24 May 2026 18:20:57 -0700 Subject: [PATCH] =?UTF-8?q?style(tui):=20restore=20Australis,=20$backgroun?= =?UTF-8?q?d=20=E2=86=92=20pure=20black=20(v0.6.3)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reverts v0.6.2's over-correction. The operator clarified: the complaint was specifically about the APP BACKGROUND going from black to a shade of blue, not about the cumulative cast across all Australis dark surfaces. v0.6.2 globally neutralized Ice + Sea darks → too far. ## v0.6.3 = v0.6.1 palette + $background override only Restored verbatim from v0.6.1: $foreground #a9bcc3 (Ice white) $surface #373b46 (Sea bright-black, chrome bg) $panel #414751 (Sea dark 30, borders) $au-dark-30..60 Australis Sea palette $au-bright-70/80 Australis Sea brights $au-bright-white #cce7ec (Ice highlight) Aurora accents bright-blue/cyan/green — verbatim Dawn accents red/yellow — verbatim _AU_DEMOTED #86929d (Sea dark 60) _AU_DEMOTED_FAINT #6e7882 (Sea dark 50) ONE deviation from Australis spec: $background #222531 (Ice black) → #000000 (pure black) Rationale: Ice black is RGB(34, 37, 49) — blue +44% over red. At App-wide scale (the dominant fill across the entire screen) the cumulative cast reads as "the app is blue" even though no single rect is in the conventional-blue range. Other dark surfaces are smaller chrome bands where the cool lean reads as character not background; only $background gets the override. ## What stayed Australis Every cosmetic element where the operator hasn't pushed back: identity widget (Aurora bright-blue), pane-name (Aurora bright-cyan), [done]/[error]/[cancelled] labels (Aurora green / Dawn red/yellow), focus borders (Aurora blue / accent cyan), demoted telemetry text (Sea dark-60), placeholder lines (Sea dark-50), Header/Footer chrome (Sea bright-black bg + Ice white-blue fg), separators (Sea dark-30). Brand fidelity preserved; only the dominant background surface neutralized. ## Tests + smoke 241/241 GREEN; ruff clean. Live screenshot export: - $background = #000000 (230 fill rects — dominant surface) - $surface = #373b46 (29 fill rects — Australis Sea bright-black) - Sea panels + dark-50 still present in chrome - Aurora #6388D8 still primary Patch bump (v0.6.2 → v0.6.3) — cosmetic refinement; no public-API change. --- persistent-memory.md | 7 ++-- pyproject.toml | 2 +- src/ratatoskr/tui.py | 78 ++++++++++++++++++++++---------------------- uv.lock | 2 +- 4 files changed, 45 insertions(+), 44 deletions(-) diff --git a/persistent-memory.md b/persistent-memory.md index 2f9e74d..b52df56 100644 --- a/persistent-memory.md +++ b/persistent-memory.md @@ -32,9 +32,9 @@ separate dev team rather than an in-tree Worldtree tool. ## Current state / in-flight -_As of 2026-05-24 (post-v0.6.2 neutral-dark palette):_ +_As of 2026-05-24 (post-v0.6.3 Australis restored, $background → black):_ -**Status: v0.6.2 shipped.** Nine core issues complete (`sse_client` +**Status: v0.6.3 shipped.** Nine core issues complete (`sse_client` #1, `sessions` #2, `cli` #3, `tui` #4, `--end-user-id` #5, TUI startup error visibility #6, presenter contract semantics amendment #12, startup agent picker #8, §5 layout reshape + Tools pane #13) @@ -51,7 +51,8 @@ Static in the footer (static "Tools" v1; dynamic when more tabs land). CLI mode (--send) unaffected by design — INV-018. Last commits on `main`: -- v0.6.2 style(tui): neutralize Australis dark palette — bg no longer blue-tinted +- v0.6.3 style(tui): restore Australis palette, only $background → pure black +- `d845b20` style(tui): neutralize Australis dark palette — bg no longer blue-tinted (v0.6.2, reverted) - `8463eb2` style(tui): kill remaining blue + thinking-current into pane (v0.6.1) - `cfee89a` refactor(tui): streaming + turn headers + Thinking pane (v0.6.0) - `7106af5` style(tui): UI polish pass — terminal label colors, placeholders (v0.5.1) diff --git a/pyproject.toml b/pyproject.toml index 13ef027..eb97527 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "ratatoskr" -version = "0.6.2" +version = "0.6.3" description = "Worldtree Conversation API debug TUI — multi-pane observability dashboard" readme = "README.md" requires-python = ">=3.12" diff --git a/src/ratatoskr/tui.py b/src/ratatoskr/tui.py index 2b995fd..8b99c62 100644 --- a/src/ratatoskr/tui.py +++ b/src/ratatoskr/tui.py @@ -61,31 +61,33 @@ from ratatoskr.sse_client import ( stream_turn, ) -# ---- Australis-derived theme (https://github.com/lkraven/australis) ---------- +# ---- Australis theme (https://github.com/lkraven/australis) ------------------ # -# v0.6.2 deliberate deviation from spec: the Australis Dark theme's design -# principle "all colors are cooler than neutral" bakes a blue cast into -# every dark surface (Ice black #222531 = RGB 34/37/49 — blue dominant). -# Operators reported the whole-app chrome reading as blue. Ratatoskr keeps -# the Australis ACCENTS (Aurora blue/cyan/green, Dawn red/yellow) — those -# are the brand signature — but **neutralizes the Ice/Sea dark palette to -# true grays** so the chrome reads as neutral dark, not blue-leaning. +# The Australis Dark color theme, inspired by the Southern Lights. 16 cool-tone +# terminal colors with medium contrast. Preference order: blue > cyan > green +# for primary surfaces; Dawn accents (red/yellow/magenta) used sparingly for +# terminal-event labels (error/cancelled). +# +# **v0.6.3 single deviation from spec**: `$background` is `#000000` (pure +# black), NOT Australis Ice black `#222531`. The Ice black is RGB(34,37,49) +# — blue dominant — and at App-wide scale the cumulative cast reads as +# "the whole app is blue" to operators (even though no single surface is +# "blue" in the strict-color sense). Pure black for the App background +# kills that perception. EVERY OTHER Australis value — Aurora accents, +# Sea darks for chrome (surface/panel), Ice white foreground, Dawn +# accents — stays verbatim per spec. # # Mapping to Textual's Theme semantic tokens: -# primary = Aurora blue (#6388D8) — focus rings, active selection (KEEP). -# secondary = Aurora cyan (#00b1a8) — secondary highlights (KEEP). -# accent = Aurora bright cyan (#42dcd1) — bright accents (KEEP). -# success = Aurora green (#16B866) — [done] label (KEEP). -# warning = Dawn yellow (#e1c631) — [cancelled] label (KEEP). -# error = Dawn red (#ff491a) — [error] label (KEEP). -# foreground = neutral light gray (#bdbdbd) — default text (was Ice white). -# background = neutral near-black (#1a1a1a) — App bg (was Ice black). -# surface = neutral dark gray (#2a2a2a) — chrome (was Sea bright-black). -# panel = neutral mid gray (#3a3a3a) — borders (was Sea dark-30). -# -# Dark contrast steps preserve Australis's LAB lightness levels but drop the -# blue/green tint. Variables renamed mentally but kept under $au-* slugs so -# downstream CSS doesn't change. +# primary = Aurora blue (#6388D8) — focus rings, active selection. +# secondary = Aurora cyan (#00b1a8) — secondary highlights. +# accent = Aurora bright cyan (#42dcd1) — bright accents. +# success = Aurora green (#16B866) — [done] label. +# warning = Dawn yellow (#e1c631) — [cancelled] label. +# error = Dawn red (#ff491a) — [error] label. +# foreground = Ice white (#a9bcc3) — default text. +# background = pure black (#000000) — App background (v0.6.3 deviation). +# surface = Sea bright black (#373b46) — raised chrome. +# panel = Sea dark 30 (#414751) — borders, separators. AUSTRALIS_THEME = Theme( name="australis", @@ -95,22 +97,20 @@ AUSTRALIS_THEME = Theme( success="#16B866", warning="#e1c631", error="#ff491a", - foreground="#bdbdbd", - background="#1a1a1a", - surface="#2a2a2a", - panel="#3a3a3a", + foreground="#a9bcc3", + background="#000000", + surface="#373b46", + panel="#414751", dark=True, variables={ - # Neutral dark contrast palette (LAB-matched to Australis Sea spec - # but with R=G=B, no cool cast). $au-dark-N accessible via TCSS. - "au-dark-30": "#3a3a3a", - "au-dark-40": "#4f4f4f", - "au-dark-50": "#6b6b6b", - "au-dark-60": "#878787", - "au-bright-70": "#9e9e9e", - "au-bright-80": "#bdbdbd", - "au-bright-white": "#e0e0e0", - # Accents — KEEP Australis Aurora brights for brand signature. + # Sea contrast palette — usable via $au-dark-50 etc. in TCSS. + "au-dark-30": "#414751", + "au-dark-40": "#565f69", + "au-dark-50": "#6e7882", + "au-dark-60": "#86929d", + "au-bright-70": "#9daeb6", + "au-bright-80": "#b3cbcf", + "au-bright-white": "#cce7ec", "au-bright-blue": "#a4c4ff", "au-bright-cyan": "#42dcd1", "au-bright-green": "#51e08a", @@ -124,9 +124,9 @@ AUSTRALIS_THEME = Theme( _AU_SUCCESS = "#16B866" _AU_ERROR = "#ff491a" _AU_WARNING = "#e1c631" -_AU_USER_ECHO = "#42dcd1" # bright cyan — operator's voice -_AU_DEMOTED = "#878787" # neutral dark-60 — demoted telemetry -_AU_DEMOTED_FAINT = "#6b6b6b" # neutral dark-50 — empty-state placeholders +_AU_USER_ECHO = "#42dcd1" # Aurora bright cyan — operator's voice +_AU_DEMOTED = "#86929d" # Sea dark 60 — demoted telemetry +_AU_DEMOTED_FAINT = "#6e7882" # Sea dark 50 — empty-state placeholders # ---- Issue #12 presenter contract semantics amendment ------------------------- diff --git a/uv.lock b/uv.lock index ea5122d..85a4816 100644 --- a/uv.lock +++ b/uv.lock @@ -968,7 +968,7 @@ wheels = [ [[package]] name = "ratatoskr" -version = "0.6.2" +version = "0.6.3" source = { editable = "." } dependencies = [ { name = "httpx" },