6a6efc793a feat(v3 library): practice-aware home — Repertoire meter + "Keep practicing" shelf (#635)
* feat(v3 library): practice-aware home — Repertoire meter + "Keep practicing" shelf

The Songs page opened cold into a flat sorted grid. This adds a practice-aware
front door on the unfiltered grid, built entirely from data already on hand
(no new endpoints, no new stored state):

- Repertoire meter — "Repertoire: N of M songs · K in progress" + a bar,
  counting songs at/above the same mastery threshold the green accuracy badge
  uses (>= 0.9 best accuracy) over the unfiltered library total. Reads
  state.accuracy (/api/stats/best, already loaded for the card badges) and the
  unfiltered /api/library/stats total.
- "Keep practicing" shelf — a horizontal row of recently-played, not-yet-
  mastered songs (newest first, click to play). Reads /api/stats/recent.

Both show ONLY on the grid view when not searching/filtering/selecting (the
front-door context), refresh after a song is scored (applyScoreRefresh), and
collapse on an empty library. Soft-gamification only: descriptive encouragement
(goal-gradient / endowed-progress), never content-gating, decay, or nagging —
the practice-accuracy "continue" rail a media server can't do.

Frontend-only: static/v3/songs.js (renderLibraryHome / _repertoireCounts /
libHomeVisible, wired through reload() + applyScoreRefresh), static/v3/v3.css.
Came out of the library design charrette (UX + gamification lenses' top pick).

Stacked on the A–Z rail branch (feat/v3-library-az-rail) since both touch
static/v3/songs.js; merge that PR first (or retarget).

Tests: tests/js/v3_keep_practicing.test.js (threshold, front-door gating,
shelf filter, denominator, render/reload/score-refresh wiring, click-to-play).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QbexxfTt8q2tAn436MqGWF

* fix(v3 library): correct practice-aware home for review P1/P2/P3

Addresses the PR #635 review findings (manual + Codex):

P1 correctness
- Gate the Repertoire meter + "Keep practicing" shelf to the LOCAL
  provider (libHomeVisible). They read local practice stats
  (state.accuracy / /api/stats/recent); on a remote provider they mixed a
  local mastered count with a remote song total (e.g. "85 of 80") and the
  shelf played local files while browsing a remote library.
- Shelf now gates on the per-SONG best (state.accuracy[filename] = MAX
  across arrangements, what the green badge shows) and dedupes by filename,
  instead of the per-arrangement recents row — so a "keep practicing" card
  can no longer show a green "mastered" badge, and a song can't appear twice.

P2 robustness
- renderLibraryHome fetches /api/library/stats + /api/stats/recent together
  (Promise.all) and a _homeToken generation guard discards a stale render
  so a slow response can't repaint a home the grid already moved past.

P3 polish
- accuracyBadge references MASTERY_ACCURACY instead of a bare 0.9, so the
  badge and the meter/shelf can't drift from "the same mastery threshold".

Tests updated (v3_keep_practicing.test.js): provider gating, per-song
deduped shelf, Promise.all + token.

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

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: byrongamatos <xasiklas@gmail.com>
2026-06-29 08:56:31 +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%