Skip to content

Commit 78c2c83

Browse files
author
DavidQ
committed
Polish Asset Manager V2 controls with kind-based picker and role defaults - PR_26126_085-asset-manager-v2-controls-polish
1 parent bd60300 commit 78c2c83

14 files changed

Lines changed: 729 additions & 1305 deletions
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# PR_26126_085 Asset Manager V2 Manual Validation Notes
2+
3+
Date: 2026-05-06
4+
5+
## Validation Performed
6+
7+
- Ran `npm run test:workspace-v2`.
8+
- Confirmed Asset Manager V2 tool mode launch.
9+
- Confirmed Asset Manager V2 Workspace V2 launch mode.
10+
- Confirmed Kind radio controls render and default to Image.
11+
- Confirmed changing Kind updates the single picker accept filter.
12+
- Confirmed Role defaults for selected Kind and remains user-changeable.
13+
- Confirmed ID generation from Kind, filename, and Role.
14+
- Confirmed Path assignment from project-root-normalized selected file paths.
15+
- Confirmed schema validation rejects an audio asset using an image-only role.
16+
- Confirmed Add Asset creates validated entries only.
17+
- Confirmed Workspace V2 insertion writes only to `tools.asset-browser.assets`.
18+
- Confirmed visible Source is removed from Asset Controls while entry source remains `asset-manager-v2`.
19+
- Confirmed no sample JSON files were modified.
20+
21+
## Results
22+
23+
- `npm run test:workspace-v2`: passed, 10 tests.
24+
- Tool mode controls: passed. Kind radios, filtered picker accept values, role defaulting, role changes, stacked ID/Path fields, and Add Asset behavior were validated in Playwright.
25+
- Filtered picker: passed. Image Kind exposed image accept filters; Audio Kind exposed audio accept filters and removed image filters.
26+
- Role defaults: passed. Image defaulted to `sprite`; Audio defaulted to `sound`; changing Role to `background` regenerated the image ID.
27+
- Schema rejection: passed. Audio JSON with `role: "background"` was rejected.
28+
- Workspace insertion: passed. Audio selection inserted `audio.assets.fire.sound` into `tools.asset-browser.assets` and did not create `asset-manager-v2` or `workspace-v2` manifest entries.
29+
- Asset Browser reuse check: passed by targeted search of Asset Manager V2 files; no legacy Asset Browser implementation imports were added.
30+
31+
## Reports
32+
33+
- `docs/dev/reports/playwright_v8_coverage_report.txt`
34+
- `docs/dev/reports/coverage_changed_js_guardrail.txt`
35+
- `docs/dev/reports/PR_26126_085_asset_manager_v2_schema_validation_notes.md`
36+
- `docs/dev/reports/PR_26126_085_asset_manager_v2_ui_control_notes.md`
37+
- `docs/dev/reports/PR_26126_085_asset_manager_v2_manual_validation_notes.md`
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# PR_26126_085 Asset Manager V2 Schema Validation Notes
2+
3+
Date: 2026-05-06
4+
5+
## Scope
6+
7+
- No asset schema defaults were added.
8+
- `tools/schemas/tools/asset-browser.schema.json` remains strict with `additionalProperties: false` on the payload root, asset map, asset entries, and nested `stretchOverride` object.
9+
- Asset Manager V2 still writes `source: "asset-manager-v2"` at entry creation time even though Source is no longer visible in Asset Controls.
10+
11+
## Validation Rules
12+
13+
- The selected Kind radio supplies the asset entry `kind`.
14+
- The Role dropdown is generated from schema-owned `assetRolesByKind` data and defaults to the first role for the selected kind.
15+
- `AssetSchemaValidator.createEntry()` still validates every pending entry before insertion.
16+
- `AssetSchemaValidator.validatePayload()` still validates the complete `assets` payload before export or Workspace V2 insertion.
17+
- Invalid role/kind combinations remain rejected by schema-backed validation.
18+
19+
## Workspace Location
20+
21+
Validated assets are inserted only into:
22+
23+
```text
24+
workspaceManifest.tools["asset-browser"].assets
25+
```
26+
27+
No `asset-manager-v2` or `workspace-v2` workspace tool payloads are created.
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# PR_26126_085 Asset Manager V2 UI Control Notes
2+
3+
Date: 2026-05-06
4+
5+
## Controls
6+
7+
- Restored Kind radio buttons for `image`, `audio`, `font`, `video`, `shader`, `data`, and `localization`.
8+
- The single `Pick Asset File` control remains, but its accept filter now follows the selected Kind.
9+
- Renamed `Approved Kind` to `Kind`.
10+
- Removed visible Source from Asset Controls.
11+
- Role remains a dropdown, with options rebuilt from the selected Kind.
12+
- Role defaults by Kind:
13+
- image: `sprite`
14+
- audio: `sound`
15+
- font: `ui`
16+
- video: `cutscene`
17+
- shader: `fragment`
18+
- data: `config`
19+
- localization: `strings`
20+
- Renamed `Asset ID` to `ID`.
21+
- ID and Path textboxes now stack under their labels.
22+
- The final button remains labeled `Add Asset`.
23+
24+
## Behavior
25+
26+
- Changing Kind updates the picker accept filter and resets Role to the likely default for that Kind.
27+
- Changing Role after selecting a file regenerates the ID and revalidates the selected file entry.
28+
- Picking a file assigns ID from Kind, filename slug, and Role.
29+
- Picking a file assigns Path from the selected path normalized from the project root, with kind-folder fallback when no project-root path is available.
Lines changed: 17 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,30 @@
11
# git status --short
2-
M docs/dev/PLAN_PR.md
3-
M docs/dev/reports/PR_26126_084_asset_manager_v2_manual_validation_notes.md
4-
M docs/dev/reports/PR_26126_084_asset_manager_v2_schema_validation_notes.md
5-
M docs/dev/reports/coverage_changed_js_guardrail.txt
2+
M docs/dev/reports/coverage_changed_js_guardrail.txt
63
M docs/dev/reports/playwright_v8_coverage_report.txt
74
M tests/playwright/PreviewGeneratorV2Baseline.spec.mjs
8-
M tests/tools/ToolWorkspaceSchemaManifestBoundaries.test.mjs
9-
M tests/validation/samples.curriculum.validation.json
10-
M tests/validation/samples.runtime.validation.report.json
11-
M tests/validation/samples.shared.boundaries.report.json
125
M tools/asset-manager-v2/README.md
136
M tools/asset-manager-v2/index.html
14-
M tools/asset-manager-v2/js/AssetManagerV2App.js
157
M tools/asset-manager-v2/js/assetManagerMetadata.js
168
M tools/asset-manager-v2/js/bootstrap.js
179
M tools/asset-manager-v2/js/controls/AssetFormControl.js
18-
M tools/asset-manager-v2/js/services/AssetSchemaValidator.js
1910
M tools/asset-manager-v2/styles/assetManager.css
20-
M tools/schemas/README.md
21-
M tools/schemas/sample.tool-payload.schema.json
22-
M tools/schemas/tools/asset-browser.schema.json
23-
?? docs/dev/reports/PR_26126_084_asset_manager_v2_path_normalization_notes.md
24-
?? tools/schemas/samples/
11+
?? docs/dev/reports/PR_26126_085_asset_manager_v2_manual_validation_notes.md
12+
?? docs/dev/reports/PR_26126_085_asset_manager_v2_schema_validation_notes.md
13+
?? docs/dev/reports/PR_26126_085_asset_manager_v2_ui_control_notes.md
2514

2615
# git ls-files --others --exclude-standard
27-
docs/dev/reports/PR_26126_084_asset_manager_v2_path_normalization_notes.md
28-
tools/schemas/samples/sample.tool-payload.schema.json
16+
docs/dev/reports/PR_26126_085_asset_manager_v2_manual_validation_notes.md
17+
docs/dev/reports/PR_26126_085_asset_manager_v2_schema_validation_notes.md
18+
docs/dev/reports/PR_26126_085_asset_manager_v2_ui_control_notes.md
2919

3020
# git diff --stat
31-
docs/dev/PLAN_PR.md | 3 +-
32-
...084_asset_manager_v2_manual_validation_notes.md | 21 +--
33-
...084_asset_manager_v2_schema_validation_notes.md | 26 ++--
34-
docs/dev/reports/coverage_changed_js_guardrail.txt | 19 +--
35-
docs/dev/reports/playwright_v8_coverage_report.txt | 47 ++-----
36-
.../playwright/PreviewGeneratorV2Baseline.spec.mjs | 134 +++++++++++++------
37-
.../ToolWorkspaceSchemaManifestBoundaries.test.mjs | 2 +-
38-
.../validation/samples.curriculum.validation.json | 2 +-
39-
.../samples.runtime.validation.report.json | 2 +-
40-
.../samples.shared.boundaries.report.json | 2 +-
41-
tools/asset-manager-v2/README.md | 2 +-
42-
tools/asset-manager-v2/index.html | 70 +---------
43-
tools/asset-manager-v2/js/AssetManagerV2App.js | 12 ++
44-
tools/asset-manager-v2/js/assetManagerMetadata.js | 130 ++++++++++++++++++-
45-
tools/asset-manager-v2/js/bootstrap.js | 9 +-
46-
.../js/controls/AssetFormControl.js | 144 +++++++++++++--------
47-
.../js/services/AssetSchemaValidator.js | 15 +--
48-
tools/asset-manager-v2/styles/assetManager.css | 47 ++-----
49-
tools/schemas/README.md | 3 +-
50-
tools/schemas/sample.tool-payload.schema.json | 83 +-----------
51-
tools/schemas/tools/asset-browser.schema.json | 1 +
52-
21 files changed, 393 insertions(+), 381 deletions(-)
21+
docs/dev/reports/coverage_changed_js_guardrail.txt | 5 +-
22+
docs/dev/reports/playwright_v8_coverage_report.txt | 16 +++---
23+
.../playwright/PreviewGeneratorV2Baseline.spec.mjs | 55 ++++++++++++-------
24+
tools/asset-manager-v2/README.md | 2 +-
25+
tools/asset-manager-v2/index.html | 46 ++++++++++++----
26+
tools/asset-manager-v2/js/assetManagerMetadata.js | 20 +++++--
27+
tools/asset-manager-v2/js/bootstrap.js | 2 +-
28+
.../js/controls/AssetFormControl.js | 62 +++++++++++++++-------
29+
tools/asset-manager-v2/styles/assetManager.css | 41 +++++++++++++-
30+
9 files changed, 181 insertions(+), 68 deletions(-)

0 commit comments

Comments
 (0)