Compare commits

...

11 Commits

Author SHA1 Message Date
Richard Hajek
17faa2953e
Merge 42e954428b into ecc0bdcc42 2025-09-09 00:45:30 +06:00
Kingkor Roy Tirtho
ecc0bdcc42 chore: slate color by default 2025-09-09 00:13:43 +06:00
Kingkor Roy Tirtho
49c04af302 chore: add translation attribute for conventional-commit 2025-09-08 23:47:55 +06:00
Kingkor Roy Tirtho
afe0bea306 docs: add updated screenshots 2025-09-08 22:50:06 +06:00
Stephan Paternotte
eadf2d928f
translation: correction of the dutch language (#1306)
Co-authored-by: Kingkor Roy Tirtho <krtirtho@gmail.com>
2025-09-08 20:10:03 +06:00
Richard Hajek
a299a97ca4
doc: compilation with fvm (#2254)
* doc: compilation with fvm

* Update bootstrap command in CONTRIBUTION.md

Removed the 'enable-experiment=records,patterns' option from the build_runner command.

---------

Co-authored-by: Kingkor Roy Tirtho <krtirtho@gmail.com>
2025-09-08 20:06:03 +06:00
Kingkor Roy Tirtho
cbbd0a2b40 chore: update podfile 2025-09-08 19:42:48 +06:00
Richard Hajek
42e954428b feat: added filtering duplicates in recent 2025-01-18 18:01:26 +01:00
Kingkor Roy Tirtho
8c1337d1fc
Merge pull request #2118 from KRTirtho/dev
chore: release 3.9.0
2024-12-09 00:04:29 +06:00
Kingkor Roy Tirtho
94e704087f Merge branch 'dev' 2024-10-09 16:38:23 +06:00
Kingkor Roy Tirtho
8e287ab1e5
Merge pull request #1981 from KRTirtho/dev
Release 3.8.3
2024-10-09 15:39:31 +06:00
41 changed files with 1362 additions and 198 deletions

View File

@ -119,7 +119,7 @@ Enhancement suggestions are tracked as [GitHub issues](https://github.com/KRTirt
Do the following: Do the following:
- Download the latest Flutter SDK (>=3.16.0) & enable desktop support - Install [Dart](https://dart.dev/get-dart) and [fvm](https://fvm.app/documentation/getting-started/installation)
- Install Development dependencies in linux - Install Development dependencies in linux
- Debian (>=12/Bookworm)/Ubuntu - Debian (>=12/Bookworm)/Ubuntu
```bash ```bash
@ -138,11 +138,11 @@ Do the following:
- Create a `.env` in root of the project following the `.env.example` template - Create a `.env` in root of the project following the `.env.example` template
- Now run the following to bootstrap the project - Now run the following to bootstrap the project
```bash ```bash
flutter pub get && dart run build_runner build --delete-conflicting-outputs --enable-experiment=records,patterns fvm flutter pub get && fvm dart run build_runner build --delete-conflicting-outputs
``` ```
- Finally run these following commands in the root of the project to start the Spotube Locally - Finally run these following commands in the root of the project to start the Spotube Locally
```bash ```bash
flutter run -d <window|macos|linux|(<android-device-id>)> fvm flutter run -d <window|macos|linux|(<android-device-id>)>
``` ```
Do debugging/testing/build etc then submit to us with PR against the development branch (dev) & we'll review your code Do debugging/testing/build etc then submit to us with PR against the development branch (dev) & we'll review your code

View File

@ -18,6 +18,10 @@ Btw it's not just another Electron app 😉
--- ---
![Spotube Desktop](assets/branding/spotube-screenshot.png)
![Spotube Mobile](assets/branding/mobile-screenshots/combined.jpg)
</div> </div>
## 🌃 Features ## 🌃 Features

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 172 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 790 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1006 KiB

After

Width:  |  Height:  |  Size: 771 KiB

View File

@ -61,7 +61,7 @@ protect_breaking_commits = false
commit_parsers = [ commit_parsers = [
{ message = "^feat", group = "<!-- 0 -->Features" }, { message = "^feat", group = "<!-- 0 -->Features" },
{ message = "^fix", group = "<!-- 1 -->Bug Fixes" }, { message = "^fix", group = "<!-- 1 -->Bug Fixes" },
# { message = "^doc", group = "<!-- 3 -->📚 Documentation" }, { message = "^translation", group = "<!-- 3 --> Translation" },
# { message = "^perf", group = "<!-- 4 -->⚡ Performance" }, # { message = "^perf", group = "<!-- 4 -->⚡ Performance" },
# { message = "^refactor", group = "<!-- 2 -->🚜 Refactor" }, # { message = "^refactor", group = "<!-- 2 -->🚜 Refactor" },
# { message = "^style", group = "<!-- 5 -->🎨 Styling" }, # { message = "^style", group = "<!-- 5 -->🎨 Styling" },

File diff suppressed because one or more lines are too long

View File

@ -1,13 +1,16 @@
PODS: PODS:
- app_links (0.0.2): - app_links (6.4.1):
- Flutter - Flutter
- audio_service (0.0.1): - audio_service (0.0.1):
- Flutter - Flutter
- FlutterMacOS
- audio_session (0.0.1): - audio_session (0.0.1):
- Flutter - Flutter
- bonsoir_darwin (0.0.1): - bonsoir_darwin (0.0.1):
- Flutter - Flutter
- FlutterMacOS - FlutterMacOS
- connectivity_plus (0.0.1):
- Flutter
- device_info_plus (0.0.1): - device_info_plus (0.0.1):
- Flutter - Flutter
- DKImagePickerController/Core (4.3.4): - DKImagePickerController/Core (4.3.4):
@ -46,6 +49,8 @@ PODS:
- Flutter - Flutter
- file_selector_ios (0.0.1): - file_selector_ios (0.0.1):
- Flutter - Flutter
- fk_user_agent (2.0.0):
- Flutter
- Flutter (1.0.0) - Flutter (1.0.0)
- flutter_broadcasts (0.0.1): - flutter_broadcasts (0.0.1):
- Flutter - Flutter
@ -64,15 +69,17 @@ PODS:
- Flutter - Flutter
- flutter_sharing_intent (0.0.1): - flutter_sharing_intent (0.0.1):
- Flutter - Flutter
- flutter_timezone (0.0.1):
- Flutter
- home_widget (0.0.1): - home_widget (0.0.1):
- Flutter - Flutter
- image_picker_ios (0.0.1): - image_picker_ios (0.0.1):
- Flutter - Flutter
- integration_test (0.0.1): - integration_test (0.0.1):
- Flutter - Flutter
- media_kit_libs_ios_audio (1.0.4): - irondash_engine_context (0.0.1):
- Flutter - Flutter
- media_kit_native_event_loop (1.0.0): - media_kit_libs_ios_audio (1.0.4):
- Flutter - Flutter
- metadata_god (0.0.1): - metadata_god (0.0.1):
- Flutter - Flutter
@ -95,25 +102,33 @@ PODS:
- sqflite_darwin (0.0.4): - sqflite_darwin (0.0.4):
- Flutter - Flutter
- FlutterMacOS - FlutterMacOS
- sqlite3 (3.47.1): - sqlite3 (3.50.4):
- sqlite3/common (= 3.47.1) - sqlite3/common (= 3.50.4)
- sqlite3/common (3.47.1) - sqlite3/common (3.50.4)
- sqlite3/dbstatvtab (3.47.1): - sqlite3/dbstatvtab (3.50.4):
- sqlite3/common - sqlite3/common
- sqlite3/fts5 (3.47.1): - sqlite3/fts5 (3.50.4):
- sqlite3/common - sqlite3/common
- sqlite3/perf-threadsafe (3.47.1): - sqlite3/math (3.50.4):
- sqlite3/common - sqlite3/common
- sqlite3/rtree (3.47.1): - sqlite3/perf-threadsafe (3.50.4):
- sqlite3/common
- sqlite3/rtree (3.50.4):
- sqlite3/common
- sqlite3/session (3.50.4):
- sqlite3/common - sqlite3/common
- sqlite3_flutter_libs (0.0.1): - sqlite3_flutter_libs (0.0.1):
- Flutter - Flutter
- FlutterMacOS - FlutterMacOS
- sqlite3 (~> 3.47.1) - sqlite3 (~> 3.50.4)
- sqlite3/dbstatvtab - sqlite3/dbstatvtab
- sqlite3/fts5 - sqlite3/fts5
- sqlite3/math
- sqlite3/perf-threadsafe - sqlite3/perf-threadsafe
- sqlite3/rtree - sqlite3/rtree
- sqlite3/session
- super_native_extensions (0.0.1):
- Flutter
- SwiftyGif (5.4.4) - SwiftyGif (5.4.4)
- system_theme (0.0.1): - system_theme (0.0.1):
- Flutter - Flutter
@ -122,12 +137,14 @@ PODS:
DEPENDENCIES: DEPENDENCIES:
- app_links (from `.symlinks/plugins/app_links/ios`) - app_links (from `.symlinks/plugins/app_links/ios`)
- audio_service (from `.symlinks/plugins/audio_service/ios`) - audio_service (from `.symlinks/plugins/audio_service/darwin`)
- audio_session (from `.symlinks/plugins/audio_session/ios`) - audio_session (from `.symlinks/plugins/audio_session/ios`)
- bonsoir_darwin (from `.symlinks/plugins/bonsoir_darwin/darwin`) - bonsoir_darwin (from `.symlinks/plugins/bonsoir_darwin/darwin`)
- connectivity_plus (from `.symlinks/plugins/connectivity_plus/ios`)
- device_info_plus (from `.symlinks/plugins/device_info_plus/ios`) - device_info_plus (from `.symlinks/plugins/device_info_plus/ios`)
- file_picker (from `.symlinks/plugins/file_picker/ios`) - file_picker (from `.symlinks/plugins/file_picker/ios`)
- file_selector_ios (from `.symlinks/plugins/file_selector_ios/ios`) - file_selector_ios (from `.symlinks/plugins/file_selector_ios/ios`)
- fk_user_agent (from `.symlinks/plugins/fk_user_agent/ios`)
- Flutter (from `Flutter`) - Flutter (from `Flutter`)
- flutter_broadcasts (from `.symlinks/plugins/flutter_broadcasts/ios`) - flutter_broadcasts (from `.symlinks/plugins/flutter_broadcasts/ios`)
- flutter_discord_rpc (from `.symlinks/plugins/flutter_discord_rpc/ios`) - flutter_discord_rpc (from `.symlinks/plugins/flutter_discord_rpc/ios`)
@ -135,11 +152,12 @@ DEPENDENCIES:
- flutter_native_splash (from `.symlinks/plugins/flutter_native_splash/ios`) - flutter_native_splash (from `.symlinks/plugins/flutter_native_splash/ios`)
- flutter_secure_storage (from `.symlinks/plugins/flutter_secure_storage/ios`) - flutter_secure_storage (from `.symlinks/plugins/flutter_secure_storage/ios`)
- flutter_sharing_intent (from `.symlinks/plugins/flutter_sharing_intent/ios`) - flutter_sharing_intent (from `.symlinks/plugins/flutter_sharing_intent/ios`)
- flutter_timezone (from `.symlinks/plugins/flutter_timezone/ios`)
- home_widget (from `.symlinks/plugins/home_widget/ios`) - home_widget (from `.symlinks/plugins/home_widget/ios`)
- image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`) - image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`)
- integration_test (from `.symlinks/plugins/integration_test/ios`) - integration_test (from `.symlinks/plugins/integration_test/ios`)
- irondash_engine_context (from `.symlinks/plugins/irondash_engine_context/ios`)
- media_kit_libs_ios_audio (from `.symlinks/plugins/media_kit_libs_ios_audio/ios`) - media_kit_libs_ios_audio (from `.symlinks/plugins/media_kit_libs_ios_audio/ios`)
- media_kit_native_event_loop (from `.symlinks/plugins/media_kit_native_event_loop/ios`)
- metadata_god (from `.symlinks/plugins/metadata_god/ios`) - metadata_god (from `.symlinks/plugins/metadata_god/ios`)
- open_file_ios (from `.symlinks/plugins/open_file_ios/ios`) - open_file_ios (from `.symlinks/plugins/open_file_ios/ios`)
- package_info_plus (from `.symlinks/plugins/package_info_plus/ios`) - package_info_plus (from `.symlinks/plugins/package_info_plus/ios`)
@ -148,6 +166,7 @@ DEPENDENCIES:
- shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`) - shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`)
- sqflite_darwin (from `.symlinks/plugins/sqflite_darwin/darwin`) - sqflite_darwin (from `.symlinks/plugins/sqflite_darwin/darwin`)
- sqlite3_flutter_libs (from `.symlinks/plugins/sqlite3_flutter_libs/darwin`) - sqlite3_flutter_libs (from `.symlinks/plugins/sqlite3_flutter_libs/darwin`)
- super_native_extensions (from `.symlinks/plugins/super_native_extensions/ios`)
- system_theme (from `.symlinks/plugins/system_theme/ios`) - system_theme (from `.symlinks/plugins/system_theme/ios`)
- url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`) - url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
@ -164,17 +183,21 @@ EXTERNAL SOURCES:
app_links: app_links:
:path: ".symlinks/plugins/app_links/ios" :path: ".symlinks/plugins/app_links/ios"
audio_service: audio_service:
:path: ".symlinks/plugins/audio_service/ios" :path: ".symlinks/plugins/audio_service/darwin"
audio_session: audio_session:
:path: ".symlinks/plugins/audio_session/ios" :path: ".symlinks/plugins/audio_session/ios"
bonsoir_darwin: bonsoir_darwin:
:path: ".symlinks/plugins/bonsoir_darwin/darwin" :path: ".symlinks/plugins/bonsoir_darwin/darwin"
connectivity_plus:
:path: ".symlinks/plugins/connectivity_plus/ios"
device_info_plus: device_info_plus:
:path: ".symlinks/plugins/device_info_plus/ios" :path: ".symlinks/plugins/device_info_plus/ios"
file_picker: file_picker:
:path: ".symlinks/plugins/file_picker/ios" :path: ".symlinks/plugins/file_picker/ios"
file_selector_ios: file_selector_ios:
:path: ".symlinks/plugins/file_selector_ios/ios" :path: ".symlinks/plugins/file_selector_ios/ios"
fk_user_agent:
:path: ".symlinks/plugins/fk_user_agent/ios"
Flutter: Flutter:
:path: Flutter :path: Flutter
flutter_broadcasts: flutter_broadcasts:
@ -189,16 +212,18 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/flutter_secure_storage/ios" :path: ".symlinks/plugins/flutter_secure_storage/ios"
flutter_sharing_intent: flutter_sharing_intent:
:path: ".symlinks/plugins/flutter_sharing_intent/ios" :path: ".symlinks/plugins/flutter_sharing_intent/ios"
flutter_timezone:
:path: ".symlinks/plugins/flutter_timezone/ios"
home_widget: home_widget:
:path: ".symlinks/plugins/home_widget/ios" :path: ".symlinks/plugins/home_widget/ios"
image_picker_ios: image_picker_ios:
:path: ".symlinks/plugins/image_picker_ios/ios" :path: ".symlinks/plugins/image_picker_ios/ios"
integration_test: integration_test:
:path: ".symlinks/plugins/integration_test/ios" :path: ".symlinks/plugins/integration_test/ios"
irondash_engine_context:
:path: ".symlinks/plugins/irondash_engine_context/ios"
media_kit_libs_ios_audio: media_kit_libs_ios_audio:
:path: ".symlinks/plugins/media_kit_libs_ios_audio/ios" :path: ".symlinks/plugins/media_kit_libs_ios_audio/ios"
media_kit_native_event_loop:
:path: ".symlinks/plugins/media_kit_native_event_loop/ios"
metadata_god: metadata_god:
:path: ".symlinks/plugins/metadata_god/ios" :path: ".symlinks/plugins/metadata_god/ios"
open_file_ios: open_file_ios:
@ -215,47 +240,53 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/sqflite_darwin/darwin" :path: ".symlinks/plugins/sqflite_darwin/darwin"
sqlite3_flutter_libs: sqlite3_flutter_libs:
:path: ".symlinks/plugins/sqlite3_flutter_libs/darwin" :path: ".symlinks/plugins/sqlite3_flutter_libs/darwin"
super_native_extensions:
:path: ".symlinks/plugins/super_native_extensions/ios"
system_theme: system_theme:
:path: ".symlinks/plugins/system_theme/ios" :path: ".symlinks/plugins/system_theme/ios"
url_launcher_ios: url_launcher_ios:
:path: ".symlinks/plugins/url_launcher_ios/ios" :path: ".symlinks/plugins/url_launcher_ios/ios"
SPEC CHECKSUMS: SPEC CHECKSUMS:
app_links: e7a6750a915a9e161c58d91bc610e8cd1d4d0ad0 app_links: 3dbc685f76b1693c66a6d9dd1e9ab6f73d97dc0a
audio_service: f509d65da41b9521a61f1c404dd58651f265a567 audio_service: aa99a6ba2ae7565996015322b0bb024e1d25c6fd
audio_session: 088d2483ebd1dc43f51d253d4a1c517d9a2e7207 audio_session: 9bb7f6c970f21241b19f5a3658097ae459681ba0
bonsoir_darwin: e3b8526c42ca46a885142df84229131dfabea842 bonsoir_darwin: 29c7ccf356646118844721f36e1de4b61f6cbd0e
device_info_plus: bf2e3232933866d73fe290f2942f2156cdd10342 connectivity_plus: cb623214f4e1f6ef8fe7403d580fdad517d2f7dd
device_info_plus: 21fcca2080fbcd348be798aa36c3e5ed849eefbe
DKImagePickerController: b512c28220a2b8ac7419f21c491fc8534b7601ac DKImagePickerController: b512c28220a2b8ac7419f21c491fc8534b7601ac
DKPhotoGallery: fdfad5125a9fdda9cc57df834d49df790dbb4179 DKPhotoGallery: fdfad5125a9fdda9cc57df834d49df790dbb4179
file_picker: 09aa5ec1ab24135ccd7a1621c46c84134bfd6655 file_picker: 9b3292d7c8bc68c8a7bf8eb78f730e49c8efc517
file_selector_ios: f0670c1064a8c8450e38145d8043160105d0b97c file_selector_ios: f92e583d43608aebc2e4a18daac30b8902845502
Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 fk_user_agent: 137145b086229251761678fe034da53753f4ce59
flutter_broadcasts: 3ece15b27d8ccbe2132c3df303e7c3401feab882 Flutter: cabc95a1d2626b1b06e7179b784ebcf0c0cde467
flutter_discord_rpc: e1c342f29ceb9dd76cdc01db59a70c93bb4d9ec5 flutter_broadcasts: 7bb7cc1024900a7f85e98b6faab795290b7c2339
flutter_inappwebview_ios: 6f63631e2c62a7c350263b13fa5427aedefe81d4 flutter_discord_rpc: 0572e8227ea730c5afe5876a37c08c728ce95f3a
flutter_native_splash: e8a1e01082d97a8099d973f919f57904c925008a flutter_inappwebview_ios: b89ba3482b96fb25e00c967aae065701b66e9b99
flutter_secure_storage: d33dac7ae2ea08509be337e775f6b59f1ff45f12 flutter_native_splash: c32d145d68aeda5502d5f543ee38c192065986cf
flutter_sharing_intent: e35380d0e1501d7111dbb7e46d5ac6339da6da98 flutter_secure_storage: 1ed9476fba7e7a782b22888f956cce43e2c62f13
home_widget: 0434835a4c9a75704264feff6be17ea40e0f0d57 flutter_sharing_intent: afdc98985814d2c01d8c0956a177d6b6dfbdc373
image_picker_ios: c560581cceedb403a6ff17f2f816d7fea1421fc1 flutter_timezone: 7c838e17ffd4645d261e87037e5bebf6d38fe544
integration_test: 252f60fa39af5e17c3aa9899d35d908a0721b573 home_widget: f169fc41fd807b4d46ab6615dc44d62adbf9f64f
media_kit_libs_ios_audio: 8f39d96a9c630685dfb844c289bd1d114c486fb3 image_picker_ios: 7fe1ff8e34c1790d6fff70a32484959f563a928a
media_kit_native_event_loop: 99111eded5acbdc9c2738021ea6550dd36ca8837 integration_test: 4a889634ef21a45d28d50d622cf412dc6d9f586e
metadata_god: 4bbd8523cdb5d42c5e59d2fabad01ff8f4bc53f9 irondash_engine_context: 8e58ca8e0212ee9d1c7dc6a42121849986c88486
open_file_ios: 461db5853723763573e140de3193656f91990d9e media_kit_libs_ios_audio: 905e6323b72e65c63ab9262b2e473f52c024a3a8
metadata_god: 018b59c2f3617569928550dcbd17481591557c1d
open_file_ios: 5ff7526df64e4394b4fe207636b67a95e83078bb
OrderedSet: e539b66b644ff081c73a262d24ad552a69be3a94 OrderedSet: e539b66b644ff081c73a262d24ad552a69be3a94
package_info_plus: 58f0028419748fad15bf008b270aaa8e54380b1c package_info_plus: 580e9a5f1b6ca5594e7c9ed5f92d1dfb2a66b5e1
path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46 path_provider_foundation: 080d55be775b7414fd5a5ef3ac137b97b097e564
permission_handler_apple: 9878588469a2b0d0fc1e048d9f43605f92e6cec2 permission_handler_apple: 4ed2196e43d0651e8ff7ca3483a069d469701f2d
SDWebImage: a81bbb3ba4ea5f810f4069c68727cb118467a04a SDWebImage: a81bbb3ba4ea5f810f4069c68727cb118467a04a
shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78 shared_preferences_foundation: 9e1978ff2562383bd5676f64ec4e9aa8fa06a6f7
sqflite_darwin: 5a7236e3b501866c1c9befc6771dfd73ffb8702d sqflite_darwin: 20b2a3a3b70e43edae938624ce550a3cbf66a3d0
sqlite3: 1e522f0938463e44b7faf50393b40bdc1e1e456d sqlite3: 73513155ec6979715d3904ef53a8d68892d4032b
sqlite3_flutter_libs: 1b4e98da20ebd4e9b1240269b78cdcf492dbe9f3 sqlite3_flutter_libs: 83f8e9f5b6554077f1d93119fe20ebaa5f3a9ef1
super_native_extensions: b763c02dc3a8fd078389f410bf15149179020cb4
SwiftyGif: 93a1cc87bf3a51916001cf8f3d63835fb64c819f SwiftyGif: 93a1cc87bf3a51916001cf8f3d63835fb64c819f
system_theme: bfc1b0913d08f38d8c6bbe94b202a58df599d9f7 system_theme: a94f91f49eeb97cfa768c7d5a9b2f6aa51b00494
url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe url_launcher_ios: 694010445543906933d732453a59da0a173ae33d
PODFILE CHECKSUM: 0659b64ac6e9e96b61d8550decffa8bff51a957e PODFILE CHECKSUM: 0659b64ac6e9e96b61d8550decffa8bff51a957e

View File

@ -9,7 +9,7 @@
"genre": "Genre", "genre": "Genre",
"personalized": "Gepersonaliseerd", "personalized": "Gepersonaliseerd",
"featured": "Aanbevolen", "featured": "Aanbevolen",
"new_releases": "Nieuwe uitgaves", "new_releases": "Nieuwe uitgaven",
"songs": "Liedjes", "songs": "Liedjes",
"playing_track": "{track} afspelen", "playing_track": "{track} afspelen",
"queue_clear_alert": "Dit zal de huidige wachtrij wissen. {track_length} nummers worden verwijderd\nWil je doorgaan?", "queue_clear_alert": "Dit zal de huidige wachtrij wissen. {track_length} nummers worden verwijderd\nWil je doorgaan?",
@ -41,14 +41,15 @@
"sort_z_a": "Sorteren op Z-A", "sort_z_a": "Sorteren op Z-A",
"sort_artist": "Sorteren op artiest", "sort_artist": "Sorteren op artiest",
"sort_album": "Sorteren op album", "sort_album": "Sorteren op album",
"sort_duration": "Sorteren op lengte",
"sort_tracks": "Nummers sorteren", "sort_tracks": "Nummers sorteren",
"currently_downloading": "Momenteel aan het downloaden ({tracks_length})", "currently_downloading": "Momenteel aan het downloaden ({tracks_length})",
"cancel_all": "Alle annuleren", "cancel_all": "Alles annuleren",
"filter_artist": "Artiesten filteren…", "filter_artist": "Artiesten filteren…",
"followers": "{followers} volgers", "followers": "{followers} volgers",
"add_artist_to_blacklist": "Artiest toevoegen aan zwarte lijst", "add_artist_to_blacklist": "Artiest toevoegen aan zwarte lijst",
"top_tracks": "Topsporen", "top_tracks": "Topnummers",
"fans_also_like": "Liefhebbers willen ook", "fans_also_like": "Fans luisteren ook",
"loading": "Laden…", "loading": "Laden…",
"artist": "Artiest", "artist": "Artiest",
"blacklisted": "Zwarte lijst", "blacklisted": "Zwarte lijst",
@ -89,8 +90,8 @@
"share": "Delen", "share": "Delen",
"mini_player": "Minispeler", "mini_player": "Minispeler",
"slide_to_seek": "Schuiven om vooruit of achteruit te zoeken", "slide_to_seek": "Schuiven om vooruit of achteruit te zoeken",
"shuffle_playlist": "Afspeellijst schuifelen", "shuffle_playlist": "Afspeellijst willekeurig",
"unshuffle_playlist": "Afspeellijst onschuifelen", "unshuffle_playlist": "Afspeellijst op volgorde",
"previous_track": "Vorige nummer", "previous_track": "Vorige nummer",
"next_track": "Volgende nummer", "next_track": "Volgende nummer",
"pause_playback": "Afspelen pauzeren", "pause_playback": "Afspelen pauzeren",
@ -98,7 +99,7 @@
"loop_track": "Nummer herhalen", "loop_track": "Nummer herhalen",
"repeat_playlist": "Afspeellijst herhalen", "repeat_playlist": "Afspeellijst herhalen",
"queue": "Wachtrij", "queue": "Wachtrij",
"alternative_track_sources": "Alternatieve nummerbronnen", "alternative_track_sources": "Alternatieve bronnen voor nummers",
"download_track": "Nummer downloaden", "download_track": "Nummer downloaden",
"tracks_in_queue": "{tracks} nummers in wachtrij", "tracks_in_queue": "{tracks} nummers in wachtrij",
"clear_all": "Alles wissen", "clear_all": "Alles wissen",
@ -240,8 +241,8 @@
"views": "Weergaven", "views": "Weergaven",
"streamUrl": "Stream-URL", "streamUrl": "Stream-URL",
"stop": "Stoppen", "stop": "Stoppen",
"sort_newest": "Sorteren op nieuwste toegevoegd", "sort_newest": "Sorteren op recent toegevoegd",
"sort_oldest": "Sorteren op oudste toegevoegd", "sort_oldest": "Sorteren op langst toegevoegd",
"sleep_timer": "Slaaptimer", "sleep_timer": "Slaaptimer",
"mins": "{minutes} minuten", "mins": "{minutes} minuten",
"hours": "{hours} uren", "hours": "{hours} uren",
@ -287,34 +288,32 @@
"explore_genres": "Genres verkennen", "explore_genres": "Genres verkennen",
"friends": "Vrienden", "friends": "Vrienden",
"no_lyrics_available": "Sorry, geen teksten gevonden voor dit nummer", "no_lyrics_available": "Sorry, geen teksten gevonden voor dit nummer",
"sort_duration": "Sorteer op Duur", "start_a_radio": "Een radio starten",
"audio_source": "Audiobron", "how_to_start_radio": "Hoe wil je de radio starten?",
"start_a_radio": "Start een Radio", "replace_queue_question": "Wil je de huidige wachtrij vervangen of eraan toevoegen?",
"how_to_start_radio": "Hoe wilt u de radio starten?", "endless_playback": "Oneindig afspelen",
"replace_queue_question": "Wilt u de huidige wachtrij vervangen of eraan toevoegen?", "delete_playlist": "Afspeellijst verwijderen",
"endless_playback": "Eindeloze Afspelen", "delete_playlist_confirmation": "Weet je zeker dat je deze afspeellijst wilt verwijderen?",
"delete_playlist": "Verwijder Afspeellijst", "local_tracks": "Lokale nummers",
"delete_playlist_confirmation": "Weet u zeker dat u deze afspeellijst wilt verwijderen?", "song_link": "Song-link",
"local_tracks": "Lokale Nummers", "skip_this_nonsense": "Deze onzin overslaan",
"song_link": "Nummer Link", "freedom_of_music": "“Vrijheid van muziek”",
"skip_this_nonsense": "Sla deze onzin over", "freedom_of_music_palm": "“Vrijheid van muziek in je hand”",
"freedom_of_music": "“Vrijheid van Muziek”",
"freedom_of_music_palm": "“Vrijheid van Muziek in de palm van je hand”",
"get_started": "Laten we beginnen", "get_started": "Laten we beginnen",
"youtube_source_description": "Aanbevolen en werkt het beste.", "youtube_source_description": "Aangeraden en werkt het best.",
"piped_source_description": "Voel je vrij? Hetzelfde als YouTube maar veel gratis.", "piped_source_description": "Voel je je vrij? Net als YouTube, maar meer vrij.",
"jiosaavn_source_description": "Het beste voor de Zuid-Aziatische regio.", "jiosaavn_source_description": "Het beste voor de regio Zuid-Azië.",
"highest_quality": "Hoogste Kwaliteit: {quality}", "highest_quality": "Hoogste kwaliteit: {quality}",
"select_audio_source": "Selecteer Audiobron", "select_audio_source": "Audiobron kiezen",
"endless_playback_description": "Voeg automatisch nieuwe nummers toe aan het einde van de wachtrij", "endless_playback_description": "Nieuwe nummers automatisch achteraan de wachtrij toevoegen",
"choose_your_region": "Kies uw regio", "choose_your_region": "Kies je regio",
"choose_your_region_description": "Dit zal Spotube helpen om de juiste inhoud voor uw locatie te tonen.", "choose_your_region_description": "Dit helpt Spotube om de juiste inhoud\nvoor jouw locatie te tonen.",
"choose_your_language": "Kies uw taal", "choose_your_language": "Kies je taal",
"help_project_grow": "Help dit project groeien", "help_project_grow": "Help dit project met groeien",
"help_project_grow_description": "Spotube is een open-source project. U kunt dit project helpen groeien door bij te dragen aan het project, bugs te melden of nieuwe functies voor te stellen.", "help_project_grow_description": "Spotube is een open-source project. Je kunt dit project helpen groeien door eraan bij te dragen, problemen te melden of nieuwe functies voor te stellen.",
"contribute_on_github": "Bijdragen op GitHub", "contribute_on_github": "Bijdragen on GitHub",
"donate_on_open_collective": "Doneren op Open Collective", "donate_on_open_collective": "Doneren on Open Collective",
"browse_anonymously": "Anoniem Bladeren", "browse_anonymously": "Anoniem browsen",
"enable_connect": "Verbinding inschakelen", "enable_connect": "Verbinding inschakelen",
"enable_connect_description": "Spotube bedienen vanaf andere apparaten", "enable_connect_description": "Spotube bedienen vanaf andere apparaten",
"devices": "Apparaten", "devices": "Apparaten",
@ -479,4 +478,4 @@
"configure_your_own_metadata_plugin": "Configureer uw eigen metadata-aanbieder voor afspeellijst/album/artiest/feed", "configure_your_own_metadata_plugin": "Configureer uw eigen metadata-aanbieder voor afspeellijst/album/artiest/feed",
"audio_scrobblers": "Audioscrobblers", "audio_scrobblers": "Audioscrobblers",
"scrobbling": "Scrobbling" "scrobbling": "Scrobbling"
} }

View File

@ -39,7 +39,7 @@ class AppLocalizationsNl extends AppLocalizations {
String get featured => 'Aanbevolen'; String get featured => 'Aanbevolen';
@override @override
String get new_releases => 'Nieuwe uitgaves'; String get new_releases => 'Nieuwe uitgaven';
@override @override
String get songs => 'Liedjes'; String get songs => 'Liedjes';
@ -139,7 +139,7 @@ class AppLocalizationsNl extends AppLocalizations {
String get sort_album => 'Sorteren op album'; String get sort_album => 'Sorteren op album';
@override @override
String get sort_duration => 'Sorteer op Duur'; String get sort_duration => 'Sorteren op lengte';
@override @override
String get sort_tracks => 'Nummers sorteren'; String get sort_tracks => 'Nummers sorteren';
@ -150,7 +150,7 @@ class AppLocalizationsNl extends AppLocalizations {
} }
@override @override
String get cancel_all => 'Alle annuleren'; String get cancel_all => 'Alles annuleren';
@override @override
String get filter_artist => 'Artiesten filteren…'; String get filter_artist => 'Artiesten filteren…';
@ -164,10 +164,10 @@ class AppLocalizationsNl extends AppLocalizations {
String get add_artist_to_blacklist => 'Artiest toevoegen aan zwarte lijst'; String get add_artist_to_blacklist => 'Artiest toevoegen aan zwarte lijst';
@override @override
String get top_tracks => 'Topsporen'; String get top_tracks => 'Topnummers';
@override @override
String get fans_also_like => 'Liefhebbers willen ook'; String get fans_also_like => 'Fans luisteren ook';
@override @override
String get loading => 'Laden…'; String get loading => 'Laden…';
@ -312,10 +312,10 @@ class AppLocalizationsNl extends AppLocalizations {
String get slide_to_seek => 'Schuiven om vooruit of achteruit te zoeken'; String get slide_to_seek => 'Schuiven om vooruit of achteruit te zoeken';
@override @override
String get shuffle_playlist => 'Afspeellijst schuifelen'; String get shuffle_playlist => 'Afspeellijst willekeurig';
@override @override
String get unshuffle_playlist => 'Afspeellijst onschuifelen'; String get unshuffle_playlist => 'Afspeellijst op volgorde';
@override @override
String get previous_track => 'Vorige nummer'; String get previous_track => 'Vorige nummer';
@ -342,7 +342,7 @@ class AppLocalizationsNl extends AppLocalizations {
String get queue => 'Wachtrij'; String get queue => 'Wachtrij';
@override @override
String get alternative_track_sources => 'Alternatieve nummerbronnen'; String get alternative_track_sources => 'Alternatieve bronnen voor nummers';
@override @override
String get download_track => 'Nummer downloaden'; String get download_track => 'Nummer downloaden';
@ -776,10 +776,10 @@ class AppLocalizationsNl extends AppLocalizations {
String get stop => 'Stoppen'; String get stop => 'Stoppen';
@override @override
String get sort_newest => 'Sorteren op nieuwste toegevoegd'; String get sort_newest => 'Sorteren op recent toegevoegd';
@override @override
String get sort_oldest => 'Sorteren op oudste toegevoegd'; String get sort_oldest => 'Sorteren op langst toegevoegd';
@override @override
String get sleep_timer => 'Slaaptimer'; String get sleep_timer => 'Slaaptimer';
@ -815,7 +815,7 @@ class AppLocalizationsNl extends AppLocalizations {
String get search_mode => 'Zoekmodus'; String get search_mode => 'Zoekmodus';
@override @override
String get audio_source => 'Audiobron'; String get audio_source => 'Audio Source';
@override @override
String get ok => 'Oké'; String get ok => 'Oké';
@ -927,57 +927,56 @@ class AppLocalizationsNl extends AppLocalizations {
'Sorry, geen teksten gevonden voor dit nummer'; 'Sorry, geen teksten gevonden voor dit nummer';
@override @override
String get start_a_radio => 'Start een Radio'; String get start_a_radio => 'Een radio starten';
@override @override
String get how_to_start_radio => 'Hoe wilt u de radio starten?'; String get how_to_start_radio => 'Hoe wil je de radio starten?';
@override @override
String get replace_queue_question => String get replace_queue_question =>
'Wilt u de huidige wachtrij vervangen of eraan toevoegen?'; 'Wil je de huidige wachtrij vervangen of eraan toevoegen?';
@override @override
String get endless_playback => 'Eindeloze Afspelen'; String get endless_playback => 'Oneindig afspelen';
@override @override
String get delete_playlist => 'Verwijder Afspeellijst'; String get delete_playlist => 'Afspeellijst verwijderen';
@override @override
String get delete_playlist_confirmation => String get delete_playlist_confirmation =>
'Weet u zeker dat u deze afspeellijst wilt verwijderen?'; 'Weet je zeker dat je deze afspeellijst wilt verwijderen?';
@override @override
String get local_tracks => 'Lokale Nummers'; String get local_tracks => 'Lokale nummers';
@override @override
String get local_tab => 'Lokaal'; String get local_tab => 'Lokaal';
@override @override
String get song_link => 'Nummer Link'; String get song_link => 'Song-link';
@override @override
String get skip_this_nonsense => 'Sla deze onzin over'; String get skip_this_nonsense => 'Deze onzin overslaan';
@override @override
String get freedom_of_music => '“Vrijheid van Muziek”'; String get freedom_of_music => '“Vrijheid van muziek”';
@override @override
String get freedom_of_music_palm => String get freedom_of_music_palm => '“Vrijheid van muziek in je hand”';
'“Vrijheid van Muziek in de palm van je hand”';
@override @override
String get get_started => 'Laten we beginnen'; String get get_started => 'Laten we beginnen';
@override @override
String get youtube_source_description => 'Aanbevolen en werkt het beste.'; String get youtube_source_description => 'Aangeraden en werkt het best.';
@override @override
String get piped_source_description => String get piped_source_description =>
'Voel je vrij? Hetzelfde als YouTube maar veel gratis.'; 'Voel je je vrij? Net als YouTube, maar meer vrij.';
@override @override
String get jiosaavn_source_description => String get jiosaavn_source_description =>
'Het beste voor de Zuid-Aziatische regio.'; 'Het beste voor de regio Zuid-Azië.';
@override @override
String get invidious_source_description => String get invidious_source_description =>
@ -985,41 +984,41 @@ class AppLocalizationsNl extends AppLocalizations {
@override @override
String highest_quality(Object quality) { String highest_quality(Object quality) {
return 'Hoogste Kwaliteit: $quality'; return 'Hoogste kwaliteit: $quality';
} }
@override @override
String get select_audio_source => 'Selecteer Audiobron'; String get select_audio_source => 'Audiobron kiezen';
@override @override
String get endless_playback_description => String get endless_playback_description =>
'Voeg automatisch nieuwe nummers toe aan het einde van de wachtrij'; 'Nieuwe nummers automatisch achteraan de wachtrij toevoegen';
@override @override
String get choose_your_region => 'Kies uw regio'; String get choose_your_region => 'Kies je regio';
@override @override
String get choose_your_region_description => String get choose_your_region_description =>
'Dit zal Spotube helpen om de juiste inhoud voor uw locatie te tonen.'; 'Dit helpt Spotube om de juiste inhoud\nvoor jouw locatie te tonen.';
@override @override
String get choose_your_language => 'Kies uw taal'; String get choose_your_language => 'Kies je taal';
@override @override
String get help_project_grow => 'Help dit project groeien'; String get help_project_grow => 'Help dit project met groeien';
@override @override
String get help_project_grow_description => String get help_project_grow_description =>
'Spotube is een open-source project. U kunt dit project helpen groeien door bij te dragen aan het project, bugs te melden of nieuwe functies voor te stellen.'; 'Spotube is een open-source project. Je kunt dit project helpen groeien door eraan bij te dragen, problemen te melden of nieuwe functies voor te stellen.';
@override @override
String get contribute_on_github => 'Bijdragen op GitHub'; String get contribute_on_github => 'Bijdragen on GitHub';
@override @override
String get donate_on_open_collective => 'Doneren op Open Collective'; String get donate_on_open_collective => 'Doneren on Open Collective';
@override @override
String get browse_anonymously => 'Anoniem Bladeren'; String get browse_anonymously => 'Anoniem browsen';
@override @override
String get enable_connect => 'Verbinding inschakelen'; String get enable_connect => 'Verbinding inschakelen';

View File

@ -217,7 +217,7 @@ class Spotube extends HookConsumerWidget {
iconTheme: const IconThemeProperties(), iconTheme: const IconThemeProperties(),
colorScheme: colorScheme:
colorSchemeMap[accentMaterialColor.name]?.call(ThemeMode.light) ?? colorSchemeMap[accentMaterialColor.name]?.call(ThemeMode.light) ??
LegacyColorSchemes.lightOrange(), LegacyColorSchemes.lightSlate(),
surfaceOpacity: .8, surfaceOpacity: .8,
surfaceBlur: 10, surfaceBlur: 10,
), ),
@ -226,7 +226,7 @@ class Spotube extends HookConsumerWidget {
iconTheme: const IconThemeProperties(), iconTheme: const IconThemeProperties(),
colorScheme: colorScheme:
colorSchemeMap[accentMaterialColor.name]?.call(ThemeMode.dark) ?? colorSchemeMap[accentMaterialColor.name]?.call(ThemeMode.dark) ??
LegacyColorSchemes.darkOrange(), LegacyColorSchemes.darkSlate(),
surfaceOpacity: .8, surfaceOpacity: .8,
surfaceBlur: 10, surfaceBlur: 10,
), ),

View File

@ -102,7 +102,7 @@ class AppDatabase extends _$AppDatabase {
); );
await customStatement( await customStatement(
"ALTER TABLE $tableName " "ALTER TABLE $tableName "
"ADD COLUMN $columnName TEXT NOT NULL DEFAULT 'Orange:0xFFf97315'", "ADD COLUMN $columnName TEXT NOT NULL DEFAULT 'Slate:0xff64748b'",
); );
await customStatement( await customStatement(
"UPDATE $tableName " "UPDATE $tableName "
@ -114,7 +114,7 @@ class AppDatabase extends _$AppDatabase {
); );
await customStatement( await customStatement(
"UPDATE $tableName " "UPDATE $tableName "
"SET $columnName = 'Orange:0xFFf97315' WHERE $columnName = 'Blue:0xFF2196F3'", "SET $columnName = 'Slate:0xff64748b' WHERE $columnName = 'Blue:0xFF2196F3'",
); );
}, },
from5To6: (m, schema) async { from5To6: (m, schema) async {

View File

@ -666,7 +666,7 @@ class $PreferencesTableTable extends PreferencesTable
'accent_color_scheme', aliasedName, false, 'accent_color_scheme', aliasedName, false,
type: DriftSqlType.string, type: DriftSqlType.string,
requiredDuringInsert: false, requiredDuringInsert: false,
defaultValue: const Constant("Orange:0xFFf97315")) defaultValue: const Constant("Slate:0xff64748b"))
.withConverter<SpotubeColor>( .withConverter<SpotubeColor>(
$PreferencesTableTable.$converteraccentColorScheme); $PreferencesTableTable.$converteraccentColorScheme);
static const VerificationMeta _layoutModeMeta = static const VerificationMeta _layoutModeMeta =

View File

@ -1407,7 +1407,7 @@ final class Schema5 extends i0.VersionedSchema {
i1.GeneratedColumn<String> _column_55(String aliasedName) => i1.GeneratedColumn<String> _column_55(String aliasedName) =>
i1.GeneratedColumn<String>('accent_color_scheme', aliasedName, false, i1.GeneratedColumn<String>('accent_color_scheme', aliasedName, false,
type: i1.DriftSqlType.string, type: i1.DriftSqlType.string,
defaultValue: const Constant("Orange:0xFFf97315")); defaultValue: const Constant("Slate:0xff64748b"));
final class Schema6 extends i0.VersionedSchema { final class Schema6 extends i0.VersionedSchema {
Schema6({required super.database}) : super(version: 6); Schema6({required super.database}) : super(version: 6);

View File

@ -79,7 +79,7 @@ class PreferencesTable extends Table {
TextColumn get closeBehavior => textEnum<CloseBehavior>() TextColumn get closeBehavior => textEnum<CloseBehavior>()
.withDefault(Constant(CloseBehavior.close.name))(); .withDefault(Constant(CloseBehavior.close.name))();
TextColumn get accentColorScheme => text() TextColumn get accentColorScheme => text()
.withDefault(const Constant("Orange:0xFFf97315")) .withDefault(const Constant("Slate:0xff64748b"))
.map(const SpotubeColorConverter())(); .map(const SpotubeColorConverter())();
TextColumn get layoutMode => TextColumn get layoutMode =>
textEnum<LayoutMode>().withDefault(Constant(LayoutMode.adaptive.name))(); textEnum<LayoutMode>().withDefault(Constant(LayoutMode.adaptive.name))();
@ -131,7 +131,7 @@ class PreferencesTable extends Table {
systemTitleBar: false, systemTitleBar: false,
skipNonMusic: false, skipNonMusic: false,
closeBehavior: CloseBehavior.close, closeBehavior: CloseBehavior.close,
accentColorScheme: SpotubeColor(Colors.orange.value, name: "Orange"), accentColorScheme: SpotubeColor(Colors.slate.value, name: "Slate"),
layoutMode: LayoutMode.adaptive, layoutMode: LayoutMode.adaptive,
locale: const Locale("system", "system"), locale: const Locale("system", "system"),
market: Market.US, market: Market.US,

View File

@ -9,7 +9,7 @@ import 'package:spotube/provider/history/recent.dart';
class HomeRecentlyPlayedSection extends HookConsumerWidget { class HomeRecentlyPlayedSection extends HookConsumerWidget {
const HomeRecentlyPlayedSection({super.key}); const HomeRecentlyPlayedSection({super.key});
@override @override
Widget build(BuildContext context, ref) { Widget build(BuildContext context, ref) {
final history = ref.watch(recentlyPlayedItems); final history = ref.watch(recentlyPlayedItems);
@ -20,17 +20,20 @@ class HomeRecentlyPlayedSection extends HookConsumerWidget {
return const SizedBox(); return const SizedBox();
} }
final uniqueItems = <dynamic>{};
final filteredItems = [
for (final item in historyData)
if (item.playlist != null && item.playlist?.id != null && uniqueItems.add(item.playlist!.id!))
item.playlist
else if (item.album != null && item.album?.id != null && uniqueItems.add(item.album?.id))
item.album
];
return Skeletonizer( return Skeletonizer(
enabled: history.isLoading, enabled: history.isLoading,
child: HorizontalPlaybuttonCardView( child: HorizontalPlaybuttonCardView(
title: Text(context.l10n.recently_played), title: Text(context.l10n.recently_played),
items: [ items: filteredItems,
for (final item in historyData)
if (item.playlist != null)
item.playlist
else if (item.album != null)
item.album
],
hasNextPage: false, hasNextPage: false,
isLoadingNextPage: false, isLoadingNextPage: false,
onFetchMore: () {}, onFetchMore: () {},

View File

@ -3,7 +3,6 @@ import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart'; import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:spotube/collections/assets.gen.dart';
import 'package:spotube/collections/side_bar_tiles.dart'; import 'package:spotube/collections/side_bar_tiles.dart';
import 'package:spotube/models/database/database.dart'; import 'package:spotube/models/database/database.dart';
import 'package:spotube/extensions/constrains.dart'; import 'package:spotube/extensions/constrains.dart';
@ -20,19 +19,6 @@ class Sidebar extends HookConsumerWidget {
super.key, super.key,
}); });
static Widget brandLogo(BuildContext context) {
return Container(
decoration: BoxDecoration(
color: Colors.black,
borderRadius: BorderRadius.circular(50),
),
child: Assets.branding.spotubeLogoPng.image(
height: 50,
cacheHeight: (100 * MediaQuery.devicePixelRatioOf(context)).toInt(),
),
);
}
@override @override
Widget build(BuildContext context, WidgetRef ref) { Widget build(BuildContext context, WidgetRef ref) {
final ThemeData(:colorScheme) = Theme.of(context); final ThemeData(:colorScheme) = Theme.of(context);

View File

@ -3,8 +3,6 @@ import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart'; import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:shadcn_flutter/shadcn_flutter_extension.dart';
import 'package:spotube/collections/assets.gen.dart';
import 'package:spotube/collections/routes.gr.dart'; import 'package:spotube/collections/routes.gr.dart';
import 'package:spotube/collections/spotube_icons.dart'; import 'package:spotube/collections/spotube_icons.dart';
import 'package:spotube/models/database/database.dart'; import 'package:spotube/models/database/database.dart';
@ -43,19 +41,17 @@ class HomePage extends HookConsumerWidget {
if (mediaQuery.smAndDown || layoutMode == LayoutMode.compact) if (mediaQuery.smAndDown || layoutMode == LayoutMode.compact)
SliverAppBar( SliverAppBar(
floating: true, floating: true,
title: Image.asset( title: DefaultTextStyle(
theme.brightness == Brightness.dark style: TextStyle(
? Assets.branding.spotubeLogoPng.path fontFamily: "Cookie",
: Assets.branding.spotubeLogoLight.path, fontSize: 30,
height: 45, letterSpacing: 1.8,
width: 45, color: theme.colorScheme.foreground,
color: theme.colorScheme.background, ),
colorBlendMode: BlendMode.saturation, child: const Text("Spotube"),
cacheHeight:
(100 * MediaQuery.devicePixelRatioOf(context)).toInt(),
), ),
backgroundColor: context.theme.colorScheme.background, backgroundColor: theme.colorScheme.background,
foregroundColor: context.theme.colorScheme.foreground, foregroundColor: theme.colorScheme.foreground,
actions: [ actions: [
const ConnectDeviceButton(), const ConnectDeviceButton(),
const Gap(10), const Gap(10),

View File

@ -1,7 +1,8 @@
PODS: PODS:
- app_links (1.0.0): - app_links (6.4.1):
- FlutterMacOS - FlutterMacOS
- audio_service (0.14.1): - audio_service (0.0.1):
- Flutter
- FlutterMacOS - FlutterMacOS
- audio_session (0.0.1): - audio_session (0.0.1):
- FlutterMacOS - FlutterMacOS
@ -9,7 +10,6 @@ PODS:
- Flutter - Flutter
- FlutterMacOS - FlutterMacOS
- connectivity_plus (0.0.1): - connectivity_plus (0.0.1):
- Flutter
- FlutterMacOS - FlutterMacOS
- desktop_webview_window (0.0.1): - desktop_webview_window (0.0.1):
- FlutterMacOS - FlutterMacOS
@ -33,8 +33,6 @@ PODS:
- FlutterMacOS - FlutterMacOS
- media_kit_libs_macos_audio (1.0.4): - media_kit_libs_macos_audio (1.0.4):
- FlutterMacOS - FlutterMacOS
- media_kit_native_event_loop (1.0.0):
- FlutterMacOS
- metadata_god (0.0.1): - metadata_god (0.0.1):
- FlutterMacOS - FlutterMacOS
- open_file_mac (0.0.1): - open_file_mac (0.0.1):
@ -53,25 +51,31 @@ PODS:
- sqflite_darwin (0.0.4): - sqflite_darwin (0.0.4):
- Flutter - Flutter
- FlutterMacOS - FlutterMacOS
- sqlite3 (3.47.2): - sqlite3 (3.50.4):
- sqlite3/common (= 3.47.2) - sqlite3/common (= 3.50.4)
- sqlite3/common (3.47.2) - sqlite3/common (3.50.4)
- sqlite3/dbstatvtab (3.47.2): - sqlite3/dbstatvtab (3.50.4):
- sqlite3/common - sqlite3/common
- sqlite3/fts5 (3.47.2): - sqlite3/fts5 (3.50.4):
- sqlite3/common - sqlite3/common
- sqlite3/perf-threadsafe (3.47.2): - sqlite3/math (3.50.4):
- sqlite3/common - sqlite3/common
- sqlite3/rtree (3.47.2): - sqlite3/perf-threadsafe (3.50.4):
- sqlite3/common
- sqlite3/rtree (3.50.4):
- sqlite3/common
- sqlite3/session (3.50.4):
- sqlite3/common - sqlite3/common
- sqlite3_flutter_libs (0.0.1): - sqlite3_flutter_libs (0.0.1):
- Flutter - Flutter
- FlutterMacOS - FlutterMacOS
- sqlite3 (~> 3.47.1) - sqlite3 (~> 3.50.4)
- sqlite3/dbstatvtab - sqlite3/dbstatvtab
- sqlite3/fts5 - sqlite3/fts5
- sqlite3/math
- sqlite3/perf-threadsafe - sqlite3/perf-threadsafe
- sqlite3/rtree - sqlite3/rtree
- sqlite3/session
- super_native_extensions (0.0.1): - super_native_extensions (0.0.1):
- FlutterMacOS - FlutterMacOS
- system_theme (0.0.1): - system_theme (0.0.1):
@ -85,10 +89,10 @@ PODS:
DEPENDENCIES: DEPENDENCIES:
- app_links (from `Flutter/ephemeral/.symlinks/plugins/app_links/macos`) - app_links (from `Flutter/ephemeral/.symlinks/plugins/app_links/macos`)
- audio_service (from `Flutter/ephemeral/.symlinks/plugins/audio_service/macos`) - audio_service (from `Flutter/ephemeral/.symlinks/plugins/audio_service/darwin`)
- audio_session (from `Flutter/ephemeral/.symlinks/plugins/audio_session/macos`) - audio_session (from `Flutter/ephemeral/.symlinks/plugins/audio_session/macos`)
- bonsoir_darwin (from `Flutter/ephemeral/.symlinks/plugins/bonsoir_darwin/darwin`) - bonsoir_darwin (from `Flutter/ephemeral/.symlinks/plugins/bonsoir_darwin/darwin`)
- connectivity_plus (from `Flutter/ephemeral/.symlinks/plugins/connectivity_plus/darwin`) - connectivity_plus (from `Flutter/ephemeral/.symlinks/plugins/connectivity_plus/macos`)
- desktop_webview_window (from `Flutter/ephemeral/.symlinks/plugins/desktop_webview_window/macos`) - desktop_webview_window (from `Flutter/ephemeral/.symlinks/plugins/desktop_webview_window/macos`)
- device_info_plus (from `Flutter/ephemeral/.symlinks/plugins/device_info_plus/macos`) - device_info_plus (from `Flutter/ephemeral/.symlinks/plugins/device_info_plus/macos`)
- file_selector_macos (from `Flutter/ephemeral/.symlinks/plugins/file_selector_macos/macos`) - file_selector_macos (from `Flutter/ephemeral/.symlinks/plugins/file_selector_macos/macos`)
@ -100,7 +104,6 @@ DEPENDENCIES:
- irondash_engine_context (from `Flutter/ephemeral/.symlinks/plugins/irondash_engine_context/macos`) - irondash_engine_context (from `Flutter/ephemeral/.symlinks/plugins/irondash_engine_context/macos`)
- local_notifier (from `Flutter/ephemeral/.symlinks/plugins/local_notifier/macos`) - local_notifier (from `Flutter/ephemeral/.symlinks/plugins/local_notifier/macos`)
- media_kit_libs_macos_audio (from `Flutter/ephemeral/.symlinks/plugins/media_kit_libs_macos_audio/macos`) - media_kit_libs_macos_audio (from `Flutter/ephemeral/.symlinks/plugins/media_kit_libs_macos_audio/macos`)
- media_kit_native_event_loop (from `Flutter/ephemeral/.symlinks/plugins/media_kit_native_event_loop/macos`)
- metadata_god (from `Flutter/ephemeral/.symlinks/plugins/metadata_god/macos`) - metadata_god (from `Flutter/ephemeral/.symlinks/plugins/metadata_god/macos`)
- open_file_mac (from `Flutter/ephemeral/.symlinks/plugins/open_file_mac/macos`) - open_file_mac (from `Flutter/ephemeral/.symlinks/plugins/open_file_mac/macos`)
- package_info_plus (from `Flutter/ephemeral/.symlinks/plugins/package_info_plus/macos`) - package_info_plus (from `Flutter/ephemeral/.symlinks/plugins/package_info_plus/macos`)
@ -124,13 +127,13 @@ EXTERNAL SOURCES:
app_links: app_links:
:path: Flutter/ephemeral/.symlinks/plugins/app_links/macos :path: Flutter/ephemeral/.symlinks/plugins/app_links/macos
audio_service: audio_service:
:path: Flutter/ephemeral/.symlinks/plugins/audio_service/macos :path: Flutter/ephemeral/.symlinks/plugins/audio_service/darwin
audio_session: audio_session:
:path: Flutter/ephemeral/.symlinks/plugins/audio_session/macos :path: Flutter/ephemeral/.symlinks/plugins/audio_session/macos
bonsoir_darwin: bonsoir_darwin:
:path: Flutter/ephemeral/.symlinks/plugins/bonsoir_darwin/darwin :path: Flutter/ephemeral/.symlinks/plugins/bonsoir_darwin/darwin
connectivity_plus: connectivity_plus:
:path: Flutter/ephemeral/.symlinks/plugins/connectivity_plus/darwin :path: Flutter/ephemeral/.symlinks/plugins/connectivity_plus/macos
desktop_webview_window: desktop_webview_window:
:path: Flutter/ephemeral/.symlinks/plugins/desktop_webview_window/macos :path: Flutter/ephemeral/.symlinks/plugins/desktop_webview_window/macos
device_info_plus: device_info_plus:
@ -153,8 +156,6 @@ EXTERNAL SOURCES:
:path: Flutter/ephemeral/.symlinks/plugins/local_notifier/macos :path: Flutter/ephemeral/.symlinks/plugins/local_notifier/macos
media_kit_libs_macos_audio: media_kit_libs_macos_audio:
:path: Flutter/ephemeral/.symlinks/plugins/media_kit_libs_macos_audio/macos :path: Flutter/ephemeral/.symlinks/plugins/media_kit_libs_macos_audio/macos
media_kit_native_event_loop:
:path: Flutter/ephemeral/.symlinks/plugins/media_kit_native_event_loop/macos
metadata_god: metadata_god:
:path: Flutter/ephemeral/.symlinks/plugins/metadata_god/macos :path: Flutter/ephemeral/.symlinks/plugins/metadata_god/macos
open_file_mac: open_file_mac:
@ -183,11 +184,11 @@ EXTERNAL SOURCES:
:path: Flutter/ephemeral/.symlinks/plugins/window_manager/macos :path: Flutter/ephemeral/.symlinks/plugins/window_manager/macos
SPEC CHECKSUMS: SPEC CHECKSUMS:
app_links: afe860c55c7ef176cea7fb630a2b7d7736de591d app_links: 05a6ec2341985eb05e9f97dc63f5837c39895c3f
audio_service: 0d9e4e25347bb3efb768f3b9f005911a81e587a7 audio_service: aa99a6ba2ae7565996015322b0bb024e1d25c6fd
audio_session: 48ab6500f7a5e7c64363e206565a5dfe5a0c1441 audio_session: eaca2512cf2b39212d724f35d11f46180ad3a33e
bonsoir_darwin: 29c7ccf356646118844721f36e1de4b61f6cbd0e bonsoir_darwin: 29c7ccf356646118844721f36e1de4b61f6cbd0e
connectivity_plus: 2256d3e20624a7749ed21653aafe291a46446fee connectivity_plus: 4adf20a405e25b42b9c9f87feff8f4b6fde18a4e
desktop_webview_window: 2f0cdefecc06e21208a51589bd3d1580a87a703c desktop_webview_window: 2f0cdefecc06e21208a51589bd3d1580a87a703c
device_info_plus: 4fb280989f669696856f8b129e4a5e3cd6c48f76 device_info_plus: 4fb280989f669696856f8b129e4a5e3cd6c48f76
file_selector_macos: 6280b52b459ae6c590af5d78fc35c7267a3c4b31 file_selector_macos: 6280b52b459ae6c590af5d78fc35c7267a3c4b31
@ -199,7 +200,6 @@ SPEC CHECKSUMS:
irondash_engine_context: 893c7d96d20ce361d7e996f39d360c4c2f9869ba irondash_engine_context: 893c7d96d20ce361d7e996f39d360c4c2f9869ba
local_notifier: ebf072651e35ae5e47280ad52e2707375cb2ae4e local_notifier: ebf072651e35ae5e47280ad52e2707375cb2ae4e
media_kit_libs_macos_audio: 06f3cf88d6d89c7c3c87eae57689d1c6adb335b2 media_kit_libs_macos_audio: 06f3cf88d6d89c7c3c87eae57689d1c6adb335b2
media_kit_native_event_loop: a5833d1e4d5bedb6f691e9909fa57f15f436f2c8
metadata_god: 8029e6ff4b1400ae4f13c38d2c478e8633f0e58b metadata_god: 8029e6ff4b1400ae4f13c38d2c478e8633f0e58b
open_file_mac: 01874b6d6a2c1485ac9b126d7105b99102dea2cf open_file_mac: 01874b6d6a2c1485ac9b126d7105b99102dea2cf
OrderedSet: e539b66b644ff081c73a262d24ad552a69be3a94 OrderedSet: e539b66b644ff081c73a262d24ad552a69be3a94
@ -208,8 +208,8 @@ SPEC CHECKSUMS:
screen_retriever_macos: 452e51764a9e1cdb74b3c541238795849f21557f screen_retriever_macos: 452e51764a9e1cdb74b3c541238795849f21557f
shared_preferences_foundation: 9e1978ff2562383bd5676f64ec4e9aa8fa06a6f7 shared_preferences_foundation: 9e1978ff2562383bd5676f64ec4e9aa8fa06a6f7
sqflite_darwin: 20b2a3a3b70e43edae938624ce550a3cbf66a3d0 sqflite_darwin: 20b2a3a3b70e43edae938624ce550a3cbf66a3d0
sqlite3: 7559e33dae4c78538df563795af3a86fc887ee71 sqlite3: 73513155ec6979715d3904ef53a8d68892d4032b
sqlite3_flutter_libs: f0b59f6bb2a18597d0796558725007e5a7428397 sqlite3_flutter_libs: 83f8e9f5b6554077f1d93119fe20ebaa5f3a9ef1
super_native_extensions: c2795d6d9aedf4a79fae25cb6160b71b50549189 super_native_extensions: c2795d6d9aedf4a79fae25cb6160b71b50549189
system_theme: ed74293ad07d3a05e3e2d0059ff342360346f1a0 system_theme: ed74293ad07d3a05e3e2d0059ff342360346f1a0
tray_manager: a104b5c81b578d83f3c3d0f40a997c8b10810166 tray_manager: a104b5c81b578d83f3c3d0f40a997c8b10810166

Binary file not shown.

Before

Width:  |  Height:  |  Size: 89 KiB

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 89 KiB

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

View File

@ -525,7 +525,7 @@ class PreferencesTable extends Table
GeneratedColumn<String>('accent_color_scheme', aliasedName, false, GeneratedColumn<String>('accent_color_scheme', aliasedName, false,
type: DriftSqlType.string, type: DriftSqlType.string,
requiredDuringInsert: false, requiredDuringInsert: false,
defaultValue: const Constant("Orange:0xFFf97315")); defaultValue: const Constant("Slate:0xff64748b"));
late final GeneratedColumn<String> layoutMode = GeneratedColumn<String>( late final GeneratedColumn<String> layoutMode = GeneratedColumn<String>(
'layout_mode', aliasedName, false, 'layout_mode', aliasedName, false,
type: DriftSqlType.string, type: DriftSqlType.string,

View File

@ -1 +1,5 @@
{} {
"nl": [
"audio_source"
]
}