[Bug]: Redesign tab bars ignore clicks on Linux: hidden chat layers keep window drag regions
维护者通常 1 天内回复
@EhsanulHaqueSiam 已经在做这个了。
开始于 2026年11月5日。
评估
- 难度
- 2/5
- 预计耗时
- 1-3 小时
- 新手友好度
- 82/100
- Issue 类型
- 缺陷
- 描述清晰度
- 描述清楚
- 活跃度
- 活跃
- 技术栈
- electron, typescript
调研方向
从 layout/SurfaceHost.tsx 开始,检查隐藏但保留的聊天层如何获得其标题栏类名;然后沿着 chatPaneHeaderClassName追踪到实际的聊天标题栏和 PaneThumbnail。在 Linux 上切换聊天标签页,并点击终端标签页或 + 来复现。隐藏的标题栏不再拦截点击,且这些控件能够稳定响应时,即为完成。
由索引模型根据 Issue 内容生成。
描述
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
- On Linux (seen on Hyprland, Wayland), run the desktop app from
maria/redesign/6-workspace-panes(vp run dev:desktop). - 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.
- Click a different chat tab, so the previous chat moves to a hidden layer.
- Click the terminal pane's
Terminaltab 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
- 主要语言
- TypeScript
- 星标
- 24.8k
- 派生
- 6.4k
- 平均合并
- 10 小时 25 分钟
- 30 天内合并 PR
- 113
环境准备
在浏览器里用你自己的 GitHub 账号启动这个项目的开发容器。
- 没有 Dockerfile 或 Docker Compose 文件
- 有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
pingdotgg/t3code 的其他 Issue
-
needs more info
难度 2/5 1-3 小时 新手友好度 77/100
pingdotgg/t3code#31519 · 1 条评论 ·
维护者通常 1 天内回复
-
[Bug]: Opening a file on Windows spawns powershell -EncodedCommand, which AVG and Avast block as malware可能已有人在做 @juliusmarminge 于 1 天前认领。 未关闭
难度 2/5 1-3 小时 新手友好度 67/100
pingdotgg/t3code#30954 · 1 条评论 ·
维护者通常 1 天内回复
-
needs more info
难度 2/5 1-3 小时 新手友好度 79/100
pingdotgg/t3code#30685 · 1 条评论 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 84/100
pingdotgg/t3code#30228 · 3 条评论 ·
维护者通常 1 天内回复
-
[Bug]: ACP sign-in replaces the agent's error message with a generic one可能已有人在做 @iScabrous 于 2 天前认领。 未关闭bug needs-triage
难度 1/5 1 小时以内 新手友好度 85/100
维护者通常 1 天内回复
相似的 Issue
-
难度 2/5 1-3 小时 新手友好度 78/100
vercel-labs/durable-harness#53 ·
维护者通常 1 天内回复
-
experiência: a doc manda subir para o Micro do Supabase, mas não diz que exige plano pago nem quanto custa可能已有人在做 关联的 PR 仍在进行中或已合并。 未关闭area/docs area/ui enhancement
难度 1/5 1-3 小时 新手友好度 88/100
melgarafael/DeskcommCRM#4098 ·
维护者通常 1 天内回复
-
bug ready-for-agent
难度 2/5 1-3 小时 新手友好度 86/100
kerti/balances-v2#801 ·
维护者通常 1 天内回复
-
lesson-submission pending-review
难度 1/5 1 小时以内 新手友好度 84/100
Ikalus1988/MisakaNet#4510 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 72/100
维护者通常 3 天内回复