Skip to content

Commit cbedbf3

Browse files
committed
PR_26171_067 tts profile emotion table foundation
1 parent 6d2dfa5 commit cbedbf3

14 files changed

Lines changed: 5257 additions & 1554 deletions
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# PR_26171_067 Instruction Compliance Checklist
2+
3+
## Required Reads
4+
5+
- PASS: Read `docs_build/dev/PROJECT_INSTRUCTIONS.md` before implementation.
6+
- PASS: Read `docs_build/dev/PROJECT_MULTI_PC.txt` before implementation.
7+
- PASS: Read repository `AGENTS.md` instructions from the active workspace context.
8+
- PASS: Read relevant target files before editing.
9+
10+
## Gate Checks
11+
12+
- PASS: Started from `main`.
13+
- PASS: Pulled latest `origin/main`.
14+
- PASS: Repo was clean before branch creation.
15+
- PASS: Created scoped branch `pr/26171-067-tts-profile-emotion-table-foundation`.
16+
- PASS: PR number `067` is odd and assigned to Laptop / Environment 2.
17+
- PASS: TTS Studio is within Laptop ownership.
18+
- PASS: Active path is `toolbox/text-to-speech/`.
19+
- PASS: No wrong `tools/text2speech/` path was created.
20+
- PASS: No database changes were made.
21+
- PASS: No placeholder-only provider blocking behavior was introduced.
22+
23+
## Required Artifacts
24+
25+
- PASS: PR-specific report created.
26+
- PASS: Parent-child table checklist created.
27+
- PASS: Message/TTS contract checklist created.
28+
- PASS: Validation report created.
29+
- PASS: Manual validation notes created.
30+
- PASS: `codex_review.diff` and `codex_changed_files.txt` will be generated from the final scoped diff.
31+
- PASS: Repo-structured delta ZIP will be created under `tmp/`.
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# PR_26171_067 Manual Validation Notes
2+
3+
## Notes
4+
5+
- Verified TTS Studio keeps the active path `toolbox/text-to-speech/`.
6+
- Verified the page uses Theme V2 classes and external JavaScript only.
7+
- Verified the profile table can open child Emotion Settings by clicking the profile row.
8+
- Verified `Default Balanced Profile` delete is disabled because it is marked in use by Message Studio data.
9+
- Verified default `Neutral` emotion delete is disabled because it is marked in use by Message Parts.
10+
- Verified Add Profile, Edit Profile, Add Emotion, and Edit Emotion inline rows through targeted Playwright validation.
11+
- Verified Message Studio remains separate and its existing TTS dropdown smoke path still passes.
12+
- Verified no `tools/text2speech/` path was created.
13+
- Verified no database files were changed.
14+
15+
## Follow Up
16+
17+
- Future persistence can connect TTS Studio profile authoring to the existing Local API profile contract once that API ownership is assigned.
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# PR_26171_067 Message TTS Contract Checklist
2+
3+
## Ownership
4+
5+
- PASS: Message Studio owns message text and ordered message parts.
6+
- PASS: TTS Studio owns reusable TTS Profiles and per-profile Emotion Settings.
7+
- PASS: `src/engine/audio/` remains the playback owner.
8+
- PASS: Audio playback results remain owned by the audio engine flow.
9+
- PASS: Message Studio and TTS Studio are not merged into one tool.
10+
11+
## Contract Readiness
12+
13+
- PASS: TTS Studio exposes `TTS_PROFILE_CONTRACT_VERSION` with value `tts-profile-emotion-v1`.
14+
- PASS: TTS Studio exports `createMessageStudioTtsProfileOptions`.
15+
- PASS: Exported profile options include stable keys, active state, display name, language, provider key, voice name, and active emotion settings.
16+
- PASS: Emotion settings include emotion key, display label, pitch, rate, volume, and SSML-like preset.
17+
- PASS: The output summary shows the contract version and Message Studio compatible profile options for local diagnostics.
18+
- PASS: Existing Message Studio dropdown smoke validation still passes.
19+
20+
## Boundaries
21+
22+
- PASS: No database changes were introduced.
23+
- PASS: No future provider behavior was hardcoded.
24+
- PASS: No browser-owned product data was introduced as source of truth.
25+
- PASS: Default profile data is limited to a local down-the-middle fallback until the API/data contract exists.
26+
- PASS: Existing Message Studio Local API profile shape remains untouched.
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# PR_26171_067 Parent Child Table Checklist
2+
3+
## Parent Table
4+
5+
- PASS: Parent table label is `TTS Profiles`.
6+
- PASS: Parent table lives in `toolbox/text-to-speech/`.
7+
- PASS: Parent table columns are Profile Name, Voice, Language, Gender, Age, Emotion Count, Status, Actions.
8+
- PASS: Default rows include `Default Balanced Profile`, `Man Profile 1`, and `Woman Profile 2`.
9+
- PASS: Parent row click opens or closes the child Emotion Settings row.
10+
- PASS: One selected profile row owns the visible child subtable at a time.
11+
- PASS: Parent profile count is visible in the summary stats.
12+
13+
## Parent Actions
14+
15+
- PASS: Add Profile opens a new inline row below the parent table rows.
16+
- PASS: Edit Profile opens an inline edit row for the selected profile.
17+
- PASS: Save Profile validates required Profile Name and Language values.
18+
- PASS: Duplicate Profile Name is blocked with a visible actionable error.
19+
- PASS: Cancel Profile closes the inline editor without applying changes.
20+
- PASS: Delete Profile removes unused profiles.
21+
- PASS: Delete Profile is disabled when the profile has Message Studio usage.
22+
23+
## Child Table
24+
25+
- PASS: Child table label is `Emotion Settings`.
26+
- PASS: Child table opens under the selected TTS Profile row.
27+
- PASS: Child columns are Emotion, Pitch, Rate, Volume, SSML-like Preset, Status, Actions.
28+
- PASS: Default neutral emotion is provided for every default profile.
29+
- PASS: Emotion count is visible in both the profile row and summary stats.
30+
31+
## Child Actions
32+
33+
- PASS: Add Emotion opens a new inline row in the child table.
34+
- PASS: Edit Emotion opens an inline edit row.
35+
- PASS: Save Emotion validates selected profile and unique emotion per profile.
36+
- PASS: Cancel Emotion closes the inline editor without applying changes.
37+
- PASS: Delete Emotion removes unused emotions.
38+
- PASS: Delete Emotion is disabled when the emotion has Message Parts usage.
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
# PR_26171_067 TTS Profile Emotion Table Foundation
2+
3+
## Summary
4+
5+
TTS Studio now presents a parent TTS Profiles table with an expandable child Emotion Settings table. The active tool remains `toolbox/text-to-speech/`, uses Theme V2, and keeps all JavaScript external.
6+
7+
## Scope
8+
9+
- Updated `toolbox/text-to-speech/index.html` to expose the requested parent and child table surfaces.
10+
- Updated `toolbox/text-to-speech/text2speech.js` to seed reusable profiles, render child emotion settings, support inline add/edit rows, and block delete actions when profile or emotion usage is marked by Message Studio data.
11+
- Added a TTS profile contract helper that returns Message Studio compatible options without moving ownership into Message Studio.
12+
- Updated targeted TTS browser and unit validation.
13+
14+
## Requirement Evidence
15+
16+
- PASS: Active path remains `toolbox/text-to-speech/`.
17+
- PASS: Parent table is TTS Profiles.
18+
- PASS: Clicking a profile row opens the child Emotion Settings subtable.
19+
- PASS: Parent rows include `Man Profile 1` and `Woman Profile 2`.
20+
- PASS: Parent columns are Profile Name, Voice, Language, Gender, Age, Emotion Count, Status, Actions.
21+
- PASS: Child columns are Emotion, Pitch, Rate, Volume, SSML-like Preset, Status, Actions.
22+
- PASS: Add Profile opens an inline add row under the parent table.
23+
- PASS: Edit Profile opens an inline edit row.
24+
- PASS: Add Emotion opens an inline add row in the child table.
25+
- PASS: Edit Emotion opens an inline edit row.
26+
- PASS: Delete profile is disabled when usage count indicates Message Studio data uses it.
27+
- PASS: Delete emotion is disabled when usage count indicates Message Parts use it.
28+
- PASS: Default balanced profile and default neutral emotion are provided.
29+
- PASS: Message Studio compatible profile options are exported for a future API/data contract.
30+
- PASS: Message Studio and TTS Studio remain separate tools.
31+
- PASS: No database changes were made.
32+
- PASS: Theme V2 only; no page-local CSS, tool-local CSS, inline styles, style blocks, or inline handlers.
33+
34+
## Validation
35+
36+
- PASS: `node --check toolbox\text-to-speech\text2speech.js`.
37+
- PASS: `node --check tests\playwright\tools\TextToSpeechFunctional.spec.mjs`.
38+
- PASS: `node --check tests\tools\Text2SpeechShell.test.mjs`.
39+
- PASS: HTML inline style/script/event scan for `toolbox/text-to-speech/index.html`.
40+
- PASS: `node --test tests/tools/Text2SpeechShell.test.mjs`.
41+
- PASS: `npx playwright test tests/playwright/tools/TextToSpeechFunctional.spec.mjs --project=playwright --workers=1 --reporter=list`.
42+
- PASS: `npx playwright test tests/playwright/tools/MessagesTool.spec.mjs --project=playwright --workers=1 --reporter=list`.
43+
- PASS: `npm run test:workspace-v2` (legacy command name; user-facing language is Project Workspace).
44+
45+
## Out Of Scope
46+
47+
- No Message Studio merge.
48+
- No new provider behavior.
49+
- No generated audio export.
50+
- No database schema, seed, or persistence change.
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# PR_26171_067 Validation Report
2+
3+
## Commands Run
4+
5+
- `git branch --show-current`
6+
- PASS: started from `main`.
7+
- `git checkout main`
8+
- PASS.
9+
- `git pull origin main`
10+
- PASS: already up to date.
11+
- `git status --short`
12+
- PASS: clean before branch creation.
13+
- `node --check toolbox\text-to-speech\text2speech.js`
14+
- PASS.
15+
- `node --check tests\playwright\tools\TextToSpeechFunctional.spec.mjs`
16+
- PASS.
17+
- `node --check tests\tools\Text2SpeechShell.test.mjs`
18+
- PASS.
19+
- `Select-String -Path toolbox\text-to-speech\index.html -Pattern '<style|<script(?![^>]+src=)|\son\w+=|style='`
20+
- PASS: no matches.
21+
- `node --test tests/tools/Text2SpeechShell.test.mjs`
22+
- PASS: 4 tests passed.
23+
- `npx playwright test tests/playwright/tools/TextToSpeechFunctional.spec.mjs --project=playwright --workers=1 --reporter=list`
24+
- PASS: 2 tests passed.
25+
- Covers default profiles, expandable Emotion Settings, inline add/edit rows, delete-disabled usage states, and existing speech composition.
26+
- `npx playwright test tests/playwright/tools/MessagesTool.spec.mjs --project=playwright --workers=1 --reporter=list`
27+
- PASS: 2 tests passed.
28+
- Covers Message Studio smoke compatibility for the existing TTS dropdown and audio-engine path.
29+
- `npm run test:workspace-v2`
30+
- PASS: 5 Project Workspace tests passed.
31+
- Note: command name is legacy; user-facing language is Project Workspace.
32+
33+
## Coverage
34+
35+
- PASS: `docs_build/dev/reports/playwright_v8_coverage_report.txt` produced changed runtime JS coverage.
36+
- PASS: `toolbox/text-to-speech/text2speech.js` covered by targeted browser validation.
37+
- NOTE: The advisory coverage helper also listed the previous HEAD Message Studio files because it includes `git diff-tree HEAD` before this PR is committed. Those Message Studio files are unchanged in this PR and were separately smoke-checked with `MessagesTool.spec.mjs`.
38+
39+
## Skipped
40+
41+
- Database validation skipped because no database schema, seed, or persistence implementation changed.
42+
- Full samples validation skipped because no samples changed.
43+
- External TTS provider validation skipped because this PR does not implement provider behavior.
Lines changed: 31 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,34 @@
1-
# Codex Changed Files - PR_26171_065-message-studio-parent-child-table-foundation
2-
3-
## Git Status Short
4-
```text
5-
M docs_build/dev/reports/coverage_changed_js_guardrail.txt
1+
# git status --short
2+
M docs_build/dev/reports/codex_changed_files.txt
3+
M docs_build/dev/reports/codex_review.diff
4+
M docs_build/dev/reports/coverage_changed_js_guardrail.txt
65
M docs_build/dev/reports/playwright_v8_coverage_report.txt
7-
M tests/playwright/tools/MessagesTool.spec.mjs
8-
M toolbox/messages/index.html
9-
M toolbox/messages/message-tts-service-registry.js
10-
M toolbox/messages/messages.js
11-
?? docs_build/dev/reports/PR_26171_065-instruction-compliance-checklist.md
12-
?? docs_build/dev/reports/PR_26171_065-manual-validation-notes.md
13-
?? docs_build/dev/reports/PR_26171_065-message-studio-parent-child-table-foundation.md
14-
?? docs_build/dev/reports/PR_26171_065-parent-child-table-checklist.md
15-
?? docs_build/dev/reports/PR_26171_065-validation.md
16-
```
17-
18-
## Scoped Diff Stat
19-
```text
20-
.../dev/reports/coverage_changed_js_guardrail.txt | 2 +
21-
.../dev/reports/playwright_v8_coverage_report.txt | 43 +-
22-
tests/playwright/tools/MessagesTool.spec.mjs | 317 +++++---------
23-
toolbox/messages/index.html | 29 +-
24-
toolbox/messages/message-tts-service-registry.js | 8 +-
25-
toolbox/messages/messages.js | 486 ++++++++++++---------
26-
6 files changed, 415 insertions(+), 470 deletions(-)
27-
```
28-
29-
## Changed Files
30-
- toolbox/messages/index.html
31-
- toolbox/messages/messages.js
32-
- toolbox/messages/message-tts-service-registry.js
33-
- tests/playwright/tools/MessagesTool.spec.mjs
34-
- docs_build/dev/reports/coverage_changed_js_guardrail.txt
35-
- docs_build/dev/reports/playwright_v8_coverage_report.txt
36-
- docs_build/dev/reports/PR_26171_065-message-studio-parent-child-table-foundation.md
37-
- docs_build/dev/reports/PR_26171_065-parent-child-table-checklist.md
38-
- docs_build/dev/reports/PR_26171_065-validation.md
39-
- docs_build/dev/reports/PR_26171_065-manual-validation-notes.md
40-
- docs_build/dev/reports/PR_26171_065-instruction-compliance-checklist.md
41-
- docs_build/dev/reports/codex_review.diff
42-
- docs_build/dev/reports/codex_changed_files.txt
6+
M tests/playwright/tools/TextToSpeechFunctional.spec.mjs
7+
M tests/tools/Text2SpeechShell.test.mjs
8+
M toolbox/text-to-speech/index.html
9+
M toolbox/text-to-speech/text2speech.js
10+
?? docs_build/dev/reports/PR_26171_067-instruction-compliance-checklist.md
11+
?? docs_build/dev/reports/PR_26171_067-manual-validation-notes.md
12+
?? docs_build/dev/reports/PR_26171_067-message-tts-contract-checklist.md
13+
?? docs_build/dev/reports/PR_26171_067-parent-child-table-checklist.md
14+
?? docs_build/dev/reports/PR_26171_067-tts-profile-emotion-table-foundation.md
15+
?? docs_build/dev/reports/PR_26171_067-validation.md
4316

44-
## Validation
45-
- PASS: `node --check toolbox\messages\messages.js`.
46-
- PASS: `node --check toolbox\messages\message-tts-service-registry.js`.
47-
- PASS: `node --check tests\playwright\tools\MessagesTool.spec.mjs`.
48-
- PASS: HTML inline style/script/event scan for `toolbox/messages/index.html`.
49-
- PASS: `npx playwright test tests/playwright/tools/MessagesTool.spec.mjs --project=playwright --workers=1 --reporter=list`.
50-
- PASS: `npm run test:workspace-v2` (legacy command name; user-facing language is Project Workspace).
17+
# git ls-files --others --exclude-standard
18+
docs_build/dev/reports/PR_26171_067-instruction-compliance-checklist.md
19+
docs_build/dev/reports/PR_26171_067-manual-validation-notes.md
20+
docs_build/dev/reports/PR_26171_067-message-tts-contract-checklist.md
21+
docs_build/dev/reports/PR_26171_067-parent-child-table-checklist.md
22+
docs_build/dev/reports/PR_26171_067-tts-profile-emotion-table-foundation.md
23+
docs_build/dev/reports/PR_26171_067-validation.md
5124

52-
## ZIP
53-
- Path: `tmp/PR_26171_065-message-studio-parent-child-table-foundation_delta.zip`.
25+
# git diff --stat
26+
docs_build/dev/reports/codex_changed_files.txt | 75 +-
27+
docs_build/dev/reports/codex_review.diff | 2766 +++++++++-----------
28+
.../dev/reports/coverage_changed_js_guardrail.txt | 9 +-
29+
.../dev/reports/playwright_v8_coverage_report.txt | 27 +-
30+
.../tools/TextToSpeechFunctional.spec.mjs | 42 +-
31+
tests/tools/Text2SpeechShell.test.mjs | 48 +
32+
toolbox/text-to-speech/index.html | 40 +-
33+
toolbox/text-to-speech/text2speech.js | 728 +++++-
34+
8 files changed, 2153 insertions(+), 1582 deletions(-)

0 commit comments

Comments
 (0)