feat: queue-ux-improvements (#419)

* feat(queue): add ETA display, equalizer indicator and collapsible now playing

* deleted endsAt and showDuration strings, changed eta update to 30s

* feat(queue): ETA tooltip, persistent Now Playing collapse, EQ bar pause, remove redundant Play icon

* feat(queue): fold ETA into existing total/remaining toggle as third mode

The standalone ETA span next to the track counter is removed; instead the
clickable duration label in the queue header now rotates through three
modes per click: total → remaining → eta → total. Counter (N/M) stays
where it was.

ETA mode keeps the live-feel treatment from the original PR (accent
colour while playing, muted at 50% opacity when paused). The other two
modes use plain accent.

i18n: queue.etaTooltip removed (no longer a separate descriptive label),
queue.showEta added as the action tooltip ('Show estimated end time')
in all 8 locales — matches the showRemaining / showTotal pattern.

* docs(changelog): add #419 queue UX improvements entry

Adds the [1.45.0] / Added entry for this PR's queue panel refinements
(position counter, tri-state duration toggle including ETA, collapsible
Now Playing section, animated EQ indicator).

---------

Co-authored-by: Psychotoxical <171614930+Psychotoxical@users.noreply.github.com>
This commit is contained in:
Kveld.
2026-05-02 16:45:55 -03:00
committed by GitHub
parent 5662dafe97
commit 18b4a982ef
33 changed files with 10115 additions and 1498 deletions
+3 -20
View File
@@ -921,8 +921,6 @@ export const enTranslation = {
fsPortraitDim: 'Photo dimming',
seekbarStyle: 'Seekbar Style',
seekbarStyleDesc: 'Choose the look of the player seek bar',
reducedAnimations: 'Reduce animations',
reducedAnimationsDesc: 'Cap animated seekbar styles to 30 fps to lower GPU usage on slower hardware. Visual difference is minimal.',
seekbarTruewave: 'Truewave',
seekbarPseudowave: 'Pseudowave',
seekbarLinedot: 'Line & Dot',
@@ -1115,6 +1113,8 @@ export const enTranslation = {
autoAdded: '— Added automatically —',
radioAdded: '— Radio —',
hide: 'Hide',
hideNowPlaying: 'Hide now playing info',
showNowPlaying: 'Show now playing info',
close: 'Close',
nextTracks: 'Next Tracks',
shareQueue: 'Copy queue share link',
@@ -1124,6 +1124,7 @@ export const enTranslation = {
trackPlural: 'tracks',
showRemaining: 'Show remaining time',
showTotal: 'Show total time',
showEta: 'Show estimated end time',
replayGain: 'ReplayGain',
rgTrack: 'T {{db}} dB',
rgAlbum: 'A {{db}} dB',
@@ -1187,24 +1188,6 @@ export const enTranslation = {
topRatedArtists: 'Top Rated Artists',
noRatedSongs: 'No rated songs yet. Rate songs in album or playlist view.',
noRatedArtists: 'No rated artists yet.',
exportShare: 'Share',
exportTitle: 'Share Top Albums',
exportSubtitle: 'Generate a shareable image of your most-played albums.',
exportFormat: 'Format',
exportFormatStory: 'Story',
exportFormatSquare: 'Square',
exportFormatTwitter: 'Twitter Card',
exportGrid: 'Grid',
exportGridLabel: '{{n}}×{{n}}',
exportPreview: 'Preview',
exportGenerate: 'Generate',
exportSave: 'Save image…',
exportCancel: 'Cancel',
exportFooterLabel: 'Top Albums',
exportNotEnough: 'Need at least {{count}} albums in your library for a {{n}}×{{n}} grid.',
exportSaving: 'Saving…',
exportSaved: 'Saved.',
exportSaveFailed: 'Could not save the image.',
},
player: {
regionLabel: 'Music Player',