Skip to content

Folder detail: open the setup dialog and detail through the kit dialog layer #81

Closed

Description

@elementalvoid

What to build

The folder setup dialog and the folder detail open through the window's dialog layer, the same way the Remove confirmation already does.

Today the Remove confirmation is already a kit alert dialog, but the panel it sits in still builds its own host: a full-window backdrop, an anchored layer, a manual focus trap, a manual Escape branch, its own viewport sizing, and bookkeeping that hands focus back to the card's Details anchor after it closes. Migrating the host deletes that machinery, so the panel gets the layer's entrance, overlay dismissal, focus trap, and focus return.

Acceptance criteria

  • The setup dialog and the folder detail both open through the window's dialog layer, and the hand-built backdrop, anchored host, manual focus trap, and Escape branch are gone.
  • Closing the panel returns focus to whatever opened it: the add field, Browse, or the card's Details control.
  • The panel keeps its two widths, its scrollable body, and its keyboard isolation. A click outside still dismisses; a click inside still does not, and a press inside does not reach the layer's dismiss.
  • Remove still opens its alert dialog over the panel, the panel body still dims behind it, and a refused removal still leaves the detail open with its reason.
  • Drag selection in the path block and the scroll-on-a-short-window behaviour are unchanged.
  • No test needs a test-side scroll to reach any control in the panel or its dialogs.
  • Both themes and the narrowest supported window still centre the panel on screen.

Notes

The remaining hand-built piece is the panel host in the folder panel module. The confirmation, its focus handling, and its tests were already moved to the alert dialog on the branch that closed the previous report; do not redo that, and start from a tree where it has landed.

Activity

  1. elementalvoid commented on Oct 31, 2026

    @elementalvoid
    OwnerAuthor

    Landed in main at 35691b2, merged from integration/kit-surface (CI green at 43223e2). Gate on the merged tree: cargo fmt --all -- --check, cargo clippy --workspace --all-targets -D warnings, cargo test --workspace — all clean.

    What the reviews changed. Three passes, all three finding real code defects. The layer replaced the panel's hand-built host — backdrop, anchored layer, manual focus trap, Escape branch and focus-return bookkeeping — at −64 lines net.

    • Pass one left Enter dead: the kit's dialog binds enter → Confirm and dispatch returns before the focused control sees the key, so Enter did nothing on about twelve controls while Space worked.
    • Pass two's remedy then swallowed Escape backwards: Shift-Tab reaches the layer host, where a context-scoped binding does not match. One unscoped escape → Cancel leaves a single binding and one handler, with four tests covering Escape as the first key and Shift-Tab from both ends.
    • The detail's actions moved to a non-scrolling footer, so Remove is on screen at 1200×800 and at 1200×480 with no wheel, and the tests' wheels are gone. The asset list kept its 5+ rows.

    Still manual. The real pointer-focus path (a synthetic press moves focus only on tracked elements, not kit buttons, which prevent_default), and real screen readers.

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

    accessibilityBarrier affecting people with disabilitiesenhancementNew feature or requestready-for-agentFully specified, ready for an AFK agent

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions