|
| 1 | +# Object Vector Studio V2 Requirements |
| 2 | + |
| 3 | +This document defines the Object Vector Studio V2 requirements for a future implementation pass. It is design documentation only; `PR_26132_002-object-vector-studio-v2-requirements` does not implement runtime behavior. |
| 4 | + |
| 5 | +## Purpose |
| 6 | + |
| 7 | +Object Vector Studio V2 will author object-level vector entities such as ships, enemies, pickups, actors, hazards, projectiles, and reusable gameplay entities. It complements World Vector Studio V2, which owns terrain, world geometry, layered scenes, level/environment layout, and parallax/background structures. |
| 8 | + |
| 9 | +## Data Loading Contract |
| 10 | + |
| 11 | +- Session loading must be schema-only. |
| 12 | +- Every incoming toolState payload must validate against the Object Vector Studio V2 schema before render. |
| 13 | +- Invalid payloads must be rejected before render with visible, actionable status text. |
| 14 | +- Runtime UI state must not be accepted as persisted payload data unless the schema explicitly owns it. |
| 15 | +- No hidden defaults, silent fallback data, or partial rendering is allowed. |
| 16 | + |
| 17 | +## Launched-With-Parameters File Read |
| 18 | + |
| 19 | +- A launch with URL or workspace parameters may identify a source file to read. |
| 20 | +- The tool must resolve and log the exact source path before reading. |
| 21 | +- Missing or unreadable launched-with-parameters files must produce a visible actionable failure. |
| 22 | +- Successfully loaded files must report source path, payload type, validation result, and item counts. |
| 23 | +- Parameter-based file reads must still pass through schema validation before render. |
| 24 | + |
| 25 | +## Required Palette |
| 26 | + |
| 27 | +- Object Vector Studio V2 requires an active palette before object editing. |
| 28 | +- The palette source must be explicit and logged. |
| 29 | +- If no palette is available, the tool must show an actionable blocked state rather than creating default colors. |
| 30 | +- Object fills, strokes, and swatches must reference the active palette where applicable. |
| 31 | +- Palette changes must preserve selected object visibility and update palette-dependent controls without silently altering persisted object data. |
| 32 | + |
| 33 | +## Header And Responsive Layout |
| 34 | + |
| 35 | +- The tool must keep the copied First-Class Tool V2 header pattern. |
| 36 | +- Hide Header and Details must switch the page into the established fullscreen-style workspace mode. |
| 37 | +- In fullscreen-style mode, the left and right columns stay at the sides and the center work area fills the remaining horizontal space. |
| 38 | +- The center object preview/editor must not collapse when the header/details area is hidden. |
| 39 | +- The layout must remain usable at narrow widths by stacking or constraining columns without overlapping controls. |
| 40 | + |
| 41 | +## Accordion Space Sharing |
| 42 | + |
| 43 | +- Left and right column accordions must share available vertical space. |
| 44 | +- When one accordion is collapsed, remaining open accordions must redistribute the available space. |
| 45 | +- Collapsed accordions must collapse both content and container height in normal and fullscreen-style modes. |
| 46 | +- Accordion toggles must affect only their intended panel. |
| 47 | +- Header action buttons must not accidentally toggle the accordion. |
| 48 | + |
| 49 | +## Scrollable Control Content |
| 50 | + |
| 51 | +- Oversized control groups must scroll inside their own accordion content area. |
| 52 | +- Page-level scroll may exist only when the total content exceeds the viewport. |
| 53 | +- Object tiles, shape/tool controls, palette controls, JSON details, and status log panels must not push required panels offscreen. |
| 54 | +- Status log content must fill its available panel height and scroll internally when needed. |
| 55 | + |
| 56 | +## Selected Item Visibility |
| 57 | + |
| 58 | +- The selected object must remain visible in the object tile list and the center preview/editor when selection changes. |
| 59 | +- The active selection should be clearly marked in the tile list. |
| 60 | +- Object details and JSON details must reflect the same selected object. |
| 61 | +- If the selected object is deleted, selection must move to another existing object or clear to a valid empty selection state. |
| 62 | +- Empty-state messaging must be visible and actionable. |
| 63 | + |
| 64 | +## Left Column |
| 65 | + |
| 66 | +The left column owns user intent and setup controls. |
| 67 | + |
| 68 | +Required sections: |
| 69 | + |
| 70 | +- Object list and object management controls. |
| 71 | +- Shape and tool controls for creating/editing object primitives. |
| 72 | +- Mode controls for selection, move, scale, rotate, path/edit-point work, and grouping when implemented. |
| 73 | +- Add, duplicate, delete, reorder, and rename controls when supported by schema. |
| 74 | + |
| 75 | +Object controls must mark dirty only when they change schema-owned payload data. |
| 76 | + |
| 77 | +## Object Tiles |
| 78 | + |
| 79 | +- Object tiles must show object name, type/category, and selected state. |
| 80 | +- Tiles must support keyboard and pointer selection. |
| 81 | +- Tiles must remain stable in height so label changes do not cause layout jumps. |
| 82 | +- Tiles must expose enough metadata to distinguish ships, enemies, pickups, actors, and reusable gameplay entities. |
| 83 | +- Tiles should avoid rendering raw JSON as the primary visual label. |
| 84 | + |
| 85 | +## Right Column |
| 86 | + |
| 87 | +The right column owns output, diagnostics, and inspection. |
| 88 | + |
| 89 | +Required sections: |
| 90 | + |
| 91 | +- Palette: active palette source, swatches, and selected color context. |
| 92 | +- Object Details: selected object fields and shape-specific editable properties. |
| 93 | +- JSON Details: schema-valid payload or selected-object JSON preview. |
| 94 | +- Status Log: OK, WARN, FAIL, SKIP, and INFO messages with exact source/action context. |
| 95 | + |
| 96 | +Right-column content must remain scrollable and must not hide the status log. |
| 97 | + |
| 98 | +## Workspace Nav |
| 99 | + |
| 100 | +- Workspace launch must use the established workspace nav pattern. |
| 101 | +- Return to Workspace must preserve the active workspace/toolState context. |
| 102 | +- Return navigation must not mark dirty. |
| 103 | +- Workspace launch must log source binding, host context id, schema validation result, and payload counts. |
| 104 | +- Save-capable behavior belongs to the Workspace Manager V2 lifecycle and must not be silently assumed inside this tool. |
| 105 | + |
| 106 | +## Tool Nav |
| 107 | + |
| 108 | +- Standalone launch must use the established tool nav pattern. |
| 109 | +- Tool nav actions should include import/copy/export JSON only after the schema contract exists. |
| 110 | +- Import must validate before render. |
| 111 | +- Copy and export must emit only schema-owned payload data, not runtime-only UI state. |
| 112 | +- Failed import/export actions must produce visible actionable status text. |
| 113 | + |
| 114 | +## Out Of Scope For This PR |
| 115 | + |
| 116 | +- Runtime editor implementation. |
| 117 | +- Object Vector Studio V2 schema creation. |
| 118 | +- Workspace Manager V2 payload write-back changes. |
| 119 | +- Palette Manager V2 integration code. |
| 120 | +- Playwright runtime behavior coverage. |
| 121 | +- Sample JSON alignment. |
0 commit comments