YouTubeEngine passed track duration in seconds while
SpotubeAudioSourceMatchObject.fromJson interprets `duration` as
microseconds, so durations collapsed to ~0 and the queue displayed 0:00.
- lib/services/metadata/metadata.dart: send duration in microseconds
(search() and getVideo() callbacks)
- lib/components/track_tile/track_tile.dart,
lib/modules/player/player_queue.dart: add resolveMissingDuration so
the queue actively resolves the sourced track's real duration when
the track's own metadata duration is effectively zero
Fixes#3021
* chore: replace windows app icon by a higher resolution (#2838)
Co-authored-by: Kingkor Roy Tirtho <krtirtho@gmail.com>
* fix: upgrade NewPipeExtractor to latest version fixinng playback issue
* cd: disable free disk space step
* chore: upgrade pubspec
* fix(android): build not working due to
* chore: remove package assets folder
* fix: lyrics not working
* chore: generate changelog
---------
Co-authored-by: Tobse <1190109+TobseF@users.noreply.github.com>
* feat(queue): add multi-select and bulk actions to queue
- Add selection mode to PlayerQueue with long-press to select
- Disable inner navigation (title/artist) when selecting via TrackTile
- Show checkboxes only in selection mode
- Add selection AppBar behavior and bottom-sheet menu with: Select all, Add to playlist, Remove selected, Cancel
- Reuse existing PlaylistAddTrackDialog for bulk add
- Hide drag handle while in selection mode
Closes: # (implement multi-select queue feature)
* chore: update .gitignore to include .vscode and modify signing configurations back to default in build.gradle
* chore: add VS Code configuration files
* chore: update dependencies in pubspec.lock
* chore: update pubspec.lock to reflect dependency changes and version updates
* chore: fix replace material widgets with shadcn widgets
---------
Co-authored-by: Kingkor Roy Tirtho <krtirtho@gmail.com>