openclaw/ui
Val Alexander e5a5ea1072
fix(ui): make control prompts real modals
Introduce a native dialog-backed Control UI modal primitive and migrate the exec approval, gateway URL confirmation, and dreaming restart confirmation prompts to it.

The modal primitive provides aria-modal semantics, shadow-root-local labels/descriptions, focus trapping, safe initial focus, Escape cancellation, and focus restoration while preserving the existing prompt content and decision semantics.

Validation:
- pnpm lint --threads=8
- pnpm --dir ui test src/ui/components/modal-dialog.test.ts src/ui/views/exec-approval.test.ts src/ui/navigation.browser.test.ts
- pnpm test:ui
- pnpm exec oxfmt --check --threads=1 ui/src/ui/components/modal-dialog.ts ui/src/styles/config-quick.test.ts
- git diff --check

CI note: checks-node-core-support-boundary is failing in test/scripts/docker-build-helper.test.ts on an unrelated package-acceptance assertion; the failing files are identical to origin/main and outside this UI-only PR.
2026-04-29 05:46:50 -05:00
..
public feat: add Control UI PWA web push support (#44590) 2026-04-25 05:03:00 -05:00
src fix(ui): make control prompts real modals 2026-04-29 05:46:50 -05:00
AGENTS.md docs(agents): split scoped workflow guidance (#65241) 2026-04-12 09:09:50 +01:00
CLAUDE.md docs(agents): split scoped workflow guidance (#65241) 2026-04-12 09:09:50 +01:00
index.html feat: add Control UI PWA web push support (#44590) 2026-04-25 05:03:00 -05:00
package.json feat(ui): show raw config pending changes 2026-04-27 04:42:10 -05:00
vite.config.ts gateway: trim control UI bootstrap payload (#57727) 2026-03-30 15:08:19 +01:00
vitest.config.ts test: move Vitest configs under test 2026-04-10 13:44:51 +01:00
vitest.node.config.ts test: move Vitest configs under test 2026-04-10 13:44:51 +01:00