Skip to content

Commit 6f84a1b

Browse files
committed
Advance MIDI Studio V2 export prep section clarity playback completion and UAT polish - PR_26146_076-079-midi-studio-v2-export-section-playback-uat-lane
1 parent 416a08b commit 6f84a1b

12 files changed

Lines changed: 402 additions & 26 deletions
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
# PR_26146_076_079 Bundle Validation
2+
3+
## Summary
4+
- PASS: Export remains the only rendered output workflow owner; Save WAV, Save MP3, and Save OGG wording is preserved.
5+
- PASS: SoundFont and future rendering controls remain red/unwired with actionable tooltip text.
6+
- PASS: Musical sections remain populated-section based and Song Sequence remains the playback/build order source.
7+
- PASS: Octave Timeline canvas exposes and draws musical section identity in bar headers while keeping section color sync.
8+
- PASS: Play Section and global Play natural completion now clear Preview Synth state and restore Play/Stop UI state.
9+
- PASS: Loop playback keeps Bar/Beat playhead state advancing and restart no longer freezes the header/playhead.
10+
- PASS: Song Sheet warnings moved out of the Song Sheet editing surface into a right-column Warnings accordion.
11+
- WARN: `npm run test:workspace-v2` completed with unrelated Workspace Manager/Input Mapping/Text-to-Speech/session failures outside MIDI Studio V2.
12+
13+
## Validation Commands
14+
- PASS: `node --check tools/midi-studio-v2/js/MidiStudioV2App.js`
15+
- PASS: `node --check tools/midi-studio-v2/js/bootstrap.js`
16+
- PASS: `node --check tools/midi-studio-v2/js/controls/ExportPanelControl.js`
17+
- PASS: `node --check tools/midi-studio-v2/js/controls/InstrumentGridControl.js`
18+
- PASS: `node --check tools/midi-studio-v2/js/controls/OctaveTimelineCanvasRenderer.js`
19+
- PASS: `node --check tools/midi-studio-v2/js/controls/SongSheetControl.js`
20+
- PASS: `node --check tests/playwright/tools/MidiStudioV2.spec.mjs`
21+
- PASS: `npx playwright test tests/playwright/tools/MidiStudioV2.spec.mjs --grep "PR076-079" --reporter=list`
22+
- PASS: `npx playwright test tests/playwright/tools/MidiStudioV2.spec.mjs --grep "PR069|PR070|PR071|PR072-075|PR076-079" --reporter=list`
23+
- FAIL unrelated: `npm run test:workspace-v2` ran 72 Workspace Manager V2 tests; 45 passed and 27 failed outside MIDI Studio V2.
24+
- PASS: `git diff --check` completed with only LF/CRLF normalization warnings.
25+
26+
## Targeted Playwright Evidence
27+
- PASS: Export tab owns rendered output controls and uses Save WAV/MP3/OGG wording.
28+
- PASS: Import JSON Manifest and Export JSON wording remains intact for JSON flows.
29+
- PASS: SoundFont, Render Quality, Sample Rate, and drag/drop sequence future controls are red/unwired.
30+
- PASS: Available Sections shows only populated sections and excludes empty Bridge.
31+
- PASS: Song Sequence order updates the canonical model and Octave Timeline section order.
32+
- PASS: Song Sequence, section buttons, and Octave Timeline canvas sections retain synchronized colors.
33+
- PASS: Octave Timeline canvas exposes section header labels for visible musical section identity.
34+
- PASS: Play Section completes naturally, clears Preview Synth state, and leaves Play enabled / Stop disabled.
35+
- PASS: Loop playback advances Bar/Beat playhead state through loop restarts.
36+
- PASS: Warnings are absent from the Song Sheet summary and present in the right-column Warnings accordion.
37+
- PASS: No duplicate editable ownership across visible tab owners was detected by the targeted audit.
38+
- PASS: Play and Stop still work.
39+
40+
## Workspace V2 Failures
41+
The required workspace lane failed outside this PR's MIDI Studio scope. Representative failures:
42+
- Input Mapping V2 capture/highlight state expectations.
43+
- Text to Speech V2 optional schema contract through Workspace Manager V2 toolState.
44+
- Workspace Manager manifest/session tests expecting 11 tool tiles while 12 are present.
45+
- Asset Manager V2 session-context test timeout.
46+
47+
These failures were not caused by the modified MIDI Studio V2 files and were not changed in this PR lane.
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# PR_26146_076_079 Export Ownership Map
2+
3+
| Surface | Owner | Editable/read-only | Wired status | Notes |
4+
| --- | --- | --- | --- | --- |
5+
| Export tab | Export | Workflow owner | Mixed | Only tab that owns rendered audio output workflow. |
6+
| Output Type dropdown | Export | Future rendered output selection | Red/unwired | Retained for WAV, MP3, OGG selection; renderer is not implemented. |
7+
| Save WAV/MP3/OGG button | Export | Future rendered output action | Red/unwired | Uses Save wording for rendered audio and reports WARN when a target exists but no renderer exists. |
8+
| WAV target path | Export | Editable project metadata | Wired | `music.songs[].rendered.wav` |
9+
| MP3 target path | Export | Editable project metadata | Wired | `music.songs[].rendered.mp3` |
10+
| OGG target path | Export | Editable project metadata | Wired | `music.songs[].rendered.ogg` |
11+
| Render Source | Export | Read-only derived | Wired | Selected song, playable event count, canonical song model / octave timeline source. |
12+
| Export Status | Export | Read-only derived | Wired | Includes explicit owner note, renderer status, SoundFont status, and latest WARN/FAIL. |
13+
| SoundFont | Export | Future placeholder | Red/unwired | Rendering prep only; SoundFont rendering intentionally not implemented. |
14+
| Render Quality | Export | Future placeholder | Red/unwired | Not implemented. |
15+
| Sample Rate | Export | Future placeholder | Red/unwired | Not implemented. |
16+
| Normalize Volume | Export | Future placeholder | Red/unwired | Not implemented. |
17+
| Export Stems | Export | Future placeholder | Red/unwired | Not implemented. |
18+
| Loop Export | Export | Future placeholder | Red/unwired | Not implemented. |
19+
| Rendered Target Diagnostics | Diagnostics | Read-only derived | Wired | Displays target paths only; no editable export controls. |
20+
| JSON Details / Export JSON | Diagnostics / Export Status | JSON state workflow | Wired | JSON wording remains Import JSON / Export JSON and is not rendered audio export. |
21+
22+
No rendered audio export controls were added outside the Export tab.
23+
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# PR_26146_076_079 Section Visibility Map
2+
3+
## Source Of Truth
4+
Musical section definitions live in `music.songs[].studioArrangement.songSheet.sections`.
5+
Playback/build order lives in `music.songs[].studioArrangement.songSheet.sequence`.
6+
7+
## Populated Section Behavior
8+
Only sections with user-entered progression content appear in Available Sections. Empty built-in sections, such as an empty Bridge, do not appear until populated.
9+
10+
| Surface | Section behavior | Validation |
11+
| --- | --- | --- |
12+
| Built-in inputs | Intro, Verse, Chorus, Bridge, Outro remain editable | PASS |
13+
| Custom sections | Existing custom sections remain supported | PASS |
14+
| Available Sections | Populated sections only | PASS |
15+
| Song Sequence | Ordered playback/build sequence | PASS |
16+
| Parse Guided Song Sheet | Writes canonical arrangement from sequence order | PASS |
17+
| Octave Timeline bars | Follow parsed musical sequence and color index | PASS |
18+
| Octave Timeline bar headers | Show section label at section starts and expose `data-section-header-labels` | PASS |
19+
| Section buttons | Existing sections use matching colors; missing sections are disabled/red/unwired | PASS |
20+
21+
## Validated Sequence
22+
The PR076-079 targeted test validated:
23+
24+
| Order | Section | Expected state |
25+
| --- | --- | --- |
26+
| 1 | Intro | Populated and color-coded |
27+
| 2 | Verse | Populated and color-coded |
28+
| 3 | Chorus | Populated and color-coded |
29+
| 4 | Verse | Reuses Verse color |
30+
| 5 | Outro | Populated and color-coded |
31+
32+
Bridge remained empty and did not appear in Available Sections. Boss/Victory remained missing musical sections and rendered disabled/red/unwired.
33+
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# PR_26146_076_079 Unwired Control Audit
2+
3+
## Rule
4+
Visible MIDI Studio V2 controls, actions, fields, labels, tab content, and workflows that are not fully implemented must render red/unwired with tooltip/status text.
5+
6+
## Audited Unwired Controls
7+
| Control | Location | Status |
8+
| --- | --- | --- |
9+
| Output Type dropdown | Export | Red/unwired, renderer not implemented |
10+
| Save WAV/MP3/OGG button | Export | Red/unwired, renderer not implemented |
11+
| SoundFont | Export Future Rendering Options | Red/unwired |
12+
| Render Quality | Export Future Rendering Options | Red/unwired |
13+
| Sample Rate | Export Future Rendering Options | Red/unwired |
14+
| Normalize Volume | Export Future Rendering Options | Red/unwired |
15+
| Export Stems | Export Future Rendering Options | Red/unwired |
16+
| Loop Export | Export Future Rendering Options | Red/unwired |
17+
| Drag/drop sequence | Song Setup Song Sequence | Red/unwired |
18+
| Missing section buttons | Octave Timeline section shortcuts | Disabled/red/unwired with `Incomplete:` tooltip |
19+
| Editing History placeholders | Song Setup | Red/unwired |
20+
| Future MIDI Input placeholders | MIDI Import | Red/unwired |
21+
| Workspace proxy manifest actions | Workspace NAV | Red/unwired when workspace proxy owns the action |
22+
23+
## Implemented Controls Kept Normal
24+
| Control | Location | Status |
25+
| --- | --- | --- |
26+
| Play | Global NAV | Wired unless selected song lacks studio arrangement/rendered target |
27+
| Stop | Global NAV | Wired |
28+
| Stop All Audio | Global NAV | Wired |
29+
| Parse Guided Song Sheet | Song Setup | Wired |
30+
| Available Sections / Song Sequence actions | Song Setup | Wired except drag/drop |
31+
| Instrument GM Type / Instrument / Volume / Pan / Octave Range / Transpose | Instruments | Wired |
32+
| Octave Timeline canvas editing | Octave Timeline | Wired |
33+
34+
Targeted Playwright verified red/unwired state for future render controls, missing section controls, and drag/drop sequence.
35+

0 commit comments

Comments
 (0)