Skip to content

Adopt Selector in shell — two popdowns with declared roles and zero arrow keys (and a third surface that is a phantom) #112

Description

@mpstaton

shell is the federation host: every remote mounts inside it, so a regression here is a regression in all 20 members at once. It was sequenced last in the plan for that reason.

Two real surfaces, not three.

shell/src/JumboPopdown.svelte:111 ships <div class="panel" role="menu"> over <button role="menuitem"> children. The role triad is correct — but there is no keydown handler anywhere on the panel. Every item is its own tab stop (N tab stops, not one), ArrowDown/ArrowUp/Home/End/typeahead all do nothing, and the only Escape handler is a document listener that sets open = false and drops focus to <body> — the focused <button> is unmounted with the panel and nothing catches focus.

shell/src/WorkspaceSwitcher.svelte:120 ships <ul class="menu" role="listbox"> over <li><Button role="option" aria-selected>. Same three defects: N tab stops, zero arrow keys, document-level Escape that drops focus to <body>. Its trigger already carries aria-haspopup="listbox", which makes it the federation's own reference for the trigger half.

shell/DevelopersMenu is a phantom entry in the census. It declares no role of its own — grep 'role=' in that file matches a code comment on line 12 (// role="menu"/"menuitem" — rather than inventing a second one) and a role="status" on a Chip. It composes JumboPopdown, so it inherits whatever keyboard JumboPopdown has. The nine-surface count includes one surface that does not exist; the real number is eight.

Containment constraint specific to this member: shell's production bundle was measured clean (every shell/src selector hashed, the only unhashed ones federal from packages/theme). Any CSS added here must stay scoped, and there must be no <style global>.

Plan: https://github.com/lossless-group/augment-it/blob/rebuild/turbo-rsbuild/context-v/plans/Build-Selector-And-Close-The-Keyboard-Contract.md
Loop: https://github.com/lossless-group/augment-it/blob/rebuild/turbo-rsbuild/context-v/loops/Adopt-Selector-In-One-Member.md

Activity

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