mirror of
https://github.com/got-feedBack/feedBack.git
synced 2026-07-23 21:32:33 +00:00
* fix(v3): reject accidental text-selection of UI chrome (user-select policy)
Dragging/double-clicking across the v3 UI marquee-highlighted buttons, labels,
the sidebar, transport, and the note-highway HUD — looks broken (reported Mac +
Windows). Default the v3 shell to user-select:none on html, then opt CONTENT
back in. Decided by a 4-lens panel (UX / a11y / dev-ops / plugin-ecosystem);
their guardrails are baked in:
- Form fields ALWAYS re-enabled (input/textarea/select/[contenteditable]) so the
caret + IME composition never break. No `* { user-select:none }` (WebKit input
bug 82692).
- Plugin screens (.screen[id^="plugin-"]) stay selectable BY INHERITANCE (no `*`,
so a plugin's own non-select chrome still wins) — a plugin's copyable text
(lyrics, chords, results), including community/out-of-tree plugins that never
adopt the class, isn't silently locked.
- Core read-only content opts back in by CONTAINER via a hand-authored
`.fb-selectable` (not a Tailwind utility — so runtime-installed plugins get it
too): the whole Settings panel (paths, device names, version, diagnostics,
About) and the now-playing song metadata. Answers the open "keep settings
copyable?" question: yes, at the container.
Cosmetic only — never used to lock copy-worthy text (errors/IDs/paths/versions/
metadata stay selectable; WCAG 2.2 allows copy-paste as a mechanism). v3-only
(v2 unchanged; v3.css loads only on /v3); plain CSS, no Tailwind rebuild; no
desktop/Electron changes (standard OS-framed window). `.fb-selectable` is
documented in CLAUDE.md for plugin authors.
Tests: tests/js/v3_user_select_policy.test.js (html default, form-field
re-enable, plugin-screen carve without `*`, .fb-selectable, container opt-ins,
and the no-`*`-rule guardrail).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QbexxfTt8q2tAn436MqGWF
* fix(v3): address review of the user-select policy (#637)
Review (manual + Codex) of the v3 text-selection policy:
- P1 (real bug): the now-playing HUD metadata opted into `.fb-selectable` but
its `#player-hud` parent is `pointer-events: none`, so the mouse could never
reach the text to select it — the opt-in was inert. Add `pointer-events-auto`
to the metadata block (verified in-browser: user-select:text + pointer-
events:auto, while the HUD parent stays pointer-events:none).
- Coverage: the PR's a11y guardrail promised copyable text stays selectable
"incl. in modals/toasts", but only Settings + the HUD were opted in. Blanket-
opt the focused copyable surfaces back in by selector — `.feedBack-modal`,
`[role="dialog"]`, `#fb-notify-stack`, `#v3-fb-toast`, `#scan-banner` — so
errors / IDs / paths / file names in dialogs, toasts, and the scan banner stay
copyable. These are focused panels, not dense card lists, so re-enabling
selection there can't recreate the across-cards marquee mess.
(Deliberately NOT opting in the library grid / dashboard / profile card lists:
making dense card text selectable would reintroduce exactly that marquee mess
on a drag — copy song metadata from the now-playing HUD / Settings instead.)
- Test (P3): assert the selectable rule's selectors order-independently, cover
the new modal/toast/banner surfaces, and check the HUD block carries BOTH
fb-selectable and pointer-events-auto (class-order independent).
Verified in a real browser (chromium): html=none, sidebar chrome=none, input=
text, Settings=text, HUD meta=text+pointer-events:auto, dialog/modal=text.
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>
|
||
|---|---|---|
| .claude/skills | ||
| .github | ||
| .specify | ||
| data/progression | ||
| docs | ||
| lib | ||
| plugins | ||
| scripts | ||
| specs | ||
| static | ||
| tests | ||
| .dockerignore | ||
| .gitattributes | ||
| .gitignore | ||
| build-proxmox-ct.sh | ||
| CHANGELOG.md | ||
| CLAUDE.md | ||
| CONTRIBUTING.md | ||
| docker-compose.nas.yml | ||
| docker-compose.yml | ||
| Dockerfile | ||
| LICENSE | ||
| main.py | ||
| package-lock.json | ||
| package.json | ||
| playwright.config.ts | ||
| pyproject.toml | ||
| README.md | ||
| requirements-test.txt | ||
| requirements.txt | ||
| server.py | ||
| SUPPORTERS.md | ||
| tailwind.config.js | ||
| TODO.md | ||
| uv.lock | ||
| VERSION | ||
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