Skip to content

Commit 178cc05

Browse files
author
DavidQ
committed
Bind fullscreen chrome to active tool name and description - PR 11.29
1 parent 6012287 commit 178cc05

6 files changed

Lines changed: 156 additions & 50 deletions

File tree

docs/dev/codex_commands.md

Lines changed: 37 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,34 @@
11
MODEL: GPT-5.3-codex
2-
REASONING: high
2+
REASONING: medium
33

44
TASK:
5-
Apply PR 11.28.
6-
7-
Starting from the current `4dc2b0f`-based recovery state, fix the remaining launch dependency issue:
8-
- Workspace Manager shows full sample 1902 workspace.
9-
- Vector Map can be clicked.
10-
- Vector Map opens but says palette is missing.
11-
- Most other palette-dependent tools are still grayed out.
12-
13-
Do NOT restart the failed PR 11.23/11.25 approach.
14-
Do NOT collapse the workspace to palette-only.
15-
Do NOT add hardcoded or hidden fallback data.
16-
Do NOT require selectedAssetId, assetRegistry, or external file references when embedded payload exists.
17-
18-
Required behavior:
19-
- Workspace Manager child launches must include or resolve shared workspace palette payload from the same sample-owned JSON already loaded for sample 1902.
20-
- `manifest.tools.palette` should satisfy the shared palette dependency for child tools.
21-
- `manifest.tools[toolId]` should satisfy the tool's own embedded payload dependency.
22-
- Palette-dependent tools should be enabled when both their own payload and the shared palette payload exist.
23-
- True utilities can remain N/A or disabled only with documented reason.
5+
Apply PR 11.29.
6+
7+
Fix fullscreen chrome/title binding so entering fullscreen shows:
8+
9+
<tool name> - <description>
10+
11+
instead of:
12+
13+
Configuration error (open title for details)
14+
15+
Use the active tool's real manifest metadata. Do not hardcode individual tool names/descriptions.
16+
17+
Do NOT:
18+
- change fullscreen enter/exit mechanics
19+
- change Workspace Manager payload fan-out
20+
- change button enablement
21+
- change sample 1902 data/schema
22+
- add hidden defaults or fallback sample data
23+
- touch start_of_day folders
2424

2525
Implementation guidance:
26-
1. Find the child tool launch/context handoff code in tools/shared/platformShell.js or directly related Workspace Manager code.
27-
2. Find where Vector Map reports palette missing.
28-
3. Connect that missing dependency to the workspace manifest palette payload, not to a default or external asset.
29-
4. Adjust disabled-state logic so palette-dependent payload tools are not blocked when `manifest.tools.palette` exists.
30-
5. Keep palette fallback local to dependency satisfaction, not workspace tool-list selection.
31-
6. Add no broad refactor.
26+
1. Find the fullscreen title/header/chrome rendering path.
27+
2. Find where the configuration-error fallback is selected.
28+
3. Trace the active tool ID used when fullscreen is entered.
29+
4. Resolve tool display name and description from the same manifest/tool metadata source used by normal shell rendering.
30+
5. Only use configuration-error fallback when metadata is genuinely invalid/missing.
31+
6. Keep the change surgical.
3232

3333
Validation:
3434
node --check tools/shared/platformShell.js
@@ -37,17 +37,17 @@ node ./tests/runtime/LaunchSmokeAllEntries.test.mjs --samples --sample-range=190
3737
Manual validation:
3838
Open sample 1902.
3939
Open Workspace Manager.
40-
Click Vector Map Editor.
41-
Confirm:
42-
- no missing palette message
43-
- vector map opens with palette context
44-
Return to Workspace Manager.
45-
Confirm palette-dependent tools with embedded payload are enabled/openable.
40+
Open a tool.
41+
Enter fullscreen.
42+
Confirm title area shows:
43+
<tool name> - <description>
44+
and not:
45+
Configuration error (open title for details)
4646

4747
REPORT:
48-
Write docs/dev/reports/PR_11_28_validation.txt with:
48+
Write docs/dev/reports/PR_11_29_validation.txt with:
4949
- changed files
50-
- root cause of missing palette message
51-
- how shared palette handoff now works
52-
- which buttons remain disabled and why, if any
53-
- validation command results
50+
- root cause
51+
- metadata source used
52+
- validation commands/results
53+
- manual validation notes

docs/dev/commit_comment.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
Pass shared workspace palette to child tool launches - PR 11.28
1+
Bind fullscreen chrome to active tool name and description - PR 11.29
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
PR 11.29 Validation Report
2+
3+
Changed files:
4+
- tools/shared/platformShell.js
5+
- docs/dev/reports/PR_11_29_validation.txt
6+
7+
Root cause:
8+
- Fullscreen summary text was built from `tool.name + tool.shortDescription` only.
9+
- Several valid registry entries expose reliable display metadata as `displayName + description` while `shortDescription` may be absent.
10+
- That strict `shortDescription` requirement triggered the fallback string `Configuration error (open title for details)` even when valid manifest metadata existed.
11+
12+
Metadata source used:
13+
- Active tool metadata from the existing tool registry resolution path already used by the shell (`currentTool` from `getToolById(document.body.dataset.toolId)`).
14+
- Header binding now resolves title fields from:
15+
- `displayName` (fallback `name`)
16+
- `description` (fallback `shortDescription`)
17+
- No hardcoded per-tool name/description values were added.
18+
19+
Validation commands/results:
20+
- node --check tools/shared/platformShell.js -> PASS
21+
- node ./tests/runtime/LaunchSmokeAllEntries.test.mjs --samples --sample-range=1902-1902 --tools -> PASS
22+
- Summary: PASS=19 FAIL=0 TOTAL=19
23+
24+
Manual validation notes:
25+
- Manual browser interaction cannot be fully executed in this CLI-only run.
26+
- Expected manual check path:
27+
1) Open sample 1902
28+
2) Open Workspace Manager
29+
3) Open any tool
30+
4) Enter fullscreen
31+
5) Confirm summary/title shows `<tool name> - <description>` and not `Configuration error (open title for details)`
32+
- Code path updated specifically for fullscreen summary/title binding and leaves fullscreen mechanics/payload fan-out/button enablement unchanged.
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# PR 11.29 Validation
2+
3+
Changed files:
4+
-
5+
6+
Root cause:
7+
-
8+
9+
Metadata source:
10+
-
11+
12+
Before:
13+
- Fullscreen description showed Configuration error (open title for details).
14+
15+
After:
16+
- Fullscreen shows <tool name> - <description>.
17+
18+
Validation:
19+
- node --check tools/shared/platformShell.js
20+
- node ./tests/runtime/LaunchSmokeAllEntries.test.mjs --samples --sample-range=1902-1902 --tools
21+
22+
Manual:
23+
- sample 1902 -> Workspace Manager -> open tool -> fullscreen
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
# PR 11.29 — Fullscreen Tool Title / Description Binding
2+
3+
## Purpose
4+
Fix fullscreen chrome display so it shows the active tool name and description instead of the configuration-error fallback.
5+
6+
## Problem
7+
When entering fullscreen, the header/title area should display:
8+
9+
<tool name> - <description>
10+
11+
Instead, description currently shows:
12+
13+
Configuration error (open title for details)
14+
15+
## Required Change
16+
Bind fullscreen title/description to the active tool manifest metadata already available to Workspace Manager/platform shell.
17+
18+
## Scope
19+
- Fix fullscreen display/chrome binding only.
20+
- Do not change fullscreen enter/exit behavior.
21+
- Do not change Workspace Manager payload fan-out.
22+
- Do not change tool enablement.
23+
- Do not change sample 1902 payload/schema.
24+
- Do not add hardcoded descriptions.
25+
- Do not add fallback sample/tool data.
26+
- Do not touch start_of_day folders.
27+
28+
## Expected Behavior
29+
For any opened tool, fullscreen display should show:
30+
31+
<tool display name> - <tool description>
32+
33+
Example:
34+
Vector Map Editor - <Vector Map Editor manifest description>
35+
36+
If description is truly missing from manifest metadata, show a safe empty description or documented neutral fallback, but do not show the configuration-error text when valid manifest metadata exists.
37+
38+
## Investigation Targets
39+
- fullscreen header/chrome title rendering
40+
- active tool metadata lookup
41+
- tool manifest description resolver
42+
- configuration error fallback path
43+
44+
## Acceptance
45+
- Entering fullscreen shows active tool name.
46+
- Entering fullscreen shows active tool description from manifest metadata.
47+
- The text "Configuration error (open title for details)" does not appear for tools with valid manifest description.
48+
- Fullscreen exit behavior remains unchanged.
49+
- Runtime smoke test passes.

tools/shared/platformShell.js

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -275,23 +275,24 @@ function buildToolHeaderIntroData(currentTool) {
275275
return null;
276276
}
277277

278-
const toolName = normalizeSingleLineText(currentTool?.name);
278+
const toolName = normalizeSingleLineText(currentTool?.displayName) || normalizeSingleLineText(currentTool?.name);
279279
const toolShortDescription = normalizeSingleLineText(currentTool?.shortDescription);
280280
const toolDescription = normalizeSingleLineText(currentTool?.description);
281-
const headerText = toolName && toolShortDescription
282-
? `${toolName} \u2014 ${toolShortDescription}`
283-
: `Configuration error: ${toolId} header requires tool.name and tool.shortDescription in tools/toolRegistry.js.`;
281+
const headerDescriptor = toolDescription || toolShortDescription;
282+
const headerText = toolName && headerDescriptor
283+
? `${toolName} - ${headerDescriptor}`
284+
: `Configuration error: ${toolId} header requires tool.displayName/tool.name and tool.description/tool.shortDescription in tools/toolRegistry.js.`;
284285
const introText = toolName && toolDescription
285286
? `${toolName}: ${toolDescription}`
286-
: `Configuration error: ${toolId} intro requires tool.name and tool.description in tools/toolRegistry.js.`;
287-
const hasHeaderError = !(toolName && toolShortDescription);
287+
: `Configuration error: ${toolId} intro requires tool.displayName/tool.name and tool.description in tools/toolRegistry.js.`;
288+
const hasHeaderError = !(toolName && headerDescriptor);
288289
const hasIntroError = !(toolName && toolDescription);
289290
const diagnosticParts = [];
290291
if (hasHeaderError) {
291-
diagnosticParts.push(`Configuration error: ${toolId} header requires tool.name and tool.shortDescription in tools/toolRegistry.js.`);
292+
diagnosticParts.push(`Configuration error: ${toolId} header requires tool.displayName/tool.name and tool.description/tool.shortDescription in tools/toolRegistry.js.`);
292293
}
293294
if (hasIntroError) {
294-
diagnosticParts.push(`Configuration error: ${toolId} intro requires tool.name and tool.description in tools/toolRegistry.js.`);
295+
diagnosticParts.push(`Configuration error: ${toolId} intro requires tool.displayName/tool.name and tool.description in tools/toolRegistry.js.`);
295296
}
296297
const headerDisplayText = hasHeaderError
297298
? `${toolName || toolId} \u2014 Configuration error (open title for details)`
@@ -1818,14 +1819,15 @@ function renderHeaderMarkup(currentTool, isHeaderExpanded) {
18181819
const useStandardizedToolHeader = !isLanding
18191820
&& Boolean(currentTool?.id)
18201821
&& STANDARDIZED_TOOL_HEADER_IDS.has(currentTool.id);
1821-
const standardizedToolName = normalizeTextValue(currentTool?.name);
1822+
const standardizedToolName = normalizeTextValue(currentTool?.displayName) || normalizeTextValue(currentTool?.name);
18221823
const standardizedToolShortDescription = normalizeTextValue(currentTool?.shortDescription);
18231824
const standardizedToolHelpText = normalizeTextValue(currentTool?.description);
1824-
const hasStandardizedHeaderConfig = Boolean(standardizedToolName && standardizedToolShortDescription);
1825+
const standardizedHeaderDescriptor = standardizedToolHelpText || standardizedToolShortDescription;
1826+
const hasStandardizedHeaderConfig = Boolean(standardizedToolName && standardizedHeaderDescriptor);
18251827
const hasStandardizedIntroConfig = Boolean(standardizedToolName && standardizedToolHelpText);
18261828
const standardizedHeaderText = hasStandardizedHeaderConfig
1827-
? `${standardizedToolName} \u2014 ${standardizedToolShortDescription}`
1828-
: `Configuration error: ${currentTool?.id || "tool"} header requires tool.name and tool.shortDescription in tools/toolRegistry.js.`;
1829+
? `${standardizedToolName} - ${standardizedHeaderDescriptor}`
1830+
: `Configuration error: ${currentTool?.id || "tool"} header requires tool.displayName/tool.name and tool.description/tool.shortDescription in tools/toolRegistry.js.`;
18291831
const standardizedIntroText = hasStandardizedIntroConfig
18301832
? `${standardizedToolName}: ${standardizedToolHelpText}`
18311833
: `Configuration error: ${currentTool?.id || "tool"} intro requires tool.name and tool.description in tools/toolRegistry.js.`;

0 commit comments

Comments
 (0)