|
| 1 | +# Requirement Checklist |
| 2 | + |
| 3 | +## Object Source |
| 4 | +- PASS: Hitboxes loads source Objects through the Local API/service contract. |
| 5 | +- PASS: Objects with assigned sprite/vector/asset metadata are preferred. |
| 6 | +- PASS: DEV review/test sample Objects are served through the server/API contract when no eligible Objects exist. |
| 7 | +- PASS: DEV sample Objects are clearly labeled as DEV review/test data. |
| 8 | +- PASS: No browser-local product data is used as source of truth. |
| 9 | +- PASS: Authoritative object data is not stored in browser storage. |
| 10 | + |
| 11 | +## Visual Preview |
| 12 | +- PASS: Selected Objects show assigned visual metadata when available. |
| 13 | +- PASS: DEV-safe placeholders are tied to object records when asset rendering is unavailable. |
| 14 | +- PASS: Object bounding boxes are drawn. |
| 15 | +- PASS: Object origin markers are drawn. |
| 16 | + |
| 17 | +## Layout |
| 18 | +- PASS: Left panel includes Object A selector, Object B selector, hitbox list, Add Rectangle, Delete, and filters. |
| 19 | +- PASS: Center panel includes a large visual editor canvas with Object A/Object B visuals, bounding boxes, origins, overlays, and motion path. |
| 20 | +- PASS: Right panel includes selected object metadata, hitbox properties, collision controls, and motion/speed controls. |
| 21 | +- PASS: Bottom status includes Object A, Object B, selected hitbox, collision result, and save status. |
| 22 | + |
| 23 | +## Hitbox Editing |
| 24 | +- PASS: Add Rectangle creates a visible Object A hitbox. |
| 25 | +- PASS: Creator can select a hitbox. |
| 26 | +- PASS: Creator can drag/move a hitbox. |
| 27 | +- PASS: Creator can resize a hitbox. |
| 28 | +- PASS: Property fields update from drag/resize. |
| 29 | +- PASS: Property field edits update the overlay. |
| 30 | +- PASS: Delete hitbox is supported. |
| 31 | +- PASS: Enable/disable and visible/hidden toggles are supported. |
| 32 | + |
| 33 | +## Persistence |
| 34 | +- PASS: Hitboxes save through the Local API/service contract. |
| 35 | +- PASS: Server/API owns persisted hitbox keys. |
| 36 | +- PASS: Created hitbox records receive ULID keys. |
| 37 | +- PASS: Guest save redirects to `account/sign-in.html`. |
| 38 | +- PASS: No silent fallback saves are implemented. |
| 39 | +- PASS: Browser storage is not used as product-data source of truth. |
| 40 | + |
| 41 | +## Collision Preview |
| 42 | +- PASS: Object A and Object B are visible in the editor. |
| 43 | +- PASS: Static states include separated, touching, and overlapping. |
| 44 | +- PASS: Static collision classification is implemented in the shared engine collision module. |
| 45 | +- PASS: Page JS does not duplicate the shared collision classification. |
| 46 | + |
| 47 | +## Motion/Speed Preview |
| 48 | +- PASS: Motion controls include Object A start x/y, velocity x/y, speed, Object B x/y, frame rate, step count, Run Preview, Step Frame, and Reset. |
| 49 | +- PASS: Preview shows path, frame positions, impact frame/time, before/after position, and result message. |
| 50 | +- PASS: Fast ball/paddle swept collision regression is covered by the shared engine unit test. |
| 51 | +- PASS: Page JS calls shared swept AABB logic instead of duplicating collision math. |
| 52 | + |
| 53 | +## Theme/HTML Rules |
| 54 | +- PASS: Theme V2 is used. |
| 55 | +- PASS: JavaScript is external. |
| 56 | +- PASS: CSS is external/existing Theme V2 only. |
| 57 | +- PASS: No inline styles, style blocks, script blocks, or inline event handlers were found. |
| 58 | + |
| 59 | +## Scope Guard |
| 60 | +- PASS: No unrelated tools were modified. |
| 61 | +- PASS: No `start_of_day` folders were modified. |
| 62 | +- PASS: No repo-wide refactors were added. |
| 63 | + |
| 64 | +## Validation |
| 65 | +- PASS: Targeted Playwright tests were added/updated for toolbox navigation, object source loading, DEV samples, visual preview, rectangle creation, move, resize, save, static collision, swept speed regression, and guest redirect. |
| 66 | +- PASS: Unit tests were updated for shared collision logic. |
| 67 | +- BLOCKED: Playwright execution is environment-blocked because Chromium is not installed and `npx playwright install chromium` timed out. |
0 commit comments