openai / openai/codex

[ChatGPT Web][Accessibility] Collapsed sidebar Pinned and Recent menus trap keyboard focus

Open
#45,235 0 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

bug windows-os
Dominant language
Rust
Stars
125k
Forks
19.4k
PR merge metrics
PR metrics pending

Description

What issue are you seeing?

On ChatGPT Web in Chrome on Windows, the icon-only Pinned and Recent chats controls in the collapsed sidebar open popups that cannot be navigated with the expected keyboard interaction and are exposed inconsistently through the accessibility layer.

Observed behavior:

  • In the DOM, each trigger is a native button with an accessible name, aria-haspopup="menu", and an aria-expanded state.
  • In the Windows-facing accessibility snapshot, the collapsed-rail triggers are exposed as popup buttons with expanded/collapsed state, but their accessible names are missing.
  • Activating either trigger moves focus to a div role="menu" tabindex="-1" aria-orientation="vertical".
  • The popup entries are ordinary <a> and <button> elements rather than menuitem descendants.
  • Arrow keys do not move focus or expose an active item.
  • Tab does not move to the first link/button; focus remains on the menu container.
  • Escape closes the popup and returns focus to the trigger.

The expanded sidebar does not have the same problem: its Pinned, Projects, and Chats section headers are disclosure buttons with aria-expanded, Enter/Space toggles them, and Tab moves into their contents. The issue is specific to the collapsed sidebar rail.

What steps can reproduce the bug?
  1. Open https://chatgpt.com/ in Chrome on Windows and sign in.
  2. Collapse the left sidebar so that only the narrow icon rail remains.
  3. Move keyboard focus to the Pinned or Recent chats icon-only button.
  4. Press Enter or Space. The popup opens and aria-expanded changes to true.
  5. Press ArrowDown or ArrowUp.
  6. Press Tab.
  7. Inspect the active element and accessibility tree.

Actual result:

  • Focus remains on the popup menu container instead of moving to an item.
  • No active or selected item is exposed as the arrow keys are pressed.
  • Tab does not enter the list of links/buttons.
  • In the Windows-facing accessibility snapshot, the collapsed-rail trigger is announced without its Pinned/Recent chats name.

This reproduces with both the Pinned and Recent chats popups. No conversation, pin, or organization setting needs to be changed.

What is the expected behavior?

The collapsed-sidebar controls should expose stable accessible names and use one internally consistent keyboard pattern.

If these popups use role="menu":

  • Each actionable entry should be exposed as menuitem, menuitemcheckbox, or menuitemradio as appropriate.
  • Opening the popup should move focus to the first applicable item.
  • ArrowUp and ArrowDown should move through items and expose the active item to accessibility APIs.
  • Escape should close the popup and restore focus to the named trigger.
  • Tab behavior should follow the chosen ARIA menu pattern without trapping focus on a non-actionable container.

Alternatively, if the popup is navigation rather than an application menu, it should use disclosure/navigation semantics and allow normal Tab navigation through its native links and buttons.

Additional information

Environment:

  • Surface: ChatGPT Web (https://chatgpt.com/)
  • OS: Windows
  • Browser: Google Chrome
  • Observed: 2026-09-13
  • Recents organization mode during the check: By project

The reproduction was verified through both the live DOM and the Windows-facing accessibility snapshot. It does not depend on a particular assistive-technology product.

Related but not duplicate:

  • #38943 concerns missing Recents caused by pin/organization state on the same redesigned Web sidebar; this report concerns popup semantics and keyboard focus.
  • #32375 concerns inaccessible suggestion-menu options in the desktop app; the affected component and surface are different.
  • #34676 concerns removal of the expandable Projects list on iOS; this report concerns the collapsed rail on ChatGPT Web.

No account identifiers, conversation titles, project names, or private URLs are included.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the collapsed-sidebar Pinned and Recent chats popups in Chrome on Windows, then inspect their live DOM and Windows-facing accessibility snapshot. Locate the collapsed-rail popup implementation and choose the stated menu or navigation pattern; done means named triggers, actionable popup entries, predictable keyboard movement, and focus restoration on Escape.

Written by the indexing model from the issue text.

Assessment

Tech stack
html
Domain
accessibility, frontend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.