[Bug]: Redesign tab bars ignore clicks on Linux: hidden chat layers keep window drag regions

Aperta Adatta ai principianti
#31,551 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

@EhsanulHaqueSiam ci sta già lavorando.

Dal 5/11/2026.

  • #31554 di @EhsanulHaqueSiam — aperta
  • #31585 di @juliusmarminge — aperta

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
82/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
electron, typescript
Ambito
desktop, frontend

Direzione di ricerca

Inizia da layout/SurfaceHost.tsx e verifica come ricevono le classi dell’intestazione i livelli di chat nascosti mantenuti; poi segui chatPaneHeaderClassName fino all’intestazione effettiva della chat e a PaneThumbnail. Riproduci il problema passando da una scheda di chat all’altra e facendo clic sulla scheda del terminale o su + su Linux. Il lavoro è concluso quando le intestazioni nascoste non intercettano più i clic e quei controlli rispondono in modo affidabile.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

What happened

In the redesign desktop app (stack branch maria/redesign/6-workspace-panes, #28845), tabs and + buttons in the top bar only respond to clicks some of the time. With a chat on the left and a terminal on the right, the terminal pane's Terminal tab and its + (Add panel surface) ignore clicks completely after switching chat tabs once. Chat tabs and + in the chat's own tab bar also miss clicks, depending on where you click.

Diagnosis

Chats you are not looking at stay mounted in a hidden layer (layout/SurfaceHost.tsx: !visible && "pointer-events-none inset-0 [content-visibility:hidden]", plus inert). The layer's header still has drag-region. That includes the real ChatPaneHeader of a kept chat, and the header of a PaneThumbnail prepared off screen for the overview, since both use chatPaneHeaderClassName.

pointer-events, inert and content-visibility:hidden don't affect Electron's window drag regions. Blink still collects the hidden header's -webkit-app-region: drag box: the layer is inset-0, so the strip runs the full workspace width. Electron applies drag and no-drag rectangles in DOM order, and the hidden layers come after the visible pane, so the hidden strip covers the visible tab bars. A click there goes to the window manager as a window move and never reaches the page. Clicks only get through where one of the hidden header's own no-drag buttons happens to line up. That's why it feels random.

Only this branch is affected: SurfaceHost's kept chat layers don't exist on main or on stack branches 1 to 5.

Steps to reproduce
  1. On Linux (seen on Hyprland, Wayland), run the desktop app from maria/redesign/6-workspace-panes (vp run dev:desktop).
  2. Open a project chat with a few thread tabs, and open a terminal so it sits as a pane to the right of the chat.
  3. Click a different chat tab, so the previous chat moves to a hidden layer.
  4. Click the terminal pane's Terminal tab or its +. Nothing happens. Clicking empty space in the chat tab bar and then some tabs also fails.
Version

maria/redesign/6-workspace-panes @ ada1a8b67b (desktop dev build)

Environment

Omarchy (Arch Linux) 7.2.15, Hyprland 0.57.1 (Wayland), Electron 44.10.1, Node 26.13.0. Not checked on macOS or Windows; drag regions work the same way there, so they are likely affected too.

Evidence
# Drag-region boxes in the page (CDP), after one chat tab switch. CSS px; window is 2003 px wide.
live chat header      [260, 7, 862 x 41]   drag
hidden chat header    [260, 7, 1731 x 41]  drag   (ancestor: inert, inset-0 [content-visibility:hidden])
terminal tab bar      [1130, 7, 861 x 41]  none   <- under the hidden strip

# Real mouse clicks (uinput, not synthetic CDP events), recording pointerdown in the page:
sidebar resize handle (256,600)  -> page got: ["Resize Sidebar"]
terminal "Terminal" tab (1188,24) -> page got: []
terminal "+" (1241,24)            -> page got: []

# Same clicks after removing the hidden header's drag region:
terminal "Terminal" tab (1188,24) -> page got: ["Terminal"]
terminal "+" (1241,24)            -> page got: ["Add panel surface"]
Related issues

#10661 and #11573 were Linux click bugs caused by drag regions over controls in other parts of the app; both are closed and involve different code. #19079 (right sidebar tab close button needs repeated clicks in macOS fullscreen) is on main, which doesn't have these layers.

Fix applied or workaround

Nothing on the machine beyond a temporary style injected over CDP while testing. Reloading the window clears it until a chat goes into the background again. A fix PR follows: hidden headers drop drag-region.

Filed by

EhsanulHaqueSiam, following the t3 triage playbook

Lingua principale
TypeScript
Stelle
24.8k
Fork
6.4k
Merge medio
20h 2m
PR unite (30g)
164

Preparare l'ambiente

Apri in Codespaces

Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di pingdotgg/t3code

Tutte le issue di pingdotgg/t3code

Issue simili

Altre issue su TypeScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.