Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion assets/theme-v2/partials/header-nav.html
Original file line number Diff line number Diff line change
Expand Up @@ -66,9 +66,9 @@
<a data-nav-link data-toolbox-menu-item data-route="midi" href="toolbox/midi/index.html">MIDI</a>
<a data-nav-link data-toolbox-menu-item data-route="music" href="toolbox/music/index.html">Music</a>
<a data-nav-link data-toolbox-menu-item data-route="particles" href="toolbox/particles/index.html">Particles</a>
<a data-nav-link data-toolbox-menu-item data-route="text-to-speech" href="toolbox/text-to-speech/index.html">Text To Speech</a>
<a data-nav-link data-toolbox-menu-item data-route="videos" href="toolbox/videos/index.html">Videos</a>
<a data-nav-link data-toolbox-menu-item data-route="speech-to-text" href="toolbox/speech-to-text/index.html">Voice Capture</a>
<a data-nav-link data-toolbox-menu-item data-route="text-to-speech" href="toolbox/text-to-speech/index.html">Voice Output</a>
<a data-nav-link data-toolbox-menu-item data-route="voices" href="toolbox/voices/index.html">Voices</a>
</div>
</div>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# PR_26171_037 Manual Validation Notes

## Manual Review
- Reviewed the rebuilt active page at `toolbox/text-to-speech/index.html`.
- Confirmed the page uses Theme V2 paths and shared toolbox partials.
- Confirmed the creator workflow exposes text input, voice selection, rate, pitch, volume, Speak, and Stop controls.
- Confirmed the page copy no longer blocks browser preview behind provider-not-implemented behavior.
- Confirmed unavailable speech synthesis has visible actionable status text.
- Confirmed the incorrect `tools/text2speech/` path is absent.

## Environment Note
Audio output was validated through a Playwright Web Speech API stub that records `speak` and `cancel` calls. Physical speaker playback was not audited in this headless validation environment.
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# PR_26171_037 Requirement Checklist

| Requirement | Result | Notes |
| --- | --- | --- |
| Use archive `old_text2speech-V2` as behavior reference only | PASS | Reviewed archive controls and engine behavior; rebuilt in current architecture. |
| Active tool path is `toolbox/text-to-speech/` | PASS | Page and module live under the active toolbox path. |
| Restore browser TTS capability | PASS | Browser preview uses `TextToSpeechEngine` and Web Speech API. |
| Creator can enter text | PASS | Textarea is wired into preview request creation. |
| Creator can select available browser voice | PASS | Voice select is populated from browser voices and handles empty state. |
| Creator can adjust rate, pitch, and volume | PASS | Sliders update visible values and preview request options. |
| Speak/Preview can call browser TTS | PASS | Playwright confirms `speechSynthesis.speak` path is called when available. |
| Stop speech | PASS | Playwright confirms Stop calls cancel. |
| Visible actionable unavailable-engine error | PASS | Missing Web Speech API shows an unavailable status and disables preview actions. |
| Do not block browser TTS behind provider not implemented | PASS | Browser provider is implemented locally; paid providers remain planning only. |
| Remove placeholder-only provider behavior | PASS | Placeholder generation/export shell behavior was removed from active preview path. |
| JavaScript external only | PASS | Page references external scripts only. |
| No inline script/style/event handlers | PASS | Targeted static validation passed. |
| Theme V2 only | PASS | Page references Theme V2 stylesheet and shared partials. |
| No fake generation | PASS | No fake audio generation added. |
| No database tables | PASS | No schema or database table changes made. |
| No external paid provider integration | PASS | Paid provider adapters are planning metadata only. |
| Remove incorrect `tools/text2speech` path | PASS | Static check confirms the path is absent. |
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# PR_26171_037 Validation Report

## Commands
- `node --test tests\tools\Text2SpeechShell.test.mjs` - PASS
- `npx playwright test tests/playwright/tools/TextToSpeechFunctional.spec.mjs --project=playwright --workers=1 --reporter=list` - PASS
- Targeted static Text To Speech validation script - PASS
- `git diff --check` - PASS
- `npm run test:workspace-v2` - FAIL

## Targeted Coverage
- Page loads from `toolbox/text-to-speech/index.html`.
- Text input updates the preview model.
- Voice select renders the available browser voice list and empty/unavailable state.
- Rate, pitch, and volume sliders update visible values.
- Speak calls the browser TTS path when Web Speech API support is available.
- Stop calls `speechSynthesis.cancel()` through the engine.
- Missing Web Speech API support shows a visible actionable error.
- No inline scripts, style blocks, inline styles, or inline event handlers were detected.
- `tools/text2speech/` was absent.

## Project Workspace Command Note
`npm run test:workspace-v2` is the legacy command name for Project Workspace validation. The command ran and failed in `tests/playwright/tools/RootToolsFutureState.spec.mjs` on five broad root/toolbox expectations:
- Root tools list expected `[data-tools-accordion-list] .control-card` entries but found none.
- Common header test did not find `header.site-header` on one active page.
- Learn/tool template/representative tool tests reported failed requests to `http://127.0.0.1:5501/api/...`.

The targeted Text To Speech unit, static, and Playwright validations passed after the functional rebuild.
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# PR_26171_037 Text To Speech Functional Tool Rebuild

## Purpose
- Rebuilt Text To Speech as a functional browser TTS tool in the active path `toolbox/text-to-speech/`.
- Used `archive/v1-v2/tools/old_text2speech-V2` as behavior reference material only.
- Kept browser Web Speech API as the local functional engine for this PR.

## Implementation
- Replaced the placeholder-only Text To Speech page with a Theme V2 / Tool Template V2 aligned workspace surface.
- Added creator text entry, browser voice selection, rate, pitch, and volume controls with visible values.
- Wired Speak and Stop actions through the existing `TextToSpeechEngine` Web Speech API wrapper.
- Added visible actionable unavailable-engine messaging when `speechSynthesis` is not present.
- Removed provider-not-implemented blocking behavior from the browser preview path.
- Kept future paid provider adapters as planning metadata only.
- Updated current toolbox registration and shared navigation labels from `Voice Output` to `Text To Speech`.
- Confirmed `tools/text2speech/` does not exist.

## Scope Notes
- No archived implementation was copied directly.
- No fake generation was added.
- No database tables were added.
- No external paid provider integration was added.
- JavaScript remains external with no inline script blocks, style blocks, inline styles, or inline event handlers.
54 changes: 26 additions & 28 deletions docs_build/dev/reports/codex_changed_files.txt
Original file line number Diff line number Diff line change
@@ -1,34 +1,32 @@
# git status --short
M docs_build/dev/reports/codex_changed_files.txt
M docs_build/dev/reports/codex_review.diff
M assets/theme-v2/partials/header-nav.html
M src/dev-runtime/admin/header-nav.local.html
M src/dev-runtime/persistence/tool-repositories/game-journey-mock-repository.js
M src/dev-runtime/server/local-api-router.mjs
M src/shared/toolbox/tool-metadata-inventory.js
M tests/tools/Text2SpeechShell.test.mjs
M toolbox/text-to-speech/index.html
?? docs_build/dev/reports/PR_26171_027-text2speech-rebuild-foundation.md
?? docs_build/dev/reports/PR_26171_029-text2speech-tool-shell.md
?? docs_build/dev/reports/PR_26171_031-text2speech-message-model.md
?? docs_build/dev/reports/PR_26171_033-text2speech-generation-workflow.md
?? docs_build/dev/reports/PR_26171_035-text2speech-provider-adapter-plan.md
?? docs_build/dev/reports/PR_26171_text2speech-manual-validation.md
?? docs_build/dev/reports/PR_26171_text2speech-toolbox-path-correction.md
?? docs_build/dev/reports/PR_26171_text2speech-validation.md
?? docs_build/dev/reports/PR_26171_text2speech-zip-verification.md
?? tests/tools/Text2SpeechShell.test.mjs
?? toolbox/text-to-speech/text2speech.js
M toolbox/text-to-speech/text2speech.js
?? docs_build/dev/reports/PR_26171_037-text2speech-functional-tool-rebuild-manual-validation.md
?? docs_build/dev/reports/PR_26171_037-text2speech-functional-tool-rebuild-requirements.md
?? docs_build/dev/reports/PR_26171_037-text2speech-functional-tool-rebuild-validation.md
?? docs_build/dev/reports/PR_26171_037-text2speech-functional-tool-rebuild.md
?? tests/playwright/tools/TextToSpeechFunctional.spec.mjs

# git ls-files --others --exclude-standard
docs_build/dev/reports/PR_26171_027-text2speech-rebuild-foundation.md
docs_build/dev/reports/PR_26171_029-text2speech-tool-shell.md
docs_build/dev/reports/PR_26171_031-text2speech-message-model.md
docs_build/dev/reports/PR_26171_033-text2speech-generation-workflow.md
docs_build/dev/reports/PR_26171_035-text2speech-provider-adapter-plan.md
docs_build/dev/reports/PR_26171_text2speech-manual-validation.md
docs_build/dev/reports/PR_26171_text2speech-toolbox-path-correction.md
docs_build/dev/reports/PR_26171_text2speech-validation.md
docs_build/dev/reports/PR_26171_text2speech-zip-verification.md
tests/tools/Text2SpeechShell.test.mjs
toolbox/text-to-speech/text2speech.js
docs_build/dev/reports/PR_26171_037-text2speech-functional-tool-rebuild-manual-validation.md
docs_build/dev/reports/PR_26171_037-text2speech-functional-tool-rebuild-requirements.md
docs_build/dev/reports/PR_26171_037-text2speech-functional-tool-rebuild-validation.md
docs_build/dev/reports/PR_26171_037-text2speech-functional-tool-rebuild.md
tests/playwright/tools/TextToSpeechFunctional.spec.mjs

# git diff --stat
docs_build/dev/reports/codex_changed_files.txt | 40 +-
docs_build/dev/reports/codex_review.diff | 1428 ++++++++++++++++++++++--
toolbox/text-to-speech/index.html | 76 +-
3 files changed, 1406 insertions(+), 138 deletions(-)
assets/theme-v2/partials/header-nav.html | 2 +-
src/dev-runtime/admin/header-nav.local.html | 2 +-
.../game-journey-mock-repository.js | 2 +-
src/dev-runtime/server/local-api-router.mjs | 13 +-
src/shared/toolbox/tool-metadata-inventory.js | 27 ++-
tests/tools/Text2SpeechShell.test.mjs | 36 ++-
toolbox/text-to-speech/index.html | 78 ++++---
toolbox/text-to-speech/text2speech.js | 260 +++++++++++++++++----
8 files changed, 309 insertions(+), 111 deletions(-)
Loading
Loading