# fix\(web\): adopt main's attached-composer surface contract so the glass survives shoulder tabs · pingdotgg/t3code

[View on GitCafe](https://git.cafe/pingdotgg/t3code/commit/91de44746abdecb9deca0dfef81f87169367176f)

Repository: [pingdotgg/t3code](https://git.cafe/pingdotgg/t3code)

Visibility: public

Requested revision: 91de44746abdecb9deca0dfef81f87169367176f

Requested commit: 91de44746abdecb9deca0dfef81f87169367176f

Commit: 91de44746abdecb9deca0dfef81f87169367176f

Tree: f2b04f948093cc024e61b1fa154cc2a49440e96b

Author: Julius Marminge

Committer: Julius Marminge

## Message

```
fix(web): adopt main's attached-composer surface contract so the glass survives shoulder tabs

The composer went frameless exactly when the stash or tasks badge was
showing: main's #7150 css hides the classic shell chrome whenever the
shell :has() a shoulder tab or top drawer and repaints the glass on
[data-chat-composer-main-surface] instead — an element the branch's
composer body never rendered, since it predates the drawer system while
the badges and css came through the rebase in main's new form.

The branch composer's frame div now carries the main-surface attribute
(with main's relative z-10 stacking) so attached mode paints background,
outline, and backdrop on it and the tab connects to the surface, and
ChatView applies chat-composer-glass-shell-attached while banner items
render in the drawer slot, matching main's externalComposerDrawerAttached
wiring. Without a tab or banner the attribute is inert and the classic
shell chrome paints as before.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

```

## Parents

- [acc48560a3b6e4f70e8f5cb97c8a76746e8d18aa](https://git.cafe/pingdotgg/t3code/commit/acc48560a3b6e4f70e8f5cb97c8a76746e8d18aa?format=markdown)

[Source at this commit](https://git.cafe/pingdotgg/t3code/tree/91de44746abdecb9deca0dfef81f87169367176f?format=markdown)
