|
| 1 | +# PR_26163_051-user-controls-profile-and-layout-alignment |
| 2 | + |
| 3 | +## Branch Validation |
| 4 | + |
| 5 | +- PASS: Current branch is `main`. |
| 6 | +- Expected branch: `main`. |
| 7 | + |
| 8 | +## Impacted Lane |
| 9 | + |
| 10 | +- Account/User Controls runtime lane. |
| 11 | +- Toolbox Controls launch/render lane. |
| 12 | +- Theme V2 account side-nav/layout lane. |
| 13 | +- Workspace contract lane through legacy command `npm run test:workspace-v2`. |
| 14 | + |
| 15 | +## Requirement Checklist |
| 16 | + |
| 17 | +- PASS: Read `docs_build/dev/PROJECT_INSTRUCTIONS.md` before changes. |
| 18 | +- PASS: Verified current branch is `main` before changes. |
| 19 | +- PASS: `Create my profile` creates a brand-new profile and opens that new profile in edit mode. |
| 20 | + - Evidence: Playwright creates `Keyboard Profile`, verifies the edit row opens immediately, saves it, then creates `Keyboard 2 Profile` and verifies the controller name input is `Keyboard 2`. |
| 21 | +- PASS: `Create my profile` does not open an existing profile. |
| 22 | + - Evidence: Playwright verifies the first saved Keyboard row returns, then the second Create action opens the new `Keyboard 2` profile instead of the existing `Keyboard Profile`. |
| 23 | +- PASS: Selected Device is simplified and no longer lists duplicated raw devices plus saved profiles. |
| 24 | + - Evidence: Playwright verifies saved `Keyboard`, `Mouse`, and gamepad profiles replace their raw device choices, while an unprofiled detected controller remains selectable. |
| 25 | +- PASS: `toolbox/controls` is aligned with the updated side accordion pattern where applicable. |
| 26 | + - Evidence: Toolbox Controls keeps its left/right accordion columns and now exposes `data-controls-side-accordion="left"` and `data-controls-side-accordion="right"`; Playwright verifies both render. |
| 27 | +- PASS: `assets/theme-v2/partials/account-side-nav.html` has left/right accordion structure. |
| 28 | + - Evidence: Account side nav now exposes `data-account-side-nav-accordion-layout="left-right"` plus independently toggled left and right `details.vertical-accordion` sections; Playwright verifies both open/close. |
| 29 | +- PASS: `account/user-controls.html` Account/User Controls card and body use 100% available space. |
| 30 | + - Evidence: Reusable Theme V2 fill classes are applied and verified by Playwright on `.account-panel--fill`, `.card--fill`, and `.card-body--fill`. |
| 31 | +- PASS: Scope remained limited to account controls, toolbox controls alignment, Theme V2 partial/layout files, tests, and reports. |
| 32 | + |
| 33 | +## Changed Files |
| 34 | + |
| 35 | +- `account/user-controls-page.js` |
| 36 | +- `account/user-controls.html` |
| 37 | +- `assets/theme-v2/css/layout.css` |
| 38 | +- `assets/theme-v2/css/panels.css` |
| 39 | +- `assets/theme-v2/partials/account-side-nav.html` |
| 40 | +- `toolbox/controls/index.html` |
| 41 | +- `tests/playwright/tools/InputMappingV2Tool.spec.mjs` |
| 42 | +- `tests/playwright/account/AchievementsPage.spec.mjs` |
| 43 | +- `docs_build/dev/reports/playwright_v8_coverage_report.txt` |
| 44 | +- `docs_build/dev/reports/coverage_changed_js_guardrail.txt` |
| 45 | +- `docs_build/dev/reports/dependency_gating_report.md` |
| 46 | +- `docs_build/dev/reports/dependency_hydration_reuse_report.md` |
| 47 | +- `docs_build/dev/reports/execution_graph_reuse_report.md` |
| 48 | +- `docs_build/dev/reports/failure_fingerprint_report.md` |
| 49 | +- `docs_build/dev/reports/filesystem_scan_reduction_report.md` |
| 50 | +- `docs_build/dev/reports/incremental_validation_report.md` |
| 51 | +- `docs_build/dev/reports/lane_compilation_report.md` |
| 52 | +- `docs_build/dev/reports/lane_deduplication_report.md` |
| 53 | +- `docs_build/dev/reports/lane_input_validation_report.md` |
| 54 | +- `docs_build/dev/reports/lane_manifests/workspace-contract.json` |
| 55 | +- `docs_build/dev/reports/lane_runtime_optimization_report.md` |
| 56 | +- `docs_build/dev/reports/lane_snapshot_report.md` |
| 57 | +- `docs_build/dev/reports/lane_snapshots/workspace-contract.json` |
| 58 | +- `docs_build/dev/reports/lane_warm_start_report.md` |
| 59 | +- `docs_build/dev/reports/lane_warm_starts/workspace-contract.json` |
| 60 | +- `docs_build/dev/reports/monolith_trigger_removal_report.md` |
| 61 | +- `docs_build/dev/reports/persistent_lane_manifest_report.md` |
| 62 | +- `docs_build/dev/reports/playwright_discovery_ownership_report.md` |
| 63 | +- `docs_build/dev/reports/playwright_discovery_scope_report.md` |
| 64 | +- `docs_build/dev/reports/playwright_structure_audit.md` |
| 65 | +- `docs_build/dev/reports/retry_suppression_report.md` |
| 66 | +- `docs_build/dev/reports/slow_path_pruning_report.md` |
| 67 | +- `docs_build/dev/reports/static_validation_report.md` |
| 68 | +- `docs_build/dev/reports/targeted_file_manifest_report.md` |
| 69 | +- `docs_build/dev/reports/test_cleanup_performance_report.md` |
| 70 | +- `docs_build/dev/reports/test_cleanup_routing_report.md` |
| 71 | +- `docs_build/dev/reports/testing_lane_execution_report.md` |
| 72 | +- `docs_build/dev/reports/validation_cache_report.md` |
| 73 | +- `docs_build/dev/reports/zero_browser_preflight_report.md` |
| 74 | +- Required review artifacts are generated separately: |
| 75 | + - `docs_build/dev/reports/codex_review.diff` |
| 76 | + - `docs_build/dev/reports/codex_changed_files.txt` |
| 77 | + |
| 78 | +## Validation Performed |
| 79 | + |
| 80 | +- PASS: `node --check account/user-controls-page.js` |
| 81 | +- PASS: `node --check tests/playwright/tools/InputMappingV2Tool.spec.mjs` |
| 82 | +- PASS: `node --check tests/playwright/account/AchievementsPage.spec.mjs` |
| 83 | +- PASS: HTML restriction scan: |
| 84 | + - `rg --pcre2 -n "<script(?![^>]+src=)|<style|\son[a-z]+\s*=|style\s*=" account/user-controls.html toolbox/controls/index.html assets/theme-v2/partials/account-side-nav.html` |
| 85 | + - Result: no inline script/style/handler matches. |
| 86 | +- PASS: Targeted Playwright: |
| 87 | + - `npx playwright test tests/playwright/tools/InputMappingV2Tool.spec.mjs tests/playwright/account/AchievementsPage.spec.mjs` |
| 88 | + - Result: 9 passed. |
| 89 | +- PASS: Requested workspace command: |
| 90 | + - `npm run test:workspace-v2` |
| 91 | + - Result: 5 passed. |
| 92 | + - Note: command name is legacy; this routes the current workspace-contract validation lane. |
| 93 | + |
| 94 | +## Playwright Result |
| 95 | + |
| 96 | +- PASS: Targeted Controls/User Controls and shared Account side-nav coverage passed. |
| 97 | +- PASS: `npm run test:workspace-v2` passed. |
| 98 | + |
| 99 | +## Coverage |
| 100 | + |
| 101 | +- PASS: `docs_build/dev/reports/playwright_v8_coverage_report.txt` produced. |
| 102 | +- PASS: Changed runtime JS was exercised: |
| 103 | + - `(93%) account/user-controls-page.js` |
| 104 | + - `(94%) toolbox/controls/controls.js` |
| 105 | +- PASS: Coverage report states no low-coverage changed runtime JS warnings. |
| 106 | +- WARN: Changed Playwright spec files are not browser runtime JavaScript and are not collected as V8 runtime coverage; this is expected. |
| 107 | + |
| 108 | +## Skipped Lanes |
| 109 | + |
| 110 | +- SKIP: Full samples smoke test. |
| 111 | + - Reason: explicitly requested not to run full samples smoke; no sample JSON or sample runtime files changed. |
| 112 | +- SKIP: Engine input lane. |
| 113 | + - Reason: no `src/engine/input` implementation changed in this PR. |
| 114 | +- SKIP: Full repo Playwright suite. |
| 115 | + - Reason: targeted Account/User Controls, Toolbox Controls, shared account side-nav, and requested workspace-contract lane covered the affected surfaces. |
| 116 | + |
| 117 | +## Manual Validation Steps |
| 118 | + |
| 119 | +1. Open `/account/user-controls.html` as a user session. |
| 120 | +2. Click Keyboard `Create my profile`; verify the newly created profile opens in edit mode. |
| 121 | +3. Save it, then click Keyboard `Create my profile` again; verify the new edit row is `Keyboard 2`, not the existing Keyboard profile. |
| 122 | +4. Create Mouse and detected game controller profiles; verify Selected Device shows saved profile choices without duplicate raw device entries for those same devices. |
| 123 | +5. Open and close the Account side-nav left and right accordion sections. |
| 124 | +6. Open `/toolbox/controls/index.html`; verify Game Controls renders with left and right side accordions and expected default rows. |
| 125 | + |
| 126 | +## Samples Decision |
| 127 | + |
| 128 | +- SKIP: Full samples smoke test was intentionally not run because the PR does not touch samples and the user explicitly requested not to run it. |
0 commit comments