feedBack/static/capabilities
Job 1a5b49f83b feat: extract instruments from hardcoded logic into plugins
Replace ~15 scattered hardcoded guitar/bass checks across Python and JS
with a unified InstrumentRegistry. Guitar, Bass, Drums, and Keys now
ship as bundled instrument plugins under plugins/instrument_<name>/,
each defining its own tunings, roles, arrangement mappings, string/key
counts, detection strategy, and icon.

Backend:
- lib/instruments.py — registry with schema validation and offset-to-MIDI
- lib/routers/instruments.py — GET /api/instruments endpoint
- Plugin loader recognizes type:instrument and registers definitions
- lib/tunings.py is registry-aware (profiles, tuning validation, presets)
- Arrangement routing uses role flags/names from registry
- Progression instrument_for_arrangement accepts registry, returns None for unknown
- Settings API validates against registered instrument IDs
- /api/tunings populates both tuningMidis AND tunings (fixes tuner sync)
- Non-stringed instruments skip string_count/tuning validation

Frontend:
- badges.js: dynamic instrument pills, key count selector (keyboard),
  per-instrument icons from plugin assets, tuner grays out for non-pitched
- songs.js: auto-filters library by current instrument's arrangement roles,
  filter options derived from registry
- instruments-settings.js: editable instrument cards with custom tunings,
  arrangement names, string counts. Persisted via instrument_overrides
- index.html: new Instruments tab, default_arrangement moved to selector
- working-tuning.js: registry-aware instrument normalization
2026-07-16 20:43:11 +02:00
..
audio-effects.js fix(audio-effects): accept pre-rebrand chain plan schema as alias (#816) 2026-07-09 22:17:57 +02:00
audio-session.js rename: slopsmith → feedBack, byron → got-feedBack (#537) 2026-06-23 11:03:01 +02:00
interface-scale.js refactor(ui): defer every classic script, keep boot() on DOMContentLoaded (R3a) (#872) 2026-07-11 16:57:04 +02:00
library-card-actions.js rename: slopsmith → feedBack, byron → got-feedBack (#537) 2026-06-23 11:03:01 +02:00
library.js rename: slopsmith → feedBack, byron → got-feedBack (#537) 2026-06-23 11:03:01 +02:00
midi-input.js rename: slopsmith → feedBack, byron → got-feedBack (#537) 2026-06-23 11:03:01 +02:00
note-detection.js rename: slopsmith → feedBack, byron → got-feedBack (#537) 2026-06-23 11:03:01 +02:00
playback.js rename: slopsmith → feedBack, byron → got-feedBack (#537) 2026-06-23 11:03:01 +02:00
tuning.js rename: slopsmith → feedBack, byron → got-feedBack (#537) 2026-06-23 11:03:01 +02:00
visualization.js rename: slopsmith → feedBack, byron → got-feedBack (#537) 2026-06-23 11:03:01 +02:00
working-tuning.js feat: extract instruments from hardcoded logic into plugins 2026-07-16 20:43:11 +02:00