Skip to content

Commit 4dc54cd

Browse files
author
DavidQ
committed
Fix Text to Speech V2 fullscreen layout and stale payload source handling - PR_26130_021-text-to-speech-v2-fullscreen-and-source-fix
1 parent 16c80db commit 4dc54cd

12 files changed

Lines changed: 650 additions & 45 deletions

File tree

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# PR_26130_021-text-to-speech-v2-fullscreen-and-source-fix
2+
3+
## Summary
4+
5+
- Added Text to Speech V2 fullscreen-style workspace behavior for Hide Header and Details.
6+
- Kept left and right columns pinned to the sides while the center work column fills the remaining horizontal space.
7+
- Rejected stale Text to Speech V2 object/queue payloads before render or import, including stale session/local runtime state.
8+
- Updated Workspace Manager V2 launch integration so `text2speach-V2` session hydration requires a root array payload and launch logs the exact manifest array source.
9+
- Kept Output Summary limited to the active validated root array payload.
10+
- Confirmed sample phase 19 item 1903 loads `samples/phase-19/1903/sample.1903.text2speach-V2.json`.
11+
12+
## Implementation Notes
13+
14+
- `tools/text2speach-V2/js/controls/TextToSpeechShellControl.js` owns the Text to Speech V2 fullscreen shell state, body classes, summary metadata, and fullscreen toggle behavior.
15+
- `tools/text2speach-V2/index.html` and `tools/text2speach-V2/styles/text2speach-V2.css` now use the common fullscreen layout classes with Text to Speech V2-specific sizing.
16+
- `tools/text2speach-V2/js/TextToSpeechToolApp.js` rejects stale object payloads containing `queue`, runtime selection/status fields, duplicated option fields, or root `text` before schema validation/render.
17+
- Text to Speech V2 Output Summary now renders only `queueControl.selectedQueue()`, so runtime status, selected item, and queued speech state are not shown as persisted payload.
18+
- `tools/workspace-manager-v2/js/services/WorkspaceManagerV2ContextService.js` rejects stale `workspace.tools.text2speach-V2` session data unless `session.data` is an array.
19+
- `tools/workspace-manager-v2/js/WorkspaceManagerV2App.js` logs the exact Text to Speech V2 launch source as `root.tools.text2speach-V2` array data before navigation.
20+
- Current Workspace Manager V2 game manifests keep `game.workspace.tools.text2speach-V2` as root arrays of named speech items.
21+
22+
## Validation
23+
24+
- Passed: `npm run test:workspace-v2`
25+
- Result: 33 passed.
26+
- Passed: targeted Playwright rerun for Text to Speech V2 URL JSON/fullscreen coverage after layout adjustment.
27+
- Passed: `git diff --check`
28+
- Note: Git printed line-ending normalization warnings for several existing Windows-touched files, but no whitespace errors were reported.
29+
- Passed: JavaScript syntax checks for changed Text to Speech V2, Workspace Manager V2, and Playwright files.
30+
- Passed: JSON parse/root-array checks for the updated game manifests and sample 1903 JSON.
31+
32+
## Notes
33+
34+
- The first full `npm run test:workspace-v2` attempt timed out at the command timeout limit before useful output. It was rerun with a longer timeout and passed.
35+
- During development, one fullscreen assertion caught the right column expanding too wide; the fullscreen grid constraints were tightened and the focused Playwright test passed before the full suite rerun.
36+
37+
## Skipped
38+
39+
- Full samples smoke test was not run. The BUILD request explicitly said not to run the full samples smoke test; this PR is scoped to Text to Speech V2 fullscreen/source behavior, sample 1903 loading, and Workspace Manager V2 launch integration.
40+
41+
## Scope Guard
42+
43+
- No `start_of_day` files changed.
44+
- No unrelated schemas were changed.
45+
- No unrelated tools were changed.
46+
- No old Text to Speech V2 root object/queue wrapper was reintroduced.

games/Asteroids/game.manifest.json

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,53 @@
208208
}
209209
}
210210
},
211+
"text2speach-V2": [
212+
{
213+
"id": "narrator-welcome",
214+
"name": "Narrator welcome",
215+
"text": "Welcome to Toolbox Aid. This is the default Text to Speech V2 sample line for previewing narration, prompts, and menu feedback.",
216+
"gender": "any",
217+
"language": "en-US",
218+
"voice": "mock-google-us-english",
219+
"voiceAge": "any",
220+
"volume": 1,
221+
"rate": 1,
222+
"pitch": 1,
223+
"queueMode": "replace",
224+
"characterPreset": "narrator",
225+
"ssmlLikePreset": "normal"
226+
},
227+
{
228+
"id": "hero-ready",
229+
"name": "Hero ready",
230+
"text": "Systems ready. The hero prompt is queued for an upbeat menu confirmation.",
231+
"gender": "male-preferred",
232+
"language": "en-GB",
233+
"voice": "mock-google-uk-english-male",
234+
"voiceAge": "teen",
235+
"volume": 1,
236+
"rate": 1.2,
237+
"pitch": 1.4,
238+
"queueMode": "append",
239+
"characterPreset": "dramatic",
240+
"ssmlLikePreset": "normal"
241+
},
242+
{
243+
"id": "alert-warning",
244+
"name": "Alert warning",
245+
"text": "Warning. Incoming hazard detected. Please confirm the next action.",
246+
"gender": "female-preferred",
247+
"language": "en-US",
248+
"voice": "mock-microsoft-zira",
249+
"voiceAge": "adult",
250+
"volume": 0.9,
251+
"rate": 1.3,
252+
"pitch": 0.9,
253+
"queueMode": "replace",
254+
"characterPreset": "alert",
255+
"ssmlLikePreset": "normal"
256+
}
257+
],
211258
"vector-map-editor": {
212259
"vectorMapDocument": {
213260
"schema": "html-js-gaming.vector-map",

games/GravityWell/game.manifest.json

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,54 @@
100100
"source": "manifest"
101101
}
102102
}
103-
}
103+
},
104+
"text2speach-V2": [
105+
{
106+
"id": "narrator-welcome",
107+
"name": "Narrator welcome",
108+
"text": "Welcome to Toolbox Aid. This is the default Text to Speech V2 sample line for previewing narration, prompts, and menu feedback.",
109+
"gender": "any",
110+
"language": "en-US",
111+
"voice": "mock-google-us-english",
112+
"voiceAge": "any",
113+
"volume": 1,
114+
"rate": 1,
115+
"pitch": 1,
116+
"queueMode": "replace",
117+
"characterPreset": "narrator",
118+
"ssmlLikePreset": "normal"
119+
},
120+
{
121+
"id": "hero-ready",
122+
"name": "Hero ready",
123+
"text": "Systems ready. The hero prompt is queued for an upbeat menu confirmation.",
124+
"gender": "male-preferred",
125+
"language": "en-GB",
126+
"voice": "mock-google-uk-english-male",
127+
"voiceAge": "teen",
128+
"volume": 1,
129+
"rate": 1.2,
130+
"pitch": 1.4,
131+
"queueMode": "append",
132+
"characterPreset": "dramatic",
133+
"ssmlLikePreset": "normal"
134+
},
135+
{
136+
"id": "alert-warning",
137+
"name": "Alert warning",
138+
"text": "Warning. Incoming hazard detected. Please confirm the next action.",
139+
"gender": "female-preferred",
140+
"language": "en-US",
141+
"voice": "mock-microsoft-zira",
142+
"voiceAge": "adult",
143+
"volume": 0.9,
144+
"rate": 1.3,
145+
"pitch": 0.9,
146+
"queueMode": "replace",
147+
"characterPreset": "alert",
148+
"ssmlLikePreset": "normal"
149+
}
150+
]
104151
}
105152
}
106153
}

games/pong/game.manifest.json

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,54 @@
9090
"source": "manifest"
9191
}
9292
}
93-
}
93+
},
94+
"text2speach-V2": [
95+
{
96+
"id": "narrator-welcome",
97+
"name": "Narrator welcome",
98+
"text": "Welcome to Toolbox Aid. This is the default Text to Speech V2 sample line for previewing narration, prompts, and menu feedback.",
99+
"gender": "any",
100+
"language": "en-US",
101+
"voice": "mock-google-us-english",
102+
"voiceAge": "any",
103+
"volume": 1,
104+
"rate": 1,
105+
"pitch": 1,
106+
"queueMode": "replace",
107+
"characterPreset": "narrator",
108+
"ssmlLikePreset": "normal"
109+
},
110+
{
111+
"id": "hero-ready",
112+
"name": "Hero ready",
113+
"text": "Systems ready. The hero prompt is queued for an upbeat menu confirmation.",
114+
"gender": "male-preferred",
115+
"language": "en-GB",
116+
"voice": "mock-google-uk-english-male",
117+
"voiceAge": "teen",
118+
"volume": 1,
119+
"rate": 1.2,
120+
"pitch": 1.4,
121+
"queueMode": "append",
122+
"characterPreset": "dramatic",
123+
"ssmlLikePreset": "normal"
124+
},
125+
{
126+
"id": "alert-warning",
127+
"name": "Alert warning",
128+
"text": "Warning. Incoming hazard detected. Please confirm the next action.",
129+
"gender": "female-preferred",
130+
"language": "en-US",
131+
"voice": "mock-microsoft-zira",
132+
"voiceAge": "adult",
133+
"volume": 0.9,
134+
"rate": 1.3,
135+
"pitch": 0.9,
136+
"queueMode": "replace",
137+
"characterPreset": "alert",
138+
"ssmlLikePreset": "normal"
139+
}
140+
]
94141
}
95142
}
96143
}

0 commit comments

Comments
 (0)