cmux NEXT Home: no top banner over the Chief chat; messages fade out at the top
Leo-ask: ask-541000e7b0
Leo, on the Chief chat: "why is there a top banner? this is so ugly. iMessage dissipates that, and we don't even need this in the first place."
What changes for the person
- The Chief chat has no header now: no avatar, no "Chief ›" pill, no glass band pinned over the transcript. Text never runs under anything.
- The oldest message rests 16 pt under the pane's top (was 88 pt under the header).
- As messages scroll up they fade out over the top 16 pt, like the scroll edge in Messages: a soft dissolve on the rows only, no band and no fill.
- Clicks and scrolls at the top of the pane reach the messages (the hidden header no longer takes them).
- Chief settings still open from the pane's tools, the command palette (Toggle Chief Settings) and the pet's menu.
- Debug Settings > Home > Avatar and name over the chat brings back the old header (conversations opened after a change follow it).
How
HostView.useBareTop()(HeaderGlass.swift) hides the pane header and backdrop;placeNativeViewshands the window view a 16 pt rows inset and a 16 pt top fade; the scroll view starts at 0.- Vendored
WindowView/HostHooksread the rows' top inset fromrowsTopInset(default Messages' 80 + 8) instead of the constant, and the transcript clip's mask is aCAGradientLayerthat ramps in overtopFadepoints (solid when 0, as before). Patches regenerated against the pin (reverse-applied and round-tripped). - The top-right panel toggles from #22702 stay: with no header,
PaneHeaderView.barehides the avatar and pill, puts the toggles 8 pt from the top right, and lets clicks through everywhere else. The rows rest under the toggles (HostView.bareRowsTop: 44 pt with them, 16 pt without), and the first-run panel follows when the toggles come or go. HomeTunables.chatHeader(default off) picks bare top or the oldsetHeaderGlass().
Changelog
Changed: the Chief chat has no header over its messages; they fade out at the top as they scroll.
Tests
Fleet runs (Xcode 26.6) at daa16abd and again at the head 655580c7: HomeBareTopTests, HomeHeaderGlassTests, HomeKeyboardTests pass. Follow-up commit (review notes): VoiceOver, older-page paging, the scroll knob and the flight recorder read the visible top (visibleTop) instead of 80 pt; the test allows half a point for the pixel-snapped offset.
HomeBareTopTests: no avatar/pill/band, the hidden header takes no click near the top, the scroll view reaches the top, the oldest row rests at 16 pt, the mask is ~0 at the top edge, ~0.5 mid-fade and full from 16 pt down; the header pane keeps Messages' geometry (88 pt, no fade); theTopRightTogglesStayWithNoHeader: the toggles sit top right, take their clicks, and the rows rest under them.
HomeBareTopFirstRunTests (CmuxNext): toggles that arrive after the first layout move the first-run panel under them. It was committed test-first at 6b4840a9; the fix is 5b5f6961, after review of the base merge 00957c00. The red and green fleet runs are in progress and will be posted as a comment. cmux-ci compile-check --ref 5b5f696110c70d0a1aeaa236b10b14b9e9b4bfdc --app --package CmuxMessagesLab: passed.
Observed / Not run
Observed: the fleet runs and compile above, and the real-app captures below. Not run: a capture showing the toggles. The capture's debug fixture page never adds them, so the 00957c00 capture shows the same bare top as 655580c7.
Before / after
Before (base 0ba602a4): the avatar and "Chief ›" pill on a blurred band over the messages.
| Light | Dark |
|---|---|
![]() | ![]() |
After: no header; the top row dissolves at the edge.
Capture steps-85ecd27cd2 at 00957c004293 (fleet build, capture mini, text checked for private data)
| Light | Dark |
|---|---|
![]() | ![]() |
Agent session: cosmic-gray
🤖 Generated with Claude Code



