Skip to content

Commit 9e89e6e

Browse files
author
DavidQ
committed
Fix Object Vector Studio state counts shape ordering grouping and state shape behavior - PR_26133_050-object-state-shape-grouping-and-order-controls
1 parent 08492f2 commit 9e89e6e

6 files changed

Lines changed: 203 additions & 62 deletions

File tree

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# PR_26133_050 Object State Shape Behavior Report
2+
3+
Task: PR_26133_050-object-state-shape-grouping-and-order-controls
4+
Date: 2026-05-15
5+
6+
## Shape Membership
7+
8+
- Object shapes remain base object geometry: `objects[*].shapes[*]` is the canonical shape list for the object.
9+
- States own frame timelines: `objects[*].states[*].frames[*]` selects state-specific animation and visibility/transform overrides.
10+
- Frames reference base shapes by local `shapeIndex` through `shapeOverrides`.
11+
- Base shapes are not duplicated per state.
12+
13+
## Delete Behavior
14+
15+
- The shape tile delete button is an explicit base-shape delete.
16+
- Base-shape delete removes that shape from the object for every state, then cleans or remaps all frame `shapeOverrides` that referenced later shape indexes.
17+
- State/frame visibility changes do not delete the base shape.
18+
- When an active state/frame exists, the shape visibility eye writes `shapeOverrides[*].visible` for that selected frame.
19+
- When no active state/frame exists, visibility falls back to base shape `visible` because there is no state-specific frame to own the override.
20+
21+
## Group Behavior
22+
23+
- The schema/editor contract supports one `groupId` per shape.
24+
- This PR enforces one group per shape; grouping selected shapes assigns a new single `groupId`.
25+
- Selecting any member of a group selects every shape with the same `groupId`.
26+
- Grouped shape tiles render a group icon with a deterministic color derived from the group id.
27+
- Ungroup removes `groupId` from the selected shapes and immediately removes the tile group icons.
28+
29+
## Validation Evidence
30+
31+
- `npm run test:workspace-v2` passed with 51 tests.
32+
- Playwright verified grouped shape selection, group indicators, ungroup behavior, state/frame visibility override behavior, and base-shape delete cleanup.

docs/dev/reports/playwright_v8_coverage_report.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
# PR_26133_049 Playwright V8 Coverage Report
1+
# PR_26133_050 Playwright V8 Coverage Report
22

3-
Task: PR_26133_049-state-selector-and-object-shape-action-placement
3+
Task: PR_26133_050-object-state-shape-grouping-and-order-controls
44
Date: 2026-05-15
55

66
## Result
@@ -25,7 +25,7 @@ PASS - Coverage reporting was generated during `npm run test:workspace-v2`.
2525

2626
```text
2727
(83%) tools/object-vector-studio-v2/js/bootstrap.js - executed lines 105/105; executed functions 5/6
28-
(95%) tools/object-vector-studio-v2/js/ToolStarterApp.js - executed lines 5014/5014; executed functions 518/548
28+
(94%) tools/object-vector-studio-v2/js/ToolStarterApp.js - executed lines 5070/5070; executed functions 532/563
2929
```
3030

3131
## Guardrail
@@ -36,4 +36,4 @@ PASS - Coverage reporting was generated during `npm run test:workspace-v2`.
3636

3737
## PR-Specific Note
3838

39-
The Workspace V2 run exercised Object Vector Studio V2 state selection from object tiles, selected-state frame timelines, selected-shape action placement, palette Width layout, Object Vector schema validation, and Asteroids runtime object-vector rendering.
39+
The Workspace V2 run exercised Object Vector Studio V2 object header counts, state help text, shape grouping selection, group indicators, z-order controls, state/frame visibility overrides, base shape deletion cleanup, Object Vector schema validation, and Asteroids runtime object-vector rendering.
Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
# PR_26133_049 Workspace V2 Playwright Results
1+
# PR_26133_050 Workspace V2 Playwright Results
22

3-
Task: PR_26133_049-state-selector-and-object-shape-action-placement
3+
Task: PR_26133_050-object-state-shape-grouping-and-order-controls
44
Date: 2026-05-15
55

66
## Result
@@ -14,12 +14,15 @@ PASS - `npm run test:workspace-v2` completed successfully.
1414

1515
## PR-Specific Coverage
1616

17-
- Verified state dropdown/help controls render under the selected object tile, not inside frame tiles.
18-
- Verified state tiles select the current object state while frames remain scoped to the selected state timeline.
19-
- Verified selected shape move/order/group controls render as icon-only buttons under `object-vector-studio-v2__object-tile-shapes`.
20-
- Verified moved shape actions still update z-order and grouping behavior.
21-
- Verified Palette Width input has enough visible width for `xx.x` values while Paint, Stroke, and Width remain on one line.
17+
- Verified Objects header includes object count, selected object state count, and selected object shape count.
18+
- Verified state `?` help lists the descriptions for every state available in the dropdown.
19+
- Verified selected shape order controls use the restored z-order glyphs and perform forward/back/front/back order changes.
20+
- Verified grouped shapes select together, render group indicators, use a deterministic group color, and ungroup cleanly.
21+
- Verified state/frame visibility toggles write frame overrides without deleting the base object shape.
22+
- Verified explicit shape delete remains a base-shape delete and cleans dependent frame override indexes.
2223

2324
## Additional Validation
2425

26+
- Focused Object Vector slices passed before the full run:
27+
`shows Object Vector Studio V2 layout shell`, `edits Object Vector Studio V2 preview shapes`, and `supports Object Vector Studio V2 animation states`.
2528
- `git diff --check` passed.

0 commit comments

Comments
 (0)