feat(tui): tint the user's own turns in the transcript - #492
Merged
Conversation
The theme derives user_message_bg, bash_message_bg and memory_message_bg from the active palette, but nothing ever read them: user turns rendered with a hardcoded white foreground and no background, so a prompt was visually identical to model output when scanning back through a session. Apply those slots. The prefix picks the tint, matching the slots' intent — a plain prompt, a `!` shell passthrough and a `#` memory note read as different kinds of input — and the marker is no longer duplicated into the body. Foreground now comes from the theme rather than a hardcoded colour, so the line degrades with everything else on limited-colour terminals.
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
This was referenced Jul 25, 2026
Merged
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.
Summary
User turns render with no background tint, so scanning back through a long transcript there is nothing distinguishing what you typed from what the model said. Peer terminal agents tint the user's own input; we didn't.
The cause: three dead theme slots
The theme already derives these from the active palette:
…and nothing consumed any of them. The renderer painted user turns with a hardcoded
Color::Whiteforeground and no background at all — the same "built but never wired" pattern as the unused word-diff colours and the parsed-then-discarded hyperlinks.What changed
!shell passthrough, and a#memory note are different kinds of input and now read differently.!ls -lapreviously rendered the!twice).Verification
48;5;…(background) across the marker and text with a themed38;5;…foreground, where before it had no background and a hardcoded white.cargo test,clippy --all-targets -- -D warnings,fmt --checkall clean.