feat(012): TUI visual revamp — theme-true widgets, bee identity, panel interactivity - #7
Merged
Merged
Conversation
…l interactivity The chat pane, chrome, and every data widget get the design pass the tooling was built for, reviewed via SVG exports at each step. Widgets (buffer_render): - Line charts draw lines (GraphType::Line; the default Scatter left braille constellations), areas fill to the baseline (GraphType::Area + fill_to_y). - Series colors resolve through the active theme in fixed categorical order; multi-series charts always show a legend, single-series charts never do. - Heatmap ramps one hue with a 22% floor instead of fading to black; cells get a spacer column and contrast-flipping ink. - Tables right-align numeric columns; gauges use sub-cell unicode edges with contrast-aware labels; every widget shares one rounded dim-border/bold-title frame. All styling is NO_COLOR-safe. - New RenderSpec::LogTail: bottom-anchored stream tail (newest last, truncate not wrap) with letter+color level markers, a full rhai builder surface, and no per-append update transition — the arriving line is the report. Chrome & chat (tui): - Header is a context bar: honey `bee` badge, model id, and a three-cell honeycomb working indicator whose phase is driven by session events — it moves when data flows and freezes when the stream stalls. - Footer hints render key-accent/label-dim and follow the focus; input is a rounded box with a ❯ prompt; user messages carry an accent ❯ gutter marker. - Panels drop their outer border (the widget's own frame was nesting two deep) for a honey hexagon gutter label. Syntax highlighting lands in markdown code fences via tui-markdown's highlight-code, theme-paired and NO_COLOR-stripped. Panel interactivity: - Focus::Panels joins the Tab cycle while panels are on screen; j/k select (reverse-video), Space collapses to the label row (⬢→⬡, operator state that upserts cannot unfold), x closes. Contextual footer + help entries. Themes: - New built-ins: gruvbox, tokyo-night, rose-pine. `--theme auto` detects the terminal background (OSC 11 query, then COLORFGBG) and picks latte/mocha, falling back to honeycomb when undetectable. Tooling (xtask): - viz-screens renders the full TUI at staged states/sizes to SVG through the real view(); gallery gains log_tail and honors REVERSED/BOLD plus braille and hexagon glyph fallbacks in exports. Scene mocks for chrome_header/footer now mirror the shipped chrome; their baselines are regenerated (all 46 snapshot frames match). Also carries the in-flight EffectSpec plumbing through session/tools/ transcript that the effect work builds on. tests/repl_command's no_provider_at_all_reports_what_is_missing fails on main before and after this branch (enforcement gate precedes the completeness check) — unrelated. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JqVH9oZ4unqY8d1noMqtXN
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this is
The full visual pass on bee's TUI, iterated through the SVG export/review loop (
cargo xtask viz-gallery/ the newviz-screens). Four areas:Widgets render correctly and theme-true
GraphType::Line, so every line chart rendered as disconnected braille dots. Area charts now fill to the baseline (GraphType::Area+fill_to_y).Cyan/Yellow/Green/…); multi-series charts always get a legend, single-series never do.RenderSpec::LogTail— bottom-anchored stream tail (built for sandbox denials): letter+color level markers, truncate-not-wrap, full rhai builder (log_tail/line/max_rows), and no per-append dissolve — the arriving line is the report.Chrome carries bee's identity
beebadge · model id · a three-cell honeycomb working indicator phased by session events — it moves when data flows and freezes when the stream stalls.❯-prompt input, accent-key/dim-label footer hints,❯gutter marker on user messages, honey hexagon panel labels (outer panel border removed — it double-framed every widget).highlight-code), paired to the active theme and stripped under NO_COLOR.Panels are drivable
Focus::Panelsjoins the Tab cycle while panels are on screen:j/kselect (reverse video),Spacecollapses to the label row (⬢→⬡; operator state — agent upserts can't unfold),xcloses. Footer hints follow the focus.Themes
--theme autodetects the terminal background (OSC 11 query →$COLORFGBGfallback) and picks latte/mocha, honeycomb when undetectable.Tooling
cargo xtask viz-screensrenders the full TUI (staged states, any theme) to SVG through the realview().Notes for review
EffectSpecplumbing (session/tools/transcript) this work builds on.tests/repl_command::no_provider_at_all_reports_what_is_missingfails on main before and after this branch (the enforcement gate fires before the provider-completeness check) — pre-existing, not introduced here.🤖 Generated with Claude Code
https://claude.ai/code/session_01JqVH9oZ4unqY8d1noMqtXN