Skip to content

Commit 3ab8674

Browse files
author
DavidQ
committed
```text
Scope workspace handoffs by tool and remove Return to Games from workspace shell - remove "Return to Games" from tool/workspace header and stop emitting `returnTo` in Games roundtrip URLs - update Games2Tools validation/report docs to match the new navigation behavior (use Games menu) - hydrate shared asset handoff from per-game `workspace.asset-catalog.json` (in addition to palette handoff) - make catalog lookup resilient to mixed game-folder casing in paths - constrain tool-tile asset badges to valid asset types per tool (no global skin badge on unrelated editors) - add palette catalog entries across game asset catalogs and normalize breakout/bouncing-ball/pong catalog paths - add new per-game palette files for Asteroids, Bouncing Ball, Pong, Solar System, Space Duel, and Space Invaders ```
1 parent 990b8fb commit 3ab8674

17 files changed

Lines changed: 637 additions & 139 deletions

docs/dev/reports/games2tools_manual_qa_checklist.txt

Lines changed: 90 additions & 90 deletions
Large diffs are not rendered by default.

docs/dev/reports/games2tools_roundtrip_validation.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ Generated: 2026-04-24T23:23:52.082Z
44
[x] Games hub includes Tool filter control (games-filter-tool).
55
[x] Games index rendering supports tool token filtering and query prepopulation (?tool=<toolId>).
66
[x] Game cards render Tool Roundtrip Links from metadata toolHints.
7-
[x] Roundtrip links pass gameId, gameTitle, gameHref, workspaceHref, returnTo query params.
8-
[x] Tools shell renders Game Source return line when launched from game links.
7+
[x] Roundtrip links pass gameId, gameTitle, gameHref, workspaceHref query params.
8+
[x] Tools shell renders Game Source line when launched from game links.
99

1010
Total games in metadata: 29
1111
Games with toolHints: 29
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
{
2+
"schema": "html-js-gaming.palette",
3+
"version": 1,
4+
"name": "Asteroids Classic Palette",
5+
"source": "custom",
6+
"entries": [
7+
{
8+
"symbol": "!",
9+
"hex": "#020617",
10+
"name": "Space Black"
11+
},
12+
{
13+
"symbol": "#",
14+
"hex": "#FFFFFF",
15+
"name": "Vector White"
16+
},
17+
{
18+
"symbol": "$",
19+
"hex": "#CBD5E1",
20+
"name": "Asteroid Gray"
21+
},
22+
{
23+
"symbol": "%",
24+
"hex": "#DBEAFE",
25+
"name": "Saucer Glow"
26+
},
27+
{
28+
"symbol": "&",
29+
"hex": "#94A3B8",
30+
"name": "HUD Muted"
31+
},
32+
{
33+
"symbol": "(",
34+
"hex": "#FBBF24",
35+
"name": "Accent Amber"
36+
},
37+
{
38+
"symbol": ")",
39+
"hex": "#F87171",
40+
"name": "Warning Red"
41+
},
42+
{
43+
"symbol": "*",
44+
"hex": "#78B7FF",
45+
"name": "HUD Blue"
46+
},
47+
{
48+
"symbol": "+",
49+
"hex": "#FFBE64",
50+
"name": "HUD Gold"
51+
}
52+
]
53+
}

games/Asteroids/assets/workspace.asset-catalog.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@
33
"version": 1,
44
"gameId": "asteroids",
55
"assets": {
6+
"palette.asteroids.classic": {
7+
"path": "/games/Asteroids/assets/palettes/asteroids-classic.palette.json",
8+
"kind": "palette",
9+
"source": "workspace-manager"
10+
},
611
"audio.asteroids.fire": {
712
"path": "/games/Asteroids/assets/audio/fire.wav",
813
"kind": "audio",
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
{
2+
"schema": "html-js-gaming.palette",
3+
"version": 1,
4+
"name": "Solar System Classic Palette",
5+
"source": "custom",
6+
"entries": [
7+
{
8+
"symbol": "!",
9+
"hex": "#030712",
10+
"name": "Space Background"
11+
},
12+
{
13+
"symbol": "#",
14+
"hex": "#DBEAFE",
15+
"name": "Frame and Text"
16+
},
17+
{
18+
"symbol": "$",
19+
"hex": "#334155",
20+
"name": "Orbits"
21+
},
22+
{
23+
"symbol": "%",
24+
"hex": "#FBBF24",
25+
"name": "Sun"
26+
},
27+
{
28+
"symbol": "&",
29+
"hex": "#9CA3AF",
30+
"name": "Mercury"
31+
},
32+
{
33+
"symbol": "(",
34+
"hex": "#38BDF8",
35+
"name": "Earth"
36+
},
37+
{
38+
"symbol": ")",
39+
"hex": "#FB7185",
40+
"name": "Mars"
41+
},
42+
{
43+
"symbol": "*",
44+
"hex": "#F59E0B",
45+
"name": "Jupiter"
46+
},
47+
{
48+
"symbol": "+",
49+
"hex": "#EAB308",
50+
"name": "Saturn"
51+
},
52+
{
53+
"symbol": ",",
54+
"hex": "#67E8F9",
55+
"name": "Uranus"
56+
},
57+
{
58+
"symbol": "-",
59+
"hex": "#60A5FA",
60+
"name": "Neptune"
61+
}
62+
]
63+
}

games/SolarSystem/assets/workspace.asset-catalog.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@
33
"version": 1,
44
"gameId": "solarsystem",
55
"assets": {
6+
"palette.solar-system.classic": {
7+
"path": "/games/SolarSystem/assets/palettes/solar-system-classic.palette.json",
8+
"kind": "palette",
9+
"source": "workspace-manager"
10+
},
611
"skin.main": {
712
"path": "/games/SolarSystem/assets/skins/default.json",
813
"kind": "skin",
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
{
2+
"schema": "html-js-gaming.palette",
3+
"version": 1,
4+
"name": "Space Duel Classic Palette",
5+
"source": "custom",
6+
"entries": [
7+
{
8+
"symbol": "!",
9+
"hex": "#020617",
10+
"name": "Background"
11+
},
12+
{
13+
"symbol": "#",
14+
"hex": "#E2E8F0",
15+
"name": "Primary Ink"
16+
},
17+
{
18+
"symbol": "$",
19+
"hex": "#8AA0BB",
20+
"name": "Border"
21+
},
22+
{
23+
"symbol": "%",
24+
"hex": "#334155",
25+
"name": "Inner Border"
26+
},
27+
{
28+
"symbol": "&",
29+
"hex": "#93A5BC",
30+
"name": "Muted Text"
31+
},
32+
{
33+
"symbol": "(",
34+
"hex": "#FFFFFF",
35+
"name": "Player 1"
36+
},
37+
{
38+
"symbol": ")",
39+
"hex": "#9AE6B4",
40+
"name": "Player 2"
41+
},
42+
{
43+
"symbol": "*",
44+
"hex": "#FCA5A5",
45+
"name": "Hazard"
46+
},
47+
{
48+
"symbol": "+",
49+
"hex": "#FECACA",
50+
"name": "Hazard Inner"
51+
},
52+
{
53+
"symbol": ",",
54+
"hex": "#F59E0B",
55+
"name": "Bonus Ring"
56+
},
57+
{
58+
"symbol": "-",
59+
"hex": "#FDE68A",
60+
"name": "Bonus Core"
61+
},
62+
{
63+
"symbol": ".",
64+
"hex": "#F8FAFC",
65+
"name": "Projectile"
66+
}
67+
]
68+
}

games/SpaceDuel/assets/workspace.asset-catalog.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@
33
"version": 1,
44
"gameId": "spaceduel",
55
"assets": {
6+
"palette.space-duel.classic": {
7+
"path": "/games/SpaceDuel/assets/palettes/space-duel-classic.palette.json",
8+
"kind": "palette",
9+
"source": "workspace-manager"
10+
},
611
"audio.space-duel.thrust": {
712
"path": "/games/SpaceDuel/assets/audio/effects/thrust.wav",
813
"kind": "audio",
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
{
2+
"schema": "html-js-gaming.palette",
3+
"version": 1,
4+
"name": "Space Invaders Classic Palette",
5+
"source": "custom",
6+
"entries": [
7+
{
8+
"symbol": "!",
9+
"hex": "#000000",
10+
"name": "Background"
11+
},
12+
{
13+
"symbol": "#",
14+
"hex": "#020702",
15+
"name": "Playfield Backdrop"
16+
},
17+
{
18+
"symbol": "$",
19+
"hex": "#66FF66",
20+
"name": "Alien Green"
21+
},
22+
{
23+
"symbol": "%",
24+
"hex": "#8DF58D",
25+
"name": "HUD Green"
26+
},
27+
{
28+
"symbol": "&",
29+
"hex": "#FFFFFF",
30+
"name": "White Ink"
31+
},
32+
{
33+
"symbol": "(",
34+
"hex": "#D0D0D0",
35+
"name": "Score Label"
36+
},
37+
{
38+
"symbol": ")",
39+
"hex": "#FBBF24",
40+
"name": "Score Accent"
41+
},
42+
{
43+
"symbol": "*",
44+
"hex": "#FF4D4D",
45+
"name": "UFO Red"
46+
},
47+
{
48+
"symbol": "+",
49+
"hex": "#FF6666",
50+
"name": "Bomb Red"
51+
},
52+
{
53+
"symbol": ",",
54+
"hex": "#FFD1D1",
55+
"name": "Explosion Tint"
56+
}
57+
]
58+
}

games/SpaceInvaders/assets/workspace.asset-catalog.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@
33
"version": 1,
44
"gameId": "spaceinvaders",
55
"assets": {
6+
"palette.space-invaders.classic": {
7+
"path": "/games/SpaceInvaders/assets/palettes/space-invaders-classic.palette.json",
8+
"kind": "palette",
9+
"source": "workspace-manager"
10+
},
611
"audio.space-invaders.shoot": {
712
"path": "/games/SpaceInvaders/assets/audio/effects/shoot.wav",
813
"kind": "audio",

0 commit comments

Comments
 (0)