f5c9c34291 library: scraper options — per-source + per-field auto-apply, review-queue order (R1) (#726)
* library: scraper options — per-source + per-field auto-apply toggles, review-queue order (R1)

Grows the Settings→Library "Metadata matching" card into the full
scraper-options panel — not everybody needs the same things out of a
scraper:

- Sources: enrich_src_musicbrainz gates the background matcher (phase 2;
  identity hashes still stamp, and manual Fix-match/search stays
  available — same contract as the master toggle). enrich_src_caa gates
  the Cover Art Archive fetch (phase 3). Rows skipped by an off toggle
  stay unevaluated, so re-enabling picks them up on the next pass —
  nothing is permanently forfeited.
- Auto-apply fields: enrich_apply_names/year/genres filter what an
  AUTOMATIC match may canonicalize (_enrich_field_filter, applied on all
  three automatic paths: cache copy, mbid/isrc exact keys, text auto).
  MusicBrainz ids always stamp — they're identity, not display; the art
  fetch and future re-matching need them. A match the user confirms in
  the review modal applies in full. enrich_apply_art gates the art fetch
  alongside the CAA source toggle (two axes, one behaviour today —
  future art sources slot in without re-teaching the panel).
- Review queue order: enrich_review_order = missing_first (default,
  today's behaviour) | artist | recent, read by GET /api/enrichment/review;
  unknown stored values degrade to the default.
- Settings card: Sources / Auto-apply / Review-queue-order groups wired
  in match-review.js; the master toggle is relabelled "Match songs
  automatically" so it doesn't read the same as the new MusicBrainz
  source toggle. No tailwind rebuild needed — every class was already
  scanned from core source.

Tests: tests/test_scraper_options.py (9) — settings validation,
MB-source-off stamps-without-matching + re-enable, per-field stripping
on auto matches with ids preserved, review-accept full-apply despite
toggles, CAA gating on both axes, review-order modes incl. the
unknown-value fallback. Full-suite failure set A/B-identical to the
base (39 env/pre-existing).

Stacked on feat/enrichment-art (#715) — merge that first.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nm7tHs1Yvjjtnnu4nzJgdN

* library: per-field auto-apply honours "nothing forfeited" (backfill + no partial seeding)

The R1 per-FIELD auto-apply toggles settled a `matched` row with the
disabled fields stripped, but enrichment_pending() never revisits an
unchanged-hash matched row — so re-enabling a field never backfilled it,
and enrichment_cache_lookup() (which gates only on mb_recording_id) could
seed sibling charts with the stripped blanks. This broke the same
"nothing is permanently forfeited" contract the source (mb_on) and art
(art_on) toggles already keep.

Fix: persist an `apply_mask` marker (sorted blocked apply-keys) on every
AUTOMATIC match:
- migration: additive `apply_mask TEXT` column (idempotent ALTER).
- enrichment_pending(allowed_keys=...): re-queues a `matched` row whose
  apply_mask names a field that is now re-enabled → backfill on re-enable,
  converges (a fully-applied row is never re-queued).
- enrichment_cache_lookup: only fully-applied donors (apply_mask empty/NULL)
  may seed siblings; a partial row is skipped and the sibling falls through
  to its own re-filtered match.
- _enrich_apply_mask()/_enrich_blocked_apply_keys() helpers; threaded through
  _enrich_one → apply_enrichment_match. Review/manual writers leave it NULL
  (a confirmed pick applies in full).

Tests: re-enable-backfills-and-converges; partial row is not a cache donor
(fully-applied one is). 13 scraper-options tests pass; 170 enrichment/
settings tests green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: ChrisBeWithYou <christian.a.cowan@gmail.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 20:57:42 +02:00
2026-06-16 18:47:13 +02:00
2026-06-16 18:47:13 +02:00
2026-06-16 18:47:13 +02:00
2026-06-16 18:47:13 +02:00
2026-06-16 18:47:13 +02:00
2026-06-16 18:47:13 +02:00
2026-06-16 18:47:13 +02:00
2026-06-16 18:47:13 +02:00
2026-06-20 11:29:12 +02:00

fee[dB]ack

Plugins

Plugin Description Install
Create from Tab Search Ultimate Guitar for GP tabs and convert to playable songs git clone ...feedBack-plugin-ug.git ultimate_guitar
Import Tab Drag and drop Guitar Pro files to create songs git clone ...feedBack-plugin-tabimport.git tab_import
Practice Journal Auto-track practice time, speed, loops. Dashboard with charts git clone ...feedBack-plugin-practice.git practice_journal
Setlist Builder Create ordered playlists with sequential playback git clone ...feedBack-plugin-setlist.git setlist
Metronome Audible click and visual beat flash synced to song tempo git clone ...feedBack-plugin-metronome.git metronome
Tone Player View amp/pedal/cab signal chains with gear artwork git clone ...feedBack-plugin-tones.git tones
Fretboard View Live fretboard overlay showing active notes in real-time git clone ...feedBack-plugin-fretboard.git fretboard
Tab View Scrolling guitar tablature notation via alphaTab git clone ...feedBack-plugin-tabview.git tab_view
MIDI Amp Control Auto-switch amp/modeler presets via MIDI on tone changes git clone ...feedBack-plugin-midi.git midi_amp
Section Map Color-coded song structure minimap with clickable navigation git clone ...feedBack-plugin-sectionmap.git section_map
Arrangement Editor DAW-like visual editor for creating and editing song note charts git clone ...feedBack-plugin-editor.git editor
MIDI Capo MIDI capo control for real-time transposition git clone ...slopsmith-plugin-midi-capo.git midi_capo
Note Detection Real-time pitch detection and scoring against highway notes git clone ...feedBack-plugin-notedetect.git note_detect
Find More Search for more songs by the same artist git clone ...slopsmith-plugin-find-more.git find_more
Piano Highway Scrolling piano/keyboard view for Keys arrangements with MIDI input git clone ...feedBack-plugin-piano.git piano
Studio Collaborative band recording and multi-track mixing git clone ...feedBack-plugin-studio.git studio
Drum Highway Lane-based drum highway with MIDI drum pad input and built-in sounds git clone ...feedBack-plugin-drums.git drums
Invert Highway Flip the highway note direction git clone ...slopsmith-plugin-invert-highway.git invert_highway
Jumping Tab Yousician-style 2D horizontal tab with trajectory arcs and hopping ball git clone ...slopsmith-plugin-jumpingtab.git jumpingtab
Step Mode Step-by-step practice mode — highway freezes at each note until played (via Note Detection) or Space git clone ...feedBack-plugin-stepmode.git step_mode
Lyrics Sync Generate synced LRC lyrics from text + vocals stem via Whisper alignment git clone ...feedBack-plugin-lyrics-sync.git lyrics_sync
Lyrics Karaoke Per-syllable karaoke pitch ribbon for sloppak songs (Whisper alignment + librosa pYIN) git clone ...feedBack-plugin-lyrics-karaoke.git lyrics_karaoke
NAM Tone Engine In-browser amp modeling with NAM WASM, cabinet IRs, tone auto-switching git clone ...feedBack-plugin-nam-tone.git nam_tone
Guitar Theory Lab Explore scales, chords, intervals, tunings, and voicings on a fully interactive fretboard git clone ...slopsmith-plugin-guitar-theory.git guitar-theory-lab
Themes Offers several basic recolorings of the interface git clone ...slopsmith-plugin-themes.git themes
Update Manager Installs, updates, and uninstalls other plugins and the feedBack core itself git clone ...slopsmith-update-manager.git update_manager
Simplify Chords Changes complex chords on the note highway to simpler ones. Inspired by Ultimate Guitar's Simplify button. git clone ...slopsmith-plugin-simplify-chords.git simplify-chords
Key Bindings Highway key bindings for keyboard and TV remote git clone ...slopsmith-plugin-key-bindings.git key_bindings
Virtuoso Practice studio for guitar & bass — scale, technique, and rhythm drills, timed workouts, and jam backing that teach skills you take off the screen. git clone ...feedBack-plugin-virtuoso.git virtuoso
Audio Preview Quick audio previews from library cards with configurable start time, volume, and duration git clone ...slopsmith-plugin-audio-preview.git audio_preview
Song Mastery Auto-adjusts difficulty based on your rolling note accuracy and saves the slider position per song git clone ...slopsmith-plugin-song-mastery.git song_mastery
Mobile Note Highway Touch-optimized player with collapsible controls, highway gestures, and device-adaptive layouts for phones and tablets git clone ...slopsmith-plugin-mobile-note-highway.git mobile_note_highway

Install any plugin by cloning it into your plugins/ directory and restarting:

cd plugins
git clone https://github.com/got-feedback/feedBack-plugin-ug.git ultimate_guitar
docker compose restart
S
Description
No description provided
Readme AGPL-3.0
982 MiB
Languages
JavaScript 56.4%
Python 37.1%
HTML 3.2%
CSS 1.2%
TypeScript 1.1%
Other 1%