Skip to content

Hide collapsed sidebar controls from accessibility navigation #44

Description

@iamnbutler

The collapsed Channels sidebar remains exposed to accessibility/DOM navigation on desktop even though its controls are no longer visible. This was observed while dogfooding the tab-renaming API (#43) in a second browser window at 1280px width.

Reproduce

  1. Open a project with at least two channels in Ace's browser app at a desktop width (observed at 1280px).
  2. Open a channel and collapse the Channels sidebar using Toggle channels sidebar.
  3. Inspect the accessible/DOM navigation snapshot. The project selector and hidden channel controls are still exposed; the observed controls included Select project, Channel tab-api-check, and Channel tab-other-channel.
  4. Attempt to select a hidden channel through the exposed control. During dogfooding, the selection had no effect.
  5. Reopen the sidebar and select the same channel. Selection succeeds.

The screenshot showed only the activity icons and main panel while the snapshot still advertised sidebar controls. Keyboard and screen-reader behavior should be checked during the fix; the observed failure was through browser UI automation.

Cause

At desktop widths, packages/ui/src/shadcn.css collapses the sidebar by setting its grid track to zero (data-left="collapsed", around line 755), while .layout:left retains visibility: visible (around line 901). The shared Sidebar in packages/ui/src/components/layout/layout.tsx reads the open state but does not use it to make collapsed content inert or hide it from assistive technologies. The app's left sidebar does not provide those attributes either (apps/app/src/app.tsx, around line 325).

The layout's existing inert handling only applies while a compact overlay is open. It does not cover a collapsed desktop sidebar. The details sidebar already explicitly uses aria-hidden and inert when closed.

Expected

  • Collapsed sidebar controls are excluded from accessibility navigation and the keyboard tab order, and cannot receive focus or interaction until the sidebar opens.
  • Opening the sidebar restores its controls without changing the selected project or channel.
  • Closing while focus is inside the sidebar leaves focus on an appropriate visible control.
  • Verify desktop collapse, narrow-screen overlay open/close, and viewport transitions. Preserve the shared sidebar's animation and existing overlay behavior.

No matching open or closed issue was found when checking the repository's issues on October 4, 2026. Tracked by #5.

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions