Skip to content

Commit 434d8e8

Browse files
author
DavidQ
committed
Embed Workspace Manager tool selector in tools surface
PR Details: - Moves explicit tool selector controls into the Workspace Manager first-class tools surface. - Preserves explicit selection requirement. - Keeps Game Source and workspace status visible. - Does not restore first-tool/default selection. - Does not restore legacy gameId fallback. - Leaves sample Open <tool> behavior untouched.
1 parent 0961d66 commit 434d8e8

8 files changed

Lines changed: 394 additions & 75 deletions

File tree

docs/dev/codex_rules.md

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ These rules OVERRIDE all other instructions.
44

55
## This PR
66

7-
Fix only the Workspace Manager blank-page blocker for game-launched context.
7+
Fix only Workspace Manager tool selector placement.
88

99
Allowed:
10-
- targeted Workspace Manager boot/render/view diagnostics repair
10+
- targeted Workspace Manager render/markup/CSS placement changes
1111
- validation report
1212

1313
Forbidden:
@@ -21,24 +21,17 @@ Forbidden:
2121
- start_of_day changes
2222
- roadmap text rewrite outside status markers
2323

24-
## Required URL
24+
## Required UI Placement
2525

26-
This URL must render visible Workspace Manager content:
26+
The tool selector controls must render inside the Workspace Manager first-class tools surface.
2727

28-
```text
29-
tools/Workspace Manager/index.html?gameId=Breakout&mount=game
30-
```
28+
They must not render as a detached top banner above the Workspace Manager shell/title.
3129

32-
## Diagnostic Requirement
30+
## Required Behavior
3331

34-
Blank page is forbidden.
35-
36-
Any boot/context/view failure must render visible diagnostic text on the page.
37-
38-
## Forbidden Restorations
32+
Explicit selection is required.
3933

4034
Do not restore:
41-
4235
- `gameId || game`
4336
- `toolIds[0]`
4437
- first-item selection
@@ -58,7 +51,6 @@ Do not restore:
5851
- hidden fallback behavior
5952
- duplicated launch paths
6053
- silent redirects
61-
- silent caught errors
6254
- broad truthy/falsy behavior changes
6355
- magic strings outside existing SSoT/config pattern
6456
- duplicate event listeners
Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
# Workspace Manager Tool Selector Surface Validation
2+
3+
## Changed Files
4+
5+
- `tools/Workspace Manager/index.html`
6+
- `tools/Workspace Manager/main.js`
7+
- `tools/Workspace Manager/toolHost.css`
8+
- `docs/dev/reports/workspace_manager_tool_selector_surface_validation.md`
9+
10+
## Proof Tool Selector No Longer Renders As Top Detached Banner
11+
12+
Header now contains shell/title + source + status, not selector controls:
13+
14+
- `tools/Workspace Manager/index.html:10-13`
15+
16+
Key evidence lines:
17+
18+
- `tools/Workspace Manager/index.html:11` (`Workspace Manager` shell title)
19+
- `tools/Workspace Manager/index.html:12` (`data-tool-host-game-source`)
20+
- `tools/Workspace Manager/index.html:13` (`data-tool-host-status`)
21+
22+
Selector controls were removed from header and relocated to main surface.
23+
24+
## Proof Tool Selector Appears Inside First-Class Tools Surface
25+
26+
Main tools surface contains selector and controls:
27+
28+
- `tools/Workspace Manager/index.html:19` (`<main class="tool-host-workspace">`)
29+
- `tools/Workspace Manager/index.html:20` (`<section class="tool-host-surface" ...>`)
30+
- `tools/Workspace Manager/index.html:21` (`tool-host-surface__controls`)
31+
- `tools/Workspace Manager/index.html:23` (`data-tool-host-select`)
32+
- `tools/Workspace Manager/index.html:31-32` (`data-tool-host-current-label`, `data-tool-host-switch-meta`)
33+
34+
Layout styling binds this section as embedded surface:
35+
36+
- `tools/Workspace Manager/toolHost.css:77` (`.tool-host-surface`)
37+
- `tools/Workspace Manager/toolHost.css:84` (`.tool-host-surface__controls`)
38+
- `tools/Workspace Manager/toolHost.css:91` (`.tool-host-workspace__mount`)
39+
40+
## Proof Explicit Tool Selection Is Still Required
41+
42+
Explicit selection guard remains intact:
43+
44+
- `tools/Workspace Manager/main.js:528-529`
45+
- `tools/Workspace Manager/main.js:706-707`
46+
47+
Behavior still writes visible status `Select a tool to mount.` when no explicit tool is selected.
48+
49+
## Proof No First-Tool Selection Is Restored
50+
51+
- No first-item selection fallback logic was reintroduced.
52+
- Game-launch and init paths still return with explicit status when no requested tool exists (`tools/Workspace Manager/main.js:628-631`, `tools/Workspace Manager/main.js:706-707`).
53+
54+
## Proof `toolIds[0]` Is Not Restored
55+
56+
Command output:
57+
58+
```text
59+
toolIds0 0
60+
```
61+
62+
## Proof `gameId || game` Is Not Restored
63+
64+
Command output:
65+
66+
```text
67+
gameIdOrGame 0
68+
legacyGameParamRead 0
69+
```
70+
71+
## Proof Game Source/Status Still Render
72+
73+
Header shell keeps source + status visible:
74+
75+
- `tools/Workspace Manager/index.html:12` (`data-tool-host-game-source`)
76+
- `tools/Workspace Manager/index.html:13` (`data-tool-host-status`)
77+
78+
Runtime writes explicit game source values:
79+
80+
- `tools/Workspace Manager/main.js:199` (`writeGameSource`)
81+
- `tools/Workspace Manager/main.js:609` (`missing gameId`)
82+
- `tools/Workspace Manager/main.js:617` (`invalid gameId`)
83+
- `tools/Workspace Manager/main.js:622` (`valid game source`)
84+
- `tools/Workspace Manager/main.js:639` (`none`)
85+
86+
## Proof Sample `Open <tool>` Remains Untouched
87+
88+
Sample launch label and launch behavior remain unchanged:
89+
90+
- `samples/index.render.js:104` (`Open <tool>` label)
91+
- `samples/index.render.js:539` (`launchWithExternalToolWorkspaceReset(launchHref)`)
92+
93+
## Static Validation
94+
95+
Commands run successfully:
96+
97+
```bash
98+
node --check tools/Workspace\ Manager/main.js
99+
node --check games/index.render.js
100+
node --check samples/index.render.js
101+
```
102+
103+
## Anti-Pattern Self-Check
104+
105+
- No samples behavior/labels changed.
106+
- No second SSoT introduced.
107+
- No default/fallback route/view/tool/workspace behavior restored.
108+
- No `gameId || game` restoration.
109+
- No `toolIds[0]` restoration.
110+
- No first-item auto-selection restoration.
111+
- Changes remain scoped to Workspace Manager markup/CSS placement and minimal status/source wiring.
Lines changed: 31 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Codex Commands — BUILD_PR_LEVEL_20_15_REPAIR_WORKSPACE_MANAGER_BLANK_GAME_LAUNCH
1+
# Codex Commands — BUILD_PR_LEVEL_20_16_EMBED_TOOL_SELECTOR_IN_WORKSPACE_SURFACE
22

33
## Model
44
GPT-5.4 or GPT-5.3-codex
@@ -10,37 +10,36 @@ High
1010

1111
```text
1212
Read docs/dev/codex_rules.md first.
13-
Read docs/dev/reports/workspace_manager_game_launch_tools_view_validation.md if present.
14-
Read docs/dev/reports/workspace_manager_default_query_fallback_removal_validation.md if present.
13+
Read docs/dev/reports/workspace_manager_blank_game_launch_repair_validation.md if present.
1514
Read docs/dev/specs/TOOL_LAUNCH_SSOT.md if present.
1615
17-
Execute BUILD_PR_LEVEL_20_15_REPAIR_WORKSPACE_MANAGER_BLANK_GAME_LAUNCH.
16+
Execute BUILD_PR_LEVEL_20_16_EMBED_TOOL_SELECTOR_IN_WORKSPACE_SURFACE.
1817
19-
User UAT failure:
20-
- URL renders blank page with no visible error:
21-
tools/Workspace Manager/index.html?gameId=Breakout&mount=game
22-
- Blank occurs for multiple Open with Workspace Manager launches.
18+
User UAT finding:
19+
- Workspace Manager now renders.
20+
- Tool selector controls appear at the top as a detached banner:
21+
Tool / Prev / Next / Mount / Unmount / Open Standalone / Optional JSON state / No tool mounted / Switch target / Select a tool to mount.
22+
- This explicit selection behavior is OK.
23+
- But it must be part of the Workspace Manager first-class tools surface, not a top banner.
2324
2425
Goal:
25-
Repair Workspace Manager so valid game-launched URLs render visible Workspace Manager content and invalid context renders visible diagnostics.
26+
Move/contain the explicit tool selector controls inside the Workspace Manager first-class tools surface.
2627
2728
Required behavior:
28-
- URL tools/Workspace Manager/index.html?gameId=Breakout&mount=game renders visible Workspace Manager page
29-
- explicit gameId context is loaded
30-
- external launch memory is cleared
31-
- tools/workspace surface is visible for selected game context
32-
- blank page is forbidden
33-
- if boot/context/view fails, render visible diagnostic panel on page
34-
- do not restore gameId || game
35-
- do not restore toolIds[0]
36-
- do not auto-select first tool
37-
- do not fallback to default route/view/tool/workspace
38-
- do not reuse stale memory
29+
- Workspace Manager header/shell remains visible.
30+
- Game Source and workspace status remain visible.
31+
- Tool selector controls render inside the first-class tools surface.
32+
- User still must explicitly select/mount a tool.
33+
- No default/fallback behavior is restored.
34+
- Do not restore gameId || game.
35+
- Do not restore toolIds[0].
36+
- Do not auto-select first tool.
37+
- Do not alter samples.
3938
4039
Likely files:
41-
- tools/Workspace Manager/index.html
4240
- tools/Workspace Manager/main.js
43-
- directly imported Workspace Manager boot/view helper files only if needed
41+
- tools/Workspace Manager/index.html
42+
- Workspace Manager CSS only if existing layout requires it
4443
4544
Forbidden:
4645
- changing samples
@@ -51,19 +50,18 @@ Forbidden:
5150
- start_of_day changes
5251
5352
Validation:
54-
Create docs/dev/reports/workspace_manager_blank_game_launch_repair_validation.md with:
53+
Create docs/dev/reports/workspace_manager_tool_selector_surface_validation.md with:
5554
- changed files
56-
- root cause of blank page
57-
- proof Breakout URL renders visible content
58-
- proof multiple gameIds do not blank
59-
- proof invalid/missing gameId renders visible diagnostic
60-
- proof gameId || game fallback is not restored
61-
- proof toolIds[0] first-tool selection is not restored
62-
- proof no fallback/default route/view was added
63-
- proof external memory clear remains intact
64-
- proof sample Open <tool> behavior remains untouched
55+
- proof tool selector no longer renders as top detached banner
56+
- proof tool selector appears inside first-class tools surface
57+
- proof explicit tool selection is still required
58+
- proof no first-tool selection is restored
59+
- proof toolIds[0] is not restored
60+
- proof gameId || game is not restored
61+
- proof game source/status still render
62+
- proof sample Open <tool> remains untouched
6563
- anti-pattern self-check
6664
6765
Return ZIP at:
68-
tmp/BUILD_PR_LEVEL_20_15_REPAIR_WORKSPACE_MANAGER_BLANK_GAME_LAUNCH.zip
66+
tmp/BUILD_PR_LEVEL_20_16_EMBED_TOOL_SELECTOR_IN_WORKSPACE_SURFACE.zip
6967
```
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
Repair Workspace Manager blank game launch
1+
Embed Workspace Manager tool selector in tools surface
22

33
PR Details:
4-
- Fixes blank Workspace Manager page for game-launched URLs.
5-
- Requires visible diagnostics for invalid boot/context/view state.
6-
- Preserves explicit gameId behavior.
7-
- Does not restore legacy gameId || game fallback.
4+
- Moves explicit tool selector controls into the Workspace Manager first-class tools surface.
5+
- Preserves explicit selection requirement.
6+
- Keeps Game Source and workspace status visible.
87
- Does not restore first-tool/default selection.
8+
- Does not restore legacy gameId fallback.
99
- Leaves sample Open <tool> behavior untouched.

0 commit comments

Comments
 (0)