feat(app): Jam Guide band promoted below the main module — one loop display, one instrument selector (task L-40)
The always-open zero-chrome band (GlanceRail + licks strip + heard-live fallback) replaces CurrentJamPanel right below the instrument view; the four-section dock becomes KnowledgeDock at the bottom; RoadmapTrack unmounted (banner is the single loop display); JamGuide's internal instrument/style tabs die — App's global GUITAR/PIANO/BASS selector drives everything incl. the dock's VoicingsSection; honest bass state (computed root-fifth-approach rows + notice, no galleries/licks); GlanceRail's scrollIntoView effect deleted same-commit (would yank the document in page flow). Ride-along: JamGuide resolveDegree exported (logic byte-identical) for the C-40 drift guard. Critic PASS (SSR 22/22, audio-contract grep zero hits, deletion sweep clean). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -379,7 +379,10 @@ export function ExploreSection({ keyInfo, levels, onToggleLevel, onChordClick })
|
||||
// ─── Voicings section — picker (follows the live chord) → VoicingBrowser ─────
|
||||
// Props: keyInfo + chordHistory feed the quick-pick chips; currentChord re-aims
|
||||
// the picker whenever a new chord commits (manual picks hold until then).
|
||||
export function VoicingsSection({ keyInfo, chordHistory, currentChord }) {
|
||||
// `instrument` (L-40, D-40 §3) scopes the browser to App's global selector —
|
||||
// omitted (the orphaned standalone panel below) it falls back to 'both' via
|
||||
// VoicingBrowser's own `show` default.
|
||||
export function VoicingsSection({ keyInfo, chordHistory, currentChord, instrument }) {
|
||||
const [root, setRoot] = useState('C')
|
||||
const [typeKey, setTypeKey] = useState('maj')
|
||||
const [active, setActive] = useState('')
|
||||
@@ -422,7 +425,7 @@ export function VoicingsSection({ keyInfo, chordHistory, currentChord }) {
|
||||
onTypeChange={k => { setTypeKey(k); setActive('') }}
|
||||
/>
|
||||
|
||||
<VoicingBrowser rootPc={rootPc} quality={typeKey} />
|
||||
<VoicingBrowser rootPc={rootPc} quality={typeKey} show={instrument} />
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user