Repository navigation
[AI-2956] desktop: Overhaul chrome, status colour, rail footer and work-context pane - #983
Conversation
ChangelogTheme & colour
Session rail
Chat
Work-context pane
Terminal
Window
|
Green, orange and yellow are status only — vendor chips, keys, links and location marks were reading as outcome. Fluent MenuItem and Button hover paints the presenter, so flyouts, Stop, and the Chat/Terminal switch opt into kcap classes. The work-context pane groups sections, middle-truncates copyable ids and names, and scrolls without horizontal overflow.
A live agent whose turn is over is not Connected — green plus zzz contradicted. The rail footer drops the misaligned middot for two rows, and truncated titles keep the full string on hover.
A pause glyph reads as a button, and a leading selection edge insets the open row past its siblings. Hover names org, daemon, and server instead of echoing the visible value.
The left hairline already groups each section; a second rule between them was extra chrome.
The disc never sat on the word's cap-height, so the word itself is the indicator. The URL belongs on the org hover because at rail width it outweighed its neighbours.
A second danger colour on the group hid the row pills; opening it is how you see the error.
SetTip("Copied") cannot reparent a visual tip, and ClearValue leaves an empty bubble.
WrapPanel Center matches layout boxes, not glyph baselines.
Green is status; Border ignores alignment on a direct child, so the letter lives in a Panel.
DisplayName is null for an owner with no user row; user_ plus a ULID is not a name.
A row that changes height makes the virtualizing panel drop its anchor and re-place every row from the average size.
XTerm.NET 1.2.0 lowers the buffer's YBase to pull scrollback into a taller viewport without moving Y with it, so the agent's SIGWINCH repaint lands above the tail and erases what it left behind. Only the grow direction is correctable from here: the shrink needs YBase, which the buffer alone can move.
A styled run that needs a fallback typeface is laid out on that typeface's baseline, so the whole run — not just the character missing a glyph — is drawn below every other row in the pane. A replacement has to stay one cell wide, or every column after it falls out of step with the layout the agent computed.
A saved position is ignored unless it still sits on a screen. The rail badge lives on the collapsed header only; the header floor is the badge so collapse does not jump. A work-item PR has to feed the in-app reader before the session list admits it.
StatusBadge could only ever be "!" once a finished turn took the clock icon, so the glyph is a literal in the rail and NeedsYou plus ShowsIdleBadge carry what the string did. ConnectionTip and HasRelated had no view binding at all.
c45109e to
6624ef8
Compare
… SESSION The rows come from the session's transcript, not the work item, so they belong with the session facts. "background" only says the chat is not waiting on the run, which is true of a live row alone, so it rides the state line and leaves once the run ends.
SessionSubagents.Changed fires only on a count change, so a summary string built there misses the detach that adds "in background" and every tick; the banner binds the row's own name and state line instead.
PR Summary by QodoOverhaul desktop chrome, status semantics, and work context
AI Description
Diagram
High-Level Assessment
Files changed (67)
|
Code Review by Qodo
1.
|
Off-screen clamp uses window size so the full frame lands on a monitor; minimized quit no longer clears a prior maximized state. Legacy PR capability opens the selected PR in the browser; link-class-only cards dedupe by URL. Chat tool-summary clicks capture a scroll anchor when the toggle did not come from a pointer press.
|
@codex review |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: a6ee5986ab
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
A folded group's VisibleCalls is the live list, so raising HasVisibleCalls before the add published false for the call's whole run.
Routing stays with the reader registry, which is provider-agnostic and cannot say whether a local reader will take the host; the notice points at the GitHub button instead.
The eyebrow already names the section; the meta line carries progress or overflow the body does not show.
Release-facing notes for this pass live on the PR changelog comment.
Closes #1017 — AI-2956
What & why
The desktop app spent its status palette on identity — vendor chips, work-item keys, titles and
"you are here" marks sat in success green or warning orange and read as outcome — and Fluent's
default chrome showed through wherever a control had not opted into a Kcap class. This pass
reserves green/orange/yellow for outcome and attention, moves location to purple and selection
to blue, and puts menus, flyouts, buttons and fields on the Kcap classes. Idle becomes its own
state — a live agent whose turn is over is not Connected — with a waiting dot and a clock badge.
Around that, the rail footer restacks around a coloured status word, the work-context pane
groups sections by hairline and fixes the PR linked to the work item not appearing (the pane and
reader only knew the session's own list), the window remembers its placement,
and the terminal keeps the cursor on its line when the pane grows.
Where to look
App.axamlholds the palette and control classes; the twoCLAUDE.mdinvariants state what alater change would otherwise undo unnoticed.
SessionStatusDots.Fortakes the row so waiting canoverride the process word.
XtermTerminalSurface.KeepCursorOnItsLineis pinned to XTerm.NET1.2.0; its comment says why the version cannot move yet.
Verification
dotnet run --project test/Capacitor.App.Tests.Unit/Capacitor.App.Tests.Unit.csproj—2527 passed, 0 failed.
Visuals
Before
After