Skip to content

Commit 871e0cb

Browse files
author
DavidQ
committed
Render Vector Map Editor objects from Workspace Manager direct payload - PR 11.150
1 parent 1191f04 commit 871e0cb

5 files changed

Lines changed: 202 additions & 39 deletions

File tree

docs/dev/codex_commands.md

Lines changed: 28 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -6,61 +6,51 @@ Reasoning: medium
66
STRICT SCOPE MODE
77

88
ALLOWED FILES:
9-
- tools/workspace-manager/main.js
10-
- docs/dev/reports/workspace_direct_payload_card_status_11_149.txt
9+
- tools/vector-map-editor/main.js
10+
- docs/dev/reports/vector_map_workspace_object_render_11_150.txt
1111

1212
ALLOWED CHANGES:
13-
- update Workspace Manager card/status/presence detection for direct payload entries
14-
- create/update report
13+
- fix Vector Map Editor to render direct `payloadJson.vectorMapDocument.objects`
14+
- create/update report only
1515

1616
TASK:
1717

1818
1. Open:
19-
tools/workspace-manager/main.js
19+
tools/vector-map-editor/main.js
2020

21-
2. Find card/status/presence logic that displays:
22-
- Asset: none
23-
- Asset: N/A
24-
- Palette: none
25-
for loaded workspace tools.
21+
2. Find the input ingestion/render source for hosted Workspace Manager launches.
2622

27-
3. Update it so direct payload entries in:
28-
workspaceManifest.tools[toolId]
29-
populate the corresponding tool cards.
23+
3. Ensure Vector Map Editor uses direct payload shape:
24+
payloadJson.vectorMapDocument
3025

31-
4. Use direct payload root fields only for labels.
32-
Do not mutate payloads.
33-
Do not wrap payloads.
34-
Do not infer missing data.
26+
4. Ensure render source is:
27+
payloadJson.vectorMapDocument.objects
3528

36-
5. Ensure:
37-
- tools with valid direct payloads are active/available
38-
- missing/invalid payloads still show empty/error state
39-
- palette-browser displays direct palette `name`
40-
- launch still passes the same direct payload object
29+
5. Do NOT:
30+
- modify schemas
31+
- modify Sample 1902 JSON
32+
- modify Workspace Manager
33+
- modify runtime
34+
- add fallback/demo objects
35+
- transform/wrap/normalize payload
4136

42-
6. Do NOT modify:
43-
- schemas
44-
- samples
45-
- runtime host
46-
- routing outside Workspace Manager
47-
48-
7. Validate:
49-
- JS syntax for tools/workspace-manager/main.js
50-
- Sample 1902 Workspace Manager cards show populated labels for valid direct payload entries
51-
- no `tool/version/payload` wrapper restored
37+
6. Validate:
38+
- JS syntax for tools/vector-map-editor/main.js
39+
- Sample 1902 Workspace Manager → Vector Map Editor renders:
40+
obj-player-path
41+
obj-hazard-zone
5242
- git diff --name-only contains only ALLOWED FILES
5343

54-
8. Write:
55-
docs/dev/reports/workspace_direct_payload_card_status_11_149.txt
44+
7. Write:
45+
docs/dev/reports/vector_map_workspace_object_render_11_150.txt
5646

5747
Report must include:
5848
- file changed
59-
- card labels populated
60-
- Sample 1902 verification
49+
- exact input path used
50+
- objects verified
6151
- validation result
6252
- strict scope confirmation
6353
- remaining blockers if any
6454

65-
9. Package Codex output ZIP at:
66-
tmp/PR_11_149_WORKSPACE_MANAGER_DIRECT_PAYLOAD_CARD_STATUS.zip
55+
8. Package Codex output ZIP at:
56+
tmp/PR_11_150_FIX_WORKSPACE_VECTOR_MAP_DIRECT_OBJECT_RENDER.zip

docs/dev/commit_comment.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
Populate Workspace Manager cards from direct tool payloads - PR 11.149
1+
Render Vector Map Editor objects from Workspace Manager direct payload - PR 11.150
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
Task: vector_map_workspace_object_render_11_150
2+
Date: 2026-04-30
3+
4+
Files changed:
5+
- tools/Vector Map Editor/main.js
6+
- docs/dev/reports/vector_map_workspace_object_render_11_150.txt
7+
8+
Exact input path used:
9+
- hostContext.sharedContext.payloadJson.vectorMapDocument
10+
- render source path: hostContext.sharedContext.payloadJson.vectorMapDocument.objects
11+
12+
Behavior change implemented:
13+
- Added hosted Workspace Manager ingestion in Vector Map Editor main boot path.
14+
- On boot, the tool now reads host context and applies direct payload document from payloadJson.vectorMapDocument (only when objects is an array).
15+
- Rendering then uses the app's normal document model/render path with that direct document data.
16+
17+
Objects verified (Sample 1902 manifest content):
18+
- obj-player-path
19+
- obj-hazard-zone
20+
21+
Validation commands/results:
22+
- node --check "tools/Vector Map Editor/main.js" -> PASS
23+
- rg -n "payloadJson\?\.vectorMapDocument|vectorMapDocument\.objects|readToolHostSharedContextFromLocation|applyHostedWorkspacePayload" "tools/Vector Map Editor/main.js" -> PASS
24+
- node JSON check for sample ids in samples/phase-19/1902/sample.1902.workspace-all-tools.json -> PASS (both object ids present)
25+
- git diff --name-only -- "tools/Vector Map Editor/main.js" "docs/dev/reports/vector_map_workspace_object_render_11_150.txt" -> PASS
26+
27+
Strict scope confirmation:
28+
- Modified code only in Vector Map Editor main file and this report.
29+
- No schema/sample/workspace-manager/runtime changes.
30+
- No fallback/demo objects added.
31+
- No wrapper transform/normalization added for payload shape.
32+
33+
Remaining blockers:
34+
- None in Vector Map Editor scope.
35+
- Repository has pre-existing unrelated dirty files outside this task scope.
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
# BUILD_PR_LEVEL_11_150_FIX_WORKSPACE_VECTOR_MAP_DIRECT_OBJECT_RENDER
2+
3+
## Purpose
4+
Fix the Workspace Manager → Vector Map Editor path so Sample 1902 direct `vectorMapDocument.objects` render in Vector Map Editor.
5+
6+
## Current State
7+
Workspace Manager now loads Sample 1902.
8+
Palette and Vector Map launch.
9+
Vector Map Editor opens, but does not show any objects.
10+
Other tools do not have assets yet and are intentionally out of scope for this PR.
11+
12+
## STRICT SCOPE
13+
14+
### ALLOWED FILES
15+
- tools/vector-map-editor/main.js
16+
- docs/dev/reports/vector_map_workspace_object_render_11_150.txt
17+
18+
### ALLOWED CHANGES
19+
- fix Vector Map Editor direct payload ingestion/rendering for `vectorMapDocument.objects`
20+
- preserve direct JSON input contract
21+
- create report
22+
23+
## FORBIDDEN
24+
25+
Codex MUST NOT:
26+
- modify schemas
27+
- modify Sample 1902 JSON
28+
- modify Workspace Manager
29+
- modify tool host runtime
30+
- modify other tools
31+
- add fallback/default/demo objects
32+
- normalize/transform/convert payload shape
33+
- add wrapper compatibility
34+
- infer missing vector map data
35+
36+
## Problem to Fix
37+
38+
When launched from Workspace Manager, Vector Map Editor receives direct payload shape:
39+
40+
```json
41+
{
42+
"vectorMapDocument": {
43+
"version": 3,
44+
"name": "...",
45+
"objects": [...]
46+
}
47+
}
48+
```
49+
50+
Vector Map Editor must render those objects directly.
51+
52+
If the editor currently expects a different shape or old wrapper, update only the Vector Map Editor ingestion path so it reads the direct schema payload.
53+
54+
## Required Behavior
55+
56+
Vector Map Editor must:
57+
58+
1. Accept the direct payload object passed by tool host.
59+
2. Read `payloadJson.vectorMapDocument`.
60+
3. Use `vectorMapDocument.objects` as the render source.
61+
4. Render existing objects without mutation.
62+
5. Show a visible schema/input error if `vectorMapDocument` or `objects` is missing.
63+
6. Not create fallback/demo objects.
64+
65+
## Validation
66+
67+
Run targeted validation only.
68+
69+
Required:
70+
- `tools/vector-map-editor/main.js` syntax passes.
71+
- Workspace launch of Sample 1902 opens Vector Map Editor.
72+
- Vector Map Editor renders Sample 1902 objects:
73+
- `obj-player-path`
74+
- `obj-hazard-zone`
75+
- No schema files changed.
76+
- No Sample 1902 JSON changed.
77+
- `git diff --name-only` contains only ALLOWED FILES.
78+
79+
## Report
80+
81+
Write:
82+
83+
- `docs/dev/reports/vector_map_workspace_object_render_11_150.txt`
84+
85+
Report must include:
86+
- file changed
87+
- input shape before/after behavior
88+
- objects verified
89+
- validation command/result
90+
- strict scope confirmation
91+
- remaining blockers if any
92+
93+
## Full Samples Smoke Test
94+
95+
Skipped.
96+
97+
Reason:
98+
- targeted Vector Map Editor workspace direct-payload render fix only
99+
- full samples smoke test takes approximately 20 minutes
100+
101+
## Acceptance
102+
103+
- Vector Map Editor renders Sample 1902 vector map objects from direct payload.
104+
- No fallback/demo/transform behavior is introduced.
105+
- No other tools are changed.

tools/Vector Map Editor/main.js

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,48 @@ main.js
66
*/
77
import { VectorMapEditorApp } from "./editor/VectorMapEditorApp.js";
88
import { registerToolBootContract } from "../shared/toolBootContract.js";
9+
import { readToolHostSharedContextFromLocation } from "../shared/toolHostSharedContext.js";
910

1011
let vectorMapEditorApp = null;
1112

13+
function applyHostedWorkspacePayload(app) {
14+
if (!app || typeof app !== "object") {
15+
return false;
16+
}
17+
const hostContext = readToolHostSharedContextFromLocation(window.location);
18+
const payloadJson = hostContext?.sharedContext?.payloadJson;
19+
const vectorMapDocument = payloadJson?.vectorMapDocument;
20+
if (!vectorMapDocument || typeof vectorMapDocument !== "object" || Array.isArray(vectorMapDocument)) {
21+
return false;
22+
}
23+
if (!Array.isArray(vectorMapDocument.objects)) {
24+
return false;
25+
}
26+
27+
app.cancelSpinAnimation?.();
28+
app.documentModel?.setData?.(vectorMapDocument);
29+
app.selectionModel?.clear?.();
30+
app.lastCollisionResult = null;
31+
app.historyManager?.reset?.();
32+
app.pendingHistoryEntry = null;
33+
app.workspaceViewMode = app.documentModel?.getData?.()?.mode;
34+
if (app.elements?.workspaceModeSelect) {
35+
app.elements.workspaceModeSelect.value = app.workspaceViewMode;
36+
}
37+
app.createInteractionController?.();
38+
app.interactionController?.setToolMode?.(app.elements?.toolModeSelect?.value);
39+
app.syncUIFromDocument?.();
40+
app.render?.();
41+
return true;
42+
}
43+
1244
function startVectorMapEditor() {
1345
if (vectorMapEditorApp) {
1446
return vectorMapEditorApp;
1547
}
1648
const app = new VectorMapEditorApp(document);
1749
app.start();
50+
applyHostedWorkspacePayload(app);
1851
vectorMapEditorApp = app;
1952
window.vectorMapEditorApp = app;
2053
return app;

0 commit comments

Comments
 (0)