[ { "id": "T001", "featureIds": ["F001"], "description": "Type/schema: designer layout model contains only CSS-like properties (no constraint solver fields).", "implemented": true }, { "id": "T002", "featureIds": ["F002"], "description": "Unit: mapping from layout props to DOM styles produces expected inline styles/classes for containers and items.", "implemented": true }, { "id": "T003", "featureIds": ["F003"], "description": "Integration: flex column container lays out children vertically with expected spacing.", "implemented": true }, { "id": "T004", "featureIds": ["F003"], "description": "Integration: flex row container lays out children horizontally with expected spacing.", "implemented": true }, { "id": "T005", "featureIds": ["F004"], "description": "Integration: gap/padding/border settings change DOM box model as expected in the canvas.", "implemented": true }, { "id": "T006", "featureIds": ["F005"], "description": "Integration: justify-content/align-items settings impact child positioning as expected.", "implemented": true }, { "id": "T007", "featureIds": ["F006"], "description": "Integration: width/height/min/max settings apply as CSS constraints without runtime geometry math.", "implemented": true }, { "id": "T008", "featureIds": ["F007"], "description": "Integration: flex grow/shrink/basis settings affect layout as expected for sibling items.", "implemented": true }, { "id": "T009", "featureIds": ["F008"], "description": "Integration: grid container renders children using CSS grid template columns/rows and gap.", "implemented": true }, { "id": "T010", "featureIds": ["F009"], "description": "Unit: collision detection uses pointerWithin-first with closestCenter fallback and yields consistent 'over' targets for simple container setups.", "implemented": true }, { "id": "T011", "featureIds": ["F010"], "description": "E2E: drag to reorder within the same container updates node order deterministically.", "implemented": true }, { "id": "T012", "featureIds": ["F011"], "description": "E2E: drag a node from container A to container B inserts at expected index.", "implemented": true }, { "id": "T013", "featureIds": ["F012"], "description": "E2E: nesting a node into an eligible container succeeds; nesting into an ineligible container is rejected.", "implemented": true }, { "id": "T014", "featureIds": ["F013"], "description": "E2E: drop indicator shows before/after insertion cues based on cursor position.", "implemented": true }, { "id": "T015", "featureIds": ["F014"], "description": "E2E: invalid drop shows blocked indicator and does not mutate designer state.", "implemented": true }, { "id": "T016", "featureIds": ["F015"], "description": "Integration: image nodes with aspect ratio render with correct box ratio via CSS aspect-ratio.", "implemented": true }, { "id": "T017", "featureIds": ["F016"], "description": "E2E: resizing an image node updates pixel sizing props and DOM layout changes accordingly.", "implemented": true }, { "id": "T017A", "featureIds": ["F016"], "description": "E2E: resizing a section/stack container updates pixel sizing props and DOM layout changes accordingly.", "implemented": true }, { "id": "T017B", "featureIds": ["F016A"], "description": "Integration: property-panel can set width/height as CSS strings (%, rem, auto) and the canvas reflects the change.", "implemented": true }, { "id": "T017C", "featureIds": ["F016A"], "description": "Unit: drag-resize always writes pixel values (px) even when the property panel was last set to non-px sizing.", "implemented": true }, { "id": "T017D", "featureIds": ["F016B"], "description": "E2E: edge snapping chooses before/after insertion index consistently near sibling boundaries in flex containers.", "implemented": true }, { "id": "T017E", "featureIds": ["F016B"], "description": "E2E: grid snapping aligns drop indicator/insertion to deterministic cell/index when parent is grid.", "implemented": true }, { "id": "T017F", "featureIds": ["F016C"], "description": "Unit: drag-drop state updates persist only container + insertion index; no coordinate fields are written.", "implemented": true }, { "id": "T018", "featureIds": ["F017"], "description": "Repo: no imports/references remain to deleted geometry utilities after removal.", "implemented": true }, { "id": "T019", "featureIds": ["F018"], "description": "Unit: utils/layout.ts contains no coordinate math helpers (assert via snapshot/grep-based test).", "implemented": true }, { "id": "T020", "featureIds": ["F019"], "description": "Integration: exporting workspace snapshot includes layout props and re-import preserves them.", "implemented": true }, { "id": "T021", "featureIds": ["F020"], "description": "Integration: preview output matches renderer semantics for layout-related properties (spacing/alignment/aspect ratio).", "implemented": true } ]