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
* 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>
- Implemented ErrorBox for displaying error messages with retry functionality and log viewing.
- Created NoDefaultMetadataPlugin to inform users about missing default metadata providers and provide navigation to manage them.
- Updated database schema to include `repository` and `pluginApiVersion` columns in the `MetadataPluginsTable`.
- Modified `PluginConfiguration` model to include new fields for `repository` and `pluginApiVersion`.
- Enhanced JSON serialization and deserialization for the new fields in `PluginConfiguration`.
- Refactored `SettingsMetadataProviderPage` to display installed plugins with their repository information.
- Created new components `MetadataInstalledPluginItem` and `MetadataPluginRepositoryItem` for better UI representation of plugins.
- Updated plugin installation logic to handle new fields and display relevant information.
- Bumped `youtube_explode_dart` dependency version to `2.5.1`.
* feat: add new improved logo
* feat: add new improved logo
* feat: add new improved logo
* feat: add new improved logo
* chore: update the logos in app
* Merge branch 'alexio-dev-refactor/new-icons' into refactor/new-icons #2676
* chore: generate icons for every flavor
* chore: add readme banner
* chore: add back deleted images
* chore: update native splash screen
* chore: fix dart analyzer warnings