You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Baseline: `PR_26146_072-080` local architecture state.
6
+
7
+
## Scope Validated
8
+
9
+
- First-class Intro, Verse, Chorus, Bridge, Outro section editors now show progression, bar count, and estimated duration metadata.
10
+
- Custom sections remain supported and only populated sections flow into Available Sections.
11
+
- Song Sequence actions Add, Duplicate, Move Up, Move Down, and Remove remain wired; selected sequence state exposes matching section color metadata.
12
+
- Parse Guided Song Sheet builds from populated sections, sequence order, and Apply Song Sheet To targets.
13
+
- Generated arrangement updates the canonical song model, Octave Timeline, diagnostics/status, JSON details, and Song Sheet generation summary.
14
+
- Octave Timeline headers expose section labels, section colors, clicked header selection, and current playback section state.
15
+
- Existing MIDI Studio ownership for instruments, export, warnings, unwired controls, Play/Stop, selected instrument sync, multiple songs, launch NAV, and canvas rendering was preserved by the targeted regression group.
| Targeted MIDI Studio Playwright validation | PASS |`npx playwright test tests/playwright/tools/MidiStudioV2.spec.mjs -g "PR072-075\|PR076-079\|PR072-080\|PR081-084"` ran 4 tests, 4 passed. |
23
+
|`npm run test:workspace-v2`| TIMEOUT | Ran twice. First timed out after 300s; second timed out after 600s. Latest Workspace artifacts show unrelated WorkspaceManagerV2 failures expecting 11 tool tiles and receiving 12. |
- Workspace Manager V2 lane remains outside this MIDI Studio change and did not complete within the available validation window.
42
+
- Timeline duplicate-label selection maps the clicked canvas section to the matching Song Sequence index; the legacy section select still stores labels, so duplicate labels remain label-based in that select.
6.`MidiStudioV2App.applySongSheetToGrid()` builds the editable arrangement from the parsed sequence order.
19
+
7.`InstrumentGridParser.generateLane()` fills selected generated targets and `normalizeInstrumentGrid()` updates the canonical lanes/sections and JSON Details.
20
+
8.`SongSheetControl.render()` receives the generation summary and shows sections used, bars generated, notes generated, and target lanes affected.
21
+
22
+
## Target Behavior
23
+
24
+
-`Chords/Pad` enabled updates `chords` and generated `pad`.
25
+
-`Bass` enabled generates bass from chords.
26
+
-`Drums` enabled generates the basic drum lane when selected by default or user choice.
27
+
-`Lead` remains disabled by default and is only generated when explicitly selected.
28
+
- Untargeted lanes are preserved when they already match bar count; otherwise they receive rests to keep the arrangement parseable.
29
+
30
+
## Summary Fields
31
+
32
+
-`Sections used`: sequence order used for the generated arrangement.
33
+
-`Bars generated`: total bars in the generated sequence.
34
+
-`Notes generated`: generated/affected event count across selected target lanes.
35
+
-`Target lanes affected`: human labels for selected Apply Song Sheet To targets.
- The normalized Octave Timeline section model remains the authority for musical section colors.
6
+
- Repeated section labels share the same `colorIndex`.
7
+
- Available Sections and Song Sequence options use the same section color helpers as the Octave Timeline.
8
+
9
+
## Timeline Header
10
+
11
+
- Canvas dataset exposes `data-section-header-labels` as the ordered section labels.
12
+
- Canvas snapshot exposes `sectionHeaderLabels`, `sections`, and `playbackSection`.
13
+
- Section names are drawn directly in the top timeline header row and in the frozen header.
14
+
- Current playback/playhead section exposes:
15
+
-`data-playback-section`
16
+
-`data-playback-section-color`
17
+
-`data-playback-section-index`
18
+
19
+
## Click Mapping
20
+
21
+
-`OctaveTimelineCanvasRenderer.sectionHeaderFromPoint()` maps header clicks to the section at the clicked step.
22
+
-`InstrumentGridControl.selectTimelineHeaderSection()` moves the playhead to the clicked section, highlights that section, and emits a `select-section` transport event.
23
+
-`MidiStudioV2App.handleInstrumentGridTransport()` maps timeline header selection back to `SongSheetControl.selectSequenceItem()`.
24
+
- Duplicate labels use the clicked timeline section index so the corresponding Song Sequence item is selected.
0 commit comments