Skip to content

Commit 61d63c6

Browse files
committed
Advance MIDI Studio V2 production workflow with section templates regeneration safety instrument polish and export readiness - PR_26146_089-092-midi-studio-v2-production-workflow-lane
1 parent 69b797b commit 61d63c6

10 files changed

Lines changed: 584 additions & 25 deletions
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# PR_26146_089-092 Bundle Validation
2+
3+
## Scope
4+
- Completed MIDI Studio V2 production workflow lane for section templates, safe regeneration, instrument workflow polish, and export readiness.
5+
- Baseline: PR_26146_085-088.
6+
7+
## Changed Surface
8+
- `tools/midi-studio-v2/index.html`
9+
- `tools/midi-studio-v2/js/bootstrap.js`
10+
- `tools/midi-studio-v2/js/MidiStudioV2App.js`
11+
- `tools/midi-studio-v2/js/controls/SongSheetControl.js`
12+
- `tools/midi-studio-v2/js/controls/InstrumentGridControl.js`
13+
- `tools/midi-studio-v2/js/controls/ExportPanelControl.js`
14+
- `tests/playwright/tools/MidiStudioV2.spec.mjs`
15+
16+
## Validation
17+
- PASS: changed-file syntax checks
18+
- `node --check tools/midi-studio-v2/js/controls/SongSheetControl.js`
19+
- `node --check tools/midi-studio-v2/js/MidiStudioV2App.js`
20+
- `node --check tools/midi-studio-v2/js/controls/ExportPanelControl.js`
21+
- `node --check tools/midi-studio-v2/js/controls/InstrumentGridControl.js`
22+
- `node --check tests/playwright/tools/MidiStudioV2.spec.mjs`
23+
- PASS: targeted MIDI Studio Playwright
24+
- `npx playwright test tests/playwright/tools/MidiStudioV2.spec.mjs -g "PR089-092"`
25+
- Result: 1 passed.
26+
- PASS: neighboring MIDI Studio regression cluster
27+
- `npx playwright test tests/playwright/tools/MidiStudioV2.spec.mjs -g "PR085-088|PR089-092|keeps Export tab usable|enforces SSoT export ownership|audits PR065 visible control ownership"`
28+
- Result: 5 passed.
29+
- FAIL: `npm run test:workspace-v2`
30+
- Result: 48 passed, 24 failed in `tests/playwright/tools/WorkspaceManagerV2.spec.mjs`.
31+
- Failures are outside the MIDI Studio V2 changed surface.
32+
- Representative failures: Input Mapping V2 capture state did not clear; multiple Workspace Manager V2 tests expected 11 tool tiles but observed 12; one temporary UAT manifest seeding test timed out.
33+
- Runner-generated generic workspace report side effects were restored after recording this result.
34+
- PASS: `git diff --check`
35+
- Only Git CRLF normalization warnings were printed.
36+
37+
## Playwright Coverage Notes
38+
- `docs/dev/reports/playwright_v8_coverage_report.txt` and `docs/dev/reports/coverage_changed_js_guardrail.txt` were refreshed by the targeted MIDI Studio Playwright run.
39+
- Changed runtime JS coverage guardrail reports no warnings for the changed MIDI runtime JS files.
40+
41+
## Result
42+
PASS for changed-file syntax, targeted MIDI Studio behavior, neighboring MIDI Studio regressions, coverage guardrail, and diff hygiene.
43+
Required workspace-v2 command was executed and failed in unrelated Workspace Manager/Input Mapping/Text to Speech areas.
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# PR_26146_089-092 Instrument Workflow Audit
2+
3+
## Ownership
4+
- Instrument lane data remains owned by `music.songs[].studioArrangement.lanes`.
5+
- Preview instrument settings remain owned by `music.songs[].studioArrangement.previewLaneSettings`.
6+
- No engine core ownership was changed.
7+
8+
## Duplication
9+
- Duplicating the selected instrument still copies lane text and preview settings.
10+
- The duplicate is inserted after the source lane and becomes the selected instrument.
11+
- Workflow status is exposed on the instrument list, timeline quick list, and audition keyboard through `data-instrument-workflow-status`.
12+
13+
## Ordering
14+
- Move Up and Move Down continue to reorder the canonical lane key order.
15+
- The selected instrument remains selected after reordering.
16+
- Selection evidence is exposed through `data-selected-instrument-id` on:
17+
- `#instrumentList`
18+
- `#timelineInstrumentQuickList`
19+
- `#instrumentAuditionKeyboard`
20+
- `#selectedInstrumentEditor`
21+
22+
## Audition
23+
- Audition keyboard rendering is synchronized to the selected instrument ID.
24+
- Audition controls preserve lane settings for volume, pan, transpose, velocity, and octave range.
25+
- The targeted Playwright validation clicks an audition note after duplication and confirms the selected duplicate is used.
26+
27+
## Export Readiness
28+
- Export tab now reports selected song, classification, generated ID, and WAV/MP3/OGG target readiness.
29+
- Save WAV, Save MP3, and Save OGG remain owned by the Export tab.
30+
- SoundFont and future render controls remain visible and red/unwired.
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# PR_26146_089-092 Template and Regeneration Map
2+
3+
## Section Templates
4+
- Built-in templates are defined in `SongSheetControl` for Intro, Verse, Chorus, Bridge, and Outro.
5+
- Template application writes starting chord progressions into the selected first-class section editor only.
6+
- Section fields remain editable after template application.
7+
- Custom sections are preserved because template application does not rewrite the custom section textarea.
8+
- Populated section rules remain unchanged: empty named/custom sections are omitted from Available Sections and from generated sequence input.
9+
10+
## Template Defaults
11+
- Intro: `C F G C`
12+
- Verse: `C Am F G`
13+
- Chorus: `F G C C`
14+
- Bridge: `Dm G Em Am`
15+
- Outro: `F G C`
16+
17+
## Safe Regeneration
18+
- Regenerate Arrangement now performs a preflight before rebuilding generated target lanes.
19+
- The preflight counts generated and manual events in currently selected generated target lanes.
20+
- If manual target-lane notes are found, the first click does not overwrite the grid.
21+
- The Regenerate button switches to confirmation state through `data-regeneration-pending="true"` and `Confirm Regenerate Arrangement`.
22+
- A second click with the same Song Sheet source and target selection confirms regeneration.
23+
- Any Song Sheet field, sequence, template, parse, or target change clears pending confirmation.
24+
25+
## Summary Fields
26+
- Song Sheet summary now includes:
27+
- Generated notes before regeneration
28+
- Manual notes before regeneration
29+
- Regeneration protection
30+
- Confirmed regeneration keeps those counts visible in the summary after the arrangement is rebuilt.
31+
32+
## Canonical Sync
33+
- Parse and confirmed regenerate continue to update:
34+
- `music.songs[].studioArrangement.songSheet.sections`
35+
- `music.songs[].studioArrangement.songSheet.sequence`
36+
- `music.songs[].studioArrangement.songSheet.applyTargets`
37+
- generated lanes in `music.songs[].studioArrangement.lanes`
38+
- Octave Timeline and JSON Details through existing normalization.

0 commit comments

Comments
 (0)