Skip to content

Commit ddfaa70

Browse files
author
DavidQ
committed
Fix Palette Browser sample launch registration after palette JSON alignment - PR_26124_075-palette-browser-launch-registration-fix
1 parent b8f460a commit ddfaa70

9 files changed

Lines changed: 440 additions & 163 deletions

File tree

docs/dev/codex_commands.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
1-
# Codex Commands - PR_26124_074-sample-palette-json-audit-and-fix
1+
# Codex Commands - PR_26124_075-palette-browser-launch-registration-fix
22

33
```bash
4-
npx @openai/codex run --model gpt-5.5 --reasoning high "Run full workflow for PR_26124_074-sample-palette-json-audit-and-fix. Follow PROJECT_INSTRUCTIONS.md exactly."
4+
npx @openai/codex run --model gpt-5.5 --reasoning high "Run full workflow for PR_26124_075-palette-browser-launch-registration-fix. Follow PROJECT_INSTRUCTIONS.md exactly."
55
```
66

77
## Validation Commands
88

99
```bash
10-
node --input-type=module <sample palette JSON audit/fix>
11-
node --input-type=module <sample palette JSON validation>
10+
node --input-type=module <sample metadata registry validation>
11+
node --input-type=module <targeted Samples index launch validation>
1212
git diff --check
1313
npm run test:workspace-v2
1414
npm run codex:review-artifacts
1515
```
1616

1717
## Playwright
1818

19-
No targeted Playwright impact is expected because this PR changes sample palette JSON data only. The default requested gate is `npm run test:workspace-v2`.
19+
Targeted Samples index launch validation confirms palette-backed samples no longer render `Tool "palette-browser" is not registered in toolRegistry.` and their launch links resolve to Palette Manager V2.
2020

2121
`npm run test:workspace-v2` failed because `package.json` does not define the `test:workspace-v2` script.
2222

docs/dev/commit_comment.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
Audit and fix sample palette JSON schema compliance - PR_26124_074-sample-palette-json-audit-and-fix
1+
Fix Palette Manager V2 sample launch registration id - PR_26124_075-palette-browser-launch-registration-fix
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# PR_26124_075 Palette Browser Launch Registration Fix
2+
3+
## Summary
4+
Corrected palette-backed sample launch metadata to use the active `palette-manager-v2` tool id instead of the `palette-browser` data key.
5+
6+
## Files Changed
7+
- `samples/metadata/samples.index.metadata.json`
8+
- `docs/pr/PR_26124_075-palette-browser-launch-registration-fix/PLAN_PR.md`
9+
- `docs/pr/PR_26124_075-palette-browser-launch-registration-fix/BUILD_PR.md`
10+
- `docs/pr/PR_26124_075-palette-browser-launch-registration-fix/APPLY_PR.md`
11+
- `docs/dev/codex_commands.md`
12+
- `docs/dev/commit_comment.txt`
13+
- `docs/dev/reports/codex_review.diff`
14+
- `docs/dev/reports/codex_changed_files.txt`
15+
16+
## Notes
17+
- `palette-browser` remains the palette data contract key.
18+
- `palette-manager-v2` is the active launch/runtime tool id in `tools/toolRegistry.js`.
19+
- No registry alias was added because the repo alias resolver currently returns the input id unchanged.
20+
- No sample palette JSON files were modified.
21+
- No tools, workspace/toolState/session files, sample launch code, or fallback/default data were modified.
22+
23+
## Validation
24+
- PASS: `samples.index.metadata.json` JSON parse.
25+
- PASS: targeted metadata registry validation:
26+
- 11 `palette-manager-v2` tool hints,
27+
- 11 `palette-manager-v2` roundtrip preset mappings,
28+
- no `palette-browser` launch ids remain in sample metadata.
29+
- PASS: targeted served Samples index launch validation confirmed the old registry error is gone and sample 0213 links to Palette Manager V2.
30+
- PASS: `git diff --check`
31+
- FAIL: `npm run test:workspace-v2` is unavailable because `package.json` does not define a `test:workspace-v2` script.
32+
- SKIPPED: full samples smoke test, by instruction.
Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
# git status --short
22
M docs/dev/codex_commands.md
33
M docs/dev/commit_comment.txt
4-
A docs/dev/reports/PR_26124_074_report.md
5-
A docs/pr/PR_26124_074-sample-palette-json-audit-and-fix/APPLY_PR.md
6-
A docs/pr/PR_26124_074-sample-palette-json-audit-and-fix/BUILD_PR.md
7-
A docs/pr/PR_26124_074-sample-palette-json-audit-and-fix/PLAN_PR.md
4+
A docs/dev/reports/PR_26124_075_report.md
5+
A docs/pr/PR_26124_075-palette-browser-launch-registration-fix/APPLY_PR.md
6+
A docs/pr/PR_26124_075-palette-browser-launch-registration-fix/BUILD_PR.md
7+
A docs/pr/PR_26124_075-palette-browser-launch-registration-fix/PLAN_PR.md
8+
M samples/metadata/samples.index.metadata.json
89

910
# git diff --stat
1011
(no output)

docs/dev/reports/codex_review.diff

Lines changed: 263 additions & 131 deletions
Large diffs are not rendered by default.
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# APPLY_PR - PR_26124_075-palette-browser-launch-registration-fix
2+
3+
## Summary
4+
Fixed palette-backed sample launch registration by updating sample metadata launch ids from the palette data key `palette-browser` to the active tool id `palette-manager-v2`.
5+
6+
## Applied Changes
7+
- Updated `samples/metadata/samples.index.metadata.json`:
8+
- `toolHints[]`: `palette-browser` -> `palette-manager-v2`
9+
- `roundtripToolPresets[].toolId`: `palette-browser` -> `palette-manager-v2`
10+
- Preserved existing palette preset paths.
11+
- Preserved sample palette JSON files.
12+
- Did not add a registry alias because `resolveToolIdAlias` does not currently implement aliases.
13+
14+
## Runtime/Data Result
15+
- Samples index now resolves palette-backed launch links through the active `palette-manager-v2` registry entry.
16+
- Palette data contract keys such as `tools.palette-browser` remain unchanged.
17+
- No tools, workspace/toolState/session files, sample launch code, or sample palette JSON files were changed.
18+
19+
## Validation
20+
- PASS: parsed `samples/metadata/samples.index.metadata.json`.
21+
- PASS: targeted metadata registry validation for sample `toolHints` and `roundtripToolPresets`.
22+
- PASS: targeted served Samples index launch validation confirmed:
23+
- no `Tool "palette-browser" is not registered in toolRegistry.` message,
24+
- the tool filter includes `palette-manager-v2`,
25+
- the tool filter does not include `palette-browser`,
26+
- sample 0213 links to `/tools/palette-manager-v2/index.html` with its palette preset path.
27+
- PASS: `git diff --check`
28+
- FAIL: `npm run test:workspace-v2` is unavailable because `package.json` does not define a `test:workspace-v2` script.
29+
- SKIPPED: full samples smoke test, by instruction.
30+
31+
## Manual Test
32+
1. Open `samples/index.html`.
33+
2. Search for sample `0213`.
34+
3. Confirm no `Tool "palette-browser" is not registered in toolRegistry.` message appears.
35+
4. Confirm the sample has an `Open Palette Manager V2` launch link.
36+
5. Confirm sample palette JSON files were not changed.
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# BUILD_PR - PR_26124_075-palette-browser-launch-registration-fix
2+
3+
## Purpose
4+
Perform one scoped launch metadata fix so palette-backed samples use the active Palette Manager V2 launch id instead of the palette data key.
5+
6+
## Scope
7+
- `samples/metadata/samples.index.metadata.json`
8+
- Targeted validation test file only if required.
9+
- Required PR workflow docs and review artifacts.
10+
11+
## Implementation
12+
1. Update only palette sample launch metadata:
13+
- `toolHints[]`: `palette-browser` -> `palette-manager-v2`
14+
- `roundtripToolPresets[].toolId`: `palette-browser` -> `palette-manager-v2`
15+
2. Preserve existing `presetPath` values.
16+
3. Preserve `tools.palette-browser` data keys and sample palette JSON files.
17+
4. Do not add registry aliases because `resolveToolIdAlias` does not currently implement aliases.
18+
19+
## Boundaries
20+
- Do not modify tools.
21+
- Do not modify workspace/toolState/session behavior.
22+
- Do not touch sample palette JSON files.
23+
- Do not modify sample launch code.
24+
- Do not add fallback/default data.
25+
- Do not add dependencies.
26+
- Do not run the full samples smoke test.
27+
28+
## Validation
29+
- Syntax check changed JSON files by parsing.
30+
- Run targeted metadata registry validation for sample `toolHints` and `roundtripToolPresets`.
31+
- Run targeted Samples index launch validation that reproduces the registration-error surface.
32+
- Run `npm run test:workspace-v2`.
33+
- Run `git diff --check`.
34+
- Skip the full samples smoke test.
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# PLAN_PR - PR_26124_075-palette-browser-launch-registration-fix
2+
3+
## Goal
4+
Fix sample launch registration for palette sample roundtrip links so samples no longer report `Tool "palette-browser" is not registered in toolRegistry.`
5+
6+
## Scope
7+
- `samples/metadata/samples.index.metadata.json`
8+
- Targeted launch validation test if needed.
9+
- Required PR workflow docs and review artifacts.
10+
11+
## Boundaries
12+
- Do not modify tools.
13+
- Do not modify unrelated tool metadata.
14+
- Do not touch workspace/toolState/session behavior.
15+
- Do not touch sample palette JSON files.
16+
- Do not modify sample launch code.
17+
- Do not add fallback/default data.
18+
- Do not add dependencies.
19+
- Do not run the full samples smoke test.
20+
21+
## Implementation Decision
22+
The active tool registry id is `palette-manager-v2`. The palette data contract key remains `palette-browser`, but that key is not the launch id. The repo's alias resolver currently returns the input id unchanged, so adding a `palette-browser` alias would introduce a new alias pattern instead of using the active tool identity consistently.
23+
24+
## Implementation Plan
25+
1. Update sample metadata `toolHints` entries from `palette-browser` to `palette-manager-v2`.
26+
2. Update matching `roundtripToolPresets[].toolId` entries from `palette-browser` to `palette-manager-v2`.
27+
3. Preserve existing palette preset paths, palette JSON files, and data contract keys.
28+
4. Validate that every sample tool hint and roundtrip preset tool id maps to a registered active tool, excluding the existing `workspace-manager` special case.
29+
5. Run a targeted samples index launch validation that confirms no `Tool "palette-browser" is not registered in toolRegistry.` issue is rendered.
30+
31+
## Playwright
32+
- Targeted command validates the Samples index page no longer renders the palette-browser registration error.
33+
- Expected pass behavior: samples with palette preset links render Palette Manager V2 launch links and no unregistered palette-browser issue.
34+
- Expected fail behavior: the page contains the old registration error or active palette metadata does not resolve through the registry.
35+
- Default requested gate: `npm run test:workspace-v2`
36+
37+
## Manual Validation
38+
1. Open `samples/index.html`.
39+
2. Filter or search for a palette-backed sample such as 0213, 0308, or 0313.
40+
3. Confirm no `Tool "palette-browser" is not registered in toolRegistry.` message is shown.
41+
4. Confirm the palette launch action opens Palette Manager V2.
42+
5. Confirm sample palette JSON files were not changed.

samples/metadata/samples.index.metadata.json

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -556,10 +556,10 @@
556556
"preview": "/samples/phase-02/0213/assets/images/preview.svg",
557557
"href": "./phase-02/0213/index.html",
558558
"classValues": ["engine/core/Engine", "engine/debug/index/drawFrame", "engine/debug/index/drawPanel", "engine/input/index/InputService", "engine/rendering/index/renderSpriteReadyEntities", "engine/scene/index/Scene"],
559-
"toolHints": ["palette-browser"],
559+
"toolHints": ["palette-manager-v2"],
560560
"roundtripToolPresets": [
561561
{
562-
"toolId": "palette-browser",
562+
"toolId": "palette-manager-v2",
563563
"presetPath": "/samples/phase-02/0213/sample.0213.palette.json"
564564
}
565565
]
@@ -639,10 +639,10 @@
639639
"preview": "/samples/phase-02/0219/assets/images/preview.svg",
640640
"href": "./phase-02/0219/index.html",
641641
"classValues": ["engine/assets/index/ImageAssetLoader", "engine/assets/index/SpriteAtlas", "engine/core/Engine", "engine/debug/index/drawFrame", "engine/debug/index/drawPanel", "engine/input/index/InputService", "engine/rendering/index/renderSpriteReadyEntities", "engine/scene/index/Scene", "engine/theme/index/Theme", "engine/theme/index/ThemeTokens"],
642-
"toolHints": ["palette-browser"],
642+
"toolHints": ["palette-manager-v2"],
643643
"roundtripToolPresets": [
644644
{
645-
"toolId": "palette-browser",
645+
"toolId": "palette-manager-v2",
646646
"presetPath": "/samples/phase-02/0219/sample.0219.palette.json"
647647
}
648648
]
@@ -769,10 +769,10 @@
769769
"preview": "/samples/phase-03/0301/assets/images/preview.svg",
770770
"href": "./phase-03/0301/index.html",
771771
"classValues": ["engine/assets/index/ImageAssetLoader", "engine/assets/index/SpriteAtlas", "engine/camera/index/Camera2D", "engine/camera/index/followCameraTarget", "engine/camera/index/worldRectToScreen", "engine/core/Engine", "engine/debug/index/drawFrame", "engine/debug/index/drawPanel", "engine/input/index/ActionInputMap", "engine/input/index/ActionInputService", "engine/rendering/index/renderSpriteReadyEntities", "engine/scene/index/Scene", "engine/systems/index/moveRectWithTilemapCollision", "engine/theme/index/Theme", "engine/theme/index/ThemeTokens", "engine/tilemap/index/renderTilemap", "engine/tilemap/index/Tilemap"],
772-
"toolHints": ["palette-browser"],
772+
"toolHints": ["palette-manager-v2"],
773773
"roundtripToolPresets": [
774774
{
775-
"toolId": "palette-browser",
775+
"toolId": "palette-manager-v2",
776776
"presetPath": "/samples/phase-03/0301/sample.0301.palette.json"
777777
}
778778
]
@@ -788,10 +788,10 @@
788788
"preview": "/samples/phase-03/0302/assets/images/preview.svg",
789789
"href": "./phase-03/0302/index.html",
790790
"classValues": ["engine/animation/index/AnimationController", "engine/assets/index/ImageAssetLoader", "engine/assets/index/SpriteAtlas", "engine/camera/index/Camera2D", "engine/camera/index/followCameraTarget", "engine/camera/index/worldRectToScreen", "engine/core/Engine", "engine/debug/index/drawFrame", "engine/debug/index/drawPanel", "engine/input/index/ActionInputMap", "engine/input/index/ActionInputService", "engine/rendering/index/renderSpriteReadyEntities", "engine/scene/index/Scene", "engine/systems/index/moveRectWithTilemapCollision", "engine/theme/index/Theme", "engine/theme/index/ThemeTokens", "engine/tilemap/index/renderTilemap", "engine/tilemap/index/Tilemap"],
791-
"toolHints": ["palette-browser"],
791+
"toolHints": ["palette-manager-v2"],
792792
"roundtripToolPresets": [
793793
{
794-
"toolId": "palette-browser",
794+
"toolId": "palette-manager-v2",
795795
"presetPath": "/samples/phase-03/0302/sample.0302.palette.json"
796796
}
797797
]
@@ -878,10 +878,10 @@
878878
"preview": "/samples/phase-03/0308/assets/images/preview.svg",
879879
"href": "./phase-03/0308/index.html",
880880
"classValues": ["engine/camera/index/Camera2D", "engine/camera/index/followCameraTarget", "engine/core/Engine", "engine/debug/index/drawFrame", "engine/debug/index/drawPanel", "engine/input/index/ActionInputMap", "engine/input/index/ActionInputService", "engine/scene/index/Scene", "engine/theme/index/Theme", "engine/theme/index/ThemeTokens"],
881-
"toolHints": ["palette-browser"],
881+
"toolHints": ["palette-manager-v2"],
882882
"roundtripToolPresets": [
883883
{
884-
"toolId": "palette-browser",
884+
"toolId": "palette-manager-v2",
885885
"presetPath": "/samples/phase-03/0308/sample.0308.palette.json"
886886
}
887887
]
@@ -945,10 +945,10 @@
945945
"preview": "/samples/phase-03/0313/assets/images/preview.svg",
946946
"href": "./phase-03/0313/index.html",
947947
"classValues": ["engine/camera/index/Camera2D", "engine/camera/index/followCameraTarget", "engine/core/Engine", "engine/debug/index/drawFrame", "engine/debug/index/drawPanel", "engine/input/index/ActionInputMap", "engine/input/index/ActionInputService", "engine/scene/index/Scene", "engine/theme/index/Theme", "engine/theme/index/ThemeTokens"],
948-
"toolHints": ["palette-browser"],
948+
"toolHints": ["palette-manager-v2"],
949949
"roundtripToolPresets": [
950950
{
951-
"toolId": "palette-browser",
951+
"toolId": "palette-manager-v2",
952952
"presetPath": "/samples/phase-03/0313/sample.0313.palette.json"
953953
}
954954
]
@@ -1882,10 +1882,10 @@
18821882
"preview": "/samples/phase-09/0901/assets/images/preview.svg",
18831883
"href": "./phase-09/0901/index.html",
18841884
"classValues": ["engine/core/Engine", "engine/debug/index/drawFrame", "engine/debug/index/drawPanel", "engine/rendering/index/drawVectorShape", "engine/rendering/index/transformPoints", "engine/scene/index/Scene", "engine/theme/index/Theme", "engine/theme/index/ThemeTokens"],
1885-
"toolHints": ["palette-browser"],
1885+
"toolHints": ["palette-manager-v2"],
18861886
"roundtripToolPresets": [
18871887
{
1888-
"toolId": "palette-browser",
1888+
"toolId": "palette-manager-v2",
18891889
"presetPath": "/samples/phase-09/0901/sample.0901.palette.json"
18901890
}
18911891
]
@@ -1937,10 +1937,10 @@
19371937
"preview": "/samples/phase-09/0905/assets/images/preview.svg",
19381938
"href": "./phase-09/0905/index.html",
19391939
"classValues": ["engine/collision/index/areMasksColliding", "engine/collision/index/createRasterMask", "engine/collision/index/getMaskBounds", "engine/collision/index/isColliding", "engine/core/Engine", "engine/debug/index/drawFrame", "engine/debug/index/drawPanel", "engine/scene/index/Scene", "engine/theme/index/Theme", "engine/theme/index/ThemeTokens"],
1940-
"toolHints": ["palette-browser"],
1940+
"toolHints": ["palette-manager-v2"],
19411941
"roundtripToolPresets": [
19421942
{
1943-
"toolId": "palette-browser",
1943+
"toolId": "palette-manager-v2",
19441944
"presetPath": "/samples/phase-09/0905/sample.0905.palette.json"
19451945
}
19461946
]
@@ -2112,10 +2112,10 @@
21122112
"preview": "/samples/phase-12/1204/assets/images/preview.svg",
21132113
"href": "./phase-12/1204/index.html",
21142114
"classValues": ["engine/camera/index/Camera2D", "engine/camera/index/worldRectToScreen", "engine/core/Engine", "engine/debug/index/drawFrame", "engine/debug/index/drawPanel", "engine/input/index/InputService", "engine/scene/index/Scene", "engine/theme/index/Theme", "engine/theme/index/ThemeTokens", "engine/tilemap/index/renderTilemap", "engine/tilemap/index/resolveRectVsTilemap", "engine/tilemap/index/Tilemap", "engine/utils/index/clamp"],
2115-
"toolHints": ["palette-browser"],
2115+
"toolHints": ["palette-manager-v2"],
21162116
"roundtripToolPresets": [
21172117
{
2118-
"toolId": "palette-browser",
2118+
"toolId": "palette-manager-v2",
21192119
"presetPath": "/samples/phase-12/1204/sample.1204.palette.json"
21202120
}
21212121
]
@@ -2169,10 +2169,10 @@
21692169
"preview": "/samples/phase-12/1208/assets/images/preview.svg",
21702170
"href": "./phase-12/1208/index.html",
21712171
"classValues": ["engine/camera/index/Camera2D", "engine/camera/index/worldRectToScreen", "engine/core/Engine", "engine/input/index/InputService", "engine/scene/index/Scene", "engine/theme/index/Theme", "engine/theme/index/ThemeTokens", "engine/tilemap/index/resolveRectVsTilemap", "engine/tilemap/index/Tilemap", "engine/utils/index/clamp"],
2172-
"toolHints": ["palette-browser", "tile-map-editor", "parallax-editor"],
2172+
"toolHints": ["palette-manager-v2", "tile-map-editor", "parallax-editor"],
21732173
"roundtripToolPresets": [
21742174
{
2175-
"toolId": "palette-browser",
2175+
"toolId": "palette-manager-v2",
21762176
"presetPath": "/samples/phase-12/1208/sample.1208.palette.json"
21772177
},
21782178
{
@@ -2840,15 +2840,15 @@
28402840
"preview": "/samples/phase-14/1414/assets/images/preview.svg",
28412841
"href": "./phase-14/1414/index.html",
28422842
"classValues": ["engine/scene/index/Scene"],
2843-
"toolHints": ["sprite-editor", "palette-browser"],
2843+
"toolHints": ["sprite-editor", "palette-manager-v2"],
28442844
"roundtripToolPresets": [
28452845
{
28462846
"toolId": "sprite-editor",
28472847
"presetPath": "/samples/phase-14/1414/sample.1414.sprite-editor.json",
28482848
"palettePath": "/samples/phase-14/1414/sample.1414.palette.json"
28492849
},
28502850
{
2851-
"toolId": "palette-browser",
2851+
"toolId": "palette-manager-v2",
28522852
"presetPath": "/samples/phase-14/1414/sample.1414.palette.json"
28532853
}
28542854
]

0 commit comments

Comments
 (0)