feat(jamguide): chord modal tabs show only their instrument's voicings (task L-25)

GuitarTab/PianoTab pass show=guitar/show=piano to VoicingBrowser
(D-23 prop); Knowledge Center + station-enlarge keep both rows by
design. Critic PASS (SSR: each tab renders only its row, legacy
content intact below).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
vadimwit
2026-07-09 00:25:13 +01:00
parent ee009a708d
commit e24aa4b6ed
+5 -4
View File
@@ -39,8 +39,9 @@ function GuitarTab({ chordName }) {
}
return (
<div className="flex flex-col gap-5">
{/* Playable voicing browser (D-21) — browse + audition shapes. */}
{parsed && <VoicingBrowser rootPc={parsed.rootPc} quality={parsed.type} />}
{/* Playable voicing browser (D-21) — browse + audition shapes.
Instrument-scoped to this tab via `show` (task L-25). */}
{parsed && <VoicingBrowser rootPc={parsed.rootPc} quality={parsed.type} show="guitar" />}
{/* Static grid kept as the fingering reference — it carries finger
numbers and barre info the browser doesn't show. */}
@@ -89,8 +90,8 @@ function PianoTab({ chordName }) {
return (
<div className="flex flex-col gap-4">
{/* Playable voicing browser (D-21) — parseChord's `type` maps 1:1 to the
browser's `quality` (CHORD_TYPES key). L-21. */}
{parsed && <VoicingBrowser rootPc={parsed.rootPc} quality={parsed.type} />}
browser's `quality` (CHORD_TYPES key). L-21. Piano-scoped via `show` (L-25). */}
{parsed && <VoicingBrowser rootPc={parsed.rootPc} quality={parsed.type} show="piano" />}
{/* Technique cards kept below — the name/desc/tip text and LH/RH note
breakdown are not covered by the browser. */}