Skip to content

Commit 0924b38

Browse files
committed
Remove MIDI Studio V2 grid shadow and outline styling - PR_26146_050-midi-studio-v2-grid-shadow-outline-removal
1 parent 03d3e93 commit 0924b38

3 files changed

Lines changed: 86 additions & 14 deletions

File tree

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# PR_26146_050 MIDI Studio V2 Grid Shadow Outline Removal Validation
2+
3+
Status: PASS
4+
5+
## Scope
6+
7+
- Removed box-shadow effects from MIDI Studio V2 octave spreadsheet note cells and grid state classes.
8+
- Removed outline effects from MIDI Studio V2 octave spreadsheet note cells and grid state classes.
9+
- Preserved 1px note cell borders, piano keyboard styling, frozen headers, zoom controls, launch-specific NAV behavior, tabs, playback, and Play/Stop.
10+
- Did not change layout, data model, import/export, instrument controls, or playback logic.
11+
12+
## Changed Files
13+
14+
- `tools/midi-studio-v2/styles/midiStudioV2.css`
15+
- `tests/playwright/tools/MidiStudioV2.spec.mjs`
16+
17+
## Validation Commands
18+
19+
- PASS: `node --check tests/playwright/tools/MidiStudioV2.spec.mjs`
20+
- PASS: `node --check tools/midi-studio-v2/js/bootstrap.js`
21+
- PASS: `node --check tools/midi-studio-v2/js/controls/ActionNavControl.js`
22+
- PASS: CSS brace check for `tools/midi-studio-v2/styles/midiStudioV2.css`
23+
- PASS: `npx.cmd playwright test tests/playwright/tools/MidiStudioV2.spec.mjs -g "fast octave note editing supports drag painting keyboard shortcuts selection and timeline scroll sync|launches and renders a valid multi-song manifest payload|separates Workspace launch save ownership from Tool Mode standalone save" --config=codex_playwright_system_chrome.config.cjs --reporter=list --workers=1 --timeout=60000`
24+
- PASS: `git diff --check`
25+
26+
## Playwright Coverage
27+
28+
The targeted MIDI Studio V2 Playwright run proved:
29+
30+
- Grid/spreadsheet note cells and related spreadsheet wrappers have no computed `box-shadow`.
31+
- Grid/spreadsheet note cells and related spreadsheet wrappers have no computed outline effect.
32+
- Note cell `border-bottom` and `border-right` remain 1px.
33+
- Play and Stop still work through the existing fast octave editing keyboard flow.
34+
- Launch-specific NAV and tab presentation from PR049 still render correctly.
35+
36+
## Samples Decision
37+
38+
Full samples smoke test: SKIP. This PR only changes MIDI Studio V2 octave spreadsheet CSS and targeted Playwright assertions. It does not modify sample JSON, shared runtime, or broad sample loading behavior.
39+
40+
## Manual Validation
41+
42+
1. Open MIDI Studio V2 in tool-only mode.
43+
2. Import the UAT MIDI Studio manifest.
44+
3. Confirm the octave timeline grid cells render with flat 1px grid borders and no shadow or outline glow.
45+
4. Confirm piano keys still look like piano keys.
46+
5. Press Play, then Stop. Expected: playback starts and stops normally.

tests/playwright/tools/MidiStudioV2.spec.mjs

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -925,6 +925,37 @@ test.describe("MIDI Studio V2", () => {
925925
await expect(octaveCell(page, "C6", 2)).toHaveText("");
926926
await expect(octaveCell(page, "C6", 2)).toHaveAttribute("data-note-lanes", /lead/);
927927
await expect(octaveCell(page, "C6", 2)).toHaveClass(/midi-studio-v2__grid-cell--note-selected/);
928+
const gridEffects = await page.locator("#instrumentGridOutput").evaluate((element) => {
929+
const surfaceSelectors = [
930+
".midi-studio-v2__octave-timeline",
931+
".midi-studio-v2__note-table",
932+
".midi-studio-v2__note-table-cell",
933+
".midi-studio-v2__grid-cell--note-selected",
934+
".midi-studio-v2__grid-cell--lane-selected"
935+
];
936+
const nodes = surfaceSelectors.flatMap((selector) => Array.from(element.querySelectorAll(selector)));
937+
const firstNoteCell = element.querySelector(".midi-studio-v2__note-table-cell");
938+
const firstNoteCellStyle = getComputedStyle(firstNoteCell);
939+
return {
940+
borderBottomWidth: firstNoteCellStyle.borderBottomWidth,
941+
borderRightWidth: firstNoteCellStyle.borderRightWidth,
942+
effects: nodes.map((node) => {
943+
const style = getComputedStyle(node);
944+
return {
945+
boxShadow: style.boxShadow,
946+
outlineStyle: style.outlineStyle,
947+
outlineWidth: style.outlineWidth
948+
};
949+
})
950+
};
951+
});
952+
expect(gridEffects.effects.length).toBeGreaterThan(0);
953+
expect(gridEffects.effects.every((effect) => effect.boxShadow === "none")).toBe(true);
954+
expect(gridEffects.effects.every((effect) => effect.outlineStyle === "none" || effect.outlineWidth === "0px")).toBe(true);
955+
expect(Number.parseFloat(gridEffects.borderBottomWidth)).toBeGreaterThanOrEqual(0.8);
956+
expect(Number.parseFloat(gridEffects.borderBottomWidth)).toBeLessThanOrEqual(1);
957+
expect(Number.parseFloat(gridEffects.borderRightWidth)).toBeGreaterThanOrEqual(0.8);
958+
expect(Number.parseFloat(gridEffects.borderRightWidth)).toBeLessThanOrEqual(1);
928959
await octaveCell(page, "C6", 2).click();
929960
await expect(octaveCell(page, "C6", 2)).not.toHaveAttribute("data-note-lanes", /lead/);
930961
await octaveCell(page, "C6", 2).click();

tools/midi-studio-v2/styles/midiStudioV2.css

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -743,7 +743,6 @@ body[data-tool-id="midi-studio-v2"] #instrumentGridContent {
743743

744744
.midi-studio-v2__note-table-cell {
745745
align-content: center;
746-
box-shadow: inset 0 0 0 1px rgba(125, 211, 252, 0.18);
747746
cursor: pointer;
748747
font-size: 0;
749748
font-weight: 800;
@@ -761,8 +760,8 @@ body[data-tool-id="midi-studio-v2"] #instrumentGridContent {
761760
}
762761

763762
.midi-studio-v2__note-table-cell:focus {
764-
outline: 3px solid rgba(56, 189, 248, 0.86);
765-
outline-offset: -3px;
763+
background: color-mix(in srgb, var(--tool-starter-panel-strong) 68%, #38bdf8 32%);
764+
outline: none;
766765
}
767766

768767
.midi-studio-v2__octave-note-cell:hover {
@@ -902,22 +901,19 @@ body[data-tool-id="midi-studio-v2"] #instrumentGridContent {
902901
}
903902

904903
.midi-studio-v2__grid-cell--lane-active {
905-
outline: 3px solid rgba(14, 165, 233, 0.86);
906-
outline-offset: -4px;
904+
background: color-mix(in srgb, var(--tool-starter-panel-strong) 68%, #0ea5e9 32%);
907905
}
908906

909907
.midi-studio-v2__grid-cell--lane-selected {
910-
outline: 3px solid rgba(125, 211, 252, 0.82);
911-
outline-offset: -4px;
908+
background: color-mix(in srgb, var(--tool-starter-panel-strong) 64%, #7dd3fc 36%);
912909
}
913910

914911
.midi-studio-v2__octave-note-cell.midi-studio-v2__grid-cell--lane-selected::before {
915912
background: #38bdf8;
916-
box-shadow: 0 0 0 1px rgba(186, 230, 253, 0.82), 0 0 0.6rem rgba(56, 189, 248, 0.35);
917913
}
918914

919915
.midi-studio-v2__grid-cell--note-selected {
920-
box-shadow: inset 0 0 0 3px #facc15, 0 0 0 1px rgba(250, 204, 21, 0.48);
916+
background: color-mix(in srgb, var(--tool-starter-panel-strong) 58%, #facc15 42%);
921917
position: relative;
922918
z-index: 4;
923919
}
@@ -927,12 +923,11 @@ body[data-tool-id="midi-studio-v2"] #instrumentGridContent {
927923
}
928924

929925
.midi-studio-v2__grid-cell--loop-region {
930-
outline: 2px solid rgba(56, 189, 248, 0.72);
931-
outline-offset: -2px;
926+
background: color-mix(in srgb, var(--tool-starter-panel-strong) 70%, #38bdf8 30%);
932927
}
933928

934929
.midi-studio-v2__grid-cell--section-region {
935-
box-shadow: inset 0 0 0 2px rgba(250, 204, 21, 0.62);
930+
background: color-mix(in srgb, var(--tool-starter-panel-strong) 70%, #facc15 30%);
936931
}
937932

938933
.midi-studio-v2__grid-cell.midi-studio-v2__timing-header-row-1:not(.midi-studio-v2__grid-cell--playhead-active),
@@ -966,11 +961,11 @@ body[data-tool-id="midi-studio-v2"] #instrumentGridContent {
966961
}
967962

968963
.midi-studio-v2__grid-cell--generated {
969-
box-shadow: inset 0 -0.2rem 0 rgba(34, 197, 94, 0.75);
964+
background: color-mix(in srgb, var(--tool-starter-panel-strong) 78%, #22c55e 22%);
970965
}
971966

972967
.midi-studio-v2__grid-cell--manual {
973-
box-shadow: inset 0 -0.2rem 0 rgba(251, 191, 36, 0.85);
968+
background: color-mix(in srgb, var(--tool-starter-panel-strong) 78%, #fbbf24 22%);
974969
}
975970

976971
.midi-studio-v2__snap-indicator {

0 commit comments

Comments
 (0)