Agent chat: the window's lit top rim runs unbroken over the header tools in the tab row
Summary
Leo (2026-11-03): "there is clearly a rectangle that is just covering up the glass at the rim of the top of the app", and "white white white DARK RECTANGLE!?"
While a chat shares its pane's tab row, its Chromium page is a child window over the row with holes for the pane's native tabs and toolbar (AgentPaneTabRow.offer / nativeHoles). The span between those holes, where the chat's header tools sit, stays page. Where the row meets the window's top edge, the page window there shows a flat gray 1 pt line in place of the window's lit glass rim. The tabs' hole beside it shows the real rim, so the rim broke off exactly where the tools began.
Pixel evidence (2x captures, two themes):
- Rim rows (1 pt = 2 device rows): over the tabs' hole and past the chat pane they read rgb(177,177,199) / (133,133,152) in one capture and (133,132,150) / (97,99,113) in another. Over the tools span they read a flat rgb(69,71,70) in both captures, whatever the theme or art behind.
- The break falls exactly at the tools' leading edge (x=487 to x=699 in one, x=983 to the corner in the other: 106 pt, the tools' width). Below the rim the two sides match pixel for pixel (the page is transparent there since #32944).
- The tabs' hole already cut the page window out at the top edge and showed the rim with no seam at the hole's edges, so a hole is what removes the gray line.
Fix: nativeHoles leaves the row's top point uncovered across the tools too (AgentPaneTabRow.rimHeight, 1 pt), between the tabs' hole and the toolbar's. With a lone tab hidden it spans the row up to the toolbar. The three holes never overlap, because the fork masks the page with them even-odd and an overlap would cover the rim again. The tools keep their clicks: the strip is above their 24 px boxes. The Session Info toggle's plate is untouched (page CSS). No default changes and nothing is removed.
Testing
- New:
AgentPaneTabRowHolesTests.theWindowsTopRimStaysUncoveredAcrossTheTools. For tabs shown or hidden, and with or without a toolbar, every point of the row's top edge lies in exactly one hole, and the tools' middle stays the page's. It fails on base, where the tools span's top edge is in no hole. - The existing hole tests now expect the rim strip.
Observed / Not run
- Ran:
prepush-gate.py(no new violations) and the fleet compile check ofCmuxNextat the head. - Not run yet: the suite above on the fleet, and a real capture of the fixed build. The cause comes from reading pixels in Leo's screenshots and an earlier capture, not from a live build of this head.
Changelog
Fixed: A chat's header tools no longer cover the window's lit top edge with a gray line
Proof
No capture: the before/after is the 1 pt rim line. The numbers above are from the before images. An after capture is a follow-up.
Agent session: agent session
🤖 Generated with Claude Code
![Autofix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark-3x.png)
Open in [code]smith · Need help on this PR? Tag @codesmith-bot with what you need.
Summary by cubic
Fixes the gray 1 pt line that covered the window's lit top rim where a chat's header tools sit in the pane's tab row.
Previously the Chromium page window covered the row between the tabs' hole and the toolbar's, so the rim stopped exactly where the tools began. The page now leaves the row's top point uncovered across the tools too; the holes never overlap, so the rim runs unbroken and the tools keep their clicks.
Testing
- New test
theWindowsTopRimStaysUncoveredAcrossTheToolsasserts every point of the row's top edge lies in exactly one hole for tabs shown or hidden and with or without a toolbar, and fails on base. - Existing hole tests updated to expect the rim strip.