a791a0d8fe feat(v3): DOM-virtualize the Songs grid (#636 item 3 stage 2) (#643)
The v3 Songs grid appended every scrolled page and never released nodes,
so card-node count grew unbounded with scroll depth (24 → 624 → 2001 for a
2000-song library). Replace it with a windowed/recycled render: only the
visible window (± overscan) is in the DOM while a #v3-songs-gridsizer
element sized to ceil(total/cols)*rowH gives the scrollbar full-library
geometry; #v3-songs-grid is absolutely positioned to the first visible row.

- state.songs is a sparse, absolutely-indexed store filled a page at a time
  by ensureWindow(): the stage-1 keyset cursor for contiguous forward scroll
  (O(page)), OFFSET page= for jumps/restore/non-keyset providers. _loadPage
  shares an in-flight promise per page and an epoch guard discards a stale
  fetch that lands after a reset.
- A–Z rail seeks directly via sort_letters cumulative counts (O(1), no
  page-through); bounded scan fallback for legacy providers without it.
- Snapshot/restore is now scrollTop-based (geometry is stable). Select mode,
  accuracy badges, ⋮ menu, plugin card actions, and tree/folder coexistence
  survive cards recycling; renderWindow re-renders when select mode toggles.
- Plugins get window.v3Songs.visibleCards() + a v3:library-window-rendered
  event instead of assuming all cards are present (highway-stutter lesson).

Verified in a browser against a seeded 2001-song library: DOM bounded to
~60 nodes while the count reads "2001 songs", rail jump lands on the target
row, selection survives recycling, scroll-restore exact. Codex-reviewed
(3 findings fixed: stale-fetch epoch guard, await-in-flight page promise,
select-mode resync on cached re-entry).

Frontend-only. Tests: tests/browser/v3-grid-virtualization.spec.ts pins the
bounded-DOM invariant + direct rail jump; tests/js/v3_az_rail.test.js and
v3_songs_scroll.test.js updated to the new wiring.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-29 12:26:29 +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%