# WBV2-P1118-000: UI input interaction module - task: `WBV2-P1118-000` - parent: `WBV2-P1117-000` - status: `in_progress` - gap: `workflow:module_ui_input_interaction` - ownerFamily: `EDITOR` - targetImplementationClass: `LOCAL_BOUNDED` ## 目标 按功能模块验证 keyboard-only 用户操作、Main mutation/save/reopen、project action mutex、IME/pointer state 和部署 CSP 下的响应式 UI。 ## 输入与范围 - App/CSP CSS entry: `web/app/index.html`, `web/app/src/app/App.tsx`, `web/app/src/app/app-shell.css` - Worker: `web/app/src/workers/web-engine.worker.ts` - Protocol: `web/protocol/user-action-state.ts`, `web/protocol/project-action-mutex.ts`, `web/protocol/ime-composition.ts`, `web/protocol/input-modal.ts`, `web/protocol/pointer-contract.ts`, `web/protocol/worker-fault.ts` - Unit contracts: `web/tests/unit/user-action-state.test.mjs`, `web/tests/unit/project-action-mutex.test.mjs`, `web/tests/unit/ime-composition.test.mjs`, `web/tests/unit/input-modal.test.mjs`, `web/tests/unit/pointer-contract.test.mjs` ## 验收 ```bash node --test web/tests/unit/user-action-state.test.mjs web/tests/unit/project-action-mutex.test.mjs web/tests/unit/ime-composition.test.mjs web/tests/unit/input-modal.test.mjs web/tests/unit/pointer-contract.test.mjs npm --prefix web run test:e2e -- --workers=1 tests/e2e/user-action-state.spec.ts tests/e2e/project-action-mutex.spec.ts tests/e2e/keyboard-accessibility.spec.ts tests/e2e/responsive-layout.spec.ts npm --prefix web run typecheck ``` 必须记录 keyboard-only Add Cube/save/reopen/GLB export 正例、mutex/IME/pointer cancel 负例、worker/recovery、CSP-safe external CSS、desktop/mobile layout 和 Chromium。UI 交互切片不宣称完整编辑器 parity。 ## 交付与回滚 - Receipt: `tests/golden/WBV2-P1118-000/module-receipt.json` - Manifest: `tests/golden/WBV2-P1118-000/manifest.json` - Status: `docs/status/WBV2-P1118-000.md` - 回滚:恢复 P1117 manifest 为 queue parent。