You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Folder detail: open the setup dialog and detail through the kit dialog layer #81
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.
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.
Activity
elementalvoid commentedon Oct 31, 2026
Landed in
mainat35691b2, merged fromintegration/kit-surface(CI green at43223e2). 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.
enter → Confirmand dispatch returns before the focused control sees the key, so Enter did nothing on about twelve controls while Space worked.escape → Cancelleaves a single binding and one handler, with four tests covering Escape as the first key and Shift-Tab from both ends.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.