Skip to content

Commit 1bd2f89

Browse files
author
DavidQ
committed
Hide Workspace Manager tool banner until selection
PR Details: - Hides detached Tool banner on initial game-launched Workspace Manager load. - Shows Workspace Manager shell/status surface first. - Shows tool controls only after explicit tool selection. - Preserves explicit gameId context and memory clear behavior. - Does not restore default/fallback tool selection. - Leaves sample Open <tool> behavior untouched.
1 parent 434d8e8 commit 1bd2f89

8 files changed

Lines changed: 543 additions & 61 deletions

File tree

docs/dev/codex_rules.md

Lines changed: 13 additions & 7 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 Workspace Manager tool selector placement.
7+
Fix only the initial Workspace Manager tool-banner visibility.
88

99
Allowed:
10-
- targeted Workspace Manager render/markup/CSS placement changes
10+
- targeted Workspace Manager render/visibility/CSS changes
1111
- validation report
1212

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

24-
## Required UI Placement
24+
## Required Initial State
2525

26-
The tool selector controls must render inside the Workspace Manager first-class tools surface.
26+
On game-launched Workspace Manager open:
27+
- show Workspace Manager shell/status
28+
- show Game Source and workspace status
29+
- do not show detached Tool banner
30+
- do not mount a tool
31+
- do not auto-select a tool
2732

28-
They must not render as a detached top banner above the Workspace Manager shell/title.
33+
## Tool Controls Visibility Rule
2934

30-
## Required Behavior
35+
Tool controls may appear only after explicit tool selection or explicit valid tool context.
3136

32-
Explicit selection is required.
37+
## Forbidden Restorations
3338

3439
Do not restore:
3540
- `gameId || game`
@@ -51,6 +56,7 @@ Do not restore:
5156
- hidden fallback behavior
5257
- duplicated launch paths
5358
- silent redirects
59+
- silent caught errors
5460
- broad truthy/falsy behavior changes
5561
- magic strings outside existing SSoT/config pattern
5662
- duplicate event listeners
Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
# Workspace Manager Hide Tool Banner 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_hide_tool_banner_validation.md`
9+
10+
## Proof Initial Game-Launched Page Shows Workspace Manager Shell/Status
11+
12+
Required URL path remains valid:
13+
14+
```text
15+
/tools/Workspace%20Manager/index.html?gameId=SolarSystem&mount=game
16+
```
17+
18+
Resolver check output:
19+
20+
```text
21+
{
22+
href: '/tools/Workspace%20Manager/index.html?gameId=SolarSystem&mount=game',
23+
error: ''
24+
}
25+
```
26+
27+
Initial shell/status elements are present in page markup:
28+
29+
- title: `tools/Workspace Manager/index.html:11`
30+
- first-class tools surface copy: `tools/Workspace Manager/index.html:21`
31+
- game source: `tools/Workspace Manager/index.html:12`
32+
- workspace actions: `tools/Workspace Manager/index.html:23-25`
33+
- workspace loaded status: `tools/Workspace Manager/index.html:27`
34+
- shared palette/assets status: `tools/Workspace Manager/index.html:28`
35+
36+
## Proof Detached Tool Banner Is Not Visible Before Tool Selection
37+
38+
The tool-controls panel is hidden in HTML by default:
39+
40+
- `tools/Workspace Manager/index.html:29` includes `data-tool-host-controls-panel hidden`
41+
42+
Init path keeps controls hidden when no explicit tool query exists:
43+
44+
- `tools/Workspace Manager/main.js:749` (`setControlsPanelVisible(false)`)
45+
- `tools/Workspace Manager/main.js:806-809` (`!requestedToolId` keeps controls hidden and returns)
46+
47+
Game popstate path with no explicit tool also keeps controls hidden:
48+
49+
- `tools/Workspace Manager/main.js:707-713`
50+
51+
## Proof Tool Controls Appear Only After Explicit Tool Selection
52+
53+
Explicit selection path via workspace action:
54+
55+
- `tools/Workspace Manager/main.js:607-627`
56+
- `tools/Workspace Manager/main.js:620` (`setControlsPanelVisible(true)` only after valid selected tool)
57+
- `tools/Workspace Manager/main.js:630-633` (action button invokes explicit selection handler)
58+
59+
Explicit valid tool context path:
60+
61+
- `tools/Workspace Manager/main.js:811-812` (`setControlsPanelVisible(true)` then `mountSelectedTool("init")` when query has valid tool)
62+
- `tools/Workspace Manager/main.js:715-716` (`setControlsPanelVisible(true)` then `mountSelectedTool("popstate")` when query has valid tool)
63+
64+
## Proof No First-Tool/Default Selection Restored
65+
66+
- no first-item fallback code path was reintroduced.
67+
- game/init paths with no explicit tool return without mounting (`tools/Workspace Manager/main.js:707-713`, `tools/Workspace Manager/main.js:806-809`).
68+
69+
## Proof `toolIds[0]` Not Restored
70+
71+
Command output:
72+
73+
```text
74+
toolIds0 0
75+
```
76+
77+
## Proof `gameId || game` Not Restored
78+
79+
Command output:
80+
81+
```text
82+
gameIdOrGame 0
83+
legacyGameParamRead 0
84+
```
85+
86+
## Proof Valid `gameId` Still Loads Game Context
87+
88+
When game context is valid, game source and workspace loaded status are populated:
89+
90+
- `tools/Workspace Manager/main.js:699-701` (popstate valid game entry)
91+
- `tools/Workspace Manager/main.js:784-786` (init valid game entry)
92+
93+
## Proof Invalid/Missing Context Renders Visible Diagnostic
94+
95+
Missing `gameId` diagnostics:
96+
97+
- `tools/Workspace Manager/main.js:684`
98+
- `tools/Workspace Manager/main.js:767`
99+
100+
Invalid `gameId` diagnostics:
101+
102+
- `tools/Workspace Manager/main.js:695`
103+
- `tools/Workspace Manager/main.js:777`
104+
105+
Diagnostic panel remains visible-capable in markup:
106+
107+
- `tools/Workspace Manager/index.html:14-17`
108+
109+
## Proof External Memory Clear Remains Intact
110+
111+
Runtime check output:
112+
113+
```text
114+
clearResult true
115+
localAfterClear [ [ 'keep.one', 'x' ] ]
116+
sessionAfterClear [ [ 'keep.two', 'y' ] ]
117+
launchResult true
118+
assignCalls [
119+
'/tools/Workspace%20Manager/index.html?gameId=SolarSystem&mount=game'
120+
]
121+
localAfterLaunch [ [ 'keep.one', 'x' ] ]
122+
sessionAfterLaunch [ [ 'keep.two', 'y' ] ]
123+
```
124+
125+
## Proof Samples `Open <tool>` Remain Untouched
126+
127+
- sample label remains `Open <tool>`: `samples/index.render.js:104`
128+
- sample external launch reset path unchanged: `samples/index.render.js:539`
129+
130+
## Static Validation
131+
132+
Commands run successfully:
133+
134+
```bash
135+
node --check tools/Workspace\ Manager/main.js
136+
node --check games/index.render.js
137+
node --check samples/index.render.js
138+
```
139+
140+
## Anti-Pattern Self-Check
141+
142+
- No sample behavior or labels changed.
143+
- No `gameId || game` fallback restored.
144+
- No `toolIds[0]` fallback restored.
145+
- No first-tool auto-selection restored.
146+
- No tool mount on initial game launch without explicit tool context.
147+
- No second SSoT introduced.
148+
- No broad Workspace Manager refactor performed.
149+
- No start_of_day files changed.
Lines changed: 41 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Codex Commands — BUILD_PR_LEVEL_20_16_EMBED_TOOL_SELECTOR_IN_WORKSPACE_SURFACE
1+
# Codex Commands — BUILD_PR_LEVEL_20_17_HIDE_TOOL_BANNER_UNTIL_TOOL_SELECTED
22

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

1111
```text
1212
Read docs/dev/codex_rules.md first.
13-
Read docs/dev/reports/workspace_manager_blank_game_launch_repair_validation.md if present.
13+
Read docs/dev/reports/workspace_manager_tool_selector_surface_validation.md if present.
1414
Read docs/dev/specs/TOOL_LAUNCH_SSOT.md if present.
1515
16-
Execute BUILD_PR_LEVEL_20_16_EMBED_TOOL_SELECTOR_IN_WORKSPACE_SURFACE.
16+
Execute BUILD_PR_LEVEL_20_17_HIDE_TOOL_BANNER_UNTIL_TOOL_SELECTED.
1717
1818
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.
19+
- Detached Tool banner is still visible.
20+
- User wants the banner removed/hidden until a tool is selected.
21+
- Initial Workspace Manager page should show the Workspace Manager shell/status page with:
22+
- Workspace Manager title
23+
- First-Class Tools Surface copy
24+
- Game Source
25+
- workspace actions
26+
- Workspace loaded status
27+
- shared palette/assets status
2428
2529
Goal:
26-
Move/contain the explicit tool selector controls inside the Workspace Manager first-class tools surface.
30+
Hide/remove the detached Tool banner until explicit tool selection.
2731
28-
Required behavior:
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.
38-
39-
Likely files:
40-
- tools/Workspace Manager/main.js
41-
- tools/Workspace Manager/index.html
42-
- Workspace Manager CSS only if existing layout requires it
32+
Required initial behavior:
33+
- URL tools/Workspace Manager/index.html?gameId=SolarSystem&mount=game renders visible Workspace Manager shell/status page.
34+
- Do not show Tool / Prev / Next / Mount / Unmount / Open Standalone / Optional JSON state / No tool mounted banner on initial load.
35+
- Do not mount or auto-select a tool on initial load.
36+
- Tool controls may appear only after explicit tool selection or explicit valid tool context.
37+
- Keep game context loaded.
38+
- Keep external memory clear.
39+
- Keep visible diagnostics for invalid/missing context.
4340
4441
Forbidden:
4542
- changing samples
4643
- changing labels
44+
- restoring gameId || game
45+
- restoring toolIds[0]
46+
- auto-selecting first tool
47+
- mounting a tool on initial game launch
4748
- broad Workspace Manager refactor
4849
- second SSoT
4950
- fallback/default behavior
5051
- start_of_day changes
5152
53+
Likely files:
54+
- tools/Workspace Manager/main.js
55+
- tools/Workspace Manager/index.html
56+
- Workspace Manager CSS only if needed
57+
5258
Validation:
53-
Create docs/dev/reports/workspace_manager_tool_selector_surface_validation.md with:
59+
Create docs/dev/reports/workspace_manager_hide_tool_banner_validation.md with:
5460
- changed files
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
61+
- proof initial game-launched page shows Workspace Manager shell/status
62+
- proof detached tool banner is not visible before tool selection
63+
- proof tool controls appear only after explicit tool selection
64+
- proof no first-tool/default selection restored
65+
- proof toolIds[0] not restored
66+
- proof gameId || game not restored
67+
- proof valid gameId still loads game context
68+
- proof invalid/missing context renders visible diagnostic
69+
- proof samples Open <tool> remain untouched
6370
- anti-pattern self-check
6471
6572
Return ZIP at:
66-
tmp/BUILD_PR_LEVEL_20_16_EMBED_TOOL_SELECTOR_IN_WORKSPACE_SURFACE.zip
73+
tmp/BUILD_PR_LEVEL_20_17_HIDE_TOOL_BANNER_UNTIL_TOOL_SELECTED.zip
6774
```
Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
Embed Workspace Manager tool selector in tools surface
1+
Hide Workspace Manager tool banner until selection
22

33
PR Details:
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.
7-
- Does not restore first-tool/default selection.
8-
- Does not restore legacy gameId fallback.
4+
- Hides detached Tool banner on initial game-launched Workspace Manager load.
5+
- Shows Workspace Manager shell/status surface first.
6+
- Shows tool controls only after explicit tool selection.
7+
- Preserves explicit gameId context and memory clear behavior.
8+
- Does not restore default/fallback tool selection.
99
- Leaves sample Open <tool> behavior untouched.

0 commit comments

Comments
 (0)