Skip to content

Commit 4c0d7f9

Browse files
committed
Remove tool center placeholder images and clean up badge display - PR_26156_123-tool-center-image-and-badge-cleanup
1 parent cb969ee commit 4c0d7f9

40 files changed

Lines changed: 199 additions & 115 deletions

File tree

assets/theme-v2/css/panels.css

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -284,11 +284,11 @@
284284
.tool-display-mode__badge {
285285
width: 64px;
286286
height: 64px;
287-
object-fit: cover;
287+
object-fit: contain;
288288
object-position: center;
289-
border: var(--border-standard);
290-
border-radius: var(--radius-pill);
291-
background: var(--panel-soft)
289+
border: 0;
290+
border-radius: var(--space-0);
291+
background: transparent
292292
}
293293

294294
.tool-display-mode__body {
@@ -351,6 +351,11 @@ body.tool-focus-mode .tool-display-mode__fullscreen-name {
351351
display: inline
352352
}
353353

354+
body.tool-focus-mode .tool-display-mode__badge {
355+
width: 32px;
356+
height: 32px
357+
}
358+
354359
.side-menu a {
355360
display: block;
356361
padding: var(--space-11) var(--space-12);

docs_build/dev/reports/testing_lane_execution_report.md

Lines changed: 38 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
# Testing Lane Execution Report
22

3-
Generated: 2026-06-05T13:20:23.710Z
3+
Generated: 2026-06-05T13:34:55.467Z
44
Dry run: No
55

66
## Summary
77

8-
PASS: 1
8+
PASS: 2
99
WARN: 0
1010
FAIL: 0
11-
SKIP: 13
12-
Total lane elapsed time: 18.48s
13-
Actual browser launches: 1
11+
SKIP: 12
12+
Total lane elapsed time: 96.49s
13+
Actual browser launches: 2
1414

1515
## Full Samples Smoke
1616

@@ -21,7 +21,7 @@ Reason: Skipped because changed files do not modify sample JSON or shared sample
2121

2222
Status: PASS
2323
Reason: Runner preflight and Playwright structure audit passed before expensive lane execution.
24-
Command: C:\nvm4w\nodejs\node.exe scripts/audit-playwright-test-locations.mjs --discovery-report docs_build/dev/reports/playwright_discovery_ownership_report.md --scope-report docs_build/dev/reports/playwright_discovery_scope_report.md --scan-report docs_build/dev/reports/filesystem_scan_reduction_report.md --lanes tool-display-mode --targets tests/playwright/tools/ToolDisplayModeNavigation.spec.mjs --helpers tests/helpers/playwrightRepoServer.mjs,tests/helpers/playwrightStorageIsolation.mjs,tests/helpers/playwrightV8CoverageReporter.mjs,tests/helpers/workspaceV2CoverageReporter.mjs
24+
Command: C:\nvm4w\nodejs\node.exe scripts/audit-playwright-test-locations.mjs --discovery-report docs_build/dev/reports/playwright_discovery_ownership_report.md --scope-report docs_build/dev/reports/playwright_discovery_scope_report.md --scan-report docs_build/dev/reports/filesystem_scan_reduction_report.md --lanes tool-runtime,tool-display-mode --targets tests/playwright/tools/RootToolsFutureState.spec.mjs,tests/playwright/tools/ToolDisplayModeNavigation.spec.mjs --helpers tests/helpers/playwrightRepoServer.mjs,tests/helpers/playwrightStorageIsolation.mjs,tests/helpers/playwrightV8CoverageReporter.mjs,tests/helpers/workspaceV2CoverageReporter.mjs
2525
Details: none
2626

2727
## Dependency Gate
@@ -32,15 +32,15 @@ Reason: No deterministic dependency failures before runtime.
3232
## Runtime Scheduling
3333

3434
Status: PASS
35-
Scheduled lane order: tool-display-mode
36-
Reused runtime sessions: 0
37-
Reused lane snapshots: 0
38-
Reused warm-start lanes: 0
39-
Reused dependency hydration: 0
40-
Prevented graph rebuilds: 0
41-
Prevented redundant initialization: 0
35+
Scheduled lane order: tool-display-mode, tool-runtime
36+
Reused runtime sessions: 1
37+
Reused lane snapshots: 2
38+
Reused warm-start lanes: 2
39+
Reused dependency hydration: 2
40+
Prevented graph rebuilds: 2
41+
Prevented redundant initialization: 2
4242
Prevented redundant browser launches: 0
43-
Prevented redundant lane execution: 13
43+
Prevented redundant lane execution: 12
4444

4545
## Validation Cache
4646

@@ -61,39 +61,39 @@ Prevented broad lane escalation: 0
6161
## Discovery Scope
6262

6363
Status: PASS
64-
Target files: tests/playwright/tools/ToolDisplayModeNavigation.spec.mjs
64+
Target files: tests/playwright/tools/RootToolsFutureState.spec.mjs, tests/playwright/tools/ToolDisplayModeNavigation.spec.mjs
6565
Required shared helpers: tests/helpers/playwrightRepoServer.mjs, tests/helpers/playwrightStorageIsolation.mjs, tests/helpers/playwrightV8CoverageReporter.mjs, tests/helpers/workspaceV2CoverageReporter.mjs
6666
Required fixtures: none
67-
Targeted file/helper reads: 5
67+
Targeted file/helper reads: 0
6868
Cached discovery reuse: Yes
6969
Prevented fallback expansion: Yes; no ownership or scope blocker widened into broad discovery.
7070

7171
## Targeted File Manifests
7272

7373
Status: PASS
74-
Generated manifests: tool-display-mode:PASS
74+
Generated manifests: tool-runtime:PASS, tool-display-mode:PASS
7575
Prevented discovery expansion: Yes
76-
Prevented redundant scans: 4
77-
Persistent manifest events: tool-display-mode:INVALIDATED
76+
Prevented redundant scans: 0
77+
Persistent manifest events: tool-runtime:REUSED, tool-display-mode:REUSED
7878

7979
## Warm-Start Reuse
8080

8181
Status: PASS
82-
Warm-start events: tool-display-mode:INVALIDATED
83-
Dependency hydration events: tool-display-mode:INVALIDATED
84-
Prevented redundant initialization: 0
85-
Prevented helper resolution passes: 0
82+
Warm-start events: tool-runtime:REUSED, tool-display-mode:REUSED
83+
Dependency hydration events: tool-runtime:REUSED, tool-display-mode:REUSED
84+
Prevented redundant initialization: 2
85+
Prevented helper resolution passes: 8
8686
Prevented fixture ownership traversal: 0
8787

8888
## Lane Snapshots
8989

9090
Status: PASS
91-
Snapshot events: tool-display-mode:INVALIDATED
92-
Reused snapshots: 0
93-
Invalidated snapshots: 1
94-
Prevented graph rebuilds: 0
95-
Prevented redundant dependency traversal: 0
96-
Prevented fixture/helper graph assembly: 0
91+
Snapshot events: tool-runtime:REUSED, tool-display-mode:REUSED
92+
Reused snapshots: 2
93+
Invalidated snapshots: 0
94+
Prevented graph rebuilds: 2
95+
Prevented redundant dependency traversal: 2
96+
Prevented fixture/helper graph assembly: 8
9797

9898
## Lane Deduplication
9999

@@ -112,9 +112,9 @@ Prevented Workspace lane reruns: 0
112112
| build-path | SKIP | 0ms | 0 | Lane was not selected for this targeted run. | Toolbox Build Path simplification, workflow status table, and Admin Tools Progress navigation | repo-served Toolbox page; repo-served Admin Tools Progress page; Project Workspace mock project context; Toolbox role simulation |
113113
| tools-progress | SKIP | 0ms | 0 | Lane was not selected for this targeted run. | Admin Tools Progress hydration, Toolbox Group view color model, and Project Build Path separation | repo-served Admin Tools Progress page; repo-served Toolbox Group view; Toolbox registry build sequence; Project Build Path workflow table |
114114
| tool-navigation | SKIP | 0ms | 0 | Lane was not selected for this targeted run. | Admin Tools Progress tool route links, Tool Display Mode build-order previous/next controls, and Toolbox group fallback routing | repo-served Admin Tools Progress page; repo-served Project Workspace, Game Design, and Game Configuration tool pages; repo-served Toolbox Group view with URL-selected accordion; Toolbox registry build sequence and route metadata |
115-
| tool-display-mode | PASS | 18.48s | 1 | Tool Display Mode validates the two-row identity/navigation layout, anchors for previous/next targets, disabled text for missing targets, registry build-order labels, role preservation, and multi-path fallback without exercising unrelated toolbox routes. | Tool Display Mode identity row, registry-owned previous/next links, disabled text fallback, and multi-path group routing | repo-served Project Workspace, Game Design, Game Configuration, and AI Assistant tool pages; repo-served Toolbox Group view with URL-selected accordion; Toolbox registry build sequence and route metadata; shared Theme V2 Tool Display Mode script |
115+
| tool-display-mode | PASS | 17.55s | 1 | Tool Display Mode validates the two-row identity/navigation layout, anchors for previous/next targets, disabled text for missing targets, registry build-order labels, role preservation, and multi-path fallback without exercising unrelated toolbox routes. | Tool Display Mode identity row, registry-owned previous/next links, disabled text fallback, and multi-path group routing | repo-served Project Workspace, Game Design, Game Configuration, and AI Assistant tool pages; repo-served Toolbox Group view with URL-selected accordion; Toolbox registry build sequence and route metadata; shared Theme V2 Tool Display Mode script |
116116
| tool-images | SKIP | 0ms | 0 | Lane was not selected for this targeted run. | Toolbox registry image contract, Toolbox card image rendering, and Tool Display Mode image fallback | Toolbox registry badge/tool image contract; repo-served Toolbox page; repo-served representative Toolbox tool pages; shared registry image fallback |
117-
| tool-runtime | SKIP | 0ms | 0 | Lane was not selected for this targeted run. | Active public toolbox and Tool Template V2 contract | repo-served root toolbox page; Tool Template V2 public page; Theme V2 shared partials and assets |
117+
| tool-runtime | PASS | 78.94s | 1 | Tool runtime lane now validates the active public toolbox/template surface and excludes removed V2 tool routes. | Active public toolbox and Tool Template V2 contract | repo-served root toolbox page; Tool Template V2 public page; Theme V2 shared partials and assets |
118118
| game-runtime | SKIP | 0ms | 0 | Lane was not selected for this targeted run. | Deprecated archive/v1-v2/games reference coverage | |
119119
| integration | SKIP | 0ms | 0 | Lane was not selected for this targeted run. | Integration handoff behavior | No active integration Playwright specs after removal of stale V2 tool and removed game manifest routes. |
120120
| engine-src | SKIP | 0ms | 0 | Lane was not selected for this targeted run. | src/ engine and shared runtime capability behavior | explicit node unit fixtures; fresh in-memory localStorage/sessionStorage mocks per file |
@@ -124,11 +124,11 @@ Prevented Workspace lane reruns: 0
124124

125125
| Lane | Duration | Test |
126126
| --- | --- | --- |
127-
| tool-display-mode | 4.30s | tests\playwright\tools\ToolDisplayModeNavigation.spec.mjs:211:1 > multi-path fallback opens Toolbox Group view with only the target group expanded |
128-
| tool-display-mode | 2.30s | tests\playwright\tools\ToolDisplayModeNavigation.spec.mjs:143:1 > Project Workspace and Game Configuration use registry order without page hardcoding |
129-
| tool-display-mode | 1.60s | tests\playwright\tools\ToolDisplayModeNavigation.spec.mjs:116:1 > Game Design renders identity and navigation rows with registry anchor links |
130-
| tool-display-mode | 1.30s | tests\playwright\tools\ToolDisplayModeNavigation.spec.mjs:168:1 > missing previous target renders disabled text instead of a broken link |
131-
| tool-display-mode | 1.30s | tests\playwright\tools\ToolDisplayModeNavigation.spec.mjs:186:1 > Build Game renders plain previous and next links in the second row |
127+
| tool-runtime | 34.00s | tests\playwright\tools\RootToolsFutureState.spec.mjs:508:1 > active tool pages do not render placeholder center panel images |
128+
| tool-runtime | 12.20s | tests\playwright\tools\RootToolsFutureState.spec.mjs:69:1 > root tools surface links current tool pages without old_* routes |
129+
| tool-runtime | 10.80s | tests\playwright\tools\RootToolsFutureState.spec.mjs:408:1 > learn wireframe pages load with shared Theme V2 structure |
130+
| tool-runtime | 9.10s | tests\playwright\tools\RootToolsFutureState.spec.mjs:323:1 > common header renders primary navigation order across active pages |
131+
| tool-display-mode | 4.20s | tests\playwright\tools\ToolDisplayModeNavigation.spec.mjs:231:1 > multi-path fallback opens Toolbox Group view with only the target group expanded |
132132

133133
## Commands
134134

@@ -154,13 +154,13 @@ Prevented Workspace lane reruns: 0
154154
- SKIP
155155

156156
### tool-display-mode
157-
- PASS 18.48s C:\nvm4w\nodejs\node.exe C:\Users\davidq\Documents\GitHub\HTML-JavaScript-Gaming\node_modules\@playwright\test\cli.js test tests/playwright/tools/ToolDisplayModeNavigation.spec.mjs --project=playwright --workers=1 --reporter=list
157+
- PASS 17.55s C:\nvm4w\nodejs\node.exe C:\Users\davidq\Documents\GitHub\HTML-JavaScript-Gaming\node_modules\@playwright\test\cli.js test tests/playwright/tools/ToolDisplayModeNavigation.spec.mjs --project=playwright --workers=1 --reporter=list
158158

159159
### tool-images
160160
- SKIP
161161

162162
### tool-runtime
163-
- SKIP
163+
- PASS 78.94s C:\nvm4w\nodejs\node.exe C:\Users\davidq\Documents\GitHub\HTML-JavaScript-Gaming\node_modules\@playwright\test\cli.js test tests/playwright/tools/RootToolsFutureState.spec.mjs --project=playwright --workers=1 --reporter=list
164164

165165
### game-runtime
166166
- SKIP
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
# PR_26156_123 Tool Center Image And Badge Cleanup Report
2+
3+
## Scope
4+
5+
- Read `docs_build/dev/PROJECT_INSTRUCTIONS.md` first.
6+
- Removed placeholder `image-missing.svg` center-panel images from active registry-owned tool pages only.
7+
- Updated shared Tool Display Mode badge styling under `assets/theme-v2/css/panels.css`.
8+
- Updated targeted active tool page UI and Tool Display Mode Playwright/MSJ coverage.
9+
- Did not modify archived V1/V2 pages.
10+
- Did not modify `start_of_day`.
11+
12+
## Active Tool Pages Cleaned
13+
14+
- `toolbox/achievements/index.html`
15+
- `toolbox/animations/index.html`
16+
- `toolbox/audio-effects/index.html`
17+
- `toolbox/audio/index.html`
18+
- `toolbox/build-game/index.html`
19+
- `toolbox/characters/index.html`
20+
- `toolbox/cloud/index.html`
21+
- `toolbox/colors/index.html`
22+
- `toolbox/community/index.html`
23+
- `toolbox/controls/index.html`
24+
- `toolbox/debug/index.html`
25+
- `toolbox/environments/index.html`
26+
- `toolbox/events/index.html`
27+
- `toolbox/fonts/index.html`
28+
- `toolbox/game-configuration/index.html`
29+
- `toolbox/game-design/index.html`
30+
- `toolbox/game-migration/index.html`
31+
- `toolbox/game-testing/index.html`
32+
- `toolbox/hitboxes/index.html`
33+
- `toolbox/languages/index.html`
34+
- `toolbox/marketplace/index.html`
35+
- `toolbox/music/index.html`
36+
- `toolbox/objects/index.html`
37+
- `toolbox/performance/index.html`
38+
- `toolbox/platform-settings/index.html`
39+
- `toolbox/project-workspace/index.html`
40+
- `toolbox/ratings/index.html`
41+
- `toolbox/saved-data/index.html`
42+
- `toolbox/speech-to-text/index.html`
43+
- `toolbox/sprites/index.html`
44+
- `toolbox/text-to-speech/index.html`
45+
- `toolbox/users/index.html`
46+
- `toolbox/videos/index.html`
47+
- `toolbox/voices/index.html`
48+
- `toolbox/worlds/index.html`
49+
50+
## Badge Cleanup
51+
52+
- Normal Tool Display Mode badge remains `64px` by `64px`.
53+
- Fullscreen Tool Display Mode badge now renders at `32px` by `32px`.
54+
- Badge uses `object-fit: contain` so the full square artwork displays.
55+
- Removed the border, circular radius, and panel background that created a ring/crop treatment.
56+
57+
## Validation Notes
58+
59+
- Impacted lanes: `tool-runtime` and `tool-display-mode`.
60+
- Ran `node --check tests/playwright/tools/RootToolsFutureState.spec.mjs`.
61+
- Ran `node --check tests/playwright/tools/ToolDisplayModeNavigation.spec.mjs`.
62+
- Ran `node ./scripts/run-targeted-test-lanes.mjs --lane tool-runtime --lane tool-display-mode`.
63+
- Ran a registry-driven static check confirming no active tool-center-panel placeholder images remain.
64+
- Ran scoped `git diff --check` for changed implementation/test/report files.
65+
- Ran changed-file static validation confirming no inline styles, style blocks, inline scripts, inline event handlers, archived V1/V2 paths, or `start_of_day` file changes were introduced.
66+
- Full samples smoke: skipped by request.
67+
68+
## Manual Test Notes
69+
70+
- Verified by targeted Playwright that active tool pages still render `.tool-center-panel` and visible heading content after placeholder image removal.
71+
- Verified by targeted Playwright that normal badge size is `64x64`.
72+
- Verified by targeted Playwright that fullscreen badge size is `32x32`.
73+
- Verified by targeted Playwright that badge border width and border radius are `0px`.
74+
- Verified by targeted Playwright that badge artwork uses `object-fit: contain`.
75+
- Verified no console errors or failed page requests in the selected lanes.

tests/playwright/tools/RootToolsFutureState.spec.mjs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { expect, test } from "@playwright/test";
22
import { startRepoServer } from "../../helpers/playwrightRepoServer.mjs";
33
import { clearPlaywrightStorage, installPlaywrightStorageIsolation } from "../../helpers/playwrightStorageIsolation.mjs";
44
import { workspaceV2CoverageReporter } from "../../helpers/workspaceV2CoverageReporter.mjs";
5+
import { getActiveToolRegistry, getToolRoute } from "../../../toolbox/toolRegistry.js";
56

67
const PRIMARY_NAVIGATION_ORDER = ["Games", "Toolbox", "Marketplace", "Learn", "Account", "Admin"];
78

@@ -503,3 +504,24 @@ test("tool template future-state page loads from root Theme V2 paths", async ({
503504
await server.close();
504505
}
505506
});
507+
508+
test("active tool pages do not render placeholder center panel images", async ({ page }) => {
509+
const activeRoutes = getActiveToolRegistry()
510+
.map((tool) => getToolRoute(tool))
511+
.filter(Boolean);
512+
const { failedRequests, pageErrors, server } = await openRepoPage(page, `/${activeRoutes[0]}`);
513+
514+
try {
515+
for (const route of activeRoutes) {
516+
await page.goto(`${server.baseUrl}/${route}`, { waitUntil: "networkidle" });
517+
await expect(page.locator(".tool-center-panel")).toBeVisible();
518+
await expect(page.locator(".tool-center-panel > img[src$='image-missing.svg']")).toHaveCount(0);
519+
await expect(page.locator(".tool-center-panel h1, .tool-center-panel h2, .tool-center-panel h3").first()).toBeVisible();
520+
}
521+
expect(failedRequests).toEqual([]);
522+
expect(pageErrors).toEqual([]);
523+
} finally {
524+
await workspaceV2CoverageReporter.stop(page);
525+
await server.close();
526+
}
527+
});

tests/playwright/tools/ToolDisplayModeNavigation.spec.mjs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,10 @@ async function expectToolDisplayModeVisualLayout(page) {
9090
const navigationBox = navigation.getBoundingClientRect();
9191

9292
return {
93+
badgeBorderRadius: getComputedStyle(badge).borderRadius,
94+
badgeBorderWidth: getComputedStyle(badge).borderTopWidth,
9395
badgeHeight: Math.round(badgeBox.height),
96+
badgeObjectFit: getComputedStyle(badge).objectFit,
9497
badgeWidth: Math.round(badgeBox.width),
9598
characterHeight: Math.round(characterBox.height),
9699
characterWidth: Math.round(characterBox.width),
@@ -102,7 +105,10 @@ async function expectToolDisplayModeVisualLayout(page) {
102105
});
103106

104107
expect(layout).toEqual({
108+
badgeBorderRadius: "0px",
109+
badgeBorderWidth: "0px",
105110
badgeHeight: 64,
111+
badgeObjectFit: "contain",
106112
badgeWidth: 64,
107113
characterHeight: 127,
108114
characterWidth: 225,
@@ -113,6 +119,19 @@ async function expectToolDisplayModeVisualLayout(page) {
113119
});
114120
}
115121

122+
async function expectToolDisplayModeFullscreenBadge(page) {
123+
await page.locator("#toolDisplayMode summary").click();
124+
await expect(page.locator("body")).toHaveClass(/tool-focus-mode/);
125+
const badgeSize = await page.locator(".tool-display-mode__badge").evaluate((badge) => {
126+
const box = badge.getBoundingClientRect();
127+
return {
128+
height: Math.round(box.height),
129+
width: Math.round(box.width)
130+
};
131+
});
132+
expect(badgeSize).toEqual({ height: 32, width: 32 });
133+
}
134+
116135
test("Game Design renders identity and navigation rows with registry anchor links", async ({ page }) => {
117136
const failures = await openRepoPage(page, "/toolbox/game-design/index.html?role=user");
118137

@@ -133,6 +152,7 @@ test("Game Design renders identity and navigation rows with registry anchor link
133152
await expect(next).toHaveAttribute("href", "toolbox/game-configuration/index.html?role=user");
134153
await expectPlainNavigationLinks(page);
135154
await expectToolDisplayModeVisualLayout(page);
155+
await expectToolDisplayModeFullscreenBadge(page);
136156
await expectNoPageFailures(failures);
137157
} finally {
138158
await workspaceV2CoverageReporter.stop(page);

toolbox/achievements/index.html

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,7 @@ <h2>Achievements</h2>
3636
</div>
3737
</aside>
3838
<div data-tool-display-mode data-asset-root="assets/theme-v2/images" data-tool-slug="achievements" data-tool-icon-src="assets/theme-v2/images/image-missing.svg" data-tool-character-src="assets/theme-v2/images/image-missing.svg"></div>
39-
<section class="tool-center-panel"><img src="assets/theme-v2/images/image-missing.svg" alt="Achievements preview placeholder">
40-
<h2>Workspace</h2>
39+
<section class="tool-center-panel"><h2>Workspace</h2>
4140
<p>Plan achievement definitions and creator-facing unlock review. This page preserves the shared Theme V2 tool template structure for future rebuild work.</p>
4241
</section>
4342
<aside class="tool-column tool-group-community-marketplace">

0 commit comments

Comments
 (0)