Skip to content

Commit bbea08c

Browse files
committed
Enforce MIDI Studio V2 SSoT controls and restore Export as its own workflow tab - PR_26146_057-midi-studio-v2-ssot-export-and-future-controls
1 parent a7b7552 commit bbea08c

10 files changed

Lines changed: 580 additions & 31 deletions
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
# PR_26146_057 MIDI Studio V2 SSoT Control Map
2+
3+
Status: PASS
4+
5+
## Tabs
6+
7+
- Song Setup
8+
- Octave Timeline
9+
- Instruments
10+
- Auto-Create Parts
11+
- MIDI Import
12+
- Diagnostics
13+
- Export
14+
15+
## Editable Ownership
16+
17+
| Value | Owning tab/control | Other locations |
18+
| --- | --- | --- |
19+
| Song Name | Song Setup, Song Details | Derived display only |
20+
| Song Id | Song Setup, Song Details | Derived display only |
21+
| Tempo/BPM | Song Setup, Song Details dropdown/input group | Derived display only |
22+
| Key | Song Setup, Key dropdown | Derived display only |
23+
| Style | Song Setup, Style dropdown | Derived display only |
24+
| Notes | Song Setup, Song Details | Derived display only |
25+
| Song Sheet | Song Setup, Song Sheet bucket | No duplicate editable Song Sheet Summary |
26+
| GM Type | Instruments, instrument row Type dropdown | No duplicate editable control |
27+
| GM Instrument/Patch | Instruments, instrument row Instrument dropdown | No duplicate editable control |
28+
| Volume | Instruments, instrument row Volume slider | No duplicate editable control |
29+
| Pan/Balance | Instruments, instrument row Pan slider | No duplicate editable control |
30+
| Mute/Solo/Show/Hide | Instrument performance row state, not duplicated elsewhere | Timeline playback reads canonical lane settings |
31+
| Notes | Octave Timeline canvas | Playback reads canonical song model |
32+
| MIDI source/import/inspect | MIDI Import | Song Setup shows no duplicate source/import controls |
33+
| Export Type | Export, Output Type dropdown | Removed from NAV |
34+
| Save/Export | Export, Save/Export button | Removed from NAV |
35+
36+
## Export
37+
38+
- Export Type options: WAV, MP3, OGG.
39+
- Save/Export action stays red/unwired because rendered audio export is not implemented.
40+
- Rendered target paths/status moved to Export.
41+
- Future Export settings are red unwired placeholders:
42+
- SoundFont
43+
- Render Quality
44+
- Sample Rate
45+
- Normalize Volume
46+
- Export Stems
47+
- Loop Export
48+
49+
## Future Placeholders
50+
51+
Future Instruments placeholders are centralized through `FutureControlsControl` and shared `setUnwiredControlState`:
52+
53+
- Effects
54+
- Reverb
55+
- Chorus
56+
- Delay
57+
- Filter
58+
- Brightness/Tone
59+
- Octave Range
60+
- Transpose
61+
- Velocity
62+
- Duration
63+
- Instrument Settings
64+
65+
Future MIDI Input placeholders are in MIDI Import, disabled, and red/unwired:
66+
67+
- Enable MIDI Input
68+
- Select MIDI Device
69+
- Record MIDI
70+
71+
## Diagnostics
72+
73+
Diagnostics owns derived/read-only data:
74+
75+
- JSON Details
76+
- Timeline Diagnostics
77+
- Audio Diagnostics
78+
- Rendered Preview diagnostics
79+
- Game Music Director derived/debug metadata
80+
- Status/log output
81+
82+
Diagnostic action buttons such as Copy JSON and Clear remain actions, not editable duplicated model fields.
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
# PR_26146_057 MIDI Studio V2 SSoT Export And Future Controls Validation
2+
3+
Status: PASS
4+
5+
## Scope
6+
7+
- Restored `Export` as its own MIDI Studio V2 tab.
8+
- Moved rendered output Type and Save/Export controls out of NAV and into Export.
9+
- Kept rendered export controls honest with shared red unwired styling because rendered audio export is still not implemented.
10+
- Added red unwired future placeholders for Instruments, Export, and MIDI Input roadmap controls.
11+
- Added a wired Play C audition button for the selected instrument in the Instruments tab.
12+
- Preserved canvas-backed Octave Timeline editing and playback from PR056.
13+
14+
## Validation Commands
15+
16+
```powershell
17+
node --check tools/midi-studio-v2/js/controls/FutureControlsControl.js; node --check tools/midi-studio-v2/js/bootstrap.js; node --check tools/midi-studio-v2/js/controls/InstrumentGridControl.js; node --check tools/midi-studio-v2/js/MidiStudioV2App.js; node --check tools/midi-studio-v2/js/controls/RenderedExportActionsControl.js; node --check tests/playwright/tools/MidiStudioV2.spec.mjs
18+
rg -n -P '<script(?![^>]*\bsrc=)' tools/midi-studio-v2/index.html; if ($LASTEXITCODE -eq 1) { exit 0 } else { exit $LASTEXITCODE }
19+
rg -n '<style| on[a-z]+=' tools/midi-studio-v2/index.html; if ($LASTEXITCODE -eq 1) { exit 0 } else { exit $LASTEXITCODE }
20+
npx playwright test tests/playwright/tools/MidiStudioV2.spec.mjs --grep "enforces SSoT export ownership|canvas note editing flow supports hover click drag paint erase and playback|canvas octave timeline edits canonical data"
21+
git diff --check
22+
```
23+
24+
## Results
25+
26+
- Changed-file JavaScript syntax checks: PASS.
27+
- MIDI Studio V2 HTML inline script/style/event-handler guard: PASS.
28+
- Targeted Playwright: PASS, 3 tests passed.
29+
- `git diff --check`: PASS. Git reported line-ending normalization warnings only.
30+
- Full samples smoke test: not run per PR instruction.
31+
32+
## Targeted Playwright Coverage
33+
34+
The targeted test slice proves:
35+
36+
- Export tab exists with Export Type and Save/Export only in the Export tab.
37+
- Export controls no longer exist in the NAV/tool menu.
38+
- Song metadata controls have one owning Song Setup location.
39+
- Instrument configuration controls have one owning Instruments location.
40+
- Diagnostics keeps derived/debug controls read-only.
41+
- Future controls render as disabled red unwired controls with tooltip/status text.
42+
- MIDI Input future controls are red/unwired and inactive.
43+
- Play C audition is present and wired to Preview Synth.
44+
- Canvas Octave Timeline note editing still updates canonical song data.
45+
- Play and Stop still work from edited visible timeline data.
46+
47+
## Coverage Artifacts
48+
49+
- `docs/dev/reports/playwright_v8_coverage_report.txt`
50+
- `docs/dev/reports/coverage_changed_js_guardrail.txt`
51+
52+
Coverage is advisory only. The guardrail reports a low function-coverage warning for `tools/midi-studio-v2/js/MidiStudioV2App.js`; all changed runtime JS loaded in the targeted browser run.

0 commit comments

Comments
 (0)