Skip to content

Commit 359d9e3

Browse files
author
DavidQ
committed
Remove workspace asset catalog naming residue - PR_26140_084-remove-workspace-asset-catalog-residue
1 parent 3a0105b commit 359d9e3

13 files changed

Lines changed: 255 additions & 249 deletions
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
# PR_26140_084 Workspace Asset Catalog Residue Cleanup Report
2+
3+
## Summary
4+
- Removed active `workspace.asset-catalog.json` fallback path construction from `tools/shared/platformShell.js`.
5+
- Changed shared tool hydration to read Asset Manager V2 entries from `game.manifest.json`.
6+
- Renamed `games/shared/workspaceGameAssetCatalog.js` to `games/shared/gameManifestAssets.js`.
7+
- Replaced workspace-oriented helper exports with manifest-oriented exports:
8+
- `primeGameManifestAssets`
9+
- `preloadGameManifestAssets`
10+
- `resolveGameManifestAssetPath`
11+
- `getGameManifestAssetSourcePath`
12+
- Updated game and test imports to the renamed manifest asset helper.
13+
- Updated the metadata sync script to derive asset hints from `game.manifest.json` Asset Manager V2 entries instead of the old workspace asset catalog file.
14+
15+
## Behavior Preservation
16+
- Runtime asset path resolution still resolves Asteroids audio IDs from `games/Asteroids/game.manifest.json`.
17+
- Workspace-launched game runtime hydration still primes in-memory asset entries when a hosted game context provides them.
18+
- No compatibility shim or alias pass-through file was left at the old helper path.
19+
20+
## Scope Boundaries
21+
- No schema files were changed.
22+
- No sample JSON files were changed.
23+
- Historical `docs/pr` references to `workspace.asset-catalog.json` were intentionally left untouched.
24+
- Existing generated scanner output such as `dupes_called.txt` was not edited.
25+
26+
## Validation
27+
- Ran targeted syntax/import validation for:
28+
- `tools/shared/platformShell.js`
29+
- `games/shared/gameManifestAssets.js`
30+
- `games/shared/workspaceGameRuntimeHydrator.js`
31+
- changed game audio/index files
32+
- changed Workspace Manager Playwright test
33+
- changed runtime tests
34+
- `scripts/sync-tool-hints-from-workspace-manager.mjs`
35+
- Ran targeted manifest asset resolver validation for Asteroids audio paths.
36+
- Ran `npm run test:workspace-v2`; all 59 tests passed.
37+
- Ran `git diff --check`.
38+
- Confirmed no schema or sample JSON files changed.
39+
- Confirmed no active JS/MJS references remain to `workspace.asset-catalog.json`.
40+
- Confirmed no active references remain to:
41+
- `workspaceGameAssetCatalog`
42+
- `preloadWorkspaceGameAssetCatalog`
43+
- `primeWorkspaceGameAssetCatalog`
44+
- `resolveWorkspaceGameAssetPath`
45+
- `getWorkspaceGameAssetCatalogPath`
46+
47+
## Full Samples Smoke Test
48+
- Not run. This PR is scoped to manifest asset naming/resolution cleanup and Workspace V2 validation passed.

games/Asteroids/index.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import { createNoopDevConsoleIntegration } from "/src/shared/debug/noopDevConsol
1212
import { asPositiveInteger } from "/src/shared/number/numbers.js";
1313
import AsteroidsGameScene from "./game/AsteroidsGameScene.js";
1414
import { loadAsteroidsObjectGeometryFromManifest } from "./game/asteroidsObjectGeometryManifest.js";
15-
import { preloadWorkspaceGameAssetCatalog } from "../shared/workspaceGameAssetCatalog.js";
15+
import { preloadGameManifestAssets } from "../shared/gameManifestAssets.js";
1616

1717
export const asteroidFlow = Object.freeze({
1818
attract: attractFlow,
@@ -162,10 +162,10 @@ export async function bootAsteroids({
162162
return null;
163163
}
164164

165-
stage = "preload-asset-catalog";
165+
stage = "preload-manifest-assets";
166166
traceBoot(stage);
167-
await preloadWorkspaceGameAssetCatalog("Asteroids", {
168-
catalogPath: ASTEROIDS_MANIFEST_PATH
167+
await preloadGameManifestAssets("Asteroids", {
168+
manifestPath: ASTEROIDS_MANIFEST_PATH
169169
});
170170

171171
stage = "load-game-manifest";

games/Asteroids/systems/AsteroidsAudio.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ AsteroidsAudio.js
77
import GaplessLoopPlayer from '/src/engine/audio/GaplessLoopPlayer.js';
88
import HtmlAudioMediaBackend from '/src/engine/audio/HtmlAudioMediaBackend.js';
99
import MediaTrackService from '/src/engine/audio/MediaTrackService.js';
10-
import { resolveWorkspaceGameAssetPath } from '../../shared/workspaceGameAssetCatalog.js';
10+
import { resolveGameManifestAssetPath } from '../../shared/gameManifestAssets.js';
1111

1212
const ASTEROIDS_GAME_ID = "Asteroids";
1313
const ASTEROIDS_AUDIO_ASSET_IDS = Object.freeze({
@@ -38,7 +38,7 @@ export default class AsteroidsAudio {
3838
}
3939

4040
resolveAudioPath(assetId) {
41-
return resolveWorkspaceGameAssetPath(ASTEROIDS_GAME_ID, assetId);
41+
return resolveGameManifestAssetPath(ASTEROIDS_GAME_ID, assetId);
4242
}
4343

4444
ensureInitialized() {

games/SpaceDuel/game/SoundController.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ David Quesenberry
44
03/25/2026
55
SoundController.js
66
*/
7-
import { resolveWorkspaceGameAssetPath } from "../../shared/workspaceGameAssetCatalog.js";
7+
import { resolveGameManifestAssetPath } from "../../shared/gameManifestAssets.js";
88

99
const SPACE_DUEL_GAME_ID = "SpaceDuel";
1010
const EFFECT_ASSET_IDS = Object.freeze({
@@ -31,7 +31,7 @@ export default class SoundController {
3131
if (!assetId) {
3232
return "";
3333
}
34-
return resolveWorkspaceGameAssetPath(SPACE_DUEL_GAME_ID, assetId);
34+
return resolveGameManifestAssetPath(SPACE_DUEL_GAME_ID, assetId);
3535
}
3636

3737
play(effectId, { volume = 0.42 } = {}) {

games/SpaceInvaders/game/SpaceInvadersAudio.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ David Quesenberry
44
03/24/2026
55
SpaceInvadersAudio.js
66
*/
7-
import { resolveWorkspaceGameAssetPath } from "../../shared/workspaceGameAssetCatalog.js";
7+
import { resolveGameManifestAssetPath } from "../../shared/gameManifestAssets.js";
88

99
const SPACE_INVADERS_GAME_ID = "SpaceInvaders";
1010
const EFFECT_ASSET_IDS = Object.freeze({
@@ -33,7 +33,7 @@ export default class SpaceInvadersAudio {
3333
if (!assetId) {
3434
return "";
3535
}
36-
return resolveWorkspaceGameAssetPath(SPACE_INVADERS_GAME_ID, assetId);
36+
return resolveGameManifestAssetPath(SPACE_INVADERS_GAME_ID, assetId);
3737
}
3838

3939
setMuted(muted) {

0 commit comments

Comments
 (0)