Unify button tooltips across the app (#972)

* feat(tooltip): 2s open delay and shared tooltipAttrs helper

Add a 2s hover open delay in TooltipPortal (single behaviour source) so
tooltips no longer flash on quick pointer passes; hiding stays immediate.
Add tooltipAttrs() to pair data-tooltip with a matching aria-label for
buttons touched in the unification work. Covered by Vitest.

* feat(tooltip): lower open delay to 1s

2s felt too long in testing; 1s gives the same anti-flash behaviour
without making intentional hovers wait.

* feat(tooltip): action tooltips on the artist overview

Add tooltips describing the action to Last.fm, Wikipedia, Play All,
Shuffle and Radio. Shuffle/Radio now show a tooltip on desktop too,
not just mobile. Strings added to all 9 locales.

* feat(tooltip): action tooltips on the album overview

Add tooltips describing the action to the desktop Play, Artist Bio and
Download (ZIP) buttons, matching the mobile layout. Strings added to all
9 locales.

* feat(tooltip): action tooltips on the All Albums toolbar

Add tooltips describing the action to the sort, year and genre filter
buttons. SortDropdown gains an optional tooltip prop; the year and genre
filter components carry their own, so the tooltips also appear on the
other browse pages that reuse them. Strings added to all 9 locales.

* feat(tooltip): action tooltips on song-list rows

Add Play and Add-to-queue tooltips to the per-row icons in SongRow, used
by the Tracks browse list, Search and Advanced Search. Also localizes the
aria-labels, which were hardcoded English. New common.addToQueue in all 9
locales.

* fix(tooltip): uniform tooltip placement on the Artists toolbar

The favourite and multi-select buttons forced tooltips below while the
view-mode buttons auto-flipped above, so the row looked inconsistent.
Pin the view-mode buttons below too, matching the rest of the row and the
Albums toolbar.

* feat(tooltip): clarify and align the Advanced Search scope row

Add a leading "Search in:" label and per-chip tooltips so the
All/Artists/Albums/Songs row reads as a scope limiter. Drop the forced
below-placement on the small star filter (used only here) so the
favourites chip flips with the others instead of sitting alone below.
Strings added to all 9 locales.

* docs(changelog): tooltip unification (#972)
This commit is contained in:
Frank Stellmacher
2026-06-04 00:53:22 +02:00
committed by GitHub
parent 82c414d7bc
commit c119a32277
60 changed files with 404 additions and 34 deletions
+3
View File
@@ -7,6 +7,9 @@ export const albumDetail = {
enqueueTooltip: 'Ganzes Album zur Warteschlange hinzufügen',
artistBio: 'Künstler-Bio',
download: 'Download (ZIP)',
playTooltip: 'Dieses Album abspielen',
artistBioTooltip: 'Künstlerbiografie lesen',
downloadTooltip: 'Dieses Album als ZIP herunterladen',
downloading: 'Lade…',
cacheOffline: 'Offline verfügbar machen',
offlineCached: 'Offline verfügbar',
+2
View File
@@ -8,6 +8,8 @@ export const albums = {
yearTo: 'Bis',
yearFilterClear: 'Jahresfilter zurücksetzen',
yearFilterLabel: 'Jahr',
sortTooltip: 'Sortierung ändern',
yearFilterTooltip: 'Nach Erscheinungsjahr filtern',
compilationLabel: 'Sampler',
compilationOnly: 'Nur Sampler',
compilationHide: 'Ohne Sampler',
+5
View File
@@ -6,6 +6,11 @@ export const artistDetail = {
shareArtist: 'Künstler teilen',
shuffle: 'Zufallswiedergabe',
radio: 'Radio',
lastfmTooltip: 'Diesen Künstler auf Last.fm öffnen',
wikipediaTooltip: 'Diesen Künstler auf Wikipedia öffnen',
playAllTooltip: 'Gesamte Diskografie abspielen',
shuffleTooltip: 'Gesamte Diskografie zufällig abspielen',
radioTooltip: 'Radio basierend auf diesem Künstler starten',
loading: 'Lädt…',
noRadio: 'Keine ähnlichen Titel für diesen Künstler gefunden.',
notFound: 'Künstler nicht gefunden.',
+2
View File
@@ -21,6 +21,7 @@ export const common = {
noFolderSelected: 'Kein Ordner ausgewählt',
rememberDownloadFolder: 'Ordner merken',
filterGenre: 'Genre-Filter',
filterGenreTooltip: 'Nach Genre filtern',
filterSearchGenres: 'Genres suchen…',
filterNoGenres: 'Keine Genres gefunden',
filterClear: 'Zurücksetzen',
@@ -28,6 +29,7 @@ export const common = {
favoritesTooltipOff: 'Nur Favoriten anzeigen',
favoritesTooltipOn: 'Alle anzeigen',
play: 'Abspielen',
addToQueue: 'Zur Warteschlange hinzufügen',
bulkSelected: '{{count}} ausgewählt',
clearSelection: 'Auswahl aufheben',
bulkAddToPlaylist: 'Zur Playlist hinzufügen',
+5
View File
@@ -31,6 +31,11 @@ export const search = {
advancedMoodGroup: 'Mood',
advancedAllMoods: 'All moods',
advancedMoodLocalNote: 'Requires local library index and track analysis',
scopeRowLabel: 'Suchen in:',
scopeAllTooltip: 'Alles durchsuchen',
scopeArtistsChipTooltip: 'Ergebnisse auf Künstler beschränken',
scopeAlbumsChipTooltip: 'Ergebnisse auf Alben beschränken',
scopeSongsChipTooltip: 'Ergebnisse auf Titel beschränken',
advancedAll: 'Alle',
advancedSearch: 'Suchen',
advancedEmpty: 'Suchbegriff eingeben oder Filter wählen, um zu beginnen.',