Skip to content

[Bug]: Right panel launcher letter shortcuts never fire: closed header-actions menu-popup stays mounted and trips the blocking-layer check #18602

Closed as not planned

Description

@ultrakorne

Before submitting

  • I searched existing issues and did not find a duplicate.
  • I included enough detail to reproduce or investigate the problem.

Area

apps/web

Steps to reproduce

  1. Open the desktop app on a thread inside a project (a fresh draft thread is enough).
  2. Press Cmd+Opt+B to open the right panel. The "Open a surface" launcher shows B / T / F / D / … hints.
  3. Click inside the launcher so it has focus (document.activeElement is the aria-label="Open a surface" div), then press T.

Expected behavior

The Terminal surface opens (same as clicking the row).

Actual behavior

Nothing happens. The same goes for every launcher letter (B, F, D, A, M…). Clicking the rows works.

Root cause (verified via remote debugging): the launcher's window keydown handler in apps/web/src/components/RightPanelTabs.tsx bails when

if (document.querySelector(LAUNCHER_SHORTCUT_BLOCKING_LAYERS)) return;

matches. However, the chat header's "More header actions" menu stays mounted while closed, so [data-slot="menu-popup"] always matches:

<div data-closed="" role="presentation" hidden="" data-slot="menu-positioner" style="… opacity: 0; pointer-events: none">
  <div data-closed="" id="…" role="menu" data-slot="menu-popup" data-chat-header-actions="true" aria-label="Header actions">…</div>
</div>

Logged keydown in capture phase while pressing T with the launcher focused:

{ "key": "t", "target": "DIV aria=Open a surface", "defaultPrevented": false,
  "blockingLayerPresent": true, "launcherKeys": "BTFAM" }

It was the only [data-slot$="-popup"] element in the DOM. After temporarily renaming its data-slot, pressing T immediately opened Terminal 1 in the right panel, which confirms it's the cause.

Suggested fix: only treat open layers as blocking, e.g. match [data-open] / exclude [data-closed] (and/or skip elements inside a hidden positioner) in LAUNCHER_SHORTCUT_BLOCKING_LAYERS. The same selector is also used for the rightPanel.new handler on main, so that path is probably affected too.

Impact

Minor bug or occasional failure

Version or commit

Desktop 0.0.45 (blocking-layer selector is unchanged on main @ 58d2532)

Environment

macOS 26.6.2 (arm64), T3 Code (Alpha) desktop app

Workaround

Click the launcher row (or Tab to it and press Enter).

Related but different cause: #13427 (non-Latin layouts / focus).

Activity

  1. juliusmarminge commented on Oct 12, 2026

    @juliusmarminge
    Member

    Note

    Grok responding on behalf of Julius.

    Thanks for the detailed trace. This is the same root cause already tracked in #13403: the chat header actions MenuPopup stays mounted while closed, so the unguarded menu-popup entry in the launcher's blocking-layer selector always matches and the launcher letters (T, B, F, M…) never fire. That issue is confirmed and accepted.

    The fix for the launcher half is in open PR #18132, which only treats overlays as blocking while they're open. Closing this as a duplicate of #13403; please follow along there. Until it lands, clicking the launcher row (or Tab + Enter) works.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    duplicateThis issue or pull request already exists

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions