Skip to content

Commit 1665900

Browse files
author
DavidQ
committed
Define Object Vector Studio V2 requirements and correct V2 naming - PR_26132_002-object-vector-studio-v2-requirements
1 parent 7621082 commit 1665900

21 files changed

Lines changed: 204 additions & 51 deletions

docs/pr/PR_26132_001-add-world-object-vector-studios.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
## Purpose
44

5-
Add World Vector Studio and Object Vector Studio as copied First-Class Tool V2 starter surfaces while keeping Primitive Skin Editor and Vector Map Editor intact.
5+
Add World Vector Studio V2 and Object Vector Studio V2 as copied First-Class Tool V2 starter surfaces while keeping Primitive Skin Editor and Vector Map Editor intact.
66

77
## Changes
88

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# PR_26132_002-object-vector-studio-v2-requirements
2+
3+
## Purpose
4+
5+
Document Object Vector Studio V2 requirements before runtime implementation and normalize user-facing studio names to `Object Vector Studio V2` and `World Vector Studio V2`.
6+
7+
## Changes
8+
9+
- Updated user-facing labels for the new studios to include `V2`.
10+
- Added Object Vector Studio V2 requirements/design documentation at `tools/object-vector-studio-v2/docs/OBJECT_VECTOR_STUDIO_V2_REQUIREMENTS.md`.
11+
- Documented schema-only session loading, launched-with-parameters file reads, required palette behavior, responsive hide-header layout, accordion space sharing, scrollable controls, selected item visibility, object tiles, column responsibilities, workspace nav, and tool nav.
12+
- Kept Primitive Skin Editor and Vector Map Editor available and only updated their deprecation text to point to the V2 studio names.
13+
14+
## Playwright Impact
15+
16+
Playwright impacted: No.
17+
18+
No Playwright impact. This PR is requirements/docs and user-facing naming only.
19+
20+
## Validation
21+
22+
- Playwright was not run because this PR does not implement runtime behavior.
23+
- Full samples smoke test was not run per BUILD scope; this is requirements/docs only.
24+
25+
## Manual Validation
26+
27+
1. Open `tools/object-vector-studio-v2/docs/OBJECT_VECTOR_STUDIO_V2_REQUIREMENTS.md`.
28+
2. Confirm it covers schema-only session loading, launched-with-parameters file read, required palette, responsive hide-header layout, accordion behavior, scrollable controls, selected item visibility, left/right column responsibilities, object tiles, workspace nav, and tool nav.
29+
3. Open the tool index after the previous PR is applied and confirm the user-facing names read `Object Vector Studio V2` and `World Vector Studio V2`.
30+
31+
Expected outcome: documentation is present and no runtime behavior is added in this PR.

tests/playwright/tools/WorkspaceManagerV2.spec.mjs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -982,13 +982,13 @@ test.describe("Workspace Manager V2 bootstrap", () => {
982982
await expect(textToSpeechToolCard).toBeVisible();
983983
await expect(textToSpeechToolCard.locator("a", { hasText: "Text to Speech V2" })).toHaveAttribute("href", "/tools/text2speech-V2/index.html");
984984
await expect(textToSpeechToolCard).toContainText("First-Class Tool V2 for browser speech synthesis");
985-
const worldVectorStudioCard = page.locator(".tools-platform-card", { has: page.locator("h3", { hasText: "World Vector Studio" }) });
985+
const worldVectorStudioCard = page.locator(".tools-platform-card", { has: page.locator("h3", { hasText: "World Vector Studio V2" }) });
986986
await expect(worldVectorStudioCard).toBeVisible();
987-
await expect(worldVectorStudioCard.locator("a", { hasText: "World Vector Studio" })).toHaveAttribute("href", "/tools/world-vector-studio-v2/index.html");
987+
await expect(worldVectorStudioCard.locator("a", { hasText: "World Vector Studio V2" })).toHaveAttribute("href", "/tools/world-vector-studio-v2/index.html");
988988
await expect(worldVectorStudioCard).toContainText("Terrain, tile/world geometry, layered scenes, level/environment layout, and parallax/background structures");
989-
const objectVectorStudioCard = page.locator(".tools-platform-card", { has: page.locator("h3", { hasText: "Object Vector Studio" }) });
989+
const objectVectorStudioCard = page.locator(".tools-platform-card", { has: page.locator("h3", { hasText: "Object Vector Studio V2" }) });
990990
await expect(objectVectorStudioCard).toBeVisible();
991-
await expect(objectVectorStudioCard.locator("a", { hasText: "Object Vector Studio" })).toHaveAttribute("href", "/tools/object-vector-studio-v2/index.html");
991+
await expect(objectVectorStudioCard.locator("a", { hasText: "Object Vector Studio V2" })).toHaveAttribute("href", "/tools/object-vector-studio-v2/index.html");
992992
await expect(objectVectorStudioCard).toContainText("Ships, enemies, pickups, actors, and reusable gameplay entities");
993993
const vectorMapEditorCard = page.locator(".tools-platform-card", { has: page.locator("h3", { hasText: "Vector Map Editor" }) });
994994
await expect(vectorMapEditorCard).toContainText("Deprecated");
@@ -1060,7 +1060,7 @@ test.describe("Workspace Manager V2 bootstrap", () => {
10601060
expect(toolsIndexState.workflowCards).toEqual(["Workspace Manager V2"]);
10611061
expect(toolsIndexState.utilitiesCards).not.toContain("Workspace Manager V2");
10621062
expect(toolsIndexState.utilitiesCards).toContain("Text to Speech V2");
1063-
expect(toolsIndexState.allCards).toEqual(expect.arrayContaining(["World Vector Studio", "Object Vector Studio"]));
1063+
expect(toolsIndexState.allCards).toEqual(expect.arrayContaining(["World Vector Studio V2", "Object Vector Studio V2"]));
10641064
expect(toolsIndexState.registryIds).toEqual(expect.arrayContaining(["world-vector-studio-v2", "object-vector-studio-v2"]));
10651065
expect(toolsIndexState.launchIds).toEqual(expect.arrayContaining(["tool.world-vector-studio-v2", "tool.object-vector-studio-v2"]));
10661066
expect(toolsIndexState.studioLaunchDefinitions.world.launchDefinition.targetPath).toBe("/tools/world-vector-studio-v2/index.html");
@@ -1112,7 +1112,7 @@ test.describe("Workspace Manager V2 bootstrap", () => {
11121112
}
11131113
});
11141114

1115-
test("launches World Vector Studio and Object Vector Studio copied tool shells", async ({ page }) => {
1115+
test("launches World Vector Studio V2 and Object Vector Studio V2 copied tool shells", async ({ page }) => {
11161116
const server = await startRepoServer();
11171117
const pageErrors = [];
11181118

@@ -1126,13 +1126,13 @@ test.describe("Workspace Manager V2 bootstrap", () => {
11261126
{
11271127
description: "Terrain, tile/world geometry, layered scenes, level/environment layout, and parallax/background structures",
11281128
id: "world-vector-studio-v2",
1129-
name: "World Vector Studio",
1129+
name: "World Vector Studio V2",
11301130
path: "world-vector-studio-v2"
11311131
},
11321132
{
11331133
description: "Ships, enemies, pickups, actors, and reusable gameplay entities",
11341134
id: "object-vector-studio-v2",
1135-
name: "Object Vector Studio",
1135+
name: "Object Vector Studio V2",
11361136
path: "object-vector-studio-v2"
11371137
}
11381138
]) {

tools/Skin Editor/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Skin Editor
22

3-
Deprecated: use Object Vector Studio for ships, enemies, pickups, actors, and reusable gameplay entities. Primitive Skin Editor remains available for existing workflows and has not been renamed or deleted.
3+
Deprecated: use Object Vector Studio V2 for ships, enemies, pickups, actors, and reusable gameplay entities. Primitive Skin Editor remains available for existing workflows and has not been renamed or deleted.
44

55
Skin Editor is a visual-plus-JSON skin workflow tool for:
66

tools/Skin Editor/how_to_use.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
<main class="wrap">
1414
<section class="hero">
1515
<h1>Skin Editor: How To Use</h1>
16-
<p class="subtitle">Deprecated: use Object Vector Studio for ships, enemies, pickups, actors, and reusable gameplay entities.</p>
16+
<p class="subtitle">Deprecated: use Object Vector Studio V2 for ships, enemies, pickups, actors, and reusable gameplay entities.</p>
1717
</section>
1818

1919
<section class="section">

tools/Vector Map Editor/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ README.md
55

66
# Vector Map Editor
77

8-
Deprecated: use World Vector Studio for terrain, tile/world geometry, layered scenes, level/environment layout, and parallax/background structures. Vector Map Editor remains available for existing workflows and has not been renamed or deleted.
8+
Deprecated: use World Vector Studio V2 for terrain, tile/world geometry, layered scenes, level/environment layout, and parallax/background structures. Vector Map Editor remains available for existing workflows and has not been renamed or deleted.
99

1010
High-level overview for 'Vector Map Editor' under 'tools/Vector Map Editor/'.
1111

tools/Vector Map Editor/how_to_use.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
<main class="wrap">
1414
<section class="hero">
1515
<h1>Vector Map Editor: How To Use</h1>
16-
<p class="subtitle">Deprecated: use World Vector Studio for terrain, tile/world geometry, layered scenes, level/environment layout, and parallax/background structures.</p>
16+
<p class="subtitle">Deprecated: use World Vector Studio V2 for terrain, tile/world geometry, layered scenes, level/environment layout, and parallax/background structures.</p>
1717
</section>
1818

1919
<section class="section">

tools/object-vector-studio-v2/README.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
# Object Vector Studio
1+
# Object Vector Studio V2
22

3-
Object Vector Studio is a First-Class Tool V2 surface for ships, enemies, pickups, actors, and reusable gameplay entities.
3+
Object Vector Studio V2 is a First-Class Tool V2 surface for ships, enemies, pickups, actors, and reusable gameplay entities.
44

55
The tool folder was copied from `tools/templates-v2/` for `PR_26132_001-add-world-object-vector-studios`. It keeps the copied template CSS and modular control structure intact while giving the new studio its own first-class tool id: `object-vector-studio-v2`.
66

@@ -13,9 +13,10 @@ The tool folder was copied from `tools/templates-v2/` for `PR_26132_001-add-worl
1313

1414
## Runtime Notes
1515

16-
- The current implementation is the copied Tool Template V2 shell with Object Vector Studio naming and documentation.
16+
- The current implementation is the copied Tool Template V2 shell with Object Vector Studio V2 naming and documentation.
1717
- JavaScript and CSS remain external.
1818
- The copied `docs/CONTROL_SERVICE_CONTRACTS.md` and `docs/BATCH_GUARDRAIL_CONTRACT.md` remain the local implementation contracts.
19+
- `docs/OBJECT_VECTOR_STUDIO_V2_REQUIREMENTS.md` captures the future Object Vector Studio V2 requirements and design constraints.
1920
- Primitive Skin Editor and Vector Map Editor remain available, but their active tool tiles are marked deprecated in favor of the new studio split.
2021

2122
## Validation
Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
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.

tools/object-vector-studio-v2/how_to_use.html

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,24 @@
33
<head>
44
<meta charset="utf-8">
55
<meta name="viewport" content="width=device-width, initial-scale=1">
6-
<title>Object Vector Studio - How To Use</title>
6+
<title>Object Vector Studio V2 - How To Use</title>
77
<link rel="stylesheet" href="../../src/engine/theme/main.css">
88
<link rel="stylesheet" href="../../src/engine/ui/hubCommon.css">
99
</head>
1010
<body class="hub-page-tools" data-tools-platform-page="tool-doc">
1111
<div id="shared-theme-header"></div>
1212
<main class="wrap">
1313
<section class="hero">
14-
<h1>Object Vector Studio</h1>
14+
<h1>Object Vector Studio V2</h1>
1515
<p class="subtitle">Ships, enemies, pickups, actors, and reusable gameplay entities.</p>
1616
</section>
1717
<section class="card">
1818
<h2>Use This For</h2>
19-
<p>Use Object Vector Studio for reusable gameplay entity vectors: ships, enemies, pickups, hazards, actors, and other object-level vector assets.</p>
19+
<p>Use Object Vector Studio V2 for reusable gameplay entity vectors: ships, enemies, pickups, hazards, actors, and other object-level vector assets.</p>
2020
</section>
2121
<section class="card">
2222
<h2>Current State</h2>
23-
<p>This PR registers the copied First-Class Tool V2 starter shell as the Object Vector Studio lane. Primitive Skin Editor and Vector Map Editor remain available, but their launcher tiles are marked deprecated.</p>
23+
<p>This PR registers the copied First-Class Tool V2 starter shell as the Object Vector Studio V2 lane. Primitive Skin Editor and Vector Map Editor remain available, but their launcher tiles are marked deprecated.</p>
2424
</section>
2525
</main>
2626
<script type="module" src="../../src/engine/theme/mount-shared-header.js"></script>

0 commit comments

Comments
 (0)