Closed general

Claude chat body paints sideBar.background, so the active tab never flows into the chat (fullEditor class absent; reproduces on stock Dark 2026)

John Lauer · 8d ago ·closed by John Lauer

Type: Bug / upstream investigation (from the adom-theme validation, 2026-08-02)

Principle (John): the active tab should share the chat body's background so the active conversation flows tab-into-content and reads front-and-center.

Measured on the live workbench (all five Adom themes + stock Dark 2026 control):

Theme active tab (= editor bg) chat body (= sideBar bg)
Adom Studio #161b22 #1f2125
Adom Studio Dark (Brighter Text) #0d1117 #18191c
Adom Studio Dark #0d1117 #17191c
Adom Kickstand #191919 #202127
Adom Slate #17212e #202a37
Dark 2026 (stock, CONTROL) #121314 #191a1b

Root cause, from Claude Code's own stylesheet inside the webview: .messagesContainer paints var(--app-primary-background) which Claude defines as var(--vscode-sideBar-background). Their .messagesContainer.fullEditor variant paints var(--app-secondary-background) = var(--vscode-editor-background), which is exactly the flow behavior we want, but the fullEditor class is NOT applied to chats in our hosting mode (verified: container class list is messagesContainer stickyMode, no fullEditor).

Not the theme's fault: every Adom theme computes active tab == editor.background exactly (generator-enforced). The control column shows stock Dark 2026 has the identical seam.

Fix directions, in preference order:

  1. Find what makes Claude Code apply .fullEditor (how the chat is opened / host context detection) and make HD/adom-vscode open chats that way. Cheapest if it works: purely a hosting change on our side.
  2. Failing that, upstream request to Anthropic: chats hosted as editor-area tabs should use the fullEditor styling.
  3. REJECTED: flattening sideBar.background into editor.background in the themes; it would destroy the chrome-vs-content architecture (and the Studio premise) to patch one webview.

Validation assets + method: the adom-theme page README "Validation" section (docs/seam-validation.png; measured via /eval-in into the webview content, not eyeballed).

2 Replies

John Lauer · 8d ago

RESOLVED theme-side per John's directive (2026-08-02): do not change VS Code or Claude; adapt the themes to how they actually paint.

The tab contract (adom-theme 2.2.0, HD 20b36ebe): tab.activeBackground := sideBar.background (the color Claude's chat body actually paints), tab strip + inactive tabs := editor ground. Verified LIVE on all five themes: active tab == chat body EXACTLY (measured computed colors, README validation section has the numbers + screenshots). Inactive tabs now recede to the strip, so the active tab is unmistakable.

Accepted trade, on the record: a file editor's active tab carries a subtle cap seam over its body. Chats won.

Bonus finding for future theme work: VS Code caches computed theme data per extension VERSION; editing theme files under an unchanged version renders nothing. Bump to bust.

The upstream fullEditor observation stays true (Claude ships editor-bg styling for full-editor chats that our hosting mode never triggers) but is now moot for us.

John Lauer · 8d ago

Addendum (2026-08-02, measured during the Settings-driven gallery): Claude Code has TWO chat surface modes. History-resumed chats (the normal user path) paint sideBar.background, so the 2.2.0 tab contract holds and the active tab flows into the chat. Chats opened via the claude-code.open command (prefilled-prompt flows) get the fullEditor class and paint editor.background, so those tabs seam. If HD's chat-opening flows ever standardize on the command path, the contract choice should be revisited. Documented in the adom-theme README validation section.

Log in to reply.