Skip to content

Commit 7aadf9d

Browse files
committed
Apply wide tool layout across Toolbox HTML pages - PR_26155_056-057-tool-layout-all-pages
1 parent 1d191fa commit 7aadf9d

44 files changed

Lines changed: 356 additions & 86 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
# Tool Layout Wide All Tool Pages
2+
3+
Stacked PR bundle:
4+
- PR_26155_056-tool-layout-wide-all-tool-pages
5+
- PR_26155_057-tool-layout-width-validation-report
6+
7+
## Summary
8+
9+
Applied the approved reusable Theme V2 wide tool layout pattern across first-class Toolbox tool pages.
10+
11+
Approved existing Theme V2 classes used:
12+
- `container--tool-wide`
13+
- `tool-workspace--wide`
14+
15+
No CSS was added. No CSS was modified. No page-local CSS, inline styles, style blocks, or tool-local CSS were introduced.
16+
17+
## Implementation Notes
18+
19+
Audited 43 `toolbox/**/*.html` files.
20+
21+
After this PR:
22+
- 41 active first-class Toolbox tool pages use the wide layout pattern.
23+
- `toolbox/project-workspace/index.html` was already compliant before this PR.
24+
- 40 additional active Toolbox tool pages were updated in this PR.
25+
- `toolbox/_tool_template-v2/index.html` was also updated so future copied tool shells inherit the approved wide layout.
26+
- `toolbox/index.html` was skipped because it is the Toolbox listing surface, not a first-class tool shell.
27+
28+
The page-level change is intentionally limited to:
29+
- `class="container"` to `class="container container--tool-wide"`
30+
- `class="tool-workspace"` to `class="tool-workspace tool-workspace--wide"`
31+
32+
During targeted Playwright validation, `toolbox/assets/index.html` exposed a missing ToolDisplayMode character image request derived from the `assets` slug. A targeted asset reference correction was applied to `toolbox/assets/index.html`, `toolbox/code/index.html`, `toolbox/midi/index.html`, and `toolbox/particles/index.html` so they use the existing Theme V2 generic character image at `assets/theme-v2/images/characters/index.png`.
33+
34+
## Validation Notes
35+
36+
Impacted lane:
37+
- Project Workspace targeted lane, because the representative layout coverage lives in the Project Workspace Playwright lane.
38+
- Legacy command/test lane `npm run test:workspace-v2`, because shared toolbox shell wiring changed across active Toolbox pages.
39+
40+
Skipped lanes:
41+
- Full samples smoke test was skipped because no samples changed.
42+
- Archive/deprecated lanes were skipped because no archived material changed.
43+
- Full suite was skipped because the change reused existing Theme V2 layout classes and did not change shared runtime, parser, DB, or cross-tool data behavior.
44+
45+
Commands run:
46+
- `node --check tests/playwright/tools/ProjectWorkspaceMockRepository.spec.mjs`
47+
- `npm run test:lane:project-workspace`
48+
- `npm run test:workspace-v2`
49+
- `git diff --check`
50+
51+
Results:
52+
- `node --check tests/playwright/tools/ProjectWorkspaceMockRepository.spec.mjs`: passed.
53+
- `npm run test:lane:project-workspace`: passed, 6 tests.
54+
- `npm run test:workspace-v2`: passed, 4 tests.
55+
- `git diff --check`: passed.
56+
57+
Manual/targeted page coverage included representative Toolbox tool pages across:
58+
- Create: `toolbox/objects/index.html`
59+
- Build: `toolbox/game-design/index.html`
60+
- Content: `toolbox/assets/index.html`
61+
- Media: `toolbox/audio/index.html`
62+
- Test: `toolbox/controls/index.html`
63+
- Share: `toolbox/publish/index.html`
64+
- Account: `toolbox/saved-data/index.html`
65+
66+
The representative Playwright check verifies:
67+
- `.container--tool-wide` is visible.
68+
- `.tool-workspace--wide` is visible.
69+
- The wide container uses more than 95% of a 1440px viewport.
70+
- The center panel remains dominant.
71+
- Left and right panels remain balanced.
72+
- No inline style attributes, style blocks, or inline script blocks exist on the checked pages.
73+
- No failed requests, page errors, or console errors occur.
74+
75+
## Theme V2 Gap Findings
76+
77+
No Theme V2 gap was found. The existing approved wide layout classes were sufficient.
Lines changed: 148 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
# Tool Layout Width Validation Report
2+
3+
Stacked PR bundle:
4+
- PR_26155_056-tool-layout-wide-all-tool-pages
5+
- PR_26155_057-tool-layout-width-validation-report
6+
7+
## Checked Toolbox HTML Pages
8+
9+
Checked 43 `toolbox/**/*.html` pages:
10+
11+
- `toolbox/_tool_template-v2/index.html`
12+
- `toolbox/achievements/index.html`
13+
- `toolbox/ai-assistant/index.html`
14+
- `toolbox/animations/index.html`
15+
- `toolbox/assets/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/code/index.html`
22+
- `toolbox/colors/index.html`
23+
- `toolbox/community/index.html`
24+
- `toolbox/controls/index.html`
25+
- `toolbox/debug/index.html`
26+
- `toolbox/environments/index.html`
27+
- `toolbox/events/index.html`
28+
- `toolbox/fonts/index.html`
29+
- `toolbox/game-configuration/index.html`
30+
- `toolbox/game-design/index.html`
31+
- `toolbox/game-migration/index.html`
32+
- `toolbox/game-testing/index.html`
33+
- `toolbox/hitboxes/index.html`
34+
- `toolbox/index.html`
35+
- `toolbox/languages/index.html`
36+
- `toolbox/marketplace/index.html`
37+
- `toolbox/midi/index.html`
38+
- `toolbox/music/index.html`
39+
- `toolbox/objects/index.html`
40+
- `toolbox/particles/index.html`
41+
- `toolbox/performance/index.html`
42+
- `toolbox/platform-settings/index.html`
43+
- `toolbox/project-workspace/index.html`
44+
- `toolbox/publish/index.html`
45+
- `toolbox/ratings/index.html`
46+
- `toolbox/saved-data/index.html`
47+
- `toolbox/speech-to-text/index.html`
48+
- `toolbox/sprites/index.html`
49+
- `toolbox/text-to-speech/index.html`
50+
- `toolbox/users/index.html`
51+
- `toolbox/videos/index.html`
52+
- `toolbox/voices/index.html`
53+
- `toolbox/worlds/index.html`
54+
55+
## Pages Updated
56+
57+
Updated active Toolbox tool pages:
58+
59+
- `toolbox/achievements/index.html`
60+
- `toolbox/ai-assistant/index.html`
61+
- `toolbox/animations/index.html`
62+
- `toolbox/assets/index.html`
63+
- `toolbox/audio-effects/index.html`
64+
- `toolbox/audio/index.html`
65+
- `toolbox/build-game/index.html`
66+
- `toolbox/characters/index.html`
67+
- `toolbox/cloud/index.html`
68+
- `toolbox/code/index.html`
69+
- `toolbox/colors/index.html`
70+
- `toolbox/community/index.html`
71+
- `toolbox/controls/index.html`
72+
- `toolbox/debug/index.html`
73+
- `toolbox/environments/index.html`
74+
- `toolbox/events/index.html`
75+
- `toolbox/fonts/index.html`
76+
- `toolbox/game-configuration/index.html`
77+
- `toolbox/game-design/index.html`
78+
- `toolbox/game-migration/index.html`
79+
- `toolbox/game-testing/index.html`
80+
- `toolbox/hitboxes/index.html`
81+
- `toolbox/languages/index.html`
82+
- `toolbox/marketplace/index.html`
83+
- `toolbox/midi/index.html`
84+
- `toolbox/music/index.html`
85+
- `toolbox/objects/index.html`
86+
- `toolbox/particles/index.html`
87+
- `toolbox/performance/index.html`
88+
- `toolbox/platform-settings/index.html`
89+
- `toolbox/publish/index.html`
90+
- `toolbox/ratings/index.html`
91+
- `toolbox/saved-data/index.html`
92+
- `toolbox/speech-to-text/index.html`
93+
- `toolbox/sprites/index.html`
94+
- `toolbox/text-to-speech/index.html`
95+
- `toolbox/users/index.html`
96+
- `toolbox/videos/index.html`
97+
- `toolbox/voices/index.html`
98+
- `toolbox/worlds/index.html`
99+
100+
Updated template source:
101+
102+
- `toolbox/_tool_template-v2/index.html`
103+
104+
Already compliant before this PR:
105+
106+
- `toolbox/project-workspace/index.html`
107+
108+
## Skipped Pages
109+
110+
- `toolbox/index.html`: skipped because it is the Toolbox listing/index surface and does not contain a `tool-workspace` shell.
111+
112+
## Validation Results
113+
114+
Automated audit:
115+
- 43 Toolbox HTML pages checked.
116+
- 42 pages contain a `tool-workspace` shell.
117+
- All 42 tool-workspace shell pages now include `container--tool-wide` and `tool-workspace--wide`.
118+
- No checked Toolbox HTML page contains page-local style blocks, inline style attributes, or inline script blocks.
119+
- ToolDisplayMode badge and character image paths resolve for all Toolbox pages under the current helper rules.
120+
121+
Representative Playwright coverage:
122+
- Create: `toolbox/objects/index.html`
123+
- Build: `toolbox/game-design/index.html`
124+
- Content: `toolbox/assets/index.html`
125+
- Media: `toolbox/audio/index.html`
126+
- Test: `toolbox/controls/index.html`
127+
- Share: `toolbox/publish/index.html`
128+
- Account: `toolbox/saved-data/index.html`
129+
130+
The representative pages all loaded with:
131+
- Visible `.container--tool-wide`
132+
- Visible `.tool-workspace--wide`
133+
- Wide desktop container usage at 1440px
134+
- Balanced side panels
135+
- Dominant center panel
136+
- No console errors
137+
- No failed requests
138+
139+
Project Workspace is not the only visible wide-layout page. The representative Playwright test validates seven additional Toolbox pages across the current creator-facing groups.
140+
141+
## Commands Run
142+
143+
- `node --check tests/playwright/tools/ProjectWorkspaceMockRepository.spec.mjs`
144+
- `npm run test:lane:project-workspace`
145+
- `npm run test:workspace-v2`
146+
- `git diff --check`
147+
148+
All final validation commands passed.

tests/playwright/tools/ProjectWorkspaceMockRepository.spec.mjs

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,51 @@ test("Project Workspace uses the wide Theme V2 tool layout at desktop widths", a
190190
}
191191
});
192192

193+
test("representative Toolbox tool pages use the wide Theme V2 layout", async ({ page }) => {
194+
await page.setViewportSize({ width: 1440, height: 1100 });
195+
const failures = await openRepoPage(page, "/toolbox/objects/index.html");
196+
const representativeToolPages = [
197+
{ group: "Create", path: "/toolbox/objects/index.html" },
198+
{ group: "Build", path: "/toolbox/game-design/index.html" },
199+
{ group: "Content", path: "/toolbox/assets/index.html" },
200+
{ group: "Media", path: "/toolbox/audio/index.html" },
201+
{ group: "Test", path: "/toolbox/controls/index.html" },
202+
{ group: "Share", path: "/toolbox/publish/index.html" },
203+
{ group: "Account", path: "/toolbox/saved-data/index.html" }
204+
];
205+
206+
try {
207+
for (const toolPage of representativeToolPages) {
208+
await page.goto(`${failures.server.baseUrl}${toolPage.path}`, { waitUntil: "networkidle" });
209+
await expect(page.locator(".container--tool-wide")).toBeVisible();
210+
await expect(page.locator(".tool-workspace--wide")).toBeVisible();
211+
await expect(page.locator("style, [style], script:not([src])")).toHaveCount(0);
212+
const layout = await page.locator(".tool-workspace--wide").evaluate((workspace) => {
213+
const container = workspace.closest(".container--tool-wide");
214+
const columns = getComputedStyle(workspace).gridTemplateColumns
215+
.split(" ")
216+
.map((value) => Number.parseFloat(value));
217+
const [left, center, right] = columns;
218+
return {
219+
center,
220+
containerWidth: container.getBoundingClientRect().width,
221+
left,
222+
right,
223+
viewportWidth: window.innerWidth
224+
};
225+
});
226+
expect(layout.containerWidth, `${toolPage.group} page uses wide container`).toBeGreaterThan(1300);
227+
expect(layout.containerWidth / layout.viewportWidth, `${toolPage.group} page reduces side margins`).toBeGreaterThan(0.95);
228+
expect(Math.abs(layout.left - layout.right), `${toolPage.group} side panels are balanced`).toBeLessThan(2);
229+
expect(layout.center, `${toolPage.group} center panel is dominant`).toBeGreaterThan(layout.left);
230+
}
231+
232+
await expectNoPageFailures(failures);
233+
} finally {
234+
await failures.server.close();
235+
}
236+
});
237+
193238
test("Learn Getting Started documents screen and layout guidance", async ({ page }) => {
194239
const failures = await openRepoPage(page, "/learn/index.html");
195240

toolbox/_tool_template-v2/index.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ <h1>Tool Template</h1>
2222
</div>
2323
</section>
2424
<section class="section">
25-
<div class="container">
26-
<div class="tool-workspace">
25+
<div class="container container--tool-wide">
26+
<div class="tool-workspace tool-workspace--wide">
2727
<aside class="tool-column tool-group-ai-learning">
2828
<div class="tool-column-header molten-orange">
2929
<h2>Toolbox</h2>

toolbox/achievements/index.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ <h1>Achievements</h1>
2222
</div>
2323
</section>
2424
<section class="section">
25-
<div class="container">
26-
<div class="tool-workspace">
25+
<div class="container container--tool-wide">
26+
<div class="tool-workspace tool-workspace--wide">
2727
<aside class="tool-column tool-group-community-marketplace">
2828
<div class="tool-column-header molten-orange">
2929
<h2>Achievements</h2>

toolbox/ai-assistant/index.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ <h1>AI Assistant</h1>
2121
</div>
2222
</section>
2323
<section class="section">
24-
<div class="container">
25-
<div class="tool-workspace">
24+
<div class="container container--tool-wide">
25+
<div class="tool-workspace tool-workspace--wide">
2626
<aside class="tool-column tool-group-ai-learning">
2727
<div class="tool-column-header molten-orange">
2828
<h2>Toolbox</h2>

toolbox/animations/index.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ <h1>Animations</h1>
2222
</div>
2323
</section>
2424
<section class="section">
25-
<div class="container">
26-
<div class="tool-workspace">
25+
<div class="container container--tool-wide">
26+
<div class="tool-workspace tool-workspace--wide">
2727
<aside class="tool-column tool-group-build-create">
2828
<div class="tool-column-header molten-orange">
2929
<h2>Animations</h2>

toolbox/assets/index.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ <h1>Assets</h1>
2121
</div>
2222
</section>
2323
<section class="section">
24-
<div class="container">
25-
<div class="tool-workspace">
24+
<div class="container container--tool-wide">
25+
<div class="tool-workspace tool-workspace--wide">
2626
<aside class="tool-column tool-group-content-assets">
2727
<div class="tool-column-header molten-orange">
2828
<h2>Toolbox</h2>
@@ -34,7 +34,7 @@ <h2>Toolbox</h2>
3434
</details>
3535
</div>
3636
</aside>
37-
<div data-tool-display-mode data-asset-root="../../assets/theme-v2/images" data-tool-slug="assets" data-tool-icon-src="../../assets/theme-v2/images/badges/index.png"></div>
37+
<div data-tool-display-mode data-asset-root="../../assets/theme-v2/images" data-tool-slug="assets" data-tool-icon-src="../../assets/theme-v2/images/badges/index.png" data-tool-character-src="../../assets/theme-v2/images/characters/index.png"></div>
3838
<section class="tool-center-panel"><img src="../../assets/theme-v2/images/forge-bot-single.png" alt="ForgeBot">
3939
<h2>Workspace</h2>
4040
<p>Assets: Create sprites, animations, vectors and palettes.</p>

toolbox/audio-effects/index.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ <h1>Audio Effects</h1>
2222
</div>
2323
</section>
2424
<section class="section">
25-
<div class="container">
26-
<div class="tool-workspace">
25+
<div class="container container--tool-wide">
26+
<div class="tool-workspace tool-workspace--wide">
2727
<aside class="tool-column tool-group-ai-learning">
2828
<div class="tool-column-header molten-orange">
2929
<h2>Audio Effects</h2>

toolbox/audio/index.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ <h1>Audio</h1>
2222
</div>
2323
</section>
2424
<section class="section">
25-
<div class="container">
26-
<div class="tool-workspace">
25+
<div class="container container--tool-wide">
26+
<div class="tool-workspace tool-workspace--wide">
2727
<aside class="tool-column tool-group-media-audio">
2828
<div class="tool-column-header molten-orange">
2929
<h2>Audio</h2>

0 commit comments

Comments
 (0)