Compare commits

..

957 Commits

Author SHA1 Message Date
Kingkor Roy Tirtho
a8f70f201e
Merge pull request #2772 from KRTirtho/dev
Release v5.0.0
2025-09-11 22:42:36 +06:00
Kingkor Roy Tirtho
b8ecd758cf chore: fix plugin import not working inside flatpak 2025-09-11 22:36:02 +06:00
Kingkor Roy Tirtho
70970f62f1 chore: fix connect play playlist/album and clear queue not working 2025-09-11 21:52:43 +06:00
Kingkor Roy Tirtho
4ed40d95b2 chore: remove print 2025-09-09 21:18:54 +06:00
Kingkor Roy Tirtho
b24dcd2951 chore: show loading indicator for alternative sourced track 2025-09-09 21:18:10 +06:00
Kingkor Roy Tirtho
8ff90bafd7 chore: fix not alternative source not working 2025-09-09 21:09:45 +06:00
Kingkor Roy Tirtho
9190af92ef chore: fix shuffling not working 2025-09-09 20:54:22 +06:00
Kingkor Roy Tirtho
151a440e7e chore: bump version to v5 and generate changelogs 2025-09-09 00:51:09 +06:00
Kingkor Roy Tirtho
9471e008e3 fix(ui): lyrics white text in white background and small player buttons 2025-09-09 00:45:45 +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
Kingkor Roy Tirtho
216fdadf25 chore: fix dependency issues 2025-09-08 16:45:55 +06:00
Lorenzo
3599a4340f
docs: Removed Google Play Store link from readme file (#2638)
* Update README.md

* Update README.md

---------

Co-authored-by: Kingkor Roy Tirtho <krtirtho@gmail.com>
2025-09-08 16:34:37 +06:00
Kingkor Roy Tirtho
719229b2b7 chore: add gap between metadata plugin 2025-09-08 16:30:10 +06:00
Kingkor Roy Tirtho
49db82083c chore: add support for language dialects 2025-09-08 16:29:05 +06:00
maboroshin
84f119e482
translation: fix Japanese translations (#2732)
Co-authored-by: Kingkor Roy Tirtho <krtirtho@gmail.com>
2025-09-08 16:15:07 +06:00
SamHacker
aeb8caf059
translation: add Traditional Chinese translation (#2762)
* add: Add the translation file for Chinese Traditional

* i18n: fix wrong translation in Chinese Simpfied

* i18n: Finish the translation in Chinese Traditional file

* i18n: Add Traditional Chinese locale support

* i18n: Add Traditional Chinese language code

---------

Co-authored-by: Kingkor Roy Tirtho <krtirtho@gmail.com>
2025-09-08 16:11:54 +06:00
Kingkor Roy Tirtho
7c4956153a chore: allow for any libjsoncpp 2025-09-08 16:04:23 +06:00
Kingkor Roy Tirtho
58dc80aa09 fix(playback): alternative track sources switch not working 2025-09-08 15:31:29 +06:00
Kingkor Roy Tirtho
4a07945214 fix(track_options): tapping on option doesn't close the menu 2025-09-08 14:27:29 +06:00
Kingkor Roy Tirtho
7b21eca37b fix(playback): play not fetching full playlist if playlist is too long 2025-09-08 14:09:16 +06:00
Kingkor Roy Tirtho
43ddf90c48 docs: remove legal notice warning 2025-09-07 20:36:32 +06:00
Kingkor Roy Tirtho
878a441a9f fix: windows webview2 environment permission issue 2025-09-06 22:32:41 +06:00
Kingkor Roy Tirtho
90493f0ea3 chore: add changelog generator config 2025-09-06 00:40:33 +06:00
Kingkor Roy Tirtho
db22b4fcce chore: syntax errors 2025-09-05 23:39:07 +06:00
Kingkor Roy Tirtho
0d6d482630 chore: build runner error 2025-09-05 23:33:55 +06:00
Kingkor Roy Tirtho
a4162dc2ad chore: upgrade drift schema for new plugin metadata fields 2025-09-05 22:52:06 +06:00
Kingkor Roy Tirtho
469a76dbd6 fix: yt-dlp playback not working and add partial support for HLS streaming 2025-09-05 22:40:18 +06:00
Kingkor Roy Tirtho
6940e92142 chore: system tray icon and pagination not working 2025-09-05 21:16:24 +06:00
Kingkor Roy Tirtho
4d57b134a3 cd: use xcode 16.2 2025-09-05 20:01:33 +06:00
Kingkor Roy Tirtho
a370166576 chore: add metadata plugin version 2025-09-05 18:47:46 +06:00
Kingkor Roy Tirtho
69d50eec35 chore: fix artist top tracks play button not showing loading indicator 2025-09-05 17:53:06 +06:00
Kingkor Roy Tirtho
2e48ac380b chore(translation): update missing translations 2025-09-05 17:31:09 +06:00
Kingkor Roy Tirtho
d22b5349a3 chore: fix pagination not working 2025-09-05 17:06:12 +06:00
Kingkor Roy Tirtho
83172f198c chore: fix saving/removing tracks, albums, artists and playlists from library not working 2025-09-05 16:57:29 +06:00
Kingkor Roy Tirtho
f870e12011 fix(playback): skip network requests if cached file already exists 2025-09-05 11:03:56 +06:00
Kingkor Roy Tirtho
345c6ac714 chore: fix pagination for liked tracks and saved albums not working 2025-09-05 10:50:14 +06:00
Kingkor Roy Tirtho
005355e267 chore(translation): add l10n support for new metadata plugin pages 2025-09-03 18:45:38 +06:00
Kingkor Roy Tirtho
aee2c9282d chore: avoid checking stream accessibility all the time
Only check stream accessible or not when first time it fails or gets blocked
2025-09-03 17:31:38 +06:00
Kingkor Roy Tirtho
ea329f40e8 fix(yt): fallback to different search result if all streaming url is inaccessible 2025-09-02 20:56:28 +06:00
Kingkor Roy Tirtho
b248f90403 chore: remove log in TrackSourceQuery.parseUri 2025-09-02 20:10:43 +06:00
Kingkor Roy Tirtho
e2c0ddef24 fix: inaccessible streaming url causing rapid skips
Now it filters the inaccessible streaming urls out so weird stuff won't happen
2025-09-02 20:10:02 +06:00
Kingkor Roy Tirtho
2a0853026a fix: local playback not working for tracks with special # (hashtag) characters 2025-08-31 00:45:29 +06:00
Kingkor Roy Tirtho
dddaa5a964 chore: upgrade new pipe extractor 2025-08-30 23:40:48 +06:00
Kingkor Roy Tirtho
412f3dd81c chore: optimize assets and app size 2025-08-29 17:33:54 +06:00
Kingkor Roy Tirtho
7f30ae8d31 chore: disable caching of plugin download file 2025-08-29 15:05:29 +06:00
Kingkor Roy Tirtho
c0d50d441e fix: use plugin author and name as slug 2025-08-29 14:56:24 +06:00
Kingkor Roy Tirtho
66cae6c7ac chore: upgrade Flutter version 2025-08-29 13:08:28 +06:00
Kingkor Roy Tirtho
308c417ed3 cd: use macos 14 instead 15 2025-08-25 19:27:18 +06:00
Kingkor Roy Tirtho
0823629fb5 chore: upgrade dependencies 2025-08-23 10:07:41 +06:00
Kingkor Roy Tirtho
7037145519 feat: add ErrorBox and NoDefaultMetadataPlugin components
- 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.
2025-08-19 22:34:37 +06:00
Kingkor Roy Tirtho
08d1c98674 refactor: move scrobbler to their own place 2025-08-19 20:22:48 +06:00
Kingkor Roy Tirtho
c0dcc87eb2 chore: upgrade hetu_spotube_plugin 2025-08-19 19:07:37 +06:00
Kingkor Roy Tirtho
b4f8d2dfbf chore: upgrade packages 2025-08-18 20:13:49 +06:00
Kingkor Roy Tirtho
48490cf168 chore(windows): fix Runner.rc not getting version information 2025-08-16 19:01:47 +06:00
Kingkor Roy Tirtho
ea7138e95b chore: remove print 2025-08-16 16:41:11 +06:00
Kingkor Roy Tirtho
5add53e269 fix: local track not working and images of local not showing up 2025-08-16 16:11:04 +06:00
Kingkor Roy Tirtho
c615d48e27 Merge branch 'astro-website' into website 2025-08-15 21:06:37 +06:00
Kingkor Roy Tirtho
92c05a51e1 website: migrate to astro and add plugin docs 2025-08-15 21:06:33 +06:00
Kingkor Roy Tirtho
71bcf355ec website: add back warning 2025-08-15 20:48:29 +06:00
Kingkor Roy Tirtho
089a3445a1 website: add SEO metadata 2025-08-15 20:43:12 +06:00
Kingkor Roy Tirtho
dbba55606b website: fix astro not compiling because it can't detect server-side component 2025-08-15 19:21:40 +06:00
Kingkor Roy Tirtho
a2894db652 website: add ads and mobile screen adaptability 2025-08-15 13:49:41 +06:00
Kingkor Roy Tirtho
edcd784335 website: update button styles and enhance background in global CSS 2025-08-15 11:19:43 +06:00
Kingkor Roy Tirtho
0a153fe770 docs: fix invalid links and redirection 2025-08-14 22:29:12 +06:00
Kingkor Roy Tirtho
3f18f35c0b docs: add search bar and libraries page 2025-08-14 22:20:09 +06:00
Kingkor Roy Tirtho
30fd4acf37 docs: add plugin API docs 2025-08-14 21:21:09 +06:00
Kingkor Roy Tirtho
0e34057794 docs: merge some endpoints together to reduce too much elements on the side bar 2025-08-14 20:19:16 +06:00
Kingkor Roy Tirtho
032309a2c6 feat: enhance markdown configuration and styling with rehype plugins and update global styles 2025-08-14 15:10:14 +06:00
Kingkor Roy Tirtho
858cbd17ad docs: update model documentation and add new model files for Spotube objects 2025-08-14 14:10:04 +06:00
Kingkor Roy Tirtho
fbd7b771ef docs: add detailed documentation for BrowseEndpoint, CoreEndpoint, and SearchEndpoint 2025-08-14 09:55:28 +06:00
Kingkor Roy Tirtho
8bdbe7dfba docs: add detailed documentation for plugin endpoints and methods 2025-08-14 09:25:13 +06:00
Kingkor Roy Tirtho
b3f6824a94 docs: add plugin create guide 2025-08-11 21:03:28 +06:00
Kingkor Roy Tirtho
7bb69c02de website: write into and sidebar and developing plugins pages 2025-08-08 23:54:00 +06:00
Kingkor Roy Tirtho
a734ded6f8 website: add documentation structure and navigation components 2025-08-04 21:25:24 +06:00
Kingkor Roy Tirtho
f228937e3e website: hide older releases before 4.0.2 2025-08-04 13:06:44 +06:00
Kingkor Roy Tirtho
ee7d0cfeb5 website: markdown mdx support and wrap up other pages 2025-08-04 13:04:22 +06:00
Kingkor Roy Tirtho
7a630507fb website: add downloads pages 2025-08-04 12:45:28 +06:00
Kingkor Roy Tirtho
dffd494d4a Revert "website: remove vercel trashes"
This reverts commit 49e2d1b759.
2025-08-02 22:51:25 +06:00
Kingkor Roy Tirtho
49e2d1b759 website: remove vercel trashes 2025-08-02 22:50:20 +06:00
Kingkor Roy Tirtho
fd3ddfece9 Merge branch 'dev' into website 2025-08-02 20:05:00 +06:00
Kingkor Roy Tirtho
2bb91feb34
Merge pull request #2746 from KRTirtho/code-greedy-green-corp-removal
Code greedy green corp removal
2025-08-02 20:01:33 +06:00
Kingkor Roy Tirtho
eb3fcfdd6f chore: add animation for browse sections loadingb 2025-08-01 23:28:54 +06:00
Kingkor Roy Tirtho
066fe2a326 fix: create and delete playlist not working 2025-08-01 22:39:15 +06:00
Kingkor Roy Tirtho
93d6e0642b chore: improve image display by adding rounded corners to plugin logos 2025-08-01 22:19:47 +06:00
Kingkor Roy Tirtho
1e61bca1e9 feat: add plugin scrobbling support and support button 2025-08-01 22:18:29 +06:00
Kingkor Roy Tirtho
3bb7f0d78f refactor: change updater to core 2025-08-01 14:48:42 +06:00
Kingkor Roy Tirtho
75bdbeccc0 chore: fix track options causing track page exception 2025-07-25 14:51:30 +06:00
Kingkor Roy Tirtho
846fa679f6 chore: fix changing default plugin doesn't wortk 2025-07-23 21:38:10 +06:00
Kingkor Roy Tirtho
3a5ddd6214 feat: optimize track options and related artists 2025-07-23 17:34:05 +06:00
Kingkor Roy Tirtho
3b21b05fdc chore: fix SliverLayoutBuilder rebuilds too much 2025-07-22 17:37:52 +06:00
Kingkor Roy Tirtho
53ef9e15e1 fix: make YoutubeExplode engine faster 2025-07-22 16:34:56 +06:00
Kingkor Roy Tirtho
7309e900bc feat(metadata): add plugin update checker and dialog for available updates 2025-07-22 00:11:20 +06:00
Kingkor Roy Tirtho
c9556c2ecb chore: fix playback issues 2025-07-21 18:49:23 +06:00
Kingkor Roy Tirtho
efdf091894 fix(android): NewPipe invalid search content filters 2025-07-20 21:46:05 +06:00
Kingkor Roy Tirtho
92dde7286f chore: SafeArea 2025-07-20 21:22:37 +06:00
Kingkor Roy Tirtho
0a604a9ad5 chore: fix queue order 2025-07-19 21:39:31 +06:00
Kingkor Roy Tirtho
cfda46e07e chore: fix saving tracks not working 2025-07-19 14:03:22 +06:00
Kingkor Roy Tirtho
60f032039f fix: endless playback not working 2025-07-19 13:58:05 +06:00
Kingkor Roy Tirtho
d2e0dc1ac9 chore: re-enable endless playback 2025-07-19 11:56:51 +06:00
Kingkor Roy Tirtho
3e7b36f4e6 feat: update new pipe version 2025-07-18 16:47:53 +06:00
Kingkor Roy Tirtho
cdc64e4bb0 feat: Add repository and plugin API version fields to metadata plugins
- 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`.
2025-07-18 15:55:28 +06:00
Kingkor Roy Tirtho
2f304fa943 feat: use isolate for youtube_explode engine 2025-07-18 10:34:21 +06:00
Kingkor Roy Tirtho
e83a4bb388 feat: add support for automatic plugin repository from github and codeberg 2025-07-17 01:02:04 +06:00
Kingkor Roy Tirtho
90f9cc28eb feat: enhance image handling 2025-07-16 22:34:59 +06:00
Kingkor Roy Tirtho
f23a078b64 chore: fix spotube logo color on light mode 2025-07-16 14:43:32 +06:00
Kingkor Roy Tirtho
d2827a52d3 chore: upgrade to flutter 3.32.5 2025-07-13 21:21:17 +06:00
Kingkor Roy Tirtho
7de6423935 feat: add support for entity specific search 2025-07-13 15:11:56 +06:00
Kingkor Roy Tirtho
5573deb52a website: bring back download buttons for Nightly version 2025-07-11 14:09:28 +06:00
Kingkor Roy Tirtho
412c427cec chore: fix bad certificate error 2025-07-05 21:46:35 +06:00
Kingkor Roy Tirtho
5be4747c66 feat(metadata): add plugin form 2025-07-03 23:55:29 +06:00
Kingkor Roy Tirtho
5b457fc4bd chore: fix streaming quality is worse then available 2025-06-21 22:40:20 +06:00
Kingkor Roy Tirtho
cb97f4352c chore: fix android build not working 2025-06-21 21:28:39 +06:00
Kingkor Roy Tirtho
ee71dbf552 chore: fix login not working and source quality not good when high quality source not found 2025-06-21 19:21:00 +06:00
Kingkor Roy Tirtho
1538dc6d52 chore: fix macos issues 2025-06-21 08:33:22 +06:00
Kingkor Roy Tirtho
53ad5bd448 feat: remove green corp names formally 2025-06-19 23:04:24 +06:00
Kingkor Roy Tirtho
aa65bf291d refactor: use metadata plugin authentication instead 2025-06-19 22:32:22 +06:00
Kingkor Roy Tirtho
41cc79b5e6 chore: make playback working 2025-06-19 21:09:49 +06:00
Kingkor Roy Tirtho
86e55f7a3d chore: fix connect freezed model not working 2025-06-19 15:52:05 +06:00
Kingkor Roy Tirtho
1eb0b5f847 chore: uncomment important lines of code 2025-06-19 15:01:58 +06:00
Kingkor Roy Tirtho
d898d45b4a refactor: add database schema migrations 2025-06-19 14:52:45 +06:00
Kingkor Roy Tirtho
5f47dc3d6d refactor: remove old spotify.dart types and custom spotube metadata types 2025-06-19 14:42:29 +06:00
Kingkor Roy Tirtho
4e6db8b9e1 refactor: move from Track to SpotubeTrackObject and use TrackSources object for providers 2025-06-18 21:30:32 +06:00
Kingkor Roy Tirtho
b979a6ede9 feat: add track endpoint for metadata service 2025-06-16 14:09:20 +06:00
Kingkor Roy Tirtho
fcc05a4243 refactor: search to use metadata plugin 2025-06-16 09:52:02 +06:00
Kingkor Roy Tirtho
7569c37739 refactor: home browse and browse section 2025-06-15 22:14:04 +06:00
Kingkor Roy Tirtho
b8cae569b4 refactor: use metadata artist object for artist card and artist page 2025-06-15 17:30:02 +06:00
Kingkor Roy Tirtho
4b09f6c96b refactor: use metadata album & playlist object for card and pages 2025-06-15 14:00:34 +06:00
Kingkor Roy Tirtho
758b0bc9d9 feat: add artist and album providers 2025-06-14 22:43:20 +06:00
Kingkor Roy Tirtho
326d8212f6 feat: add albums metadata endpoint and provider 2025-06-14 21:07:07 +06:00
Kingkor Roy Tirtho
a9ba2582fb feat: add playlist endpoint and providers 2025-06-14 20:53:18 +06:00
Kingkor Roy Tirtho
f8211cbcc7 feat: add user endpoint calls in metadata and paginated async notifiers 2025-06-14 20:25:38 +06:00
Kingkor Roy Tirtho
3306f21860 feat: update models to match hetu_spotube_plugin signature 2025-06-14 19:18:32 +06:00
Kingkor Roy Tirtho
7a6821f28d feat: implement metadata plugins based on hetu 2025-06-14 08:41:38 +06:00
Kingkor Roy Tirtho
69c0333327 feat: update plugin configuration with more fields 2025-06-13 17:00:59 +06:00
Kingkor Roy Tirtho
2d6fe886e2 chore: metadata 2025-06-13 16:23:41 +06:00
Kingkor Roy Tirtho
67713c60d4 feat(metadata_plugin): add logout method 2025-05-09 23:30:57 +06:00
Kingkor Roy Tirtho
bb0afa5a0c feat: enhance local storage and webview APIs with improved error handling and resource management 2025-05-09 23:02:55 +06:00
Kingkor Roy Tirtho
f4306ad1c3 feat: add webviiew, totp and setInterval apis for plugins 2025-05-07 23:39:44 +06:00
Kingkor Roy Tirtho
b9c6c98e38 Merge branch 'dev' 2025-05-02 20:47:10 +06:00
Kingkor Roy Tirtho
0326630a19 docs: add legal notice 2025-05-02 20:46:13 +06:00
Kingkor Roy Tirtho
abe04b28b2 feat(metadata-plugin): add local storage api 2025-05-02 13:52:07 +06:00
Kingkor Roy Tirtho
8ac30c0031 feat(metadata-plugin): add pagination support, feed and playlist CRUD endpoints 2025-05-02 11:36:09 +06:00
Kingkor Roy Tirtho
9a861b9954 chore: add proper error handling 2025-05-01 23:51:22 +06:00
Kingkor Roy Tirtho
7491175bb6 feat: add metadata api service and models 2025-05-01 13:20:05 +06:00
Kingkor Roy Tirtho
a65846d15e
Merge pull request #2692 from KRTirtho/dev
Dev
2025-05-01 00:06:45 +06:00
Kingkor Roy Tirtho
4f72f3b424 chore: remove greedy green music platform's references in images 2025-04-30 21:42:18 +06:00
Kingkor Roy Tirtho
ecb43f64ad chore: removal of all mentions/references of that greedy green music provider 2025-04-30 21:23:37 +06:00
Kingkor Roy Tirtho
e575d23c4a chore: add cookie font for logo 2025-04-28 00:01:55 +06:00
Kingkor Roy Tirtho
76f0f18592
Merge pull request #2687 from KRTirtho/fix/path-traversal-through-websocket
fix: path traversal through websocket
2025-04-27 23:19:19 +06:00
Kingkor Roy Tirtho
ae0f24d34a chore: update translations 2025-04-27 22:41:57 +06:00
Kingkor Roy Tirtho
a06614bc5c feat: add connect confirmation dialog 2025-04-27 22:39:16 +06:00
Kingkor Roy Tirtho
7c26d29d06 fix: remote path traversal through websocket when devices are on same network 2025-04-27 20:30:32 +06:00
Kingkor Roy Tirtho
b6c0926efc chore: expand android foreground icon by 20% 2025-04-27 10:19:59 +06:00
Kingkor Roy Tirtho
89cf73d95f chore: generate splash screen for default flavor 2025-04-27 09:53:45 +06:00
Kingkor Roy Tirtho
e6a9011c5c chore: fix flutter new pipe not building 2025-04-26 20:56:38 +06:00
Kingkor Roy Tirtho
7143913bba chore: fix icon asset name 2025-04-25 22:08:37 +06:00
Kingkor Roy Tirtho
5567214588
feat: add new icons #2676 by @alexio-dev (#2678)
* 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
2025-04-25 21:55:59 +06:00
Kingkor Roy Tirtho
5ff1fc9f82 fix: artist images are not loading up 2025-04-25 16:27:07 +06:00
Kingkor Roy Tirtho
d3edf07ac9 fix: default accent color in orange but it shows blue in settings 2025-04-07 16:16:43 +06:00
Kingkor Roy Tirtho
8fc319d980 fix(mobile): dialogs in bottom sheet are not opening 2025-04-07 14:53:05 +06:00
Seungmin Kim
e986baa0aa
chore: revise filter for ISRC search (#2614) 2025-04-07 13:12:45 +06:00
Kingkor Roy Tirtho
8a7f5c4008 chore: fix weird hovered mode on track tile options 2025-03-28 22:32:05 +06:00
Kingkor Roy Tirtho
9d2ad1c626 chore: upgrade shadcn_flutter version 2025-03-28 22:24:23 +06:00
Kingkor Roy Tirtho
b74c2eab8f fix: calling /track/:streamId endpoint causes active sourced track to be anything 2025-03-28 20:57:46 +06:00
Seungmin Kim
2c4cc94985
feat: add ISRC track search for YouTube (#2594)
* Add ISRC track search for YouTube

* Do not probe Song.Link when ISRC results are valid, fix rate limit
2025-03-28 19:10:54 +06:00
Kingkor Roy Tirtho
ba27dc70e4
Merge pull request #2550 from KRTirtho/dev
Release 4.0.2
2025-03-16 23:57:54 +06:00
Kingkor Roy Tirtho
0ec9f3535b chore: bump to 4.0.2 and generate changelog 2025-03-16 23:52:08 +06:00
Kingkor Roy Tirtho
df72ba6960 chore: convert all spotify calls to invoke signature to capture invalid access token exception 2025-03-16 21:22:29 +06:00
Kingkor Roy Tirtho
d9057dae57 fix: invalid access token exception #2525 2025-03-16 10:32:41 +06:00
Kingkor Roy Tirtho
e61b79585e chore: remove print statement 2025-03-15 21:09:51 +06:00
Kingkor Roy Tirtho
a9e5636e96 chore: add a fallback init token retrieval method 2025-03-15 21:07:59 +06:00
Kingkor Roy Tirtho
723b6b1f38
Merge pull request #2524 from KRTirtho/dev
Release 4.0.1
2025-03-15 17:21:27 +06:00
Kingkor Roy Tirtho
764950b286 Revert "chore: spotify home feed recommendations now showing up"
This reverts commit 290affd435.
2025-03-15 17:15:29 +06:00
Kingkor Roy Tirtho
290affd435 chore: spotify home feed recommendations now showing up 2025-03-15 17:00:57 +06:00
Kingkor Roy Tirtho
c59b5c651e chore: reenable impeller 2025-03-15 16:48:24 +06:00
Kingkor Roy Tirtho
e4ac7cacc9 chore: generate changelogs and migrate to non synthetic l10n 2025-03-15 16:44:57 +06:00
Kingkor Roy Tirtho
26b1c31f8f chore: flutter 3.29.2 and bump of to 4.0.1 2025-03-15 16:31:20 +06:00
VARUN M
4bfe334419
feat(translation): add tamil translation for spotube (#2501)
* feat: add tamil language for spotube

* fix: syntax error lib/l10n/app_ta.arb

---------

Co-authored-by: Kingkor Roy Tirtho <krtirtho@gmail.com>
2025-03-15 16:28:27 +06:00
Justin May
48fcfbc928
feat(translation): add tagalog language support
Added Tagalog translation
2025-03-15 16:26:49 +06:00
Kingkor Roy Tirtho
95e09ffc94 chore: remove certificate check for dio 2025-03-15 14:23:38 +06:00
Kingkor Roy Tirtho
968fd09eb3 chore: add random user agent 2025-03-15 10:48:34 +06:00
Kingkor Roy Tirtho
1a32264bc7 fix: spotify authentication 429 errors 2025-03-15 10:37:29 +06:00
Kingkor Roy Tirtho
59f298a935 fix: spotify login broken due to new totp requirement #2494 2025-03-15 01:41:51 +06:00
Kingkor Roy Tirtho
bbe3394e9e fix: lastfm form broken in other locales #2447 2025-03-12 15:05:32 +06:00
Kingkor Roy Tirtho
7cde803bee feat(local_library): add support for x-flac, opus and x-wav 2025-03-12 14:20:19 +06:00
Kingkor Roy Tirtho
cd475e93d0 chore: upgrade action flutter to 3.29.1 2025-03-12 13:48:07 +06:00
Kingkor Roy Tirtho
3d334d96fd fix(desktop): double titlebar in local library folders and massive space in overlay player 2025-03-11 21:28:57 +06:00
Kingkor Roy Tirtho
bd4cd22e4e fix(generate_playlist): create playlist not adding tracks nor navigating to playlist page 2025-03-11 00:16:53 +06:00
Kingkor Roy Tirtho
c709de6bf1 fix: language picker search broken 2025-03-10 20:44:52 +06:00
Kingkor Roy Tirtho
ccbac85171 chore: remove GeistMono 2025-03-10 20:15:28 +06:00
Kingkor Roy Tirtho
50123b235c fix: add to playlist not working in smaller screen devices 2025-03-10 20:07:51 +06:00
Kingkor Roy Tirtho
4072531c62 fix(android): navigation overlaying in app navigation 2025-03-09 10:05:02 +06:00
Kingkor Roy Tirtho
464666c01a
Merge pull request #2410 from KRTirtho/dev
chore: update linux appdata screenshot
2025-03-07 20:22:32 +06:00
Kingkor Roy Tirtho
4db9a95a91 chore: update linux appdata screenshot 2025-03-07 20:20:56 +06:00
Kingkor Roy Tirtho
0e58cd0e99
Merge pull request #2408 from KRTirtho/dev
chore: add new images
2025-03-07 20:18:03 +06:00
Kingkor Roy Tirtho
3cce2868de website: remove playstore button 2025-03-07 20:12:05 +06:00
Kingkor Roy Tirtho
894b0d7e5e Merge branch 'dev' into website 2025-03-07 20:08:09 +06:00
Kingkor Roy Tirtho
7befbca8e5 chore: update images 2025-03-07 20:06:58 +06:00
Kingkor Roy Tirtho
d4f70f56e4
Merge pull request #2405 from KRTirtho/dev
Release 4.0.0
2025-03-07 18:05:55 +06:00
Kingkor Roy Tirtho
180d07a1be chore: bump version to v4.0.0 and generate changelogs, translations and credits 2025-03-07 17:38:25 +06:00
Kingkor Roy Tirtho
91871d0d26 feat: custom piped & invidious instance support 2025-03-07 11:50:39 +06:00
Kingkor Roy Tirtho
c3bbc129ad fix: piped api not working 2025-03-07 10:22:09 +06:00
Kingkor Roy Tirtho
a9586a64f2 chore: enable sliding transition for queue, alternative source and lyrics page for small screen 2025-03-06 23:04:04 +06:00
Kingkor Roy Tirtho
677f95f266 fix: youtube_explode_dart failing for many videos due to youtube ios client visitor data change 2025-03-05 22:13:42 +06:00
Kingkor Roy Tirtho
f4b1e550bf chore: use latest flutter_new_pipe_extractor 2025-03-05 22:02:07 +06:00
Kingkor Roy Tirtho
bb71fc0eea chore: use pages instead of drawer for queue, lyrics, sources in mobile 2025-03-04 18:26:59 +06:00
Kingkor Roy Tirtho
7eb0e69dd7 chore: upgrade to latest working shadcn_flutter 2025-03-03 22:23:29 +06:00
Kingkor Roy Tirtho
30bf0bed62 chore: add back pull down to refresh 2025-03-02 22:04:22 +06:00
Kingkor Roy Tirtho
c82b68a513 fix: follow artist not working #2057 2025-03-02 21:19:28 +06:00
Kingkor Roy Tirtho
edc9636940 chore: fix adaptive select tile scrolling not working 2025-02-23 11:33:44 +06:00
Kingkor Roy Tirtho
47edb8bf96 chore: improve home screen performance 2025-02-23 09:55:46 +06:00
Kingkor Roy Tirtho
e8e2d78529 chore: upgrade to flutter 3.29.0 2025-02-21 20:54:36 +06:00
Kingkor Roy Tirtho
0248dd3c23 chore: show better authentication failure message 2025-02-11 22:35:51 +06:00
Kingkor Roy Tirtho
1e6d709e04
feat: implement yt-dlp for desktop and NewPipeExtractor for Android (#2316)
* feat: add youtube engine abstraction and yt-dlp integration

* chore: add yt-dlp as optional dependency

* feat: implement custom path support for youtube engines

* chore: check for custom path in setting engine select dropdown

* chore: update yt_dlp_dart

* chore: setting video url instead of video id in fetchSiblings

* feat: implement NewPipe engine

* chore: update local path to git url for flutter_new_pipe_extractor package

* chore: fix android build isn't working

* chore: fix routes not working when initially signing in

* refactor: drop fallback support to different sources
2025-02-11 21:36:07 +06:00
Kingkor Roy Tirtho
698fb6ba27 fix: youtube tracks keeps skipping despite being matched correctly 2025-02-05 00:36:23 +06:00
Kingkor Roy Tirtho
043eaba81f fix: youtube source taking too long to buffer 2025-02-03 20:53:48 +06:00
Kingkor Roy Tirtho
b1780e0cf8 fix: duplicates in recent section 2025-02-01 19:14:50 +06:00
Kingkor Roy Tirtho
cd39bbf87c
Merge pull request #2291 from KRTirtho/migrate/auto-routes
refactor: migrate to auto_route from go_router
2025-02-01 17:22:51 +06:00
Kingkor Roy Tirtho
d4504722d8 fix(android): back button and safe area issues 2025-01-31 23:07:37 +06:00
Kingkor Roy Tirtho
6ddf6b9cce fix: remove automaticallyImplyLeading from root tabs 2025-01-31 22:37:10 +06:00
Kingkor Roy Tirtho
4b2d259add chore: use navigateTo instead of pushRoute 2025-01-31 22:10:40 +06:00
Kingkor Roy Tirtho
0037677383 refactor: migrate to auto_route from go_router 2025-01-31 21:07:51 +06:00
Kingkor Roy Tirtho
2b0b5eae1d
Merge pull request #2288 from KRTirtho/new-ui
feat: shadcn_flutter based UI
2025-01-30 21:53:07 +06:00
Kingkor Roy Tirtho
6cf4ca9179 chore: use shadcn in all places that's using material 2025-01-30 21:44:07 +06:00
Malik Miran
2ea8070771
fix(ios): downloads not working due to permission errors (#2180)
* Update AppDelegate.swift

store the Documents directory path which the app can then use for downloads instead of trying to create a Downloads directory

* Update Info.plist

should resolve the permission issues because  using Documents directory instead of trying to create a Downloads directory.

---------

Co-authored-by: Kingkor Roy Tirtho <krtirtho@gmail.com>
2025-01-30 20:50:50 +06:00
KRTirtho
e0760e6250 chore: fix linux resizing blocking scrollbar 2025-01-30 20:37:13 +06:00
Kingkor Roy Tirtho
ada0ca1472 chore: remove obsolete appearance customization 2025-01-28 21:42:16 +06:00
Kingkor Roy Tirtho
42158a99ff refactor: use shadcn for mini lyrics window 2025-01-28 21:23:57 +06:00
Kingkor Roy Tirtho
5c6cb770a8 chore: fix where loading images not working 2025-01-28 21:07:02 +06:00
Kingkor Roy Tirtho
4c3718467d chore: local library not working 2025-01-26 22:36:11 +06:00
Kingkor Roy Tirtho
4e8a50ec58 chore: fix logs not showing up and nightly crashing on track change on android 2025-01-26 22:05:24 +06:00
Kingkor Roy Tirtho
75e189344e cd: update workflow and build command for Ubuntu 22.04 compatibility 2025-01-24 14:19:44 +06:00
Kingkor Roy Tirtho
8c0a47374d cd: artifact nested directory glob 2025-01-24 13:55:57 +06:00
Kingkor Roy Tirtho
697ba1ed7b cd: sha and md5 sum error 2025-01-24 13:27:20 +06:00
Kingkor Roy Tirtho
e05645c46e cd: enable caching for Flutter SDK in release workflow 2025-01-24 12:43:44 +06:00
Kingkor Roy Tirtho
ee95b3b26a chore: fix build cli argument access 2025-01-24 12:32:01 +06:00
Kingkor Roy Tirtho
b2b38a9191 cd: use git source for flutter action 2025-01-24 12:18:33 +06:00
Kingkor Roy Tirtho
219ae9dcb3 cd: use git source for flutter action 2025-01-24 12:15:30 +06:00
Kingkor Roy Tirtho
ed1f4ad6f5 cd: use cache less Flutter SDK 2025-01-24 12:08:01 +06:00
Kingkor Roy Tirtho
15773e1ce7 cd: use alternative flutter action setup action 2025-01-24 11:44:22 +06:00
Kingkor Roy Tirtho
b7bb35d299 cd: upgrade flutter action 2025-01-24 11:32:41 +06:00
Kingkor Roy Tirtho
1937b1b840 cd: use default caching key 2025-01-24 11:31:01 +06:00
Kingkor Roy Tirtho
85ebaf69de cd: use new hosted github runners 2025-01-24 11:15:48 +06:00
Kingkor Roy Tirtho
becba8956f cd: artifact name need to be specified 2025-01-24 10:15:24 +06:00
Kingkor Roy Tirtho
343198a7e8 cd: use individual artifacts 2025-01-24 09:55:09 +06:00
Kingkor Roy Tirtho
0aee8b3399 cd: use upload-artifact v4 2025-01-23 21:16:40 +06:00
Kingkor Roy Tirtho
768bab8bbb chore: settings popup menu constraints 2025-01-23 21:11:59 +06:00
Kingkor Roy Tirtho
082f711018 chore: use angle 2025-01-23 20:39:04 +06:00
Kingkor Roy Tirtho
6e357230ac refactor: use expanded sidebar tiles for library 2025-01-23 20:34:04 +06:00
Kingkor Roy Tirtho
2411f46877 fix: youtube video unplayable issue and use more ytClients 2025-01-21 10:15:06 +06:00
Kingkor Roy Tirtho
4fead5f504 feat: pause playback when no internet connection 2025-01-20 22:04:12 +06:00
Kingkor Roy Tirtho
086107b2cd refactor: adaptive list tile to use shadcn 2025-01-20 13:24:24 +06:00
Kingkor Roy Tirtho
74a328e529 refactor: logs page to shadcn 2025-01-19 21:00:49 +06:00
Kingkor Roy Tirtho
e470f50e81 chore: remove xmas background from glance widget 2025-01-19 19:59:42 +06:00
Kingkor Roy Tirtho
6c005592e3 refactor: color scheme support based on shadcn colors 2025-01-16 21:13:42 +06:00
Kingkor Roy Tirtho
696875e4b5 chore: use youtube_explode from github 2025-01-12 23:21:28 +06:00
Kingkor Roy Tirtho
5930c342b5 chore: fix window resizing 2025-01-12 21:32:33 +06:00
Kingkor Roy Tirtho
3649b67869 refactor: use undraw for not_found component 2025-01-12 14:22:54 +06:00
Kingkor Roy Tirtho
b8ffb9b75f feat: show placeholder images where there is no item or on empty page 2025-01-12 14:16:18 +06:00
Kingkor Roy Tirtho
a8694a7a8b refactor: blacklist and about page 2025-01-11 20:08:04 +06:00
Kingkor Roy Tirtho
b25ae332b8 feat: flag to hide spotify generated images with patterns 2025-01-10 23:41:22 +06:00
Kingkor Roy Tirtho
5a14f587a0 chore: titlebar buttons not working 2025-01-10 20:33:59 +06:00
Kingkor Roy Tirtho
2daea2b3ef chore: make genre carousel items better in light mode 2025-01-10 19:51:21 +06:00
Kingkor Roy Tirtho
88906098dd refactor: use shadcn for TrackTile 2025-01-08 22:16:46 +06:00
Kingkor Roy Tirtho
e54a646073 refactor: downloads page to shadcn 2025-01-08 19:11:29 +06:00
Kingkor Roy Tirtho
3ffcb48db9 chore: improve carousel performance 2025-01-06 21:44:06 +06:00
Kingkor Roy Tirtho
46852545a9 refactor: add genre carousel buttons and indicators 2025-01-06 21:33:26 +06:00
Kingkor Roy Tirtho
bf94a490bb refactor: genres section 2025-01-06 20:45:37 +06:00
Kingkor Roy Tirtho
6dd9b753b0 refactor: migrate stats to shadcn 2025-01-06 14:13:53 +06:00
Kingkor Roy Tirtho
e6408ccc0d refactor: genre home section 2025-01-05 17:11:58 +06:00
Kingkor Roy Tirtho
dff8fe2e64 chore: fix alternative source list item theme inconsistency 2025-01-05 16:50:04 +06:00
Kingkor Roy Tirtho
b734985199 refactor: track page 2025-01-05 16:32:14 +06:00
Kingkor Roy Tirtho
dd0bb01af5 refactor: generate playlist to shadcn 2025-01-05 16:16:57 +06:00
Kingkor Roy Tirtho
b8f2495acb refactor: user local library 2025-01-05 11:54:50 +06:00
Kingkor Roy Tirtho
4afe0cca68 refactor: artist page 2025-01-05 09:47:32 +06:00
Kingkor Roy Tirtho
bbad701c07 refactor: dialogs to shadcn dialog 2025-01-05 08:58:57 +06:00
Kingkor Roy Tirtho
af295be8c6 refactor: remote playback page to shadcn 2025-01-04 23:31:09 +06:00
Kingkor Roy Tirtho
780f5dee2e cd: upgrade flutter version to 3.28.0-0.1.pre 2025-01-04 20:34:42 +06:00
Kingkor Roy Tirtho
30e03786bf refactor: alternative track sheet to use shadcn 2025-01-03 23:10:26 +06:00
Kingkor Roy Tirtho
f96b5eae97 refactor: floating player to use shadcn 2025-01-03 21:11:36 +06:00
Kingkor Roy Tirtho
684e595d16 refactor: use shadcn widgets for create playlist and add tracks to playlist dialog 2024-12-29 15:07:48 +06:00
Kingkor Roy Tirtho
047eccfa82 fix: SafeArea not working for bottom floating widgets 2024-12-29 13:36:44 +06:00
Kingkor Roy Tirtho
b558cc17f1 fix: SafeArea for global bottom items not working 2024-12-28 21:55:36 +06:00
Kingkor Roy Tirtho
d845180e60 fix: mobile keyboard overflow 2024-12-28 21:18:35 +06:00
Kingkor Roy Tirtho
2ee0ca44c7 refactor: profile page to use shadcn design 2024-12-28 19:51:04 +06:00
Kingkor Roy Tirtho
d53782da23 refactor: playlist and album pages 2024-12-28 14:30:25 +06:00
Kingkor Roy Tirtho
ced85d3f0c chore: fix scaling issue in android and status bar being black 2024-12-24 21:33:24 +06:00
Kingkor Roy Tirtho
e2143a0625 chore: fix android build and player controls slider layout builder exception 2024-12-24 20:19:10 +06:00
Kingkor Roy Tirtho
db3aaa4b83 chore: upgrade to flutter 3.27.1 2024-12-23 19:23:10 +06:00
Kingkor Roy Tirtho
ccf84c568e website: show overlay ads at bottom not blocking the view 2024-12-23 09:02:49 +06:00
Kingkor Roy Tirtho
fdb5ed8f56 website: publish from idea to impact 2024-12-22 23:12:12 +06:00
Kingkor Roy Tirtho
b40c0b7772 chore: use latest shadcn 2024-12-22 22:55:40 +06:00
Kingkor Roy Tirtho
b09263d128 chore: fix queue close causing exceptions 2024-12-22 15:03:49 +06:00
Kingkor Roy Tirtho
a6720d5392 feat: grid/list customizable playbutton view 2024-12-22 14:48:48 +06:00
Kingkor Roy Tirtho
05d544fe5a refactor: update FriendItem and HorizontalPlaybuttonCardView styles, remove unused imports, and clean up dependencies 2024-12-22 11:58:06 +06:00
Kingkor Roy Tirtho
2fefd65f51 refactor: settings using shadcn components 2024-12-22 11:25:01 +06:00
Kingkor Roy Tirtho
7ee071f2e3 refactor: connected device button 2024-12-21 21:40:34 +06:00
Kingkor Roy Tirtho
418a0d29bd refactor: artist card to use shadcn card 2024-12-21 21:12:49 +06:00
Kingkor Roy Tirtho
2925dd6748 refactor: library page filter fields and update home sections 2024-12-21 18:23:45 +06:00
Kingkor Roy Tirtho
f80ea32de4 refactor: use Appbar titlebar throughout the app 2024-12-21 17:02:13 +06:00
Kingkor Roy Tirtho
fcefce4b1b refactor: titlebar to use shadcn appbar and library tabs to use shadcn TabList 2024-12-21 16:05:35 +06:00
Kingkor Roy Tirtho
1089e90511 refactor: use shadcn CardImage for playbutton card 2024-12-21 15:21:13 +06:00
Kingkor Roy Tirtho
2488da2279 refactor: bottom player border, player queue using shadcn drawer 2024-12-21 14:38:54 +06:00
Kingkor Roy Tirtho
04190f2dda refactor: use DropdownMenu for adaptive pop sheet list, shadcn widgets for bottom player and player controls and actions 2024-12-21 12:42:51 +06:00
Kingkor Roy Tirtho
fe2f0a373f refactor: use NavigationSidebar and NavigationRail for desktop sidebar 2024-12-21 09:34:56 +06:00
Kingkor Roy Tirtho
e73d2d06d8 refactor: use shadcn NavigationBar for mobile navigation bar 2024-12-21 09:28:55 +06:00
Kingkor Roy Tirtho
5ad151932a feat: initial integration of shadcn-ui 2024-12-21 09:22:30 +06:00
Kingkor Roy Tirtho
b52bf0f448
feat(android): home widget support (#2148)
* feat: add android home widget support

* feat: style widget player and add intent and callbacks on action

* feat: responsive and working android home widget

* fix(android): models stripping causing it to not work for release apks

* chore: ios lockfile update

* feat: config for iOS widget

* cd: upgrade xcode

* cd: reduce xcode version

* feat: add a christmas background
2024-12-16 22:47:44 +06:00
Kingkor Roy Tirtho
55871e3cdd website: change download page ad 2024-12-16 11:50:12 +06:00
Kingkor Roy Tirtho
0aa44520ac website: redirect from /other-downloads/stable-downloads/ to /downloads 2024-12-16 11:43:41 +06:00
Kingkor Roy Tirtho
4595eb169f fix: finally fix gradle build 2024-12-14 12:05:25 +06:00
Kingkor Roy Tirtho
08f624ece1 chore: upgrade to flutter 3.27.0 and fix gradle errors 2024-12-14 09:52:53 +06:00
Kingkor Roy Tirtho
f524a40062 chore: flex view 2024-12-13 00:43:17 +06:00
Kingkor Roy Tirtho
f28fe5a682 fix: no spacing from the ads 2024-12-13 00:39:23 +06:00
Kingkor Roy Tirtho
efa2b77ac3 Merge branch 'website-ads-integration' into website 2024-12-13 00:17:38 +06:00
Kingkor Roy Tirtho
12f3ec1776 downgrade: chose the path of ads 2024-12-13 00:17:19 +06: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
b32ec667a9 chore: add iOS IPA download section 2024-12-08 23:56:58 +06:00
Kingkor Roy Tirtho
18a68d85a5 chore: bump version and generate changelogs 2024-12-08 23:36:55 +06:00
Kingkor Roy Tirtho
2d972c8f57 chore: update macos logo 2024-12-08 22:47:13 +06:00
Kingkor Roy Tirtho
083b366308 chore: upgrade to fluter 3.24.5 2024-12-08 20:13:36 +06:00
Kingkor Roy Tirtho
8ca2115ef0
feat: track caching and cached track export support (#2117)
* feat: add caching support with track metadata

* feat(settings): add cache music toggle

* fix(mobile): cache dir not open-able

* feat(local folder): add cache export/clear actions and size of the folder

* chore: ios deps upgrades

* chore: upgrade lint flutter version

* chore: lint secrets causing error

* cd: invalid value for env var
2024-12-08 20:03:01 +06:00
Kingkor Roy Tirtho
499ecfba26 fix(mobile): ensure audio session is activated when playback is resumed after interruption #2092 2024-12-01 19:01:24 +06:00
Kingkor Roy Tirtho
3fd7a18159 chore: upgrade dependency version 2024-12-01 17:49:35 +06:00
Kingkor Roy Tirtho
e3285bd4da fix: selecting an Alternative Track Source removes the current song from the queue #2039 2024-11-10 11:27:56 +06:00
Kingkor Roy Tirtho
9f2d423cfe
feat: add invidious audio source and fix auto skipping tracks (#2005)
* feat: add invidious audio source with automatic track switch even on server playback endpoint

* fix: switching to different source on playback endpoint error not working

* chore: update invidious version

* feat: invidious instances customizability
2024-10-17 22:33:03 +06:00
Kingkor Roy Tirtho
3c45732b0a fix: UI glitch when loading more user artists and albums 2024-10-17 22:20:26 +06:00
Kingkor Roy Tirtho
cab61631ef Merge branch 'dev' into website 2024-10-13 11:07:19 +06:00
Kingkor Roy Tirtho
6e1cd96903 website: fix older version download not working #1985 2024-10-13 10:44:05 +06:00
Kingkor Roy Tirtho
9cd839cfd9 cd: fix env not getting updated 2024-10-09 22:08:02 +06:00
Kingkor Roy Tirtho
94e704087f Merge branch 'dev' 2024-10-09 16:38:23 +06:00
Kingkor Roy Tirtho
f553e43b17 chore: hide donations link for playstore version to adhere with Google Play's iae policy
This commit keeps food on one google PM's table by not stealing their 30% pay cut
2024-10-09 16:37:41 +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
Kingkor Roy Tirtho
fdde972a77 chore: bump version to 3.8.3 and generate changelogs 2024-10-09 14:51:24 +06:00
Kingkor Roy Tirtho
8c5ece5335 Merge branch 'master' into dev 2024-10-09 14:48:21 +06:00
Xavi Fortes
a76b5c4c7f
fix: update youtube_explode_dart to 2.2.3 to fix no playback (#1980)
* chore: update bug reports template

* chore: update bug reports template

* Update youtube_explode_dart to 2.2.3 fixes 403

---------

Co-authored-by: Kingkor Roy Tirtho <krtirtho@gmail.com>
2024-10-09 14:47:11 +06:00
Kingkor Roy Tirtho
70bbb4af5a feat(macos): enable same window webview support 2024-10-09 14:45:16 +06:00
Kingkor Roy Tirtho
2a317397ee Merge branch 'chore/upgrade-deps' into dev 2024-10-09 14:44:15 +06:00
Kingkor Roy Tirtho
4e0de13075 cd: upgrade flutter version 2024-10-09 11:55:32 +06:00
Kingkor Roy Tirtho
58f6142d2f chore: add fvm local flutter symlink in vscode settings 2024-10-09 11:38:48 +06:00
Kingkor Roy Tirtho
9c80c610b4
Merge pull request #1944 from KRTirtho/dev
Release v3.8.2
2024-09-30 21:58:34 +06:00
Kingkor Roy Tirtho
b87a51011b chore: bump to v3.8.2 abd generate changelogs 2024-09-30 21:56:34 +06:00
Kingkor Roy Tirtho
34d8bc26fe chore: upgrade to Flutter 3.24.3 2024-09-30 21:53:12 +06:00
Kingkor Roy Tirtho
c1f2ddcdbe chore: remove donation links from about page to avoid Google's imaginary "pay cut" policy strike 2024-09-30 20:51:28 +06:00
Ryze
200ee4a6bd
fix: endless song loading issue and no playback #1925
* chore: update bug reports template

* chore: update bug reports template

* update youtube_explode_dart dependency version

---------

Co-authored-by: Kingkor Roy Tirtho <krtirtho@gmail.com>
2024-09-30 20:18:35 +06:00
Kingkor Roy Tirtho
ce9627218d
chore: update bug reports template 2024-09-19 21:26:48 +06:00
Kingkor Roy Tirtho
142d6884c3
chore: update bug reports template 2024-09-19 21:25:12 +06:00
Kingkor Roy Tirtho
ee8406772c chore: add webkit2gtk-4.1 as AUR dependency 2024-09-18 10:12:15 +06:00
Kingkor Roy Tirtho
87a78549b6
Merge pull request #1885 from KRTirtho/dev
chore: release v3.8.1
2024-09-15 19:32:29 +06:00
Kingkor Roy Tirtho
5ac534619f chore(windows): bmp file not found 2024-09-15 19:10:05 +06:00
Kingkor Roy Tirtho
68ca6a7d31 chore: add some more changes 2024-09-15 18:53:10 +06:00
Kingkor Roy Tirtho
7f23c9f8f6 chore: untranslated messages cleared 2024-09-15 18:52:08 +06:00
AdrienC
c9d6d2cd48
chore(windows): add smal logo image in inno setup installer (#1795) 2024-09-15 18:49:13 +06:00
Josu Igoa
c680aeb1f4
fix(translations): correct some basque incorrect translations (#1815) 2024-09-15 18:46:17 +06:00
Kingkor Roy Tirtho
4618a6406c
Merge pull request #1840 from vedantmgoyal9/patch-1
Update winget-releaser to latest
2024-09-15 18:43:56 +06:00
Kingkor Roy Tirtho
02818593ed chore: bump version to 3.8.1 and prepare for release 2024-09-15 18:37:22 +06:00
Kingkor Roy Tirtho
1cad097d0b fix(lyrics): LRCLIB lyrics should be usable without logging in #1803 2024-09-15 18:22:09 +06:00
Kingkor Roy Tirtho
57c8f85731 fix: playlist displaying descriptions unescaped html #1784 2024-09-15 17:45:57 +06:00
Kingkor Roy Tirtho
1119c0e47d chore: pushed pages not closing 2024-09-15 17:23:11 +06:00
Kingkor Roy Tirtho
5ff36a8643 fix(android): pressing back while the player is open doesn't take to previous page
#1388
2024-09-15 14:53:41 +06:00
Kingkor Roy Tirtho
9cb828bb55 fix: handle dublicated items in playback queue correctly #1852 2024-09-15 13:59:09 +06:00
Kingkor Roy Tirtho
36d161c05a fix(desktop): scrollbar overlapping with more options of tracks and playlists 2024-09-15 10:51:13 +06:00
Kingkor Roy Tirtho
959199ff84 fix(discord): stop discord rpc from try update presence when not connected 2024-09-15 10:36:27 +06:00
Kingkor Roy Tirtho
33ecbe066c feat(desktop): show error dialog if webview is not found on login #1871 2024-09-15 10:31:20 +06:00
Kingkor Roy Tirtho
29015bca76 fix(stats): minutes page shows plays and streams page shows minutes which should be the opposite #1880 2024-09-15 09:56:59 +06:00
Kingkor Roy Tirtho
3afe3cea80 Squashed commit of the following:
commit e160d4f561ff2e945fd67bf12b223c012da58b1e
Author: Kingkor Roy Tirtho <krtirtho@gmail.com>
Date:   Sat Sep 14 10:48:08 2024 +0600

    fix: pagination issues in playlist and album pages
2024-09-14 10:48:39 +06:00
Kingkor Roy Tirtho
40bfcc1961 chore: clear or disconnect discord on dispose 2024-09-13 20:12:58 +06:00
Kingkor Roy Tirtho
4f882882e0
Merge pull request #1807 from sonu36437/patch-1
s in safari was missing in webview for userAgent i don't know if it will cause any issue in ios
2024-09-06 21:22:37 +06:00
Vedant
efada35ce0
Update winget-releaser to latest 2024-08-31 20:30:04 +05:30
sonu36437
2d4c9cabd2
s in safari was missing in webview for userAgent 2024-08-22 21:32:33 +05:30
Kingkor Roy Tirtho
6d0cbf97e3 fix(android): clears queue upon swiping away notification 2024-08-19 21:37:31 +06:00
Kingkor Roy Tirtho
4385f2f472 chore: remove unused deps 2024-08-18 15:39:46 +06:00
Kingkor Roy Tirtho
d50e60e2b2 cd: add action to clear space for arm build 2024-08-18 15:06:49 +06:00
Kingkor Roy Tirtho
aa5d0e535b chore: fix detection isn't working as drag device enables drag 2024-08-18 13:04:45 +06:00
Kingkor Roy Tirtho
af60cfc067 feat: manually detect and define touch behavior #1763 2024-08-18 12:42:14 +06:00
Kingkor Roy Tirtho
411115327d fix(player): shuffle button state resets after closing page #1657 2024-08-18 12:00:44 +06:00
Kingkor Roy Tirtho
9a0421ce38 fix: getting started page login page exception #1800 2024-08-18 11:06:51 +06:00
Kingkor Roy Tirtho
6d9361f3fe docs: add webkit2gtk for arch deps 2024-08-18 10:31:32 +06:00
Kingkor Roy Tirtho
95ff13324e fix(mobile): queue doesn't persist 2024-08-15 22:46:17 +06:00
Kingkor Roy Tirtho
470addca83 fix: local tracks takes time to load 2024-08-15 22:45:22 +06:00
Kingkor Roy Tirtho
9294858fb6 fix: start radio not working #1629 2024-08-15 20:38:14 +06:00
Kingkor Roy Tirtho
9b02412060 cd: upgrade aur version 2024-08-11 18:07:52 +06:00
Kingkor Roy Tirtho
a5e02d068e chore: upgrade targetSdkVersion of android build.gradle 2024-08-11 18:07:52 +06:00
Kingkor Roy Tirtho
b501078c43 cd: upgrade aur version 2024-08-11 18:07:26 +06:00
Kingkor Roy Tirtho
d0a225d0b1 chore: upgrade targetSdkVersion of android build.gradle 2024-08-11 17:16:50 +06:00
Kingkor Roy Tirtho
2be84ec4ee
Merge pull request #1768 from KRTirtho/dev
Release 3.8.0
2024-08-11 15:06:37 +06:00
Kingkor Roy Tirtho
c681401b6e cd: fix playstore publish download faiils 2024-08-11 13:50:39 +06:00
Kingkor Roy Tirtho
1b024b41fe cd: fix playstore publish download faiils 2024-08-11 13:49:00 +06:00
Kingkor Roy Tirtho
b0a07b58d5 cd: add playstore publish support 2024-08-11 13:45:03 +06:00
Kingkor Roy Tirtho
b32ec9ccf9 chore: bump version and generate changelog 2024-08-10 23:21:48 +06:00
Kingkor Roy Tirtho
9b7a7ef1cf chore: update translations and refactor to flutter 3.22 ThemeData 2024-08-10 22:54:25 +06:00
Josu Igoa
7408a87860
feat(translations): make state page's hard coded strings translatable (#1719) 2024-08-10 22:06:15 +06:00
Marat Budkevich
95b68687d5
fix(translations): fix Russian translations (#1696) 2024-08-10 22:03:42 +06:00
Kingkor Roy Tirtho
388e2d0289 fix(ios): permission exception 2024-08-10 21:50:20 +06:00
Kingkor Roy Tirtho
84f47df6c1 feat(discord): add listening activity type 2024-08-10 21:35:38 +06:00
nexpid
64d25509b4
feat(discord): album art, playing time and play pause support (#1765) 2024-08-10 21:30:11 +06:00
Kingkor Roy Tirtho
6456b43d10 refactor: logs page show full log 2024-08-10 20:53:17 +06:00
Kingkor Roy Tirtho
123eb168a3 fix(linux): tray icon wrong name for flatpak 2024-08-09 22:41:29 +06:00
Kingkor Roy Tirtho
56ce84d748
Merge pull request #1758 from KRTirtho/refactor/cargokit-based-rust-plugins
refactor: cargokit based rust plugins
2024-08-09 20:08:14 +06:00
Kingkor Roy Tirtho
39ea7a701c chore: remove unnecessary print statements 2024-08-09 20:07:24 +06:00
Kingkor Roy Tirtho
1cc7882177 fix(windows): app crashes when no internet 2024-08-09 19:55:56 +06:00
Kingkor Roy Tirtho
ebaf5615ad cd: free up space for linux arm 2024-08-09 13:13:11 +06:00
Kingkor Roy Tirtho
ce19ef1efd chore: upgrade plugin versions 2024-08-07 22:12:57 +06:00
Kingkor Roy Tirtho
1c66646798 fix(windows): local tracks plays but disabled playback controls 2024-08-07 21:54:47 +06:00
Kingkor Roy Tirtho
b5f3894983 cd: add aarch64-unknown-linux-gnu manually in dockerfile for linux arm 2024-08-04 12:03:48 +06:00
Kingkor Roy Tirtho
0465042264 cd: re-enable arm 2024-08-04 11:32:50 +06:00
Kingkor Roy Tirtho
4b65319879 chore: pubspec update 2024-08-04 10:27:05 +06:00
Kingkor Roy Tirtho
0d537abab3 cd: disable arm64 2024-08-01 17:19:17 +06:00
Kingkor Roy Tirtho
d515f3d3be cd: fix rustup target failing for ios 2024-08-01 16:46:26 +06:00
Kingkor Roy Tirtho
0eb78d14ca chore: use frb based plugins from git 2024-08-01 14:15:40 +06:00
Kingkor Roy Tirtho
b211813213 fix: go to track album shows up for local tracks 2024-07-29 17:23:13 +06:00
Kingkor Roy Tirtho
bd511584e7 fix: local track metadata timeout 2024-07-29 17:23:13 +06:00
Kingkor Roy Tirtho
0d9fb1d388 Merge branch 'feat/desktop-webview' into dev 2024-07-26 15:33:30 +06:00
Kingkor Roy Tirtho
9b05b8adf1 chore: migrate to flutter 3.22.3 2024-07-26 15:32:49 +06:00
Kingkor Roy Tirtho
1441736627 fix(windows): window stretching #1553 2024-07-26 15:31:58 +06:00
Kingkor Roy Tirtho
a2ba46ea45 fix(android): app getting killed from background 2024-07-14 21:24:44 +06:00
arenekosreal
e6fee03c20
feat(linux): Use XDG_STATE_HOME to storage logs (#1675)
* feat(linux): Use XDG_STATE_HOME to storage logs

* fix: Clean LSP suggestions.

* fix: Use Platform.environment instead String.fromEnvironment

The latter seems return an empty string.
See: https://github.com/flutter/flutter/issues/55870#issuecomment-936612420
2024-07-14 19:38:28 +06:00
Kingkor Roy Tirtho
6a500731d6
feat: discord rpc for macOS, windows-arm64 and linux-arm64 (#1713)
* feat: add discord rpc support for macos, windows arm64 and linux arm64

* chore: discord rpc not clearing activity after close/setting rpc to false

* chore: add migration script to move from files from macos sandbox to non-sandbox directories
2024-07-14 18:58:47 +06:00
Kingkor Roy Tirtho
a6e13ffc08 fix(linux): OS Media control not working for Flatpak #1627 2024-07-10 00:23:22 +06:00
Kingkor Roy Tirtho
d22bba5393 fix: incorrect datatype used for MPRIS position property #1521 2024-07-10 00:11:40 +06:00
Kingkor Roy Tirtho
abfdbc63ce fix: Too many artists for a track causing overflows
#1470
2024-07-09 23:08:21 +06:00
Kingkor Roy Tirtho
00f1b3422f fix: playlist share button does not work #1639 2024-07-09 22:37:54 +06:00
Kingkor Roy Tirtho
7a31119e3c fix(mini-player): macos titlebar over logo #1244 2024-07-09 22:34:16 +06:00
Kingkor Roy Tirtho
44861a9f5c fix: unescape html escape values #1300 2024-07-09 22:13:05 +06:00
Kingkor Roy Tirtho
c7d8ed567a fix: lyrics page doesn't scroll to top after song ends #885 2024-07-09 21:17:49 +06:00
Kingkor Roy Tirtho
67ae2e8159 chore: fix remote playback not working 2024-07-09 21:05:28 +06:00
Kingkor Roy Tirtho
d359d130de chore: resize currently downloading 2024-07-06 22:08:49 +06:00
Kingkor Roy Tirtho
86ee64c606 chore: remove old logger 2024-07-06 22:02:31 +06:00
Kingkor Roy Tirtho
15211123aa
Merge pull request #1688 from KRTirtho/feat/desktop-webview
feat(desktop): webview based login support
2024-07-06 21:43:29 +06:00
Kingkor Roy Tirtho
243a843033
Merge pull request #1687 from KRTirtho/refactor/storage-n-providers
refactor: migrate to sqlite based storage from hive
2024-07-06 21:38:52 +06:00
Kingkor Roy Tirtho
86f5b80177 chore: fix insert failing to invalid conflict check 2024-07-06 21:38:36 +06:00
Kingkor Roy Tirtho
ccea4a003d fix: changed source doesn't get saved and uses the wrong once again 2024-07-06 21:35:56 +06:00
Kingkor Roy Tirtho
2ce4853fd1 chore: fix while loading playlists/album already playing ones doesn't get cleared 2024-07-06 19:26:59 +06:00
Kingkor Roy Tirtho
2f46fa32f1 chore: fix webview and app window freezing after successful login 2024-07-06 18:31:17 +06:00
Kingkor Roy Tirtho
359b918e6b chore: fix windows playback not working for loop back ipv4 2024-07-05 15:32:18 +06:00
Kingkor Roy Tirtho
7dd76d24c3 chore: fix windows cookie invalid characters 2024-07-05 14:54:49 +06:00
Kingkor Roy Tirtho
f2f35bd2fb chore: fix windows webview2 trying to store data in admin folders 2024-07-05 13:32:07 +06:00
Kingkor Roy Tirtho
79b842dad3 chore: use flutter 3.19.6 to avoid window stretching error in windows 2024-07-05 11:55:04 +06:00
Kingkor Roy Tirtho
1284b409e7 chore: add linux dependencies and update CI + docker config 2024-07-05 11:31:47 +06:00
Kingkor Roy Tirtho
15bd58a955 feat(desktop): implement webview based login 2024-07-05 11:21:32 +06:00
Kingkor Roy Tirtho
cb6b6f142e chore: playback not working in windows due to using loop back ipv4 address 2024-07-01 19:21:12 +06:00
Kingkor Roy Tirtho
7927a3e404 chore: fix top album and track invalid time frame operations 2024-07-01 13:25:28 +06:00
Kingkor Roy Tirtho
3bdc46da4d feat(stats): add lazy loading support 2024-06-30 21:08:29 +06:00
Kingkor Roy Tirtho
4c5564fd2f chore: use enum properties for history duration in top stats 2024-06-30 18:31:57 +06:00
Kingkor Roy Tirtho
261e1b6685 chore: fix queue collections not being loaded 2024-06-30 18:00:50 +06:00
Kingkor Roy Tirtho
ffb3a3377f chore: add migration script to migrate hive to drift 2024-06-30 15:44:24 +06:00
Kingkor Roy Tirtho
a3021e4c52 chore: removed unused files 2024-06-30 14:14:02 +06:00
Kingkor Roy Tirtho
1cfd377c29 refactor: synced lyric cache to use drift db 2024-06-30 11:01:40 +06:00
Kingkor Roy Tirtho
b495ed4ac0 fix: null exception in album page navigated from /home 2024-06-29 17:09:58 +06:00
Kingkor Roy Tirtho
08ac29c979 refactor(stats): migrate stats to use drift db 2024-06-29 17:05:06 +06:00
Kingkor Roy Tirtho
44418868ad chore: fix volume not being set after launch 2024-06-25 20:38:40 +06:00
Kingkor Roy Tirtho
6c5cab9899 chore: fix use SpotubeMedia to avoid duplicate sourceTrackProvider instances 2024-06-25 20:36:23 +06:00
Kingkor Roy Tirtho
1b420e661b chore: player skipping all tracks from cache 2024-06-24 22:26:44 +06:00
Kingkor Roy Tirtho
a621a45f0b chore: fix alternative track sources not showing up 2024-06-24 21:43:09 +06:00
Kingkor Roy Tirtho
75173e5096 refactor: use provider based is track loading implementation 2024-06-24 21:01:09 +06:00
Kingkor Roy Tirtho
a83dd64476 refactor: replace all instances of proxy playlist 2024-06-24 20:52:40 +06:00
Kingkor Roy Tirtho
f79fedefd4 chore: create new audio player centric playback notifier with drift persistence 2024-06-23 12:23:28 +06:00
Kingkor Roy Tirtho
59041a2948 chore: use .value for scrobble encrypted text 2024-06-20 23:30:41 +06:00
Kingkor Roy Tirtho
5936f08a92 refactor(volumeProvider): use notifier and kvstore for persistence 2024-06-17 18:13:41 +06:00
Kingkor Roy Tirtho
b9b7d5c8aa refactor: lastfm scrobbling to drift db 2024-06-17 18:08:57 +06:00
Kingkor Roy Tirtho
d18f74fd65 refactor: use drift db based authentication 2024-06-16 22:33:23 +06:00
Kingkor Roy Tirtho
a799ca55bc chore: add encrypted text column support 2024-06-16 20:58:54 +06:00
Kingkor Roy Tirtho
bf6cec8d69 refactor(blacklist): use drift sql db instead of hive 2024-06-14 22:23:12 +06:00
Kingkor Roy Tirtho
52d4f60ccc refactor: use drift for skip segments and source matches 2024-06-14 21:24:42 +06:00
Kingkor Roy Tirtho
3fb003ea60 refactor(preferences): use Drift sql db for preferences 2024-06-14 00:29:09 +06:00
Kingkor Roy Tirtho
a35eece00c
Merge pull request #1628 from KRTirtho/refactor/idk
refactor: separated page widgets, shared widgets and breaking down of large widgets
2024-06-13 21:47:19 +06:00
Kingkor Roy Tirtho
2540d16ced chore: remove circleci config 2024-06-13 21:43:29 +06:00
Kingkor Roy Tirtho
9034ee29db chore: use flutter version in runner rc 2024-06-13 21:23:12 +06:00
Kingkor Roy Tirtho
064d92d35d refactor: merge connect and playback server into one server 2024-06-12 20:46:49 +06:00
Kingkor Roy Tirtho
cb8d24ff31 chore: remove uncessary dependencies 2024-06-11 23:58:50 +06:00
Kingkor Roy Tirtho
4f2175987d refactor: remove uncessary methods 2024-06-11 23:02:23 +06:00
Kingkor Roy Tirtho
6067314c5a cd: revert to flutter 3.22.1 2024-06-10 22:27:33 +06:00
Kingkor Roy Tirtho
9ce911a8ab cd: upgrade to flutter 3.22.2 2024-06-10 21:47:53 +06:00
Kingkor Roy Tirtho
2822d5dbfd chore: fix widget binding errors 2024-06-09 23:05:19 +06:00
Kingkor Roy Tirtho
de61d90938 refactor: add back exceptions to file support 2024-06-09 22:58:14 +06:00
Kingkor Roy Tirtho
f9087b63d5 refactor: remove catcher_2 and use custom zoned based error handling 2024-06-09 22:52:34 +06:00
Kingkor Roy Tirtho
d115e57058 fix: popup menu item opacity 2024-06-09 09:56:29 +06:00
Kingkor Roy Tirtho
7816cb8068 refactor: break down heart button hook into a different file 2024-06-09 09:30:17 +06:00
Kingkor Roy Tirtho
8cb6c6d126 refactor: breakdown page window titlebar widget into multiple small widgets 2024-06-09 09:19:41 +06:00
Kingkor Roy Tirtho
4af23241c8 refactor: move shared components to 1 level up 2024-06-07 22:40:44 +06:00
Kingkor Roy Tirtho
b224af21ea refactor: left out modules 2024-06-07 22:34:03 +06:00
Kingkor Roy Tirtho
1cfeef54e7 refactor: move route related components to modules folder 2024-06-07 22:19:45 +06:00
Kingkor Roy Tirtho
f81219e83e chore: introduce breakpoint enum for constrains 2024-06-07 22:00:16 +06:00
Kingkor Roy Tirtho
63bf694d5c chore: update aur srcinfo 2024-06-06 20:28:42 +06:00
Kingkor Roy Tirtho
9c3f9733b5 chore: remove print statement 2024-06-06 19:51:03 +06:00
Kingkor Roy Tirtho
eea8fd1579 chore: syntax error 2024-06-06 19:23:14 +06:00
Kingkor Roy Tirtho
73bd207ce2 fix(linux): change app id in flatpak environment 2024-06-06 18:54:18 +06:00
Kingkor Roy Tirtho
491c1b9857
Merge pull request #1576 from KRTirtho/dev
Release v3.7.1
2024-06-06 14:57:14 +06:00
Kingkor Roy Tirtho
e223a10bde
Merge branch 'master' into dev 2024-06-06 14:56:54 +06:00
Kingkor Roy Tirtho
a9c78b7863 Revert "chore: Release v3.7.0 (#1552)"
This reverts commit 3aca7372af.
2024-06-06 14:56:08 +06:00
Kingkor Roy Tirtho
bf769f473b chore: bump version, generate changelog and credits 2024-06-06 14:52:28 +06:00
Kingkor Roy Tirtho
6c6488ea6d cd: fix version not being extracted in the steps 2024-06-06 14:36:43 +06:00
Kingkor Roy Tirtho
47f98b98aa fix(desktop): window is not centered 2024-06-06 13:48:52 +06:00
Kingkor Roy Tirtho
5f280a19f4 fix(desktop): titlebar drag to move not working 2024-06-06 13:41:02 +06:00
Kingkor Roy Tirtho
6591ec0e1b fix(ios): download not working #1575 2024-06-06 13:08:50 +06:00
Kingkor Roy Tirtho
d7d864ff2b fix(windows): media controls not showing up #1542 2024-06-06 12:29:20 +06:00
Kingkor Roy Tirtho
3394c1b057 fix(android): Media Controls not working above Android 14 #1561 2024-06-06 10:46:20 +06:00
Kingkor Roy Tirtho
6cb29868d2 fix: use weak match for Jiosaavn fallback to improve matching 2024-06-06 09:07:07 +06:00
Kingkor Roy Tirtho
37d002d133 fix: alternative sources not showing up for SongLink matched results 2024-06-06 08:47:07 +06:00
Kingkor Roy Tirtho
73c5b30b63 fix: browse anonymously button takes to wrong route 2024-06-06 08:43:29 +06:00
Kingkor Roy Tirtho
982cf0bd43 fix(windows): revert Flutter version to 3.19.6 to avoid distortion #1553 2024-06-06 08:28:18 +06:00
Kingkor Roy Tirtho
57cd8607dd Revert "refactor: migrate deprecated warnings"
chore: undo flutter 3.22.x related deprecated theme migrations
2024-06-06 08:19:07 +06:00
Kingkor Roy Tirtho
26ee84d990 chore: remove window_size deps as unused 2024-06-05 22:06:55 +06:00
Kingkor Roy Tirtho
8fc44ed655 fix(linux): application window not visible after launch 2024-06-05 17:59:31 +06:00
Kingkor Roy Tirtho
ed48d25add chore: update translations and generate credits 2024-06-03 13:53:36 +06:00
Kingkor Roy Tirtho
2b5fd35529 chore: update translations and generate credits 2024-06-03 13:52:47 +06:00
Kingkor Roy Tirtho
3aca7372af
chore: Release v3.7.0 (#1552)
* chore: fix analyzer issues

* fix(updater): dead link (#1408)

* docs: broken link in README.md (fixes #1310) (#1311)

* docs: remove appimage link in readme #1082 (#1171)

* Updating Readme according to #1082

Updating Readme according to #1082

* Added explanation

The explanation is now given and the expression is more formal and explanatory, instead of just linking the issue.

* Update use_update_checker.dart

---------

Co-authored-by: MerkomassDev <70111455+MerkomassDev@users.noreply.github.com>
Co-authored-by: Karim <37943746+ksaadDE@users.noreply.github.com>
Co-authored-by: Kingkor Roy Tirtho <krtirtho@gmail.com>

* fix(linux): tray icon not showing #541

upgrade old packages

* fix(search): load more button not working #1417

* fix: spotify friends and user profile icon (mobile) showing when not authenticated #1410

* chore: add docker and m1 based linux arm build

* cd: fix sed failing us

* cd: use docker cask

* fix: windows SSL Certificate error breaking login #905 (#1474)

* fix: certificate error by using custom ssl certificate

* Cd/docker linux ar (#1468)

* cd: use docker buildx

* cd: use linux host for linux arm instead of macos m1

m1 doesn't support nested virtualization. (Apple truly sucks)

* cd: don't specify arch in Dockerfile

* cd: use custom Dockerfile from ubuntu instead of flutter image

* cd: add setup java for android

* cd: add flutter distributor pre-built docker image for arm

* cd: save me from this cursed arm build

* cd: ??

* cd: ??

* cd: use docker build

* fix: windows SSL Exception for Signing in

* refactor: extract update checker as a basic function instead of a hook

* cd: fix windows build error due to nightly version format

* cd: fix github versioning scheme

* chore:  remove assets/ca entry in pubspec.yaml

* fix(macos): Logs directory not created by default #1353

* refactor: Dart based Github Workflow CLI (#1490)

* feat: add build dart script for windows

* feat: add android build support

* feat: add linux build support

* feat: add macos build support

* feat: add ios build support

* feat: add deps install command and workflow file

* cd: what?

* cd: what?

* cd: what?

* cd: update workflow inputs

* cd: replace release binary

* cd: run flutter pub get

* cd: use dpkg zstd instead of xz, windows disable innoInstall, fix channel enum.name and reset pubspec after changing build no for nightly

* cd: fix tar copy path

* cd: fix copy linux command

* cd: fix windows inno depend and fix android aab path

* cd: idk

* cd: linux why???

* cd: windows choco copy failed

* cd: use dart tar archive for creating tar file

* cd: fix linux file copy error

* cd: use tar command directly

* feat: add linux_arm platform

* cd: add linux_arm platform

* cd: don't know what?

* feat: notification about nightly channel update

* chore: fix some errors parsing nightly version info

* refactor: move dart scripts as commands under CLI

* chore: add translated message command to command list

* feat(translations): add Basque translation (#1493)

* added Basque translation

* chore: fix country codes and language native name

---------

Co-authored-by: Kingkor Roy Tirtho <krtirtho@gmail.com>

* feat(translations): add georgian language (#1450)

* feat: add georgian language

* feat: translate more georgian words

* feat(translations): add Finnish translations (#1449)

* docs: broken link in README.md (fixes #1310) (#1311)

* docs: remove appimage link in readme #1082 (#1171)

* Updating Readme according to #1082

Updating Readme according to #1082

* Added explanation

The explanation is now given and the expression is more formal and explanatory, instead of just linking the issue.

* added finnish translation

* chore: fix arb syntax errors and language in l10n entries

---------

Co-authored-by: MerkomassDev <70111455+MerkomassDev@users.noreply.github.com>
Co-authored-by: Karim <37943746+ksaadDE@users.noreply.github.com>
Co-authored-by: Kingkor Roy Tirtho <krtirtho@gmail.com>
Co-authored-by: Onni Nevala <nevalaonni@gmail.com>

* feat(translations): add Indonesian translation (#1426)

* docs: broken link in README.md (fixes #1310) (#1311)

* docs: remove appimage link in readme #1082 (#1171)

* Updating Readme according to #1082

Updating Readme according to #1082

* Added explanation

The explanation is now given and the expression is more formal and explanatory, instead of just linking the issue.

* Add Indonesia translation

---------

Co-authored-by: MerkomassDev <70111455+MerkomassDev@users.noreply.github.com>
Co-authored-by: Karim <37943746+ksaadDE@users.noreply.github.com>
Co-authored-by: Kingkor Roy Tirtho <krtirtho@gmail.com>

* feat(translations): Improve tr locales (#1419)

* docs: broken link in README.md (fixes #1310) (#1311)

* docs: remove appimage link in readme #1082 (#1171)

* Updating Readme according to #1082

Updating Readme according to #1082

* Added explanation

The explanation is now given and the expression is more formal and explanatory, instead of just linking the issue.

* Improve tr locales

---------

Co-authored-by: MerkomassDev <70111455+MerkomassDev@users.noreply.github.com>
Co-authored-by: Karim <37943746+ksaadDE@users.noreply.github.com>
Co-authored-by: Kingkor Roy Tirtho <krtirtho@gmail.com>

* feat(player): add volume slider floating label showing percentage (#1445)

* docs: broken link in README.md (fixes #1310) (#1311)

* docs: remove appimage link in readme #1082 (#1171)

* Updating Readme according to #1082

Updating Readme according to #1082

* Added explanation

The explanation is now given and the expression is more formal and explanatory, instead of just linking the issue.

* add volume level tooltip in volume_slider

---------

Co-authored-by: MerkomassDev <70111455+MerkomassDev@users.noreply.github.com>
Co-authored-by: Karim <37943746+ksaadDE@users.noreply.github.com>
Co-authored-by: Kingkor Roy Tirtho <krtirtho@gmail.com>

* fix: fallback to LRCLIB when lyrics line less than 6 lines #1461

* feat: Local music library (#1479)

* feat: add one additional library folder

This folder just doesn't get downloaded to.
I think I'm going to rework it so that it can be multiple folders,
but I'm going to commit my progress so far anyway.

Signed-off-by: Blake Leonard <me@blakes.dev>

* chore: update dependencies so that it builds

I'm not sure if this breaks CI or something, but I couldn't build
it locally to test my changes, so I made these changes and it
builds again.

Signed-off-by: Blake Leonard <me@blakes.dev>

* feat: index multiple folders of local music

If you used a previous commit from this branch, this is a breaking
change, because it changes the type of a configuration field. but
since this is still in development, it should be fine.

Signed-off-by: Blake Leonard <me@blakes.dev>

* refactor: manage local library in local tracks tab

This also refactors the list to use slivers instead. That's the
easiest way to have multiple scrolling lists here...

The console keeps getting spammed with some intermediate layout
error but I can't hold it long enough to figure out what's causing
it.

Signed-off-by: Blake Leonard <me@blakes.dev>

* refactor: use folder add/remove icons in library

Signed-off-by: Blake Leonard <me@blakes.dev>

* refactor: remove redundant settings page

Signed-off-by: Blake Leonard <me@blakes.dev>

* refactor: rename "Local Tracks" to just "Local"

Not sure if this would be the recommended way to do it...

Signed-off-by: Blake Leonard <me@blakes.dev>

* fix: console spam about useless Expanded

Signed-off-by: Blake Leonard <me@blakes.dev>

* chore: remove completed TODO

Signed-off-by: Blake Leonard <me@blakes.dev>

* chore: use new Platform constants; regenerate plugins

Signed-off-by: Blake Leonard <me@blakes.dev>

* refactor: put local libraries on separate pages

Signed-off-by: Blake Leonard <me@blakes.dev>

---------

Signed-off-by: Blake Leonard <me@blakes.dev>

* fix: local track not showing up in queue

* feat: local library folder cards

* feat: personalized stats based on local music history (#1522)

* feat: add playback history provider

* feat: implement recently played section

* refactor: use route names

* feat: add stats summary and top tracks/artists/albums

* feat: add top date based filtering

* feat: add stream money calculation

* refactor: place search in mobile navbar and settings in home appbar

* feat: add individual minutes and streams page

* feat(stats): add individual minutes and streams page

* chore: default period to 1 month

* feat: add text to explain user how hypothetical fees are calculated

* chore: ensure usage of route names instead of direct paths

* cd: add cache key

* cd: remove media_kit_event_loop from git

* fix: some text are garbled in different parts of the app #1463 #1505

* refactor: use replace http with dio and use it as the default

* cd: use dio in cli as well

* chore: fix home feed not showing up

* chore: downloaded tracks folder not opening

* feat: play initially available tracks of playlist/album immediately and fetch rest in background #670

* feat: upgrade to Flutter 3.22.0

* refactor: migrate deprecated warnings

* fix(playback): skipping tracks with unplayable sources instead of falling back #1492

* chore: migrate android gradle to declarative config syntax

* chore: disable impeller for now

* fix(windows): installer tries to install in current directory

* chore: upgrade deps and appbar bg fix

* chore: podspec update

* chore: bump version and generate changelogs

---------

Signed-off-by: Blake Leonard <me@blakes.dev>
Co-authored-by: Kshamendra <github@ghoulcloud.slmail.me>
Co-authored-by: MerkomassDev <70111455+MerkomassDev@users.noreply.github.com>
Co-authored-by: Karim <37943746+ksaadDE@users.noreply.github.com>
Co-authored-by: Josu Igoa <josuigoa@ni.eus>
Co-authored-by: Omari Sopromadze <omari.sopromadze@gmail.com>
Co-authored-by: ctih <78687256+ctih1@users.noreply.github.com>
Co-authored-by: Onni Nevala <nevalaonni@gmail.com>
Co-authored-by: Yusril Rapsanjani <yusriltakeuchi@gmail.com>
Co-authored-by: W͏ I͏ N͏ Z͏ O͏ R͏ T͏ <75412448+mikropsoft@users.noreply.github.com>
Co-authored-by: Akash Pattnaik <akashjio66666@gmail.com>
Co-authored-by: Blake Leonard <blake@1024256.xyz>
2024-06-03 13:45:04 +06:00
Kingkor Roy Tirtho
ab713a4eac chore: bump version and generate changelogs 2024-06-03 13:44:16 +06:00
Kingkor Roy Tirtho
9cd44b6c9b chore: podspec update 2024-06-03 13:15:19 +06:00
Kingkor Roy Tirtho
f6ba95fb64 chore: upgrade deps and appbar bg fix 2024-06-03 13:13:05 +06:00
Kingkor Roy Tirtho
c3c9fc544c fix(windows): installer tries to install in current directory 2024-06-03 12:47:08 +06:00
Kingkor Roy Tirtho
bc534aa240 chore: disable impeller for now 2024-06-03 10:56:51 +06:00
Kingkor Roy Tirtho
e63a4bb63c chore: migrate android gradle to declarative config syntax 2024-06-03 10:09:41 +06:00
Kingkor Roy Tirtho
c607a330ed fix(playback): skipping tracks with unplayable sources instead of falling back #1492 2024-06-02 22:34:06 +06:00
Kingkor Roy Tirtho
56241f773a refactor: migrate deprecated warnings 2024-06-02 21:15:11 +06:00
Kingkor Roy Tirtho
71341ec0bd feat: upgrade to Flutter 3.22.0 2024-06-01 21:33:05 +06:00
Kingkor Roy Tirtho
02acbd9327 feat: play initially available tracks of playlist/album immediately and fetch rest in background #670 2024-06-01 15:45:06 +06:00
Kingkor Roy Tirtho
c4023aa09d chore: downloaded tracks folder not opening 2024-06-01 13:05:16 +06:00
Kingkor Roy Tirtho
e034455173 chore: fix home feed not showing up 2024-06-01 12:47:36 +06:00
Kingkor Roy Tirtho
e1786989ff cd: use dio in cli as well 2024-06-01 12:36:00 +06:00
Kingkor Roy Tirtho
b2d9e64758 refactor: use replace http with dio and use it as the default 2024-06-01 12:31:20 +06:00
Kingkor Roy Tirtho
d2683c52d8 fix: some text are garbled in different parts of the app #1463 #1505 2024-06-01 11:43:21 +06:00
Kingkor Roy Tirtho
82307bc030
feat: personalized stats based on local music history (#1522)
* feat: add playback history provider

* feat: implement recently played section

* refactor: use route names

* feat: add stats summary and top tracks/artists/albums

* feat: add top date based filtering

* feat: add stream money calculation

* refactor: place search in mobile navbar and settings in home appbar

* feat: add individual minutes and streams page

* feat(stats): add individual minutes and streams page

* chore: default period to 1 month

* feat: add text to explain user how hypothetical fees are calculated

* chore: ensure usage of route names instead of direct paths

* cd: add cache key

* cd: remove media_kit_event_loop from git
2024-06-01 11:40:01 +06:00
Kingkor Roy Tirtho
fc5bfa089c feat: local library folder cards 2024-05-23 21:27:09 +06:00
Kingkor Roy Tirtho
d82261cb25 fix: local track not showing up in queue 2024-05-23 16:56:52 +06:00
Blake Leonard
22caa818f4
feat: Local music library (#1479)
* feat: add one additional library folder

This folder just doesn't get downloaded to.
I think I'm going to rework it so that it can be multiple folders,
but I'm going to commit my progress so far anyway.

Signed-off-by: Blake Leonard <me@blakes.dev>

* chore: update dependencies so that it builds

I'm not sure if this breaks CI or something, but I couldn't build
it locally to test my changes, so I made these changes and it
builds again.

Signed-off-by: Blake Leonard <me@blakes.dev>

* feat: index multiple folders of local music

If you used a previous commit from this branch, this is a breaking
change, because it changes the type of a configuration field. but
since this is still in development, it should be fine.

Signed-off-by: Blake Leonard <me@blakes.dev>

* refactor: manage local library in local tracks tab

This also refactors the list to use slivers instead. That's the
easiest way to have multiple scrolling lists here...

The console keeps getting spammed with some intermediate layout
error but I can't hold it long enough to figure out what's causing
it.

Signed-off-by: Blake Leonard <me@blakes.dev>

* refactor: use folder add/remove icons in library

Signed-off-by: Blake Leonard <me@blakes.dev>

* refactor: remove redundant settings page

Signed-off-by: Blake Leonard <me@blakes.dev>

* refactor: rename "Local Tracks" to just "Local"

Not sure if this would be the recommended way to do it...

Signed-off-by: Blake Leonard <me@blakes.dev>

* fix: console spam about useless Expanded

Signed-off-by: Blake Leonard <me@blakes.dev>

* chore: remove completed TODO

Signed-off-by: Blake Leonard <me@blakes.dev>

* chore: use new Platform constants; regenerate plugins

Signed-off-by: Blake Leonard <me@blakes.dev>

* refactor: put local libraries on separate pages

Signed-off-by: Blake Leonard <me@blakes.dev>

---------

Signed-off-by: Blake Leonard <me@blakes.dev>
2024-05-23 15:18:01 +06:00
Kingkor Roy Tirtho
9aea35468f fix: fallback to LRCLIB when lyrics line less than 6 lines #1461 2024-05-23 15:13:02 +06:00
Akash Pattnaik
8fad2251b3
feat(player): add volume slider floating label showing percentage (#1445)
* docs: broken link in README.md (fixes #1310) (#1311)

* docs: remove appimage link in readme #1082 (#1171)

* Updating Readme according to #1082

Updating Readme according to #1082

* Added explanation

The explanation is now given and the expression is more formal and explanatory, instead of just linking the issue.

* add volume level tooltip in volume_slider

---------

Co-authored-by: MerkomassDev <70111455+MerkomassDev@users.noreply.github.com>
Co-authored-by: Karim <37943746+ksaadDE@users.noreply.github.com>
Co-authored-by: Kingkor Roy Tirtho <krtirtho@gmail.com>
2024-05-10 23:16:10 +06:00
W͏ I͏ N͏ Z͏ O͏ R͏ T͏
bf45681deb
feat(translations): Improve tr locales (#1419)
* docs: broken link in README.md (fixes #1310) (#1311)

* docs: remove appimage link in readme #1082 (#1171)

* Updating Readme according to #1082

Updating Readme according to #1082

* Added explanation

The explanation is now given and the expression is more formal and explanatory, instead of just linking the issue.

* Improve tr locales

---------

Co-authored-by: MerkomassDev <70111455+MerkomassDev@users.noreply.github.com>
Co-authored-by: Karim <37943746+ksaadDE@users.noreply.github.com>
Co-authored-by: Kingkor Roy Tirtho <krtirtho@gmail.com>
2024-05-10 23:06:02 +06:00
Yusril Rapsanjani
0280654bb6
feat(translations): add Indonesian translation (#1426)
* docs: broken link in README.md (fixes #1310) (#1311)

* docs: remove appimage link in readme #1082 (#1171)

* Updating Readme according to #1082

Updating Readme according to #1082

* Added explanation

The explanation is now given and the expression is more formal and explanatory, instead of just linking the issue.

* Add Indonesia translation

---------

Co-authored-by: MerkomassDev <70111455+MerkomassDev@users.noreply.github.com>
Co-authored-by: Karim <37943746+ksaadDE@users.noreply.github.com>
Co-authored-by: Kingkor Roy Tirtho <krtirtho@gmail.com>
2024-05-10 23:00:24 +06:00
ctih
edc997e747
feat(translations): add Finnish translations (#1449)
* docs: broken link in README.md (fixes #1310) (#1311)

* docs: remove appimage link in readme #1082 (#1171)

* Updating Readme according to #1082

Updating Readme according to #1082

* Added explanation

The explanation is now given and the expression is more formal and explanatory, instead of just linking the issue.

* added finnish translation

* chore: fix arb syntax errors and language in l10n entries

---------

Co-authored-by: MerkomassDev <70111455+MerkomassDev@users.noreply.github.com>
Co-authored-by: Karim <37943746+ksaadDE@users.noreply.github.com>
Co-authored-by: Kingkor Roy Tirtho <krtirtho@gmail.com>
Co-authored-by: Onni Nevala <nevalaonni@gmail.com>
2024-05-10 22:49:38 +06:00
Omari Sopromadze
1e7f0e1fe7
feat(translations): add georgian language (#1450)
* feat: add georgian language

* feat: translate more georgian words
2024-05-10 22:37:22 +06:00
Josu Igoa
dbc1c452dd
feat(translations): add Basque translation (#1493)
* added Basque translation

* chore: fix country codes and language native name

---------

Co-authored-by: Kingkor Roy Tirtho <krtirtho@gmail.com>
2024-05-10 22:22:56 +06:00
Kingkor Roy Tirtho
2b01e4fb4d chore: add translated message command to command list 2024-05-09 16:50:42 +06:00
Kingkor Roy Tirtho
a838eadc12 refactor: move dart scripts as commands under CLI 2024-05-09 16:47:28 +06:00
Kingkor Roy Tirtho
a77b6776e8
refactor: Dart based Github Workflow CLI (#1490)
* feat: add build dart script for windows

* feat: add android build support

* feat: add linux build support

* feat: add macos build support

* feat: add ios build support

* feat: add deps install command and workflow file

* cd: what?

* cd: what?

* cd: what?

* cd: update workflow inputs

* cd: replace release binary

* cd: run flutter pub get

* cd: use dpkg zstd instead of xz, windows disable innoInstall, fix channel enum.name and reset pubspec after changing build no for nightly

* cd: fix tar copy path

* cd: fix copy linux command

* cd: fix windows inno depend and fix android aab path

* cd: idk

* cd: linux why???

* cd: windows choco copy failed

* cd: use dart tar archive for creating tar file

* cd: fix linux file copy error

* cd: use tar command directly

* feat: add linux_arm platform

* cd: add linux_arm platform

* cd: don't know what?

* feat: notification about nightly channel update

* chore: fix some errors parsing nightly version info
2024-05-09 15:26:58 +06:00
Kingkor Roy Tirtho
4ca893950b fix(macos): Logs directory not created by default #1353 2024-05-05 09:15:52 +06:00
Kingkor Roy Tirtho
2286277a06
chore: remove assets/ca entry in pubspec.yaml 2024-05-04 21:26:45 +06:00
Kingkor Roy Tirtho
c1a105a1ff cd: fix github versioning scheme 2024-05-04 21:00:06 +06:00
Kingkor Roy Tirtho
7ad67fa3fa cd: fix windows build error due to nightly version format 2024-05-04 20:39:36 +06:00
Kingkor Roy Tirtho
937a706ac9
fix: windows SSL Certificate error breaking login #905 (#1474)
* fix: certificate error by using custom ssl certificate

* Cd/docker linux ar (#1468)

* cd: use docker buildx

* cd: use linux host for linux arm instead of macos m1

m1 doesn't support nested virtualization. (Apple truly sucks)

* cd: don't specify arch in Dockerfile

* cd: use custom Dockerfile from ubuntu instead of flutter image

* cd: add setup java for android

* cd: add flutter distributor pre-built docker image for arm

* cd: save me from this cursed arm build

* cd: ??

* cd: ??

* cd: use docker build

* fix: windows SSL Exception for Signing in

* refactor: extract update checker as a basic function instead of a hook
2024-05-04 20:10:19 +06:00
Kingkor Roy Tirtho
88fea7ecf9 cd: use docker cask 2024-04-19 16:14:17 +06:00
Kingkor Roy Tirtho
ef7833eb67 cd: fix sed failing us 2024-04-19 16:10:28 +06:00
Kingkor Roy Tirtho
2da5d786d2 chore: add docker and m1 based linux arm build 2024-04-19 16:05:01 +06:00
Kingkor Roy Tirtho
9bccbc93c6 fix: spotify friends and user profile icon (mobile) showing when not authenticated #1410 2024-04-18 00:19:47 +06:00
Kingkor Roy Tirtho
7e07c2e198 fix(search): load more button not working #1417 2024-04-18 00:05:47 +06:00
Kingkor Roy Tirtho
7ac791757a fix(linux): tray icon not showing #541
upgrade old packages
2024-04-17 22:20:30 +06:00
Kshamendra
6907f9c756
fix(updater): dead link (#1408)
* docs: broken link in README.md (fixes #1310) (#1311)

* docs: remove appimage link in readme #1082 (#1171)

* Updating Readme according to #1082

Updating Readme according to #1082

* Added explanation

The explanation is now given and the expression is more formal and explanatory, instead of just linking the issue.

* Update use_update_checker.dart

---------

Co-authored-by: MerkomassDev <70111455+MerkomassDev@users.noreply.github.com>
Co-authored-by: Karim <37943746+ksaadDE@users.noreply.github.com>
Co-authored-by: Kingkor Roy Tirtho <krtirtho@gmail.com>
2024-04-17 18:55:06 +06:00
Kingkor Roy Tirtho
930539ca48 chore: fix analyzer issues 2024-04-15 19:47:15 +06:00
Kingkor Roy Tirtho
cb95663412
Merge pull request #1405 from KRTirtho/dev
Release version 3.6.0
2024-04-15 19:41:40 +06:00
Kingkor Roy Tirtho
883783b769 chore: add untranslated messages 2024-04-15 19:40:38 +06:00
Kingkor Roy Tirtho
7ae9f56482 chore: bump version and generate changelogs 2024-04-15 19:28:01 +06:00
Tutislav
5a6b800912
feat(translations): Add Czech translation (#1401) 2024-04-15 19:26:19 +06:00
Kingkor Roy Tirtho
6f4c308457 chore: fix shuffle doesn't move active track to top and library gridview with floating filter field 2024-04-15 19:11:59 +06:00
Kingkor Roy Tirtho
6e07fec1a5 chore: fix no window button and feed section page bottom overflow 2024-04-15 18:01:35 +06:00
Kingkor Roy Tirtho
9e25c742d4
feat: add Spotify homepage personalized recommendations (#1402)
* feat: add spotify homepage recommendations

* chore: bring back made for user sectin
2024-04-14 12:10:34 +06:00
Kingkor Roy Tirtho
9791e3fb5f chore: give a boost to first track of playlist 2024-04-14 12:02:12 +06:00
Kingkor Roy Tirtho
2d1f4b9380 chore: fix song link button not showing up 2024-04-13 13:12:20 +06:00
Kingkor Roy Tirtho
39e97eef34 feat: add user profile page 2024-04-13 13:05:41 +06:00
Kingkor Roy Tirtho
f82253c6ba refactor: show devices in sidebar in big screens 2024-04-13 10:22:59 +06:00
Kingkor Roy Tirtho
57ccf16311 refactor: rename providers 2024-04-12 11:06:03 +06:00
Kingkor Roy Tirtho
2781127da1 chore: revert android-utils 2024-04-12 10:57:09 +06:00
Muhammad Brian Abdillah
6e41b106fa
feat(android): Filter Device To Force High Frame Rate (#880)
* fix(android): filter device to force HFR

* fix(android): add failsafe in setHighRefreshRate
2024-04-12 10:27:54 +06:00
Kingkor Roy Tirtho
22a49e56a2
refactor: use tcp server based track matcher (#1386)
* refactor: remove SourcedTrack based audio player and utilize mediakit playback system

* feat: implement local (loopback) server to resolve stream source and leverage the media_kit playback API

* feat: add source change support and re-add prefetching tracks

* fix: assign lastId when track fetch completes regardless of error

* chore: remove print statements

* fix: remote queue not working

* fix: increase mpv network timeout to reduce auto-skipping

* fix: do not pre-fetch local tracks

* fix(proxy-playlist): reset collections on load

* chore: fix lint warnings

* fix(mobile): player overlay should not be visible when the player is not playing

* chore: fix typo in turkish translation

* cd: checkout PR branch

* cd: upgrade flutter version

* chore: fix lint errors
2024-04-11 17:56:41 +06:00
dependabot[bot]
b948872258
chore(deps): bump cached_network_image from 3.3.0 to 3.3.1 (#1270)
Bumps [cached_network_image](https://github.com/Baseflow/flutter_cached_network_image) from 3.3.0 to 3.3.1.
- [Commits](https://github.com/Baseflow/flutter_cached_network_image/compare/v3.3.0...v3.3.1)

---
updated-dependencies:
- dependency-name: cached_network_image
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-11 17:30:11 +06:00
dependabot[bot]
17837f4149
chore(deps): bump flutter_hooks from 0.20.1 to 0.20.5 (#1271)
Bumps [flutter_hooks](https://github.com/rrousselGit/flutter_hooks/tree/master/packages) from 0.20.1 to 0.20.5.
- [Commits](https://github.com/rrousselGit/flutter_hooks/commits/flutter_hooks-v0.20.5/packages)

---
updated-dependencies:
- dependency-name: flutter_hooks
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Kingkor Roy Tirtho <krtirtho@gmail.com>
2024-04-11 17:29:45 +06:00
dependabot[bot]
4b757d8e8d
chore(deps): bump flutter_gen_runner from 5.3.1 to 5.4.0 (#1272)
Bumps [flutter_gen_runner](https://github.com/FlutterGen/flutter_gen) from 5.3.1 to 5.4.0.
- [Release notes](https://github.com/FlutterGen/flutter_gen/releases)
- [Changelog](https://github.com/FlutterGen/flutter_gen/blob/main/CHANGELOG.md)
- [Commits](https://github.com/FlutterGen/flutter_gen/compare/v5.3.1...v5.4.0)

---
updated-dependencies:
- dependency-name: flutter_gen_runner
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-11 17:27:42 +06:00
dependabot[bot]
27604b28f2
chore(deps): bump popover from 0.2.8+2 to 0.3.0 (#1273)
Bumps [popover](https://github.com/minikin/popover) from 0.2.8+2 to 0.3.0.
- [Release notes](https://github.com/minikin/popover/releases)
- [Changelog](https://github.com/minikin/popover/blob/main/CHANGELOG.md)
- [Commits](https://github.com/minikin/popover/compare/v0.2.8...v0.3.0)

---
updated-dependencies:
- dependency-name: popover
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-11 17:27:03 +06:00
dependabot[bot]
beafe23e30
chore(deps): bump build_runner from 2.4.6 to 2.4.9 (#1361)
Bumps [build_runner](https://github.com/dart-lang/build) from 2.4.6 to 2.4.9.
- [Release notes](https://github.com/dart-lang/build/releases)
- [Commits](https://github.com/dart-lang/build/compare/build_runner-v2.4.6...build_runner-v2.4.9)

---
updated-dependencies:
- dependency-name: build_runner
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-11 17:26:32 +06:00
dependabot[bot]
ca546bef17
chore(deps): bump KSXGitHub/github-actions-deploy-aur (#1372)
Bumps [KSXGitHub/github-actions-deploy-aur](https://github.com/ksxgithub/github-actions-deploy-aur) from 2.7.0 to 2.7.1.
- [Release notes](https://github.com/ksxgithub/github-actions-deploy-aur/releases)
- [Commits](https://github.com/ksxgithub/github-actions-deploy-aur/compare/v2.7.0...v2.7.1)

---
updated-dependencies:
- dependency-name: KSXGitHub/github-actions-deploy-aur
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-11 17:26:05 +06:00
Karim
2abb5800be
docs: remove appimage link in readme #1082 (#1171)
* Updating Readme according to #1082

Updating Readme according to #1082

* Added explanation

The explanation is now given and the expression is more formal and explanatory, instead of just linking the issue.
2024-04-09 22:53:09 +06:00
WINZORT
392047247b
chore: improve Turkish translations (#1307)
* Update app_tr.arb

* Update app_tr.arb

* Update app_tr.arb

* Update app_tr.arb

* Update app_tr.arb

* Update app_tr.arb

* Update app_tr.arb

* Update app_tr.arb

* Hotfix

* Update app_tr.arb

* Update app_tr.arb

* add

* Fix

* Fix

* Update

* Add fastlane tr

* chore: add back previous translator's name

---------

Co-authored-by: Kingkor Roy Tirtho <krtirtho@gmail.com>
2024-04-09 22:23:19 +06:00
Kingkor Roy Tirtho
9391e7a379 chore: thai translation error fix errors 2024-04-09 22:04:37 +06:00
watchakorn-18k
b70f250e8d
feat(translations): add Thai Language (#1319)
* feat : added Thai Language

* docs: broken link in README.md (fixes #1310) (#1311)

---------

Co-authored-by: MerkomassDev <70111455+MerkomassDev@users.noreply.github.com>
Co-authored-by: Kingkor Roy Tirtho <krtirtho@gmail.com>
2024-04-09 21:47:02 +06:00
Kingkor Roy Tirtho
de68fe3a6b chore: make dropdown buttons more attractive 2024-04-09 01:15:39 +06:00
Kingkor Roy Tirtho
0d080b77b7 fix(playback): sponsor block skips and stutters in same position 2024-04-07 13:05:54 +06:00
Kingkor Roy Tirtho
f26503990c
cd: use brew to install setuptools 2024-04-05 12:39:54 +06:00
Kingkor Roy Tirtho
5afe823abd feat(lyrics): add LRCLIB lyrics provider as fallback 2024-04-05 00:48:08 +06:00
Kingkor Roy Tirtho
c8dd8025ec fix: instance of Artist bug #1362 2024-04-04 22:33:01 +06:00
Kingkor Roy Tirtho
68374efd3e
feat: LAN connect a.k.a control remote Spotube playback and local output device selection (#1355)
* feat: add connect server support

* feat: add ability discover and connect to same network Spotube(s) and sync queue

* feat(connect): add player controls, shuffle, loop, progress bar and queue support

* feat: make control page adaptive

* feat: add volume control support

* cd: upgrade macos runner version

* chore: upgrade inappwebview version to 6

* feat: customized devices button

* feat: add user icon next to devices button

* feat: add play in remote device support

* feat: show alert when new client connects

* fix: ignore the device itself from broadcast list

* fix: volume control not working

* feat: add ability to select current device's output speaker
2024-04-04 22:22:00 +06:00
Kingkor Roy Tirtho
044d3b4820 refactor: use CustomScrollView in player queue 2024-03-28 22:49:40 +06:00
Kingkor Roy Tirtho
ee97aedcfc chore: remove direct access to .value without calling asData.value 2024-03-23 20:37:52 +06:00
Kingkor Roy Tirtho
82b1cfa0d7 feat: search history support #1236 2024-03-23 20:19:34 +06:00
Kingkor Roy Tirtho
e99f32b610 chore: set yt as jiosaavn fallback 2024-03-23 19:00:37 +06:00
Kingkor Roy Tirtho
9f96b5c537 refactor: use extension methods for simple album to album and simple track to track conversion 2024-03-21 00:48:21 +06:00
Kingkor Roy Tirtho
1a6cea926f refactor: use widget for artist link instead of a utility function 2024-03-21 00:38:10 +06:00
Kingkor Roy Tirtho
1cea95bbda refactor: artist name string as extension 2024-03-21 00:30:27 +06:00
Kingkor Roy Tirtho
7545ff6415 refactor: use extension method for image to url string 2024-03-21 00:18:43 +06:00
Kingkor Roy Tirtho
6673e5a8a8
feat: improved caching based on riverpod (#1343)
* feat: add riverpod based favorite album provider

* feat: add album is saved, new releases and tracks providers

* feat: add artist related providers

* feat: add all categories providers

* feat: add lyrics provider

* feat: add playlist related providers

* feat: add search provider

* feat: add view and spotify friends provider

* feat: add playlist create and update and favorite handlers

* feat: use providers in home screen

* chore: fix dart lint issues

* feat: use new providers for playlist and albums screen

* feat: use providers in artist page

* feat: use providers on library page

* feat: use provider for playlist and album card and heart button

* feat: use provider in search page

* feat: use providers in generate playlist

* feat: use provider in lyrics screen

* feat: use provider for create playlist

* feat: use provider in add track dialog

* feat: use providers in remaining pages and remove fl_query

* fix: remove direct access to provider.value

* fix: glitching when loading

* fix: user album loading next page indicator

* feat: make many provider autoDispose after 5 minutes of no usage

* fix: ignore episodes in tracks
2024-03-20 23:38:39 +06:00
MerkomassDev
f4dce2f611
docs: broken link in README.md (fixes #1310) (#1311) 2024-03-20 21:20:09 +06:00
Kingkor Roy Tirtho
35e9920b51 chore: add riverpod lint 2024-03-13 14:34:51 +06:00
Kingkor Roy Tirtho
f37ac06e1a chore: unnecessary test files 2024-03-13 14:30:11 +06:00
Kingkor Roy Tirtho
ca2b81d572 chore: fix linux appdata formatting 2024-03-09 22:28:40 +06:00
Kingkor Roy Tirtho
6539009629 cd: fix linux tar 2024-03-09 00:38:08 +06:00
Kingkor Roy Tirtho
97ecaca9d9 Merge branch 'master' into dev 2024-03-09 00:06:17 +06:00
Kingkor Roy Tirtho
eec7a9dbc4 chore: update changelogs and update credits 2024-03-09 00:05:47 +06:00
Kingkor Roy Tirtho
e516afb185 fix(android): only ask battery optimization once #1252 2024-03-09 00:00:36 +06:00
Kingkor Roy Tirtho
a248a4b48c chore: fix getting started showing up everytime 2024-03-08 23:07:55 +06:00
Kingkor Roy Tirtho
4a044498a4 chore: fix macos disable hardened runtime 2024-03-08 23:03:56 +06:00
Kingkor Roy Tirtho
389a4fc704 cd: remove debug step in upload task 2024-03-08 21:08:38 +06:00
Kingkor Roy Tirtho
a6164c5791 chore: add untranslated messages 2024-03-08 20:53:04 +06:00
Kingkor Roy Tirtho
5019c14c44 chore: fix getting started screen theme and bump version and generate changelogs 2024-03-08 19:50:57 +06:00
Kingkor Roy Tirtho
b354f57d4e chore: hide songlink when not youtube track 2024-03-08 19:12:40 +06:00
Kingkor Roy Tirtho
ca76a39910 fix: album images are small in certain places 2024-03-08 19:10:33 +06:00
Kingkor Roy Tirtho
57ac3177c0 Merge branch 'dev' into website 2024-03-05 22:56:42 +06:00
Kingkor Roy Tirtho
60f2911eb9 website: add homebrew instructions 2024-03-05 22:55:33 +06:00
Kingkor Roy Tirtho
0742e898e3 docs: add installation through homebrew instruction in README 2024-03-05 22:47:13 +06:00
Kingkor Roy Tirtho
06a7ecf393 chore: remove casks 2024-03-05 22:47:13 +06:00
Kingkor Roy Tirtho
88c6822555 chore: add test macos cask definition 2024-03-05 22:47:13 +06:00
Kingkor Roy Tirtho
bda76a59ec docs: add installation through homebrew instruction in README 2024-03-05 22:45:06 +06:00
Kingkor Roy Tirtho
d1f0e778f6 chore: remove casks 2024-03-05 22:17:56 +06:00
Kingkor Roy Tirtho
d0f6f9d9f6 chore: add test macos cask definition 2024-03-05 22:09:52 +06:00
TAE-IN Sappho KIM
fdea9307bb
feat(translations): add Korean translation (#1275)
* Create Korean translation

* More natrual translation on Korean

* Add credit of Korean translation
2024-03-05 20:52:48 +06:00
Kingkor Roy Tirtho
af1ce932a1 docs: add hacker news link in both website and readme 2024-03-05 18:36:46 +06:00
Kingkor Roy Tirtho
649d6acfe2 chore(macos): enable macos hardened runtime and use spotify from pub 2024-03-05 18:24:32 +06:00
Kingkor Roy Tirtho
2c0b1a57e5
cd: fix syntax error 2024-03-04 10:53:00 +06:00
Kingkor Roy Tirtho
f09ab004bf
cd: fix nightly linux tar not getting updated 2024-03-04 10:51:41 +06:00
Kingkor Roy Tirtho
09fac66d26
cd: debug upload artifact 2024-03-04 09:47:45 +06:00
Kingkor Roy Tirtho
b0970090b1 chore: add song link text in player view shortcut 2024-03-01 19:16:52 +06:00
Kingkor Roy Tirtho
a9a1d4c9dc fix: album, artist page not loading #1282 2024-03-01 18:55:33 +06:00
Kingkor Roy Tirtho
e6a20b5a16 chore: fix add null check before accessing auth cookie from hive box #1264 2024-02-26 10:05:50 +06:00
Kingkor Roy Tirtho
0ae6af61c9 chore: untranslated messages 2024-02-25 23:06:40 +06:00
Kingkor Roy Tirtho
761d968ceb Merge branch 'master' into dev 2024-02-25 23:01:11 +06:00
0x00646f616e6e63
019ba865e2
feat(translations): Added Vietnamese (#1135)
* feat: Added Vietnamese

* fix: better translation

* fix: better translation

* fix: better translation

* chore: add translator credit

---------

Co-authored-by: Kingkor Roy Tirtho <krtirtho@gmail.com>
2024-02-25 22:59:54 +06:00
dependabot[bot]
27e7d532f0
chore(deps): bump audio_session from 0.1.16 to 0.1.18 (#1146)
Bumps [audio_session](https://github.com/ryanheise/audio_session) from 0.1.16 to 0.1.18.
- [Release notes](https://github.com/ryanheise/audio_session/releases)
- [Changelog](https://github.com/ryanheise/audio_session/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ryanheise/audio_session/compare/v0.1.16...v0.1.18)

---
updated-dependencies:
- dependency-name: audio_session
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-25 22:54:11 +06:00
dependabot[bot]
befaf59f0c
chore(deps): bump flutter_lints from 2.0.3 to 3.0.1 (#1147)
Bumps [flutter_lints](https://github.com/flutter/packages/tree/main/packages) from 2.0.3 to 3.0.1.
- [Release notes](https://github.com/flutter/packages/releases)
- [Commits](https://github.com/flutter/packages/commits/flutter_lints-v3.0.1/packages)

---
updated-dependencies:
- dependency-name: flutter_lints
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-25 22:53:47 +06:00
dependabot[bot]
920d4219f0
chore(deps): bump flutter_native_splash from 2.3.3 to 2.3.10 (#1176)
Bumps [flutter_native_splash](https://github.com/jonbhanson/flutter_native_splash) from 2.3.3 to 2.3.10.
- [Release notes](https://github.com/jonbhanson/flutter_native_splash/releases)
- [Changelog](https://github.com/jonbhanson/flutter_native_splash/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jonbhanson/flutter_native_splash/commits)

---
updated-dependencies:
- dependency-name: flutter_native_splash
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Kingkor Roy Tirtho <krtirtho@gmail.com>
2024-02-25 22:53:25 +06:00
dependabot[bot]
59a819be9c
chore(deps): bump flutter_riverpod from 2.4.3 to 2.4.10 (#1212)
Bumps [flutter_riverpod](https://github.com/rrousselGit/riverpod) from 2.4.3 to 2.4.10.
- [Commits](https://github.com/rrousselGit/riverpod/compare/flutter_riverpod-v2.4.3...flutter_riverpod-v2.4.10)

---
updated-dependencies:
- dependency-name: flutter_riverpod
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-25 22:50:40 +06:00
dependabot[bot]
1fa6d1f819
chore(deps): bump dio from 5.3.3 to 5.4.1 (#1243)
Bumps [dio](https://github.com/cfug/dio) from 5.3.3 to 5.4.1.
- [Release notes](https://github.com/cfug/dio/releases)
- [Commits](https://github.com/cfug/dio/compare/dio_v5.3.3...dio_v5.4.1)

---
updated-dependencies:
- dependency-name: dio
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-25 22:50:08 +06:00
Kingkor Roy Tirtho
4d6af8c0a7 chore: add translations for getting started screen 2024-02-25 22:48:27 +06:00
olivier2
17105a640b
fix(android): audio issue when screen is off and broadcast audio session id (#1221 & #1247)
* this change fixes the garbled audio on my Pixel 6a while the screen is off. Not familiar with libmpv, but seems to favor audiotrack audio output over opensles. KRTirtho/spotube#571

* get audio session id, send it to AudioTrack in libmpv, broadcast it to other apps. Fixes KRTirtho/spotube#1221

---------

Co-authored-by: Kingkor Roy Tirtho <krtirtho@gmail.com>
2024-02-25 22:26:06 +06:00
Kingkor Roy Tirtho
a850ed270b chore: add error handling in song link 2024-02-25 22:06:47 +06:00
Kingkor Roy Tirtho
96a2a1f5a6 feat: add getting started page 2024-02-25 22:01:38 +06:00
Kingkor Roy Tirtho
ca71406505 chore: remove residual files 2024-02-25 11:14:00 +06:00
Kingkor Roy Tirtho
9095a8c8f8 feat: add songlink based track matching for youtube and open song link button
songlink.com will provide accurate match verified by community for most spotify tracks improving overall match accuracy for Youtube audio source
2024-02-25 11:13:23 +06:00
Kingkor Roy Tirtho
6f71e52ea8 fix: no draggable scrollbar in playlist/album page #1158 2024-02-24 22:53:30 +06:00
Kingkor Roy Tirtho
87e203b8b4 chore: Minor typographical splash screen correction (English translation) #1256 2024-02-24 21:50:55 +06:00
powen
095587ee84
feat: Add iOS background play support (#1166)
* Create build-iPA.yml

* Update build-iPA.yml

* update-iOS

- Set AppIcon(same as Android)
- Set to correct app name(Sptube -> Spotube)
-

* update iOS flavors

* Update build-iPA.yml

* Update spotube-release-binary.yml

* rename release-bin iPA filename

* update appicon

* Update dev-Info.plist

* Add iOS background play support

https://github.com/KRTirtho/spotube/issues/1061

* background modes edit
2024-02-24 21:22:23 +06:00
Kingkor Roy Tirtho
846ae82084 chore: upgrade flutter version 2024-02-24 20:21:09 +06:00
Kingkor Roy Tirtho
ab08c82c8d fix: friends list not scrollable with mouse drag 2024-02-24 18:38:18 +06:00
Kingkor Roy Tirtho
b6d42659b7 chore: debug linux tar not getting updated 2024-02-23 20:57:35 +06:00
olivier2
ba69496dcc
feat(windows): Install Visual C++ 2015-2022 Redistributable if missing when installing 2024-02-19 00:47:10 +06:00
Kuyumee
6f8271f5e9
feat: Sort by Duration (#1238) 2024-02-18 23:35:42 +06:00
Kingkor Roy Tirtho
3294f657fe fix(android): system back button in player page exits the app 2024-02-18 23:05:43 +06:00
Kingkor Roy Tirtho
c3289a0ba4 fix(android): pressing back button in any other tab other than home exits the app 2024-02-18 23:02:14 +06:00
Kingkor Roy Tirtho
86123456f2 fix: cleanTitle removing feat and ft from words instead of whole words 2024-02-18 21:11:28 +06:00
Kingkor Roy Tirtho
9f9244062a feat(playlist): show confirmation before deleting user playlist #1222 2024-02-17 23:01:14 +06:00
Kingkor Roy Tirtho
e964f61d38 fix: track loading when not found in Youtube 2024-02-17 22:22:00 +06:00
Kingkor Roy Tirtho
badd52223a chore: use piped_client git version to fix search issue 2024-02-17 22:07:32 +06:00
Kingkor Roy Tirtho
90f7c531cd fix: non-banger songs breaking the queue if sources not found
Now fallbacks to another audio source if not found in one
2024-02-17 21:33:09 +06:00
Kingkor Roy Tirtho
26db4f3350 Merge branch 'dev' into website 2024-02-17 13:51:19 +06:00
Kingkor Roy Tirtho
cd669e22c1
website: new sveltekit based website (#1239)
* feat: initialize website project

* feat: add initial homepage with download links

* feat: initial download page

* fix: linux icon color

* feat: add mobile nav and github star button

* feat: add older and nightly downloads page

* feat: add supporters and footer

* feat: add author details in about page

* feat: add darkmode toggle for website

* feat: add playstore and flathub download buttons and contribution button

* feat: add blogs support

* feat: remove netlify deploy config and add cloudflare config and favicons + manifest

* chore: add robots.txt

* feat: add spotube logo in navbar and fix build errors

* chore: add gap
2024-02-17 13:48:27 +06:00
Kingkor Roy Tirtho
8ed65bfa17 chore: add folders to git ignore 2024-02-17 13:46:11 +06:00
Stephan Paternotte
0737a362d8
chore: Add 2nd dutch translator (#1170)
2nd Dutch translator added
2024-02-09 10:00:09 +06:00
Stephan Paternotte
8167963212
fix(translations): Update app_nl.arb (#1168)
I made a couple of improvements to the Dutch translation, which I hope the original translator will appreciate.
2024-02-09 09:59:15 +06:00
Vishwas Saini
46830d2122
website: Website enhancement (#1203) 2024-02-09 09:55:27 +06:00
Kingkor Roy Tirtho
9b9822cc3c chore: add ios development team 2024-01-31 21:56:47 +06:00
Kingkor Roy Tirtho
5ad5d16683 chore: use query as key name for endless playback radio search 2024-01-31 18:07:40 +06:00
Kingkor Roy Tirtho
9dfd49ca04 feat: add endless playback support #285 2024-01-31 18:00:54 +06:00
Kingkor Roy Tirtho
4defeefe7e feat: start radio support 2024-01-31 16:33:50 +06:00
Kingkor Roy Tirtho
5d0b5e69a5 chore: adjust the version 2024-01-27 22:39:05 +06:00
Kingkor Roy Tirtho
2ef597aed1 Merge branch 'master' into dev 2024-01-27 22:31:00 +06:00
Kingkor Roy Tirtho
bcba45fbd1 chore: bump version and add changelogs 2024-01-27 22:27:27 +06:00
Kingkor Roy Tirtho
2168a640af feat: add create playlist button in add playlist dialog 2024-01-27 21:59:10 +06:00
Kingkor Roy Tirtho
8184555ee8 feat: improve youtube/piped matching by suffixing "- Topic" 2024-01-27 21:48:38 +06:00
Kingkor Roy Tirtho
5fa56387fd chore: move friends above new releases
Because friends matters more than Elton John's 69th album (joking)
2024-01-27 21:18:13 +06:00
Kingkor Roy Tirtho
62fde50442 fix: alternative source doesn't persist on next restart #840 2024-01-27 20:59:50 +06:00
Kingkor Roy Tirtho
14d8ea582c cd: add flutter_distributor for macos 2024-01-24 22:25:15 +06:00
Kingkor Roy Tirtho
6351306f87 cd: downgrade upload and download artifact to v3 for merging 2024-01-24 22:12:13 +06:00
Kingkor Roy Tirtho
1b5d435b86 cd: add macos pkg format 2024-01-24 12:46:27 +06:00
Kingkor Roy Tirtho
6242200905 feat: haptic feedback on long press and reordering actions 2024-01-24 12:29:35 +06:00
Kingkor Roy Tirtho
eb7477273f chore: fix wrong audio source result showing up in Alternative track sheet 2024-01-24 12:11:49 +06:00
Kingkor Roy Tirtho
b9417ca357 fix(macos): backbutton and window button overlap and unused empty space on home 2024-01-24 12:03:31 +06:00
Kingkor Roy Tirtho
a752cf4c97 fix: track index not showing after 200 2024-01-24 11:50:48 +06:00
Kingkor Roy Tirtho
9d74cf5fc2 fix(macos): download folder unchangeable 2024-01-24 11:45:26 +06:00
Kingkor Roy Tirtho
fd1899f162 fix: audio resumes after a phone call even if it was paused before #926 2024-01-24 10:47:02 +06:00
dependabot[bot]
9bd16e096f
chore(deps): bump go_router from 11.1.2 to 13.0.1 (#1020)
Bumps [go_router](https://github.com/flutter/packages/tree/main/packages) from 11.1.2 to 13.0.1.
- [Release notes](https://github.com/flutter/packages/releases)
- [Commits](https://github.com/flutter/packages/commits/go_router-v13.0.1/packages)

---
updated-dependencies:
- dependency-name: go_router
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Kingkor Roy Tirtho <krtirtho@gmail.com>
2024-01-24 10:18:10 +06:00
dependabot[bot]
0dea3249a5
chore(deps): bump actions/upload-artifact from 3 to 4 (#949)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3 to 4.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-24 10:08:03 +06:00
dependabot[bot]
2c88561b44
chore(deps): bump actions/download-artifact from 3 to 4 (#948)
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 3 to 4.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-24 10:07:48 +06:00
dependabot[bot]
1bdae90fb0
chore(deps): bump sidebarx from 0.15.0 to 0.16.3 (#896)
Bumps [sidebarx](https://github.com/Frezyx/sidebarx) from 0.15.0 to 0.16.3.
- [Release notes](https://github.com/Frezyx/sidebarx/releases)
- [Changelog](https://github.com/Frezyx/sidebarx/blob/main/CHANGELOG.md)
- [Commits](https://github.com/Frezyx/sidebarx/compare/0.15.0...0.16.3)

---
updated-dependencies:
- dependency-name: sidebarx
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Kingkor Roy Tirtho <krtirtho@gmail.com>
2024-01-24 10:07:24 +06:00
dependabot[bot]
a72bb0c73b
chore(deps): bump subosito/flutter-action from 2.10.0 to 2.12.0 (#855)
Bumps [subosito/flutter-action](https://github.com/subosito/flutter-action) from 2.10.0 to 2.12.0.
- [Release notes](https://github.com/subosito/flutter-action/releases)
- [Commits](https://github.com/subosito/flutter-action/compare/v2.10.0...v2.12.0)

---
updated-dependencies:
- dependency-name: subosito/flutter-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Kingkor Roy Tirtho <krtirtho@gmail.com>
2024-01-24 10:03:56 +06:00
dependabot[bot]
7b6042d01f
chore(deps): bump google_fonts from 5.1.0 to 6.1.0 (#798)
Bumps [google_fonts](https://github.com/material-foundation/flutter-packages/tree/main/packages) from 5.1.0 to 6.1.0.
- [Commits](https://github.com/material-foundation/flutter-packages/commits/HEAD/packages)

---
updated-dependencies:
- dependency-name: google_fonts
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Kingkor Roy Tirtho <krtirtho@gmail.com>
2024-01-24 10:02:25 +06:00
dependabot[bot]
ab09ae60f0
chore(deps): bump visibility_detector from 0.3.3 to 0.4.0+2 (#797)
Bumps [visibility_detector](https://github.com/google/flutter.widgets/tree/master/packages) from 0.3.3 to 0.4.0+2.
- [Commits](https://github.com/google/flutter.widgets/commits/HEAD/packages)

---
updated-dependencies:
- dependency-name: visibility_detector
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-24 10:00:35 +06:00
dependabot[bot]
9b289605c7
chore(deps): bump shared_preferences from 2.2.1 to 2.2.2 (#796)
Bumps [shared_preferences](https://github.com/flutter/packages/tree/main/packages/shared_preferences) from 2.2.1 to 2.2.2.
- [Release notes](https://github.com/flutter/packages/releases)
- [Commits](https://github.com/flutter/packages/commits/shared_preferences-v2.2.2/packages/shared_preferences)

---
updated-dependencies:
- dependency-name: shared_preferences
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-24 09:59:20 +06:00
Nabraj Khadka
c3ebf56ac1
feat(translations): add Nepali (नेपाली) translations (#1111)
* actions: Add Up for grab checkbox to issue templates. (#1074)

* docs: update copyright year in README.md (#1100)

year changed from 2023 to 2024

* feat(translations): add Nepali (नेपाली) translations

---------

Co-authored-by: Taha Ghadirian <taha@smilecode.ir>
Co-authored-by: Muhammad Jawad <70428284+m-Jawa-d@users.noreply.github.com>
2024-01-24 09:52:49 +06:00
Meenbeese
7c0689c056
docs: Reword and improve the support message (#1084) 2024-01-24 09:07:33 +06:00
Kingkor Roy Tirtho
a6cb78380d chore: show icon with error msg #1085 2024-01-24 00:22:14 +06:00
Kingkor Roy Tirtho
e58e18de33 fix: better error message for failing to find lyrics #1085 2024-01-23 23:13:38 +06:00
Kingkor Roy Tirtho
79839329b0
feat: add spotify friends activity (#1130)
* feat: add spotify friend endpoint

* feat: add friend activity in home screen

* fix: when no friends, dummy UI still shows giving the user a false hope of friendship :'(
2024-01-23 22:44:00 +06:00
Kingkor Roy Tirtho
682e88e0c5 fix: releases section is empty when user doesn't follow any artists #1104 2024-01-22 19:09:57 +06:00
Kingkor Roy Tirtho
a8e9b824f3 fix: alternative searched sources doesn't play #1059 2024-01-22 19:02:10 +06:00
Kingkor Roy Tirtho
59e0e6bb65 fix: track pad horizontal scrolling not working 2024-01-22 18:03:08 +06:00
Kingkor Roy Tirtho
8cd650b07e fix: artist page error #1018 2024-01-22 17:51:12 +06:00
Kingkor Roy Tirtho
27057ea0c8 fix(macos): system tray shows name and sidebar weird gap #1083 2024-01-22 17:20:30 +06:00
Muhammad Jawad
db0e4cada6
docs: update copyright year in README.md (#1100)
year changed from 2023 to 2024
2024-01-22 15:10:33 +06:00
Taha Ghadirian
72ed3ce2d1
actions: Add Up for grab checkbox to issue templates. (#1074) 2024-01-22 09:01:51 +06:00
MerkomassDev
3d344bdcdd
docs: Readme.md rephrasing (#914)
* Rephrased README.md

* Update README.md

Put extra emphasis on the fact that Shows and Podcasts can ONLY be accessed with spotify premium

* One line fix in README.md

last change was unnecessary :)
2024-01-11 10:07:36 +06:00
Kingkor Roy Tirtho
a76ee0acf2 chore: new liked tracks image 2024-01-08 22:57:03 +06:00
Kingkor Roy Tirtho
29f162c801 chore: remove the sp_key cookie requirement as no longer necessary 2024-01-05 21:25:23 +06:00
Kingkor Roy Tirtho
5509cae91c fix(android): download failing for permission issues #1015 2024-01-05 20:26:57 +06:00
Kingkor Roy Tirtho
c203ac69ee fix: search page vertical scrollbar moves on horizontal scroll #1017 2024-01-05 20:02:27 +06:00
Kingkor Roy Tirtho
988a975bf1 feat(deep-link): add track opening page 2024-01-05 14:14:15 +06:00
Kingkor Roy Tirtho
d1ed56926d chore: remove build-IPA.yml as no longer needed 2024-01-03 14:08:06 +06:00
Kingkor Roy Tirtho
26568d5203 Merge branch 'master' into dev 2024-01-03 14:06:39 +06:00
powen
b2ba6d9261
cd: build iPA support for iOS (#971)
* Create build-iPA.yml

* Update build-iPA.yml

* update-iOS

- Set AppIcon(same as Android)
- Set to correct app name(Sptube -> Spotube)
-

* update iOS flavors

* Update build-iPA.yml

* Update spotube-release-binary.yml

* rename release-bin iPA filename

* update appicon

* Update dev-Info.plist
2024-01-03 00:40:50 +06:00
Piotr Rogowski
69559ba242
fix(macos): Respect Minimize to tray option (#1001) 2024-01-02 22:41:03 +06:00
franchioping
ba4e11a40a
fix: songs doesn't play when sources with preferred audio codec is empty (#976)
* Fix song not playing when m4a or weba is not available (one is available but not the other) for that song

* Update lib/services/sourced_track/sources/youtube.dart

---------

Co-authored-by: Kingkor Roy Tirtho <krtirtho@gmail.com>
2024-01-02 22:37:51 +06:00
Piotr Rogowski
02e44fc6b8
fix: Black window flash when starting the app (#1003) 2024-01-02 22:21:12 +06:00
franchioping
7e1005dc62
docs: Update dev branch in CONTRIBUTION.md (#977)
change development branch from main to dev
2024-01-02 22:08:51 +06:00
Kingkor Roy Tirtho
0dfd401537 fix(linux): crash after login 2024-01-01 21:01:21 +06:00
Kingkor Roy Tirtho
ec7c952270 chore: generate changelogs and bump version to 3.4.4 2023-12-30 23:41:43 +06:00
Kingkor Roy Tirtho
ec9d9d7d7e chore: fix genre playlist title bar 2023-12-30 23:25:29 +06:00
Kingkor Roy Tirtho
0f6d0a44ea chore: fix not closing player 2023-12-30 23:13:27 +06:00
Kingkor Roy Tirtho
d645f607ac chore: platform check deep link for android 2023-12-30 20:18:35 +06:00
Kingkor Roy Tirtho
9877c6a3b0 chore: fix l10n error 2023-12-30 19:21:56 +06:00
Kingkor Roy Tirtho
faf13489a1 Merge branch 'dev' of github.com:KRTirtho/spotube into dev 2023-12-29 18:29:19 +06:00
Kingkor Roy Tirtho
b4999993bf fix: wrong artist name sent while scrobbling #958 2023-12-29 18:28:25 +06:00
SecularSteve
3ad7ba66b5
feat(translations): add Dutch Language (#969)
* Update language_codes.dart

Added Dutch

* Added Dutch language

* Added Dutch

my contribution credentials included

* Added Dutch Language

* fixed a mistake

"Vlaams" is a very specific term to describe the Belgian Dutch dialect. "Nederland" is the correct way.

* fixed a mistake

"Nederlands" actually, got mixed up a bit
2023-12-29 18:12:39 +06:00
Kingkor Roy Tirtho
dcbe7294b7 fix: wrong artist name sent while scrobbling #958 2023-12-27 21:57:18 +06:00
Kingkor Roy Tirtho
70d5c57334 Merge branch 'dev' of github.com:KRTirtho/spotube into dev 2023-12-27 19:28:20 +06:00
Kingkor Roy Tirtho
4050f55640
feat: Deep link support (#950)
* feat: add deep link support

* feat(android): add intent share support

* chore: untranslated msg for it locale
2023-12-18 22:12:16 +06:00
Kingkor Roy Tirtho
2fb16e64e9 fix: genre border issues 2023-12-12 21:27:14 +06:00
Kingkor Roy Tirtho
792f702f9e Merge branch 'dev' into feat/genre-view 2023-12-12 21:01:26 +06:00
Kingkor Roy Tirtho
05f9ae6a89 Merge branch 'master' into dev 2023-12-12 20:58:04 +06:00
Kingkor Roy Tirtho
2b0d17e9ca cd: fix json lint 2023-12-12 00:01:27 +06:00
Kingkor Roy Tirtho
69396e6465 cd: no fatal lint warnings 2023-12-11 23:59:25 +06:00
Kingkor Roy Tirtho
d4a2e5c327 cd: fix secrets not being generated for lint 2023-12-11 23:48:13 +06:00
Kingkor Roy Tirtho
11949b39ff cd: lint ignore warnings 2023-12-11 23:39:05 +06:00
Kingkor Roy Tirtho
e74d880bac cd: add pr-lint workflow 2023-12-11 23:34:28 +06:00
Kingkor Roy Tirtho
875aab1e2c Merge branch 'master' of github.com:KRTirtho/spotube 2023-12-11 20:36:11 +06:00
Kingkor Roy Tirtho
df350fdd54 chore: fix italian translation format error 2023-12-11 20:35:48 +06:00
Gorom
0def714af2
fix(android): wrong app name for the french version #830 (#944) 2023-12-11 20:33:21 +06:00
Kingkor Roy Tirtho
781dfdd7c9 cd: upgrade flutter version to 3.16.0 2023-12-10 16:51:38 +06:00
Kingkor Roy Tirtho
9ee60677f6 fix: add safe area in home 2023-12-08 23:31:20 +06:00
Kingkor Roy Tirtho
956f4b198b chore: fix translations issues 2023-12-08 22:37:56 +06:00
Kingkor Roy Tirtho
82ed5e9057 feat: compact genre view in home page 2023-12-08 22:18:18 +06:00
Kingkor Roy Tirtho
c592cff1ee chore: fix padding issues 2023-12-08 18:41:57 +06:00
Kingkor Roy Tirtho
b04d8849e7 fix: track view header title overflow and player view drag glitch 2023-12-08 14:46:27 +06:00
Kingkor Roy Tirtho
581b241f99 chore: add not found for empty lists 2023-12-08 13:58:12 +06:00
Kingkor Roy Tirtho
24a2294512 feat: toggle for discord rpc 2023-12-08 13:27:31 +06:00
Henrik Sozzi
e4eb0e2596
feat: add Italian language translations (#818)
* Italian language added

Created and added the Italian language

* Corrections and new textes

Corrected the wrong TAB in i10n.dart and added translations of new text items

* Fix

it const name was lowercase

* Merged suggestions from PR #676, added credits

Added suggestions as in comments of PR #676 and added credits to @ncvescera and @OpenCode
2023-12-08 11:23:53 +06:00
Alex Stan
66d492b4b3
Fix a typo in lib/pages/lyrics/synced_lyrics.dart (#933)
"Synced lyrics is not ..." -> "Synced lyrics are not ..."
2023-12-08 11:20:22 +06:00
Ashirbad Sahu
b59bea16f0
website: dynamic copyright year in footer (#923)
* Update copyright year in footer to 2023

* Update copyright year to be dynamic
2023-12-04 22:35:05 +06:00
Kingkor Roy Tirtho
b92583d0df feat: improve loading animations 2023-12-04 22:20:47 +06:00
Kingkor Roy Tirtho
2ceb6a8e53 cd: remove appimage 2023-12-03 23:00:25 +06:00
Kingkor Roy Tirtho
5b659ce8c9 cd: upgrade flutter_distributor 2023-12-02 23:27:33 +06:00
Kingkor Roy Tirtho
bb8f250f5f fix: doesn't minimize to tray when system title bar close button is used #866 2023-12-02 23:18:07 +06:00
Kingkor Roy Tirtho
5f1df5a87d fix: Playlist refresh not working #915 2023-12-02 22:49:29 +06:00
Kingkor Roy Tirtho
b0beeca0cb feat: Add Go to Album option in track option #917 2023-12-02 22:41:52 +06:00
Kingkor Roy Tirtho
f86d544916 fix: Incorrect "Artist" label/heading on Search Results Page #920 2023-12-02 22:20:22 +06:00
Kingkor Roy Tirtho
2a87a0fe28 chore: change API Type to Audio Source 2023-12-02 22:17:53 +06:00
Kingkor Roy Tirtho
840e014f2b fix: amoled mode and color scheme can't be changed 2023-12-02 22:05:35 +06:00
Kingkor Roy Tirtho
a7b9398708 fix: metadata not getting added for YouTube tracks #916 and Wrong duration of downloaded tracks #912 2023-12-02 21:57:05 +06:00
Kingkor Roy Tirtho
cdd9452996 chore: update CHANGELOG 2023-11-27 20:41:14 +06:00
Kingkor Roy Tirtho
96021e1a49 fix: "Add () to Playlist" option not showing in favorited playlists #904 2023-11-27 20:38:50 +06:00
Kingkor Roy Tirtho
96e0e8640d Merge branch 'dev' 2023-11-27 20:14:16 +06:00
Kingkor Roy Tirtho
cd31798870 chore: get ready for release 2023-11-27 20:10:56 +06:00
Kingkor Roy Tirtho
ee8229020b fix: settings page scrollbar position 2023-11-27 19:39:53 +06:00
Kingkor Roy Tirtho
722dd86810 chore: track view play not working properly 2023-11-27 19:34:18 +06:00
Kingkor Roy Tirtho
64080ef273 cd: fix flutter_distributor for windows not working (temporary) 2023-11-24 20:49:25 +06:00
Kingkor Roy Tirtho
82593f1d65 cd: increment flutter version 2023-11-22 21:54:56 +06:00
Kingkor Roy Tirtho
42dd4d68e7 chore: update deps 2023-11-22 21:09:29 +06:00
Kingkor Roy Tirtho
2a69886556 feat(artist): modularize page and add wikipedia section 2023-11-22 20:23:12 +06:00
Kingkor Roy Tirtho
4511a0bd00 chore: bring back edit user playlist button 2023-11-22 10:49:00 +06:00
Kingkor Roy Tirtho
7d05c40dc0 fix: use CustomScrollView for personalized page 2023-11-22 10:02:11 +06:00
Kingkor Roy Tirtho
88b8785cb8 feat: discord RPC integration #98 2023-11-22 09:32:05 +06:00
Kingkor Roy Tirtho
92deb0cc6a chore: fix playbutton not playing anything 2023-11-22 08:55:42 +06:00
Kingkor Roy Tirtho
98aff8f3b9 chore: fix jiosaavn exact match 2023-11-21 23:13:57 +06:00
Kingkor Roy Tirtho
dcbb156833 feat(mini_player): show/hide lyrics #851 2023-11-21 22:56:45 +06:00
Kingkor Roy Tirtho
7818574356 fix(windows): media control not working #641 2023-11-21 21:23:08 +06:00
Kingkor Roy Tirtho
75c0c4fff4 Merge branch 'master' into dev 2023-11-21 20:11:08 +06:00
Kingkor Roy Tirtho
03b5f08102 chore: remove supabase dep 2023-11-21 20:03:22 +06:00
Kingkor Roy Tirtho
ed63032a82
cd: fix distutils not found for macos 2023-11-17 22:41:40 +06:00
Kingkor Roy Tirtho
fc4a39e9f3 chore: fix safearea of flexible header 2023-11-17 13:44:00 +06:00
Kingkor Roy Tirtho
1b087c6eb3 chore: hide empty description 2023-11-17 13:23:31 +06:00
Kingkor Roy Tirtho
28a5d6bb38 feat: paginated playlist and album page 2023-11-17 13:14:25 +06:00
Kingkor Roy Tirtho
14069cd4fe
feat: Add JioSaavn as audio source (#881)
* feat: implement new SourcedTrack for youtube and piped

* refactor: replace old spotube track with sourced track

* feat: add jiosaavn as audio source

* fix: download not working other than jiosaavn

* Merge branch 'dev' into feat-jiosaavn
2023-11-15 18:34:46 +06:00
Kingkor Roy Tirtho
57c03ad045 refactor: use json serializer for preferences 2023-11-14 22:48:02 +06:00
Kingkor Roy Tirtho
dc980b024e fix(genres): lag while scrolling 2023-11-14 20:58:16 +06:00
Kingkor Roy Tirtho
0e07506716 refactor: organize hooks 2023-11-14 19:46:54 +06:00
Kingkor Roy Tirtho
fed36ecdd8 fix: Add to Playlist Dialog memory leak #817 2023-11-14 19:36:07 +06:00
Kingkor Roy Tirtho
7b72a90bc6 fix: alternative track source safearea overflow #876 2023-11-14 19:04:59 +06:00
Kingkor Roy Tirtho
2e2c44f0af feat(android): better quick scroll/drag to scroll implementation 2023-11-13 23:17:16 +06:00
Kingkor Roy Tirtho
0a6b54da36 fix: scrobbling not working for first track or single track 2023-11-13 21:46:33 +06:00
Kingkor Roy Tirtho
e29a38dfa4 fix: changed settings are not persisting after force stop #821 2023-11-13 20:59:54 +06:00
Kingkor Roy Tirtho
694ddf07a3 chore: revert 2023-11-12 19:04:20 +06:00
Kingkor Roy Tirtho
ee94b7cbb2 fix: new releases section flickering on scroll glitch 2023-11-12 19:03:27 +06:00
Kingkor Roy Tirtho
5928185599 fix: new releases section flickering on scroll glitch 2023-11-12 19:01:14 +06:00
Kingkor Roy Tirtho
0c22469503 feat(translations): add Turkish translations 2023-11-12 09:22:26 +06:00
Kingkor Roy Tirtho
a1cc44759b refactor: show queue from side in desktop 2023-11-08 18:51:19 +06:00
Kingkor Roy Tirtho
da04f068f9 fix: Navigating to settings, redirects to home page #812 2023-11-08 17:48:59 +06:00
Kingkor Roy Tirtho
6b8ae88db4 refactor: horizontal playbutton layout to use ListView and breakdown search page into sections 2023-11-08 17:07:20 +06:00
Kingkor Roy Tirtho
487c2ed6bd fix: user_playlists layout, track tile index, 2023-11-08 14:41:15 +06:00
Kingkor Roy Tirtho
5633367397 fix(album_card): show loading state during adding track to queue/play 2023-11-08 12:32:21 +06:00
Kingkor Roy Tirtho
1d77556157 fix: check for unsynced lyrics and error handling for timed lyrics query 2023-11-08 12:26:27 +06:00
Kingkor Roy Tirtho
574406dd5f fix(playbutton_card): annoying animation 2023-11-08 12:11:06 +06:00
Kingkor Roy Tirtho
ac0e2e74d8 refactor: extract settings section to separate files 2023-11-08 11:43:17 +06:00
Kingkor Roy Tirtho
1334a62aae fix: infinite list disappearing for a moment everytime new page is fetched 2023-10-29 21:38:48 +06:00
Kingkor Roy Tirtho
353ca79be3 fix: spotube doesn't exit properly, hangs in infinite loop #768 2023-10-29 20:59:56 +06:00
Kingkor Roy Tirtho
83c0b49da9 fix: 0:00 media duration in queue after application restart #782 2023-10-29 20:19:03 +06:00
Kingkor Roy Tirtho
4956bf367b fix: shuffle doesn't move active track to top 2023-10-29 19:54:58 +06:00
Kingkor Roy Tirtho
58e569864d fix: last track of queue keeps repeating #718 2023-10-29 19:51:53 +06:00
Kingkor Roy Tirtho
286ef83e8e fix: trim login field padding 2023-10-29 19:16:46 +06:00
Kingkor Roy Tirtho
d056dbf9ee fix: android invalid download location Download not starting or not explaining error #720 2023-10-29 19:02:39 +06:00
Amin
c7817909ce
Updated README.md file (#847) 2023-10-29 15:56:48 +06:00
Kingkor Roy Tirtho
433ae3d0c7 chore: generate library credits and finish all translations 2023-10-16 13:39:47 +06:00
Kingkor Roy Tirtho
65e9dba82f chore: bump version and generate CHANGELOG 2023-10-16 13:26:36 +06:00
Kingkor Roy Tirtho
bebc543e3c cd: throw error if upload files not found 2023-10-16 12:56:51 +06:00
Kingkor Roy Tirtho
2f77a61b18 cd: individually specify files to upload to avoid silent errors 2023-10-16 12:31:11 +06:00
Kingkor Roy Tirtho
49419350bb cd: use verbose 2023-10-16 11:59:57 +06:00
Kingkor Roy Tirtho
082cf5d81f cd: use windows 2019 2023-10-16 11:25:34 +06:00
Kingkor Roy Tirtho
aef81a6d83 cd: windows build silently failing 2023-10-16 10:42:44 +06:00
Kingkor Roy Tirtho
f3e331ecf7 fix: add xdg-user-dirs as deps 2023-10-16 10:07:40 +06:00
Kingkor Roy Tirtho
e29cc2578c fix: use audio_service_mpris plugin 2023-10-16 09:54:01 +06:00
Kingkor Roy Tirtho
ed6ca006ce fix: last track repeats 2023-10-15 12:09:14 +06:00
Kingkor Roy Tirtho
593bc2de90 chore: connectivity adapter use http as well 2023-10-15 11:11:20 +06:00
Kingkor Roy Tirtho
edb8928d53 chore: remove unused save lyrics toggle 2023-10-15 10:56:09 +06:00
Kingkor Roy Tirtho
8de2196b61 chore: add lastfm login field autofill support 2023-10-15 10:52:56 +06:00
Kingkor Roy Tirtho
34b80a36b4 chore: fix normalize audio unneeded subtitle 2023-10-15 10:38:09 +06:00
Kingkor Roy Tirtho
d39667bfb9 chore: use updated fl_query offline management 2023-10-14 17:28:22 +06:00
Kingkor Roy Tirtho
0eb9ee8648 feat: ability to select/copy lyrics #802 2023-10-14 12:33:43 +06:00
Kingkor Roy Tirtho
854ab8910d feat: manual offline detection 2023-10-14 12:31:10 +06:00
dependabot[bot]
d0df1d29f5
chore(deps): bump cached_network_image from 3.2.3 to 3.3.0 (#788)
Bumps [cached_network_image](https://github.com/Baseflow/flutter_cached_network_image) from 3.2.3 to 3.3.0.
- [Commits](https://github.com/Baseflow/flutter_cached_network_image/compare/v3.2.3...v3.3.0)

---
updated-dependencies:
- dependency-name: cached_network_image
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Kingkor Roy Tirtho <krtirtho@gmail.com>
2023-10-10 08:29:35 +06:00
dependabot[bot]
d1cd7e2be3
chore(deps): bump permission_handler from 10.4.5 to 11.0.1 (#789)
Bumps [permission_handler](https://github.com/baseflow/flutter-permission-handler) from 10.4.5 to 11.0.1.
- [Commits](https://github.com/baseflow/flutter-permission-handler/compare/permission_handler_v10.4.5...permission_handler_v11.0.1)

---
updated-dependencies:
- dependency-name: permission_handler
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-10 08:28:46 +06:00
dependabot[bot]
85ff15a041
chore(deps): bump flutter_native_splash from 2.3.2 to 2.3.3 (#790)
Bumps [flutter_native_splash](https://github.com/jonbhanson/flutter_native_splash) from 2.3.2 to 2.3.3.
- [Release notes](https://github.com/jonbhanson/flutter_native_splash/releases)
- [Changelog](https://github.com/jonbhanson/flutter_native_splash/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jonbhanson/flutter_native_splash/commits)

---
updated-dependencies:
- dependency-name: flutter_native_splash
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-10 08:28:32 +06:00
dependabot[bot]
7628cba990
chore(deps): bump catcher_2 from 1.0.0-alpha.1 to 1.0.0 (#791)
Bumps [catcher_2](https://github.com/ThexXTURBOXx/catcher_2) from 1.0.0-alpha.1 to 1.0.0.
- [Release notes](https://github.com/ThexXTURBOXx/catcher_2/releases)
- [Changelog](https://github.com/ThexXTURBOXx/catcher_2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ThexXTURBOXx/catcher_2/compare/1.0.0-alpha.1...1.0.0)

---
updated-dependencies:
- dependency-name: catcher_2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-10 08:28:20 +06:00
dependabot[bot]
3106bfdd7b
chore(deps): bump flutter_secure_storage from 8.1.0 to 9.0.0 (#792)
Bumps [flutter_secure_storage](https://github.com/mogol/flutter_secure_storage) from 8.1.0 to 9.0.0.
- [Release notes](https://github.com/mogol/flutter_secure_storage/releases)
- [Commits](https://github.com/mogol/flutter_secure_storage/compare/v8.1.0...v9.0.0)

---
updated-dependencies:
- dependency-name: flutter_secure_storage
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-10 08:27:46 +06:00
dependabot[bot]
6f0f63c286
chore(deps): bump go_router from 10.1.2 to 11.1.2 (#772)
Bumps [go_router](https://github.com/flutter/packages/tree/main/packages) from 10.1.2 to 11.1.2.
- [Release notes](https://github.com/flutter/packages/releases)
- [Commits](https://github.com/flutter/packages/commits/go_router-v11.1.2/packages)

---
updated-dependencies:
- dependency-name: go_router
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-07 18:05:17 +06:00
dependabot[bot]
25ffd41ab9
chore(deps): bump media_kit_libs_audio from 1.0.1 to 1.0.3 (#774)
Bumps [media_kit_libs_audio](https://github.com/media-kit/media-kit) from 1.0.1 to 1.0.3.
- [Release notes](https://github.com/media-kit/media-kit/releases)
- [Commits](https://github.com/media-kit/media-kit/compare/media_kit-v1.0.1...media_kit_libs_ios_video-v1.0.3)

---
updated-dependencies:
- dependency-name: media_kit_libs_audio
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-07 18:03:40 +06:00
dependabot[bot]
e2252a2840
chore(deps): bump fuzzywuzzy from 0.2.0 to 1.1.6 (#775)
Bumps [fuzzywuzzy](https://github.com/sphericalkat/dart-fuzzywuzzy) from 0.2.0 to 1.1.6.
- [Release notes](https://github.com/sphericalkat/dart-fuzzywuzzy/releases)
- [Changelog](https://github.com/SphericalKat/dart-fuzzywuzzy/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sphericalkat/dart-fuzzywuzzy/commits/v1.1.6)

---
updated-dependencies:
- dependency-name: fuzzywuzzy
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-07 18:03:31 +06:00
dependabot[bot]
b30494ea8d
chore(deps): bump flutter_riverpod from 2.4.0 to 2.4.3 (#785)
Bumps [flutter_riverpod](https://github.com/rrousselGit/riverpod) from 2.4.0 to 2.4.3.
- [Commits](https://github.com/rrousselGit/riverpod/compare/flutter_riverpod-v2.4.0...flutter_riverpod-v2.4.3)

---
updated-dependencies:
- dependency-name: flutter_riverpod
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-07 18:02:49 +06:00
dependabot[bot]
4c40d2d990
chore(deps): bump hooks_riverpod from 2.4.0 to 2.4.3 (#786)
Bumps [hooks_riverpod](https://github.com/rrousselGit/riverpod) from 2.4.0 to 2.4.3.
- [Commits](https://github.com/rrousselGit/riverpod/compare/hooks_riverpod-v2.4.0...hooks_riverpod-v2.4.3)

---
updated-dependencies:
- dependency-name: hooks_riverpod
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-07 18:02:39 +06:00
Kingkor Roy Tirtho
1f15b6720f chore: update fl_query & add support 2023-10-07 12:15:28 +06:00
Kingkor Roy Tirtho
b7521a9021 chore: fix player overlay bg blur 2023-10-01 13:32:11 +06:00
Kingkor Roy Tirtho
6299143e4c chore: fix player overlay bg blur 2023-10-01 13:27:15 +06:00
Kingkor Roy Tirtho
8ca1aa38a2 chore: include interscrollbar in left out pages 2023-10-01 13:24:36 +06:00
Kingkor Roy Tirtho
a3250882df chore: fix width of scrollbar & non-interactive scrollbar in android 2023-10-01 13:19:34 +06:00
Kingkor Roy Tirtho
5bb8231782 fix: get rid of overflow errors & status bar dark color 2023-10-01 11:39:33 +06:00
Kingkor Roy Tirtho
821b6c1f28 Merge branch 'dev' into pull-up-player 2023-10-01 10:12:23 +06:00
Kingkor Roy Tirtho
20d70927c9 fix(android): system navigator back doesn't close player 2023-10-01 10:08:24 +06:00
Kingkor Roy Tirtho
9aee0568bf
feat: swipe to open player view (#765)
* feat: sliding up player support

* fix: minor glitches
2023-09-30 22:03:34 +06:00
Kingkor Roy Tirtho
84a4bcd948
feat: thicken the scrollbars & make 'em interactive for mobile (#764) 2023-09-30 22:03:16 +06:00
Kingkor Roy Tirtho
e5d0aaf80d fix: minor glitches 2023-09-30 21:13:35 +06:00
Kingkor Roy Tirtho
083319fd24 feat: sliding up player support 2023-09-30 20:22:16 +06:00
Kingkor Roy Tirtho
b1d79428a3 chore: fix translations & normalize audio icon 2023-09-30 18:46:32 +06:00
Kingkor Roy Tirtho
931664e6b6 refactor: migrate to catcher to catcher_2 2023-09-30 18:33:04 +06:00
Kingkor Roy Tirtho
b2b5445799 chore: add new non-translated messages 2023-09-30 18:23:01 +06:00
meenbeese
c7432bbd98
feat: improve and unify the logging framework (#738)
* Improve logging framework for better debugging

Signed-off-by: meenbeese <meenbeese@tutanota.com>

* Remove logger statements from /bin dir

---------

Signed-off-by: meenbeese <meenbeese@tutanota.com>
2023-09-30 18:20:45 +06:00
Mohammad Hasan Keramat J
fe42cfe843
feat(translations): add Farsi Translations (#760)
Signed-off-by: Mohammad Hasan Keramat J <ikeramat@protonmail.com>
Co-authored-by: ali <alinasiri576@gmail.com>
2023-09-29 18:54:16 +06:00
Kingkor Roy Tirtho
f5bd90731d
feat: LastFM scrobbling support (#761)
* feat: add login with lastfm support

* feat: add lastfm scrobbling support

* fix: scrobblenaut local path
2023-09-29 18:45:00 +06:00
wescode
c09a572925
fix: not fetching all followed artists (#759)
Co-authored-by: me <whickle@gmail.com>
2023-09-29 18:44:26 +06:00
Kingkor Roy Tirtho
e54762be6a
feat: customizable stream/download file formats (#757)
* feat: add codec configuration in settings

* fix: show no value for codec configuration in smaller screen

* feat: implement configurable codec for download & streaming music
2023-09-28 17:02:41 +06:00
Kingkor Roy Tirtho
5a758d8671 chore: fix genres & personalized content not loading 2023-09-28 15:27:13 +06:00
Kingkor Roy Tirtho
94c386638f feat: add restore default settings button 2023-09-27 13:34:19 +06:00
Kingkor Roy Tirtho
101c32523d feat: show error dialog on failed to login 2023-09-27 13:16:35 +06:00
Kingkor Roy Tirtho
15d466a045 fix(android): audio doesn't resume on interruption end 2023-09-27 12:44:07 +06:00
Kingkor Roy Tirtho
2eb3754953 refactor: playlist editor dialog 2023-09-27 12:27:32 +06:00
Kingkor Roy Tirtho
460f3471b5 chore: fix route change error 2023-09-26 22:57:12 +06:00
Kingkor Roy Tirtho
d3b7a435f9 chore: remove openFile call 2023-09-26 22:35:25 +06:00
Kingkor Roy Tirtho
b3cf639ee2 fix(android ): file_selector getDirectoryPath returns unusable content urls #720 2023-09-26 22:34:21 +06:00
Kingkor Roy Tirtho
a7e102ffc7 fix: valid non-ASCII characters get removed from downloaded file name #745 2023-09-26 21:02:49 +06:00
Kingkor Roy Tirtho
ae2745fdb7 refactor: fix caching isn't working with spotify 0.12 2023-09-26 20:22:05 +06:00
Kingkor Roy Tirtho
afbb8ba5a7 refactor: make compatible with spotify lib 0.12 2023-09-26 19:49:59 +06:00
Kingkor Roy Tirtho
52768a7ec9 Merge branch 'master' into dev 2023-09-26 19:09:11 +06:00
Kingkor Roy Tirtho
9db88a5c09 chore: untranslated messges 2023-09-26 19:09:08 +06:00
Kingkor Roy Tirtho
2d93441188 fix: keyboard shortcuts changing route but not update sidebar 2023-09-26 18:47:37 +06:00
muhammadbahaa2001
38493f9dd7
feat(translations): add Arabic Translations (#740)
* Create app_ar.arb

* Update app_ar.arb

* Update app_ar.arb

* Update app_ar.arb

* Update app_ar.arb

* Update app_ar.arb

* Update app_ar.arb

* Update app_ar.arb

* Update app_ar.arb

* Update app_ar.arb

* Update app_ar.arb

* Update app_ar.arb

* Arabic Translate Added
2023-09-26 17:59:32 +06:00
dependabot[bot]
6dced5ece0
chore(deps): bump spotify from 0.11.0 to 0.12.0 (#733)
Bumps [spotify](https://github.com/rinukkusu/spotify-dart) from 0.11.0 to 0.12.0.
- [Release notes](https://github.com/rinukkusu/spotify-dart/releases)
- [Changelog](https://github.com/rinukkusu/spotify-dart/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rinukkusu/spotify-dart/commits)

---
updated-dependencies:
- dependency-name: spotify
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-26 17:58:17 +06:00
Thomas Duffin
6593b6919e
chore: add banner and capsule images for steam library (#660)
These images meet the desired quality and dimensions for Steam Grid DB's assets, allowing users to to add them to their steam library when launching Spotube from within the Steam interface (such as when using a Steamdeck).

I've already submitted to steam grid DB, but these assets may also come in handy in other places so thought it would make sense to offer them to the project :)
2023-09-26 17:57:39 +06:00
Yuri V
4368c4a866
feattranslations): add Ukrainian translation (#742)
* Ukrainian translation

* Added to list

* Fixed locale

* Fix quotes

* Update l10n.dart

fix UK -> UA
2023-09-21 14:49:23 +06:00
Joshua Samenfink
5115e041e7
fix: add libmpv1 for ubuntu-based systems (#739) 2023-09-20 21:01:56 +06:00
Kingkor Roy Tirtho
c325911c0d feat: configurable audio normalization switch 2023-09-17 00:39:00 +06:00
Kingkor Roy Tirtho
126d6017f2
chore(android): Add hot nightly flavor (#727)
* feat(android): add flavor support

* feat(android): add nightly icons & splash screens

* chore(vscode): group icon config yml with pubspec

* ci: update apk & appbundle path
2023-09-17 00:23:18 +06:00
Kingkor Roy Tirtho
da10ab2e29 feat: add audio normalization #164 2023-09-16 23:41:47 +06:00
Kingkor Roy Tirtho
ffe8d9ca6d feat: loading indicator for genre and personalized pages 2023-09-16 13:08:32 +06:00
Kingkor Roy Tirtho
5c5dbf69ec feat: add Amoled theme #724 2023-09-16 12:35:46 +06:00
Kingkor Roy Tirtho
532248b55d chore: bump version to 3.1.2 & generate CHANGELOG + generate credits 2023-09-15 22:48:40 +06:00
Kingkor Roy Tirtho
e56f29a510 chore: update the translations 2023-09-15 22:43:03 +06:00
Kingkor Roy Tirtho
c3e696b942 Merge branch 'master' into dev 2023-09-15 22:36:43 +06:00
Kingkor Roy Tirtho
7aff0d3f1e
cd: Armbuild Circleci project setup (#723)
* chore: fill missing translations

* chore: vscode filenesting

* docs: Add meenbeese  (#713)

* CircleCI Commit

* cd: updated circle ci build config

* cd: use custom flutter installation

* cd: use ubuntu 22.04

* cd: fix project var syntax

* cd: directly echo secrets to .env file

* cd: export bash env

* cd: they I'm stupid

* cd: ugghh breaking flutter changes on every major version

* cd: add other empty keys to .env

* cd: works!!!

* cd: store artifacts

* cd: add other package formats in circle ci build

* cd: add pub cache path

* cd: remove dart run from flutter_distributor

* cd: add appimage installer

* cd: sudo

* cd: appimagetool in path

* cd: use aarch64 binary of appimagetool

* cd: add rpmbuild deps

* cd: fix rpm arch

* cd: add github release upload capability

* cd: enable github creds context

* cd: remove token

* cd: remove parallelism

* cd: why typo??!

* cd: add github action to trigger Circle CI pipeline

* cd: trigger CCI using curl

* cd: remove quotes from bool field

* cd: ain't no

* cd: poor choice

---------

Co-authored-by: meenbeese <meenbeese@tutanota.com>
2023-09-15 22:35:09 +06:00
Kingkor Roy Tirtho
79a371f9b1 docs: update the getting-started guide 2023-09-14 22:30:59 +06:00
meenbeese
7d23e5c474
docs: Add meenbeese (#713) 2023-09-12 15:25:48 +06:00
Kingkor Roy Tirtho
de335f4834 fix: hour not showing for tracks longer than 60 minutes (#648) 2023-09-11 12:12:05 +06:00
Kingkor Roy Tirtho
d12ea48b97 feat: show loading indicator on play track 2023-09-11 11:05:42 +06:00
Kingkor Roy Tirtho
1540999f50 feat: right click to open track option 2023-09-10 22:50:44 +06:00
Kingkor Roy Tirtho
d4f99ec899 feat(player_queue): filtering track support 2023-09-10 22:28:38 +06:00
Kingkor Roy Tirtho
1c50612559 fix: limit cover image upload to allowed 256kb size 2023-09-10 21:39:16 +06:00
Kingkor Roy Tirtho
b9d5c70301 feat: search loading animation 2023-09-10 18:19:47 +06:00
Kingkor Roy Tirtho
ab0fe5bdfa
Playlist info editing (#708)
* feat: playlist metadata edit support

* refactor: replace file_picker with file_selector
2023-09-10 16:39:21 +06:00
Victor Tinoco
0df8d9cace
fix: playlist grey page (#707)
* chore: fill missing translations

* chore: vscode filenesting

* fix playlist grey page

---------

Co-authored-by: Kingkor Roy Tirtho <krtirtho@gmail.com>
2023-09-10 16:39:05 +06:00
Kingkor Roy Tirtho
e3217436c9 fix: rewind breaks track progress bar (#695) 2023-09-10 11:47:03 +06:00
Kingkor Roy Tirtho
d3e1cef8a2 fix: liked tracks card play not working 2023-09-09 17:37:24 +06:00
Kingkor Roy Tirtho
142dc498f8
fix: Windows memory leak due refetchOnStale user-liked-tracks (#705)
* chore: refactor CLI stuff to separate service folder

* chore: trying to fix memory leak

* chore: fix fl_Query_devtools in wrong place

* chore: upgrade deps

* fix: user liked tracks memory leak due to isStale & updateQueryFn
2023-09-08 12:30:52 +06:00
Joshua Samenfink
c987ea7841
fix: add missing dependency in debian package (#704)
* chore: fill missing translations

* chore: vscode filenesting

* fix: add missing dependency in debian package

* fixes https://github.com/KRTirtho/spotube/issues/703

---------

Co-authored-by: Kingkor Roy Tirtho <krtirtho@gmail.com>
2023-09-08 09:52:59 +06:00
dependabot[bot]
a5de69c65a
chore(deps): bump actions/checkout from 3 to 4 (#699)
Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-05 19:26:40 +06:00
Kingkor Roy Tirtho
3426100baf chore: vscode filenesting 2023-09-01 10:10:08 +06:00
Kingkor Roy Tirtho
187bdaf75c
chore: trying to fix windows memory leak 2023-08-31 21:27:07 +06:00
Kingkor Roy Tirtho
1248c38f3d chore: fill missing translations 2023-08-28 12:29:36 +06:00
Kingkor Roy Tirtho
931d5242a1 docs: clearer summary 2023-08-28 12:21:09 +06:00
Kingkor Roy Tirtho
bee504facd chore: bump version, generate changelogs & library credits 2023-08-28 12:16:43 +06:00
Kingkor Roy Tirtho
0ef134f20d chore: safe url file name 2023-08-28 10:40:45 +06:00
Kingkor Roy Tirtho
6d9ae8ed60 chore: upgrade media_kit 2023-08-27 22:53:43 +06:00
Kingkor Roy Tirtho
3c2cea1201 Merge branch 'master' into dev 2023-08-27 00:16:31 +06:00
firapinch
e9a0911bfc
feat(translations): add Russian translation (#661)
* Readability changes in README.md (#625)

* Made README.md introduction more readable

* Underlined important reminder in README.md

even though the reminder is bold, it's not visible enough

* small typo fix README.md

removed an unnecesary comma

* Russian translation added

---------

Co-authored-by: MerkomassDev <merkomass@gmail.com>
Co-authored-by: Kingkor Roy Tirtho <krtirtho@gmail.com>
2023-08-27 00:14:53 +06:00
MerkomassDev
4476eefd47
Readability changes in README.md (#625)
* Made README.md introduction more readable

* Underlined important reminder in README.md

even though the reminder is bold, it's not visible enough

* small typo fix README.md

removed an unnecesary comma
2023-08-26 14:37:35 +03:00
Kingkor Roy Tirtho
179d536ccc fix: lyrics page text contrast 2023-08-26 15:28:58 +06:00
Kingkor Roy Tirtho
8d4602962b feat: ability to toggle system title bar & custom title bar (#185) 2023-08-26 13:52:59 +06:00
Kingkor Roy Tirtho
a14fb9ec38 feat: jump to specific time on lyric click (#590) 2023-08-26 12:38:29 +06:00
Kingkor Roy Tirtho
48e90a4229 fix: sorting by date crashes app (#551) 2023-08-26 12:20:14 +06:00
Kingkor Roy Tirtho
fb360035ad fix: window size remains same after exiting mini player (#618) 2023-08-26 11:02:44 +06:00
Kingkor Roy Tirtho
2a80761001 chore: untranslated message 2023-08-26 10:52:58 +06:00
Kingkor Roy Tirtho
dbf6748ddc Merge branch 'master' into dev 2023-08-26 10:52:37 +06:00
Kingkor Roy Tirtho
f23e8719ee fix: replace connectivity_plus with internet_connection_checker 2023-08-26 10:52:19 +06:00
Kingkor Roy Tirtho
53785713c1 docs: add submit translations guide 2023-08-26 09:56:34 +06:00
Kingkor Roy Tirtho
633415dd3e fix: debian bookworm dependencies 2023-08-26 09:37:45 +06:00
Kingkor Roy Tirtho
1a7ea0ce6a fix: sanitize song title for file name (#644) 2023-08-26 00:40:50 +06:00
Kingkor Roy Tirtho
08b627e86a chore: bump media_kit android audio version 2023-08-26 00:11:21 +06:00
Kingkor Roy Tirtho
e90eceb285 fix: infinite route push glitch 2023-08-26 00:06:41 +06:00
Kingkor Roy Tirtho
c3c09f5b76 fix: last track of queue never plays & repeat playlist never works 2023-08-25 22:52:43 +06:00
Kingkor Roy Tirtho
190df17adc fix: jump to track going to wrong track 2023-08-25 20:03:49 +06:00
Kingkor Roy Tirtho
d239d641ff feat: paginated user albums 2023-08-25 18:54:54 +06:00
Kingkor Roy Tirtho
6ced0a0fad fix: always fetching SponsorBlock if no segments found & download failing 2023-08-25 18:05:18 +06:00
Kingkor Roy Tirtho
33c7b64f06 Merge branch 'master' into dev 2023-08-25 10:01:49 +06:00
Lobo
76f30a0f20
feat(translations): added Portuguese (Brazil) translation (#634)
* chore: update library credits

* chore: increase score when title matchs

* chore: adjust score for both official flag & track name in title

* chore: use scoring for non-english tracks only

* added Portuguese (Brazil) translation

---------

Co-authored-by: Kingkor Roy Tirtho <krtirtho@gmail.com>
2023-08-23 21:52:34 +06:00
Kingkor Roy Tirtho
806b22ec85 website: upgrade to next 13 2023-08-23 11:13:46 +06:00
Kingkor Roy Tirtho
067629e38c chore: update website lockfile version 2023-08-23 10:22:12 +06:00
Yaroslav Dmitriev
af51baa2d2
website: Enhance mobile responsiveness (#647)
* feat: Enhance mobile responsiveness

Adjusted the code to improve the display and functionality on mobile devices. This includes responsive design updates and layout adjustments to ensure a better user experience on smaller screens.

* Delete package-lock.json
2023-08-23 10:08:36 +06:00
Kingkor Roy Tirtho
0ab1dcaa6b chore: increase build no 2023-08-19 10:49:56 +06:00
Kingkor Roy Tirtho
b50cc1a72c cd: only disable android auto for PlayStore 2023-08-19 10:48:46 +06:00
Kingkor Roy Tirtho
0f0d240c04
fix: disable android auto for playstore version :"(
Playstore doesn't support android auto without any UI
2023-08-19 00:34:11 +06:00
Kingkor Roy Tirtho
93f0db0196 chore: use scoring for non-english tracks only 2023-08-18 15:11:04 +06:00
Kingkor Roy Tirtho
a05ddaeda1 chore: adjust score for both official flag & track name in title 2023-08-18 14:43:46 +06:00
Kingkor Roy Tirtho
3642666e23 chore: increase score when title matchs 2023-08-18 14:38:53 +06:00
Kingkor Roy Tirtho
57db11f10f chore: update library credits 2023-08-18 14:32:06 +06:00
Kingkor Roy Tirtho
036a24884c chore: bump version 2023-08-18 14:24:58 +06:00
Kingkor Roy Tirtho
904a0d3e15 feat: better track matching on youtube API 2023-08-18 14:06:03 +06:00
Kingkor Roy Tirtho
02fa54ae89 Merge branch 'master' into dev 2023-08-18 13:30:50 +06:00
Kingkor Roy Tirtho
5a8a1e41e9 fix: default to youtube API by default 2023-08-18 13:30:12 +06:00
Rafał
f90e9bee31
feat(translations): add polish translation (#631)
* cd: add potential duplicate issue detect workflow

* Polish trasnlation
May be not 100% accurate

* translate addicional records from dev branch

* reviewed changes and my review also ;)
thanks for fast review :)

* changes after first build

* fix after second build

* Update lib/l10n/app_pl.arb

Thanks for review

Co-authored-by: Piotr Rogowski <piotr.rogowski0@gmail.com>

* Update lib/l10n/app_pl.arb

Thanks for review

Co-authored-by: Piotr Rogowski <piotr.rogowski0@gmail.com>

* Update lib/l10n/app_pl.arb

Thanks for review

Co-authored-by: Piotr Rogowski <piotr.rogowski0@gmail.com>

* Update lib/l10n/app_pl.arb

Thanks for review

Co-authored-by: Piotr Rogowski <piotr.rogowski0@gmail.com>

* Update lib/l10n/app_pl.arb

Thanks for review

Co-authored-by: Piotr Rogowski <piotr.rogowski0@gmail.com>

* Update lib/l10n/app_pl.arb

Thanks for review

Co-authored-by: Piotr Rogowski <piotr.rogowski0@gmail.com>

* Update lib/l10n/app_pl.arb

Thanks for review

Co-authored-by: Piotr Rogowski <piotr.rogowski0@gmail.com>

---------

Co-authored-by: Kingkor Roy Tirtho <krtirtho@gmail.com>
Co-authored-by: Piotr Rogowski <piotr.rogowski0@gmail.com>
2023-08-18 13:26:15 +06:00
Kingkor Roy Tirtho
8521cc5c88 fix: always showing play in playlist/album views 2023-08-15 21:57:26 +06:00
Kingkor Roy Tirtho
4adf6951d9 fix: generate playlist page max width 2023-08-15 13:13:07 +06:00
Kingkor Roy Tirtho
c69f81ec6f feat: show error dialog on piped API 500 error 2023-08-15 13:00:38 +06:00
sf0nt
c94e5ba430
feat(translation): add catalan translations (#621)
* cd: add potential duplicate issue detect workflow

* translate to catalan

* Update Catalan language country

---------

Co-authored-by: Kingkor Roy Tirtho <krtirtho@gmail.com>
2023-08-15 12:02:37 +06:00
Kingkor Roy Tirtho
d6127cf797 chore: upgrade dependencies 2023-08-15 11:54:06 +06:00
Kingkor Roy Tirtho
0f5748a24b feat: add android auto media session control support 2023-08-13 22:04:04 +06:00
Kingkor Roy Tirtho
aa4ac8641a fix: tracks doesn't change when ended 2023-08-08 12:18:11 +06:00
Kingkor Roy Tirtho
e3f4344ae9 fix(android): android 13 local tracks not showing up 2023-08-08 10:39:15 +06:00
Kingkor Roy Tirtho
d5fa9dc5dc cd: add potential duplicate issue detect workflow 2023-08-07 22:37:06 +06:00
Kingkor Roy Tirtho
e7c6813ccb feat: paginated user playlists 2023-08-07 17:34:56 +06:00
Kingkor Roy Tirtho
38dc4beb44
feat: blazingly™ fast download manager (#619)
* feat: concurrent download service & download prorvider

* feat: implement chunked downloader

* fix: no audio-tags in Linux and duration not showing up for local tracks

* feat: show matching tracks in queue as well

* feat: always uses piped api for download to avoid IP block

* fix: invalid downloadCount
2023-08-07 16:49:11 +06:00
Kingkor Roy Tirtho
ae5edd17ef fix: windows media controls not working 2023-08-07 15:28:14 +06:00
Kingkor Roy Tirtho
cf7b849cdd feat: web compatibility 2023-08-05 10:49:53 +06:00
1112 changed files with 162289 additions and 29379 deletions

6
.dockerignore Normal file
View File

@ -0,0 +1,6 @@
build
dist
.dart_tool
.idea
.github
.git

View File

@ -1,11 +1,12 @@
SUPABASE_URL=
SUPABASE_API_KEY=
# The format:
# SPOTIFY_SECRETS=clintId1:clientSecret1,clientId2:clientSecret2
SPOTIFY_SECRETS=
# 0 or 1
# 0 = disable
# 1 = enable
ENABLE_UPDATE_CHECK=
ENABLE_UPDATE_CHECK=$ENABLE_UPDATE_CHECK
LASTFM_API_KEY=$LASTFM_API_KEY
LASTFM_API_SECRET=$LASTFM_API_SECRET
# Release channel. Can be: nightly, stable
RELEASE_CHANNEL=$RELEASE_CHANNEL
HIDE_DONATIONS=$HIDE_DONATIONS

View File

@ -1,4 +1,3 @@
{
"flutterSdkVersion": "3.10.0",
"flavors": {}
"flutterSdkVersion": "3.35.2"
}

4
.fvmrc Normal file
View File

@ -0,0 +1,4 @@
{
"flutter": "3.35.2",
"flavors": {}
}

25
.github/Dockerfile vendored Normal file
View File

@ -0,0 +1,25 @@
ARG FLUTTER_VERSION
FROM --platform=linux/arm64 krtirtho/flutter_distributor:${FLUTTER_VERSION}
ARG BUILD_VERSION
WORKDIR /app
COPY . .
RUN chown -R $(whoami) /app
RUN rustup target add aarch64-unknown-linux-gnu
RUN flutter pub get
RUN alias dpkg-deb="dpkg-deb --Zxz" &&\
flutter_distributor package --platform=linux --targets=deb --skip-clean
RUN make tar VERSION=${BUILD_VERSION} ARCH=arm64 PKG_ARCH=aarch64
RUN mv build/spotube-linux-*-aarch64.tar.xz dist/ &&\
mv dist/**/spotube-*-linux.deb dist/Spotube-linux-aarch64.deb
CMD [ "sleep", "5000000" ]

View File

@ -7,8 +7,13 @@ labels:
body:
- type: checkboxes
attributes:
label: Is there an existing issue for this?
description: Make sure to check if this issue is a duplicate.
label: Is there an existing issue for this? (Please read the description)
description: |
🚨 PLEASE! Make sure to check if this issue is a duplicate. 🚨
Don't waste our time, we are working hard to make Spotube better for you.
Try with multiple similar keywords, and check the closed issues too.
options:
- label: I have searched the existing issues
required: true
@ -16,29 +21,47 @@ body:
attributes:
label: Current Behavior
description: Write what you are experiencing currently.
placeholder: |
The app isn't working as expected. It crashes when I do this...
validations:
required: true
- type: textarea
attributes:
label: Expected Behavior
description: Write what you expected to happen.
placeholder: |
The app should do this when I do that...
validations:
required: true
- type: textarea
attributes:
label: Steps to reproduce
description: Steps to reproduce the issue. A not well written description might delay the resolve of it.
description: Steps to reproduce the issue. A not well written description might lead to the delay in fixing the issue.
placeholder: |
1. I opened the app
2. I did this
3. And that
4. Then this happened
- type: textarea
attributes:
label: Logs
description: |
If you have any logs, paste them here. Make sure to remove any sensitive information.
You can find the logs in the app's Settings > Developers > Logs page.
value: |
<details>
<summary>Logs</summary>
```
<Replace this line by pasting your logs here>
```
</details>
validations:
required: true
- type: input
attributes:
label: Operating System
description: The OS in which you used Spotube to face the issue.
description: The OS in which you used Spotube to face the issue. Use comma to separate multiple OS.
placeholder: Android, Linux, macOS or Windows? Make sure to include the version too.
validations:
required: true
@ -53,7 +76,7 @@ body:
description: Where did you install Spotube from?
multiple: true
options:
- "Website (spotube.netlify.app) or (spotube.krtirtho.dev)"
- "Website (spotube.krtirtho.dev)"
- "GitHub Releases (Binary)"
- "GitHub Actions (Nightly Binary)"
- "Play Store (Android)"
@ -71,3 +94,13 @@ body:
description: Anything else you'd like to include?
validations:
required: false
- type: checkboxes
attributes:
label: Self grab
description: |
If you are a developer and want to work on this issue yourself, you can check this box and wait for maintainer response. Any contributions are welcome!
This project is maintained by one person. So PRs are always welcome. This is the best way to get your issue fixed faster.
options:
- label: I'm ready to work on this issue!
required: false

View File

@ -36,3 +36,10 @@ body:
description: Anything else you'd like to include?
validations:
required: false
- type: checkboxes
attributes:
label: Self grab
description: If you are a developer and want to work on this issue yourself, you can check this box and wait for maintainer response. We welcome contributions!
options:
- label: I'm ready to work on this issue!
required: false

View File

@ -0,0 +1,33 @@
name: Detect Potential Duplicates Issues
on:
issues:
types:
- opened
- edited
jobs:
run:
runs-on: ubuntu-latest
steps:
- uses: wow-actions/potential-duplicates@v1
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# Issue title filter work with anymatch https://www.npmjs.com/package/anymatch.
# Any matched issue will stop detection immediately.
# You can specify multi filters in each line.
filter: ''
# Exclude keywords in title before detecting.
exclude: ''
# Label to set, when potential duplicates are detected.
label: potential-duplicate
# Get issues with state to compare. Supported state: 'all', 'closed', 'open'.
state: all
# If similarity is higher than this threshold([0,1]), issue will be marked as duplicate.
threshold: 0.6
# Reactions to be add to comment when potential duplicates are detected.
# Available reactions: "-1", "+1", "confused", "laugh", "heart", "hooray", "rocket", "eyes"
reactions: eyes
# Comment to post when potential duplicates are detected.
comment: >
Potential duplicates: {{#issues}}
- [#{{ number }}] {{ title }} ({{ accuracy }}%)
{{/issues}}

37
.github/workflows/pr-lint.yml vendored Normal file
View File

@ -0,0 +1,37 @@
name: Lint
on:
pull_request:
env:
FLUTTER_VERSION: 3.35.2
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
- uses: subosito/flutter-action@v2
with:
flutter-version: ${{ env.FLUTTER_VERSION }}
- name: Dummy Envs
run: |
envsubst < .env.example > .env
env:
ENABLE_UPDATE_CHECK: true
LASTFM_API_KEY: xxx
LASTFM_API_SECRET: xxx
RELEASE_CHANNEL: nightly
HIDE_DONATIONS: 0
- name: Configure repo
run: |
flutter pub get
dart run build_runner build --delete-conflicting-outputs
- name: Lint Dart files
run: |
dart analyze --no-fatal-warnings

View File

@ -4,7 +4,7 @@ on:
inputs:
version:
description: Version to publish (x.x.x)
default: 3.0.0
default: 4.0.0
required: true
dry_run:
description: Dry run
@ -12,22 +12,22 @@ on:
type: boolean
default: true
jobs:
description: Jobs to run (flathub,aur,winget,chocolatey)
description: Jobs to run (flathub,aur,winget,chocolatey,playstore)
required: true
type: string
default: "flathub,aur,winget,chocolatey"
default: "flathub,aur,winget,chocolatey,playstore"
jobs:
flathub:
runs-on: ubuntu-22.04
if: contains(inputs.jobs, 'flathub')
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
repository: KRTirtho/com.github.KRTirtho.Spotube
token: ${{ secrets.FLATHUB_TOKEN }}
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
path: spotube
@ -50,7 +50,7 @@ jobs:
runs-on: ubuntu-22.04
if: contains(inputs.jobs, 'aur')
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- uses: dsaltares/fetch-gh-release-asset@master
with:
@ -66,7 +66,7 @@ jobs:
- name: Release to AUR
if: ${{ !inputs.dry_run }}
uses: KSXGitHub/github-actions-deploy-aur@v2.7.0
uses: KSXGitHub/github-actions-deploy-aur@v2.7.2
with:
pkgname: spotube-bin
pkgbuild: aur-struct/PKGBUILD
@ -76,12 +76,12 @@ jobs:
commit_message: Updated to v${{ inputs.version }}
winget:
runs-on: windows-latest
runs-on: ubuntu-latest
if: contains(inputs.jobs, 'winget')
steps:
- name: Release winget package
if: ${{ !inputs.dry_run }}
uses: vedantmgoyal2009/winget-releaser@v2
uses: vedantmgoyal9/winget-releaser@main
with:
version: ${{ inputs.version }}
release-tag: v${{ inputs.version }}
@ -104,3 +104,34 @@ jobs:
- name: Publish to Chocolatey Repository
if: ${{ !inputs.dry_run }}
run: choco push Spotube-windows-x86_64.nupkg --source https://push.chocolatey.org/
playstore:
runs-on: ubuntu-latest
if: contains(inputs.jobs, 'playstore')
steps:
- name: Tagname (workflow dispatch)
run: echo 'TAG_NAME=${{inputs.version}}' >> $GITHUB_ENV
- uses: robinraju/release-downloader@main
with:
repository: KRTirtho/spotube
tag: v${{ env.TAG_NAME }}
tarBall: false
zipBall: false
out-file-path: dist
fileName: "Spotube-playstore-all-arch.aab"
- name: Create service-account.json
run: |
echo "${{ secrets.GOOGLE_PLAY_SERVICE_ACCOUNT_BASE64 }}" | base64 -d > service-account.json
- name: Upload Android Release to Play Store
if: ${{!inputs.dry_run}}
uses: r0adkll/upload-google-play@v1
with:
serviceAccountJson: ./service-account.json
releaseFiles: ./dist/Spotube-playstore-all-arch.aab
packageName: oss.krtirtho.spotube
track: production
status: draft
releaseName: ${{ env.TAG_NAME }}

View File

@ -2,250 +2,123 @@ name: Spotube Release Binary
on:
workflow_dispatch:
inputs:
version:
description: Version to release (x.x.x)
default: 3.0.0
required: true
channel:
type: choice
description: Release Channel
required: true
options:
- stable
- nightly
default: nightly
description: The release channel
debug:
description: Debug on failed when channel is nightly
required: true
type: boolean
default: false
description: Debug with SSH toggle
required: false
dry_run:
description: Dry run
required: true
type: boolean
default: true
default: false
description: Dry run without uploading to release
env:
FLUTTER_VERSION: '3.10.0'
FLUTTER_VERSION: 3.35.2
FLUTTER_CHANNEL: master
permissions:
contents: write
jobs:
windows:
runs-on: windows-latest
build_platform:
strategy:
matrix:
include:
- os: ubuntu-22.04
platform: linux
arch: x86
files: |
dist/Spotube-linux-x86_64.deb
dist/Spotube-linux-x86_64.rpm
dist/spotube-linux-*-x86_64.tar.xz
- os: ubuntu-22.04-arm
platform: linux
arch: arm64
files: |
dist/Spotube-linux-aarch64.deb
dist/spotube-linux-*-aarch64.tar.xz
- os: ubuntu-22.04
platform: android
arch: all
files: |
build/Spotube-android-all-arch.apk
build/Spotube-playstore-all-arch.aab
- os: windows-latest
platform: windows
arch: x86
files: |
dist/Spotube-windows-x86_64.nupkg
dist/Spotube-windows-x86_64-setup.exe
- os: macos-14
platform: ios
arch: all
files: |
Spotube-iOS.ipa
- os: macos-14
platform: macos
arch: all
files: |
build/Spotube-macos-universal.dmg
build/Spotube-macos-universal.pkg
runs-on: ${{matrix.os}}
steps:
- uses: actions/checkout@v3
- uses: subosito/flutter-action@v2.10.0
- uses: actions/checkout@v4
- uses: subosito/flutter-action@v2.18.0
with:
cache: true
flutter-version: ${{ env.FLUTTER_VERSION }}
- name: Replace pubspec version and BUILD_VERSION Env (nightly)
if: ${{ inputs.channel == 'nightly' }}
run: |
choco install sed make yq -y
yq -i '.version |= sub("\+\d+", "+${{ inputs.channel }}.")' pubspec.yaml
yq -i '.version += strenv(GITHUB_RUN_NUMBER)' pubspec.yaml
"BUILD_VERSION=${{ inputs.version }}+${{ inputs.channel }}.${{ github.run_number }}" >> $env:GITHUB_ENV
- name: BUILD_VERSION Env (stable)
if: ${{ inputs.channel == 'stable' }}
run: |
"BUILD_VERSION=${{ inputs.version }}" >> $env:GITHUB_ENV
- name: Replace version in files
run: |
choco install sed make -y
sed -i "s/%{{SPOTUBE_VERSION}}%/${{ env.BUILD_VERSION }}/" windows/runner/Runner.rc
sed -i "s/%{{SPOTUBE_VERSION}}%/${{ env.BUILD_VERSION }}/" choco-struct/tools/VERIFICATION.txt
sed -i "s/%{{SPOTUBE_VERSION}}%/${{ env.BUILD_VERSION }}/" choco-struct/spotube.nuspec
- name: Create Stable .env
if: ${{ inputs.channel == 'stable' }}
run: echo '${{ secrets.DOTENV_RELEASE }}' > .env
- name: Create Nightly .env
if: ${{ inputs.channel == 'nightly' }}
run: echo '${{ secrets.DOTENV_NIGHTLY }}' > .env
- name: Generating Secrets
run: |
flutter config --enable-windows-desktop
flutter pub get
dart run build_runner build --delete-conflicting-outputs --enable-experiment=records,patterns
- name: Build Windows Executable
run: |
dart pub global activate flutter_distributor
make innoinstall
flutter_distributor package --platform=windows --targets=exe --skip-clean
mv dist/**/spotube-*-windows-setup.exe dist/Spotube-windows-x86_64-setup.exe
- name: Create Chocolatey Package and set hash
if: ${{ inputs.channel == 'stable' }}
run: |
Set-Variable -Name HASH -Value (Get-FileHash dist\Spotube-windows-x86_64-setup.exe).Hash
sed -i "s/%{{WIN_SHA256}}%/$HASH/" choco-struct/tools/VERIFICATION.txt
make choco
mv dist/spotube.*.nupkg dist/Spotube-windows-x86_64.nupkg
- name: Debug With SSH When fails
if: ${{ failure() && inputs.debug && inputs.channel == 'nightly' }}
uses: mxschmitt/action-tmate@v3
with:
limit-access-to-actor: true
- name: Upload Artifact
uses: actions/upload-artifact@v3
with:
name: Spotube-Release-Binaries
path: dist/
linux:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: subosito/flutter-action@v2.10.0
with:
channel: ${{ env.FLUTTER_CHANNEL }}
cache: true
flutter-version: ${{ env.FLUTTER_VERSION }}
git-source: https://github.com/flutter/flutter.git
- name: Get current date
id: date
run: echo "::set-output name=date::$(date +'%Y-%m-%d')"
- name: Install Dependencies
run: |
sudo apt-get update -y
sudo apt-get install -y tar clang cmake ninja-build pkg-config libgtk-3-dev make python3-pip python3-setuptools desktop-file-utils libgdk-pixbuf2.0-dev fakeroot strace fuse libunwind-dev locate patchelf gir1.2-appindicator3-0.1 libappindicator3-1 libappindicator3-dev libsecret-1-0 libjsoncpp25 libsecret-1-dev libjsoncpp-dev libnotify-bin libnotify-dev mpv libmpv-dev
- name: Install AppImage Tool
run: |
wget -O appimagetool "https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage"
chmod +x appimagetool
mv appimagetool /usr/local/bin/
- name: Replace pubspec version and BUILD_VERSION Env (nightly)
if: ${{ inputs.channel == 'nightly' }}
run: |
curl -sS https://webi.sh/yq | sh
yq -i '.version |= sub("\+\d+", "+${{ inputs.channel }}.")' pubspec.yaml
yq -i '.version += strenv(GITHUB_RUN_NUMBER)' pubspec.yaml
echo "BUILD_VERSION=${{ inputs.version }}+${{ inputs.channel }}.${{ github.run_number }}" >> $GITHUB_ENV
- name: BUILD_VERSION Env (stable)
if: ${{ inputs.channel == 'stable' }}
run: |
echo "BUILD_VERSION=${{ inputs.version }}" >> $GITHUB_ENV
- name: Create Stable .env
if: ${{ inputs.channel == 'stable' }}
run: echo '${{ secrets.DOTENV_RELEASE }}' > .env
- name: Create Nightly .env
if: ${{ inputs.channel == 'nightly' }}
run: echo '${{ secrets.DOTENV_NIGHTLY }}' > .env
- name: Replace Version in files
run: |
sed -i 's|%{{APPDATA_RELEASE}}%|<release version="${{ env.BUILD_VERSION }}" date="${{ steps.date.outputs.date }}" />|' linux/com.github.KRTirtho.Spotube.appdata.xml
- name: Generate Secrets
run: |
flutter config --enable-linux-desktop
flutter pub get
dart run build_runner build --delete-conflicting-outputs --enable-experiment=records,patterns
- name: Build Linux Packages
run: |
dart pub global activate flutter_distributor
alias dpkg-deb="dpkg-deb --Zxz"
flutter_distributor package --platform=linux --targets=deb
flutter_distributor package --platform=linux --targets=appimage
flutter_distributor package --platform=linux --targets=rpm
- name: Create tar.xz (stable)
if: ${{ inputs.channel == 'stable' }}
run: make tar VERSION=${{ env.BUILD_VERSION }}
- name: Create tar.xz (nightly)
if: ${{ inputs.channel == 'nightly' }}
run: make tar VERSION=nightly
- name: Move Files to dist
run: |
mv build/spotube-linux-*-x86_64.tar.xz dist/
mv dist/**/spotube-*-linux.deb dist/Spotube-linux-x86_64.deb
mv dist/**/spotube-*-linux.rpm dist/Spotube-linux-x86_64.rpm
mv dist/**/spotube-*-linux.AppImage dist/Spotube-linux-x86_64.AppImage
- name: Debug With SSH When fails
if: ${{ failure() && inputs.debug && inputs.channel == 'nightly' }}
uses: mxschmitt/action-tmate@v3
- name: Setup Java
if: ${{matrix.platform == 'android'}}
uses: actions/setup-java@v4
with:
limit-access-to-actor: true
distribution: "zulu"
java-version: "17"
cache: "gradle"
check-latest: true
- uses: actions/upload-artifact@v3
- name: Setup Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
name: Spotube-Release-Binaries
path: dist/
toolchain: stable
android:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: subosito/flutter-action@v2.10.0
- name: Install Xcode
if: ${{matrix.platform == 'ios'}}
uses: maxim-lobanov/setup-xcode@v1
with:
cache: true
flutter-version: ${{ env.FLUTTER_VERSION }}
xcode-version: "16.2"
- name: Install Dependencies
run: |
sudo apt-get update -y
sudo apt-get install -y clang cmake ninja-build pkg-config libgtk-3-dev make python3-pip python3-setuptools patchelf desktop-file-utils libgdk-pixbuf2.0-dev fakeroot strace fuse
- name: Replace pubspec version and BUILD_VERSION Env (nightly)
if: ${{ inputs.channel == 'nightly' }}
run: |
curl -sS https://webi.sh/yq | sh
yq -i '.version |= sub("\+\d+", "+${{ inputs.channel }}.")' pubspec.yaml
yq -i '.version += strenv(GITHUB_RUN_NUMBER)' pubspec.yaml
echo "BUILD_VERSION=${{ inputs.version }}+${{ inputs.channel }}.${{ github.run_number }}" >> $GITHUB_ENV
- name: BUILD_VERSION Env (stable)
if: ${{ inputs.channel == 'stable' }}
run: |
echo "BUILD_VERSION=${{ inputs.version }}" >> $GITHUB_ENV
- name: Create Stable .env
if: ${{ inputs.channel == 'stable' }}
run: echo '${{ secrets.DOTENV_RELEASE }}' > .env
- name: Create Nightly .env
if: ${{ inputs.channel == 'nightly' }}
run: echo '${{ secrets.DOTENV_NIGHTLY }}' > .env
- name: Generate Secrets
- name: Install ${{matrix.platform}} dependencies
run: |
flutter pub get
dart run build_runner build --delete-conflicting-outputs --enable-experiment=records,patterns
dart cli/cli.dart install-dependencies --platform=${{matrix.platform}}
- name: Sign Apk
if: ${{matrix.platform == 'android'}}
run: |
echo '${{ secrets.KEYSTORE }}' | base64 --decode > android/app/upload-keystore.jks
echo '${{ secrets.KEY_PROPERTIES }}' > android/key.properties
- name: Build Apk
run: |
flutter build apk
flutter build appbundle
mv build/app/outputs/apk/release/app-release.apk build/Spotube-android-all-arch.apk
mv build/app/outputs/bundle/release/app-release.aab build/Spotube-playstore-all-arch.aab
- name: Build ${{matrix.platform}} binaries
run: dart cli/cli.dart build --arch=${{matrix.arch}} ${{matrix.platform}}
env:
CHANNEL: ${{inputs.channel}}
DOTENV: ${{secrets.DOTENV_RELEASE}}
- name: Build Playstore AppBundle
run: |
echo 'ENABLE_UPDATE_CHECK=0' >> .env
dart run build_runner build --delete-conflicting-outputs --enable-experiment=records,patterns
flutter build appbundle
mv build/app/outputs/bundle/release/app-release.aab build/Spotube-playstore-all-arch.aab
- uses: actions/upload-artifact@v4
with:
if-no-files-found: error
name: ${{matrix.platform}}-${{matrix.arch}}
path: ${{matrix.files}}
- name: Debug With SSH When fails
if: ${{ failure() && inputs.debug && inputs.channel == 'nightly' }}
@ -253,84 +126,14 @@ jobs:
with:
limit-access-to-actor: true
- uses: actions/upload-artifact@v3
with:
name: Spotube-Release-Binaries
path: |
build/Spotube-android-all-arch.apk
build/Spotube-playstore-all-arch.aab
macos:
runs-on: macos-12
steps:
- uses: actions/checkout@v3
- uses: subosito/flutter-action@v2.10.0
with:
cache: true
flutter-version: ${{ env.FLUTTER_VERSION }}
- name: Replace pubspec version and BUILD_VERSION Env (nightly)
if: ${{ inputs.channel == 'nightly' }}
run: |
brew install yq
yq -i '.version |= sub("\+\d+", "+${{ inputs.channel }}.")' pubspec.yaml
yq -i '.version += strenv(GITHUB_RUN_NUMBER)' pubspec.yaml
echo "BUILD_VERSION=${{ inputs.version }}+${{ inputs.channel }}.${{ github.run_number }}" >> $GITHUB_ENV
- name: BUILD_VERSION Env (stable)
if: ${{ inputs.channel == 'stable' }}
run: |
echo "BUILD_VERSION=${{ inputs.version }}" >> $GITHUB_ENV
- name: Create Stable .env
if: ${{ inputs.channel == 'stable' }}
run: echo '${{ secrets.DOTENV_RELEASE }}' > .env
- name: Create Nightly .env
if: ${{ inputs.channel == 'nightly' }}
run: echo '${{ secrets.DOTENV_NIGHTLY }}' > .env
- name: Generate Secrets
run: |
flutter pub get
flutter pub remove media_kit_native_event_loop
dart run build_runner build --delete-conflicting-outputs --enable-experiment=records,patterns
- name: Build Macos App
run: |
flutter config --enable-macos-desktop
flutter build macos
du -sh build/macos/Build/Products/Release/spotube.app
- name: Package Macos App
run: |
npm install -g appdmg
mkdir -p build/${{ env.BUILD_VERSION }}
appdmg appdmg.json build/Spotube-macos-universal.dmg
- name: Debug With SSH When fails
if: ${{ failure() && inputs.debug && inputs.channel == 'nightly' }}
uses: mxschmitt/action-tmate@v3
with:
limit-access-to-actor: true
- uses: actions/upload-artifact@v3
with:
name: Spotube-Release-Binaries
path: |
build/Spotube-macos-universal.dmg
upload:
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
needs:
- windows
- linux
- android
- macos
- build_platform
steps:
- uses: actions/download-artifact@v3
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: Spotube-Release-Binaries
path: ./Spotube-Release-Binaries
- name: Install dependencies
@ -339,13 +142,19 @@ jobs:
- name: Generate Checksums
run: |
tree .
md5sum Spotube-Release-Binaries/* >> RELEASE.md5sum
sha256sum Spotube-Release-Binaries/* >> RELEASE.sha256sum
find Spotube-Release-Binaries -type f -exec md5sum {} \; >> RELEASE.md5sum
find Spotube-Release-Binaries -type f -exec sha256sum {} \; >> RELEASE.sha256sum
sed -i 's|Spotube-Release-Binaries/.*/\([^/]*\)$|\1|' RELEASE.sha256sum RELEASE.md5sum
sed -i 's|Spotube-Release-Binaries/||' RELEASE.sha256sum RELEASE.md5sum
- uses: actions/upload-artifact@v3
- name: Extract pubspec version
run: |
echo "PUBSPEC_VERSION=$(grep -oP 'version:\s*\K[^+]+(?=\+)' pubspec.yaml)" >> $GITHUB_ENV
- uses: actions/upload-artifact@v4
with:
name: Spotube-Release-Binaries
if-no-files-found: error
name: sums
path: |
RELEASE.md5sum
RELEASE.sha256sum
@ -355,12 +164,12 @@ jobs:
uses: ncipollo/release-action@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
tag: v${{ inputs.version }} # mind the "v" prefix
tag: v${{ env.PUBSPEC_VERSION }} # mind the "v" prefix
omitBodyDuringUpdate: true
omitNameDuringUpdate: true
omitPrereleaseDuringUpdate: true
allowUpdates: true
artifacts: Spotube-Release-Binaries/*,RELEASE.sha256sum,RELEASE.md5sum
artifacts: Spotube-Release-Binaries/**/*,RELEASE.sha256sum,RELEASE.md5sum
- name: Upload Release Binaries (nightly)
if: ${{ !inputs.dry_run && inputs.channel == 'nightly' }}
@ -372,4 +181,15 @@ jobs:
omitNameDuringUpdate: true
omitPrereleaseDuringUpdate: true
allowUpdates: true
artifacts: Spotube-Release-Binaries/*,RELEASE.sha256sum,RELEASE.md5sum
artifacts: Spotube-Release-Binaries/**/*,RELEASE.sha256sum,RELEASE.md5sum
body: |
Build Number: ${{github.run_number}}
Nightly release includes newest features but may contain bugs
It is preferred to use the stable version unless you know what you're doing
- name: Debug With SSH When fails
if: ${{ failure() && inputs.debug && inputs.channel == 'nightly' }}
uses: mxschmitt/action-tmate@v3
with:
limit-access-to-actor: true

9
.gitignore vendored
View File

@ -73,6 +73,13 @@ dist
appimage-build
android/key.properties
.fvm/flutter_sdk
**/pb_data
tm.json
# FVM Version Cache
.fvm/
android/build
android/app/.cxx

View File

@ -1,11 +1,11 @@
# This file tracks properties of this Flutter project.
# Used by Flutter tool to assess capabilities and perform upgrades etc.
#
# This file should be version controlled.
# This file should be version controlled and should not be manually edited.
version:
revision: eb6d86ee27deecba4a83536aa20f366a6044895c
channel: stable
revision: "d7b523b356d15fb81e7d340bbe52b47f93937323"
channel: "stable"
project_type: app
@ -13,11 +13,11 @@ project_type: app
migration:
platforms:
- platform: root
create_revision: eb6d86ee27deecba4a83536aa20f366a6044895c
base_revision: eb6d86ee27deecba4a83536aa20f366a6044895c
- platform: macos
create_revision: eb6d86ee27deecba4a83536aa20f366a6044895c
base_revision: eb6d86ee27deecba4a83536aa20f366a6044895c
create_revision: d7b523b356d15fb81e7d340bbe52b47f93937323
base_revision: d7b523b356d15fb81e7d340bbe52b47f93937323
- platform: windows
create_revision: d7b523b356d15fb81e7d340bbe52b47f93937323
base_revision: d7b523b356d15fb81e7d340bbe52b47f93937323
# User provided section

34
.vscode/launch.json vendored
View File

@ -5,7 +5,28 @@
"name": "spotube",
"type": "dart",
"request": "launch",
"program": "lib/main.dart"
"program": "lib/main.dart",
},
{
"name": "spotube (mobile)",
"type": "dart",
"request": "launch",
"program": "lib/main.dart",
"args": [
"--flavor",
"dev"
]
},
{
"name": "spotube (mobile-skia)",
"type": "dart",
"request": "launch",
"program": "lib/main.dart",
"args": [
"--flavor",
"dev",
"--no-enable-impeller"
]
},
{
"name": "spotube (profile)",
@ -20,6 +41,17 @@
"request": "launch",
"program": "lib/main.dart",
"flutterMode": "release"
},
{
"name": "spotube (mobile) (release)",
"type": "dart",
"request": "launch",
"program": "lib/main.dart",
"flutterMode": "release",
"args": [
"--flavor",
"dev"
]
}
],
"compounds": []

43
.vscode/settings.json vendored
View File

@ -1,13 +1,34 @@
{
"cmake.configureOnOpen": false,
"cSpell.words": [
"acousticness",
"danceability",
"instrumentalness",
"Mpris",
"riverpod",
"speechiness",
"Spotube",
"winget"
]
"cmake.configureOnOpen": false,
"cSpell.words": [
"acousticness",
"ambiguate",
"Amoled",
"Buildless",
"configurators",
"danceability",
"fuzzywuzzy",
"gapless",
"instrumentalness",
"isrc",
"Mpris",
"RGBO",
"riverpod",
"Scrobblenaut",
"shadcn",
"skeletonizer",
"songlink",
"speechiness",
"Spotube",
"titlebar",
"winget"
],
"editor.formatOnSave": true,
"explorer.fileNesting.enabled": true,
"explorer.fileNesting.patterns": {
"pubspec.yaml": "pubspec.lock,analysis_options.yaml,.packages,.flutter-plugins,.flutter-plugins-dependencies,flutter_launcher_icons*.yaml,flutter_native_splash*.yaml",
"README.md": "LICENSE,CODE_OF_CONDUCT.md,CONTRIBUTING.md,SECURITY.md,CONTRIBUTION.md,CHANGELOG.md,PRIVACY_POLICY.md",
"*.dart": "${capture}.g.dart,${capture}.freezed.dart"
},
"dart.flutterSdkPath": ".fvm/versions/3.35.2"
}

170
.vscode/snippets.code-snippets vendored Normal file
View File

@ -0,0 +1,170 @@
{
"PaginatedState": {
"scope": "dart",
"prefix": "paginatedState",
"description": "Generate a PaginatedState",
"body": [
"class ${1:Model}State extends PaginatedState<${2:Model}> {",
" ${1:Model}State({",
" required super.items,",
" required super.offset,",
" required super.limit,",
" required super.hasMore,",
" });",
" ",
" @override",
" ${1:Model}State copyWith({",
" List<${2:Model}>? items,",
" int? offset,",
" int? limit,",
" bool? hasMore,",
" }) {",
" return ${1:Model}State(",
" items: items ?? this.items,",
" offset: offset ?? this.offset,",
" limit: limit ?? this.limit,",
" hasMore: hasMore ?? this.hasMore,",
" );",
" }",
"}"
]
},
"PaginatedAsyncNotifier": {
"scope": "dart",
"prefix": "paginatedAsyncNotifier",
"description": "Generate a PaginatedAsyncNotifier",
"body": [
"class ${1:NotifierName}Notifier extends PaginatedAsyncNotifier<${3:Item}, ${2:Model}State> {",
" ${1:NotifierName}Notifier() : super();",
" ",
" @override",
" fetch(int offset, int limit) async {",
" throw UnimplementedError();",
" }",
" ",
" @override",
" build() async {",
" throw UnimplementedError();",
" }",
"}"
]
},
"PaginaitedNotifierWithState": {
"scope": "dart",
"prefix": "paginatedNotifierWithState",
"description": "Generate a PaginatedNotifier with PaginatedState",
"body": [
"class $1State extends PaginatedState<$2> {",
" $1State({",
" required super.items,",
" required super.offset,",
" required super.limit,",
" required super.hasMore,",
" });",
" ",
" @override",
" $1State copyWith({",
" List<$2>? items,",
" int? offset,",
" int? limit,",
" bool? hasMore,",
" }) {",
" return $1State(",
" items: items ?? this.items,",
" offset: offset ?? this.offset,",
" limit: limit ?? this.limit,",
" hasMore: hasMore ?? this.hasMore,",
" );",
" }",
"}",
" ",
"class $1Notifier",
" extends PaginatedAsyncNotifier<$2, $1State> {",
" $1Notifier() : super();",
" ",
" @override",
" fetch(int offset, int limit) async {",
" throw UnimplementedError();",
" }",
" ",
" @override",
" build() async {",
" throw UnimplementedError();",
" }",
"}",
" ",
"final ${1/(.*)/${1:/camelcase}/}Provider = AsyncNotifierProvider<$1Notifier, $1State>(",
" ()=> $1Notifier(),",
");"
]
},
"FamilyPaginatedAsyncNotifier": {
"scope": "dart",
"prefix": "familyPaginatedAsyncNotifier",
"description": "Generate a FamilyPaginatedAsyncNotifier",
"body": [
"class ${1:NotifierName}Notifier extends FamilyPaginatedAsyncNotifier<${3:Item}, ${2:Model}State, {$4:Arg}> {",
" ${1:NotifierName}Notifier() : super();",
" ",
" @override",
" fetch(arg, offset, limit) async {",
" throw UnimplementedError();",
" }",
" ",
" @override",
" build(arg) async {",
" throw UnimplementedError();",
" }",
"}"
]
},
"FamilyPaginaitedNotifierWithState": {
"scope": "dart",
"prefix": "familyPaginatedNotifierWithState",
"description": "Generate a FamilyPaginatedAsyncNotifier with PaginatedState",
"body": [
"class $1State extends PaginatedState<$2> {",
" $1State({",
" required super.items,",
" required super.offset,",
" required super.limit,",
" required super.hasMore,",
" });",
" ",
" @override",
" $1State copyWith({",
" List<$2>? items,",
" int? offset,",
" int? limit,",
" bool? hasMore,",
" }) {",
" return $1State(",
" items: items ?? this.items,",
" offset: offset ?? this.offset,",
" limit: limit ?? this.limit,",
" hasMore: hasMore ?? this.hasMore,",
" );",
" }",
"}",
" ",
"class $1Notifier",
" extends FamilyPaginatedAsyncNotifier<$2, $1State, $3> {",
" $1Notifier() : super();",
" ",
" @override",
" fetch(arg, offset, limit) async {",
" throw UnimplementedError();",
" }",
" ",
" @override",
" build(arg) async {",
" throw UnimplementedError();",
" }",
"}",
" ",
"final ${1/(.*)/${1:/camelcase}/}Provider = AsyncNotifierProviderFamily<$1Notifier, $1State, $3>(",
" ()=> $1Notifier(),",
");"
]
},
}

File diff suppressed because it is too large Load Diff

View File

@ -25,13 +25,14 @@ All types of contributions are encouraged and valued. See the [Table of Contents
- [Before Submitting an Enhancement](#before-submitting-an-enhancement)
- [How Do I Submit a Good Enhancement Suggestion?](#how-do-i-submit-a-good-enhancement-suggestion)
- [Your First Code Contribution](#your-first-code-contribution)
- [Submit Translations](#submit-translations)
## Code of Conduct
This project and everyone participating in it is governed by the
[Spotube Code of Conduct](https://github.com/KRTirtho/spotube/blob/master/CODE_OF_CONDUCT.md).
By participating, you are expected to uphold this code. Please report unacceptable behavior
to <>.
to krtirtho@gmail.com.
## I Have a Question
@ -118,30 +119,48 @@ Enhancement suggestions are tracked as [GitHub issues](https://github.com/KRTirt
Do the following:
- Download the latest Flutter SDK (>=3.10.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
- Debian (>=12/Bookworm)/Ubuntu
```bash
$ apt-get install mpv libmpv-dev libappindicator3-1 gir1.2-appindicator3-0.1 libappindicator3-dev libsecret-1-0 libjsoncpp25 libsecret-1-dev libjsoncpp-dev libnotify-bin libnotify-dev
$ apt-get install mpv libmpv-dev libappindicator3-1 gir1.2-appindicator3-0.1 libappindicator3-dev libsecret-1-0 libjsoncpp25 libsecret-1-dev libjsoncpp-dev libnotify-bin libnotify-dev avahi-daemon avahi-discover avahi-utils libnss-mdns mdns-scan libwebkit2gtk-4.1-0 libwebkit2gtk-4.1-dev libsoup-3.0-0 libsoup-3.0-dev
```
- Use `libjsoncpp1` instead of `libjsoncpp25` (for Ubuntu < 22.04)
- Arch/Manjaro
```bash
yay -S mpv libappindicator-gtk3 libsecret jsoncpp libnotify
yay -S mpv libappindicator-gtk3 libsecret jsoncpp libnotify avahi nss-mdns mdns-scan webkit2gtk-4.1 libsoup3
```
- Fedora
```bash
dnf install mpv mpv-devel libappindicator-gtk3 libappindicator-gtk3-devel libsecret libsecret-devel jsoncpp jsoncpp-devel libnotify libnotify-devel NetworkManager
dnf install mpv mpv-devel libappindicator-gtk3 libappindicator-gtk3-devel libsecret libsecret-devel jsoncpp jsoncpp-devel libnotify libnotify-devel avahi mdns-scan nss-mdns webkit2gtk4.1 webkit2gtk4.1-devel libsoup3 libsoup3-devel
```
- Clone the Repo
- Create a `.env` in root of the project following the `.env.example` template
- Now run the following to bootstrap the project
```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
```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 (master) & 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
### Submit Translations
Make sure you're familiar with [Flutter localization](https://docs.flutter.dev/ui/accessibility-and-localization/internationalization). Then, you can start translating the app by following these steps:
- Do all the steps in [Your First Code Contribution](#your-first-code-contribution)
- Make sure application starts in debug mode
- Now, in `lib/l10n/app_<2-letter code of your language>.arb` (create if not exists) add necessary translations
> (You can follow the `lib/l10n/app_en.arb` for reference)
- If you're adding missing translations, you can check the `/untranslated_messages.json` file to see which messages are missing in your native locale
- If you added entirely new translations:
- Add `const Locale('<2-letter language code>', '<2-letter ISO country code>')` in `lib/l10n/l10n.dart`'s `static final all = [...]` variable
- Uncomment the Map entry of your locale from `lib/collections/language_codes.dart`'s `static final Map isoLangs = {` variable
- Now restart (hot restart if running already) the app in debug mode & go to "Settings" > "Language" & see if your locale shows up
- If it does, select it & see if the app is translated properly
- Now git commit the changes & push
- Finally, submit a PR against the development branch (dev) & we'll review your code

View File

@ -1,12 +1,12 @@
BSD-4-Clause License
Copyright (c) 2023 Kingkor Roy Tirtho. All rights reserved.
Copyright (c) 2025 Kingkor Roy Tirtho. All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
3. All advertising materials mentioning features or use of this software must display the following acknowledgement:
This product includes software developed by Kingkor Roy Tirtho.
This product includes software developed by Kingkor Roy Tirtho.
4. Neither the name of the Software nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY KINGKOR ROY TIRTHO AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL KINGKOR ROY TIRTHO AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
THIS SOFTWARE IS PROVIDED BY KINGKOR ROY TIRTHO AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL KINGKOR ROY TIRTHO AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@ -1,31 +1,18 @@
INNO_VERSION=6.2.0
TEMP_DIR=/tmp/spotube-tar
USR_SHARE=deb-struct/usr/share
BUNDLE_DIR=build/linux/x64/release/bundle
BUNDLE_DIR=build/linux/${ARCH}/release/bundle
MIRRORLIST=${PWD}/build/mirrorlist
deb:
mkdir -p ${USR_SHARE}/spotube\
&& mkdir -p $(USR_SHARE)/applications $(USR_SHARE)/icons/spotube $(USR_SHARE)/spotube $(USR_SHARE)/appdata\
&& cp -r $(BUNDLE_DIR)/* $(USR_SHARE)/spotube\
&& cp linux/spotube.desktop $(USR_SHARE)/applications/\
&& cp linux/com.github.KRTirtho.Spotube.appdata.xml $(USR_SHARE)/appdata/spotube.appdata.xml\
&& cp assets/spotube-logo.png $(USR_SHARE)/icons/spotube\
&& sed -i 's|com.github.KRTirtho.Spotube|spotube|' $(USR_SHARE)/appdata/spotube.appdata.xml\
&& dpkg-deb -b deb-struct/ build/Spotube-linux-x86_64.deb
tar:
mkdir -p $(TEMP_DIR)\
&& cp -r $(BUNDLE_DIR)/* $(TEMP_DIR)\
&& cp linux/spotube.desktop $(TEMP_DIR)\
&& cp assets/spotube-logo.png $(TEMP_DIR)\
&& cp assets/branding/spotube-logo.png $(TEMP_DIR)\
&& cp linux/com.github.KRTirtho.Spotube.appdata.xml $(TEMP_DIR)\
&& tar -cJf build/spotube-linux-${VERSION}-x86_64.tar.xz -C $(TEMP_DIR) .\
&& tar -cJf build/spotube-linux-${VERSION}-${PKG_ARCH}.tar.xz -C $(TEMP_DIR) .\
&& rm -rf $(TEMP_DIR)
appimage:
appimage-builder --recipe AppImageBuilder.yml\
&& mv Spotube-*-x86_64.AppImage build
aursrcinfo:
docker run -e EXPORT_SRC=1 -v ${PWD}/aur-struct:/pkg -v ${MIRRORLIST}:/etc/pacman.d/mirrorlist:ro whynothugo/makepkg
@ -41,6 +28,7 @@ publishaur:
innoinstall:
powershell curl -o build\installer.exe http://files.jrsoftware.org/is/6/innosetup-${INNO_VERSION}.exe
powershell git clone https://github.com/DomGries/InnoDependencyInstaller.git build\inno-depend
powershell build\installer.exe /verysilent /allusers /dir=build\iscc
inno:
@ -55,3 +43,16 @@ apk:
gensums:
sh -c scripts/gensums.sh
migrate:
dart run drift_dev make-migrations
dmg:
flutter build macos &&\
if [ -f dist/Spotube-macos-universal.dmg ];\
then rm dist/Spotube-macos-universal.dmg;\
fi &&\
appdmg appdmg.json dist/Spotube-macos-universal.dmg
changelog:
git-cliff --unreleased

254
README.md
View File

@ -1,49 +1,46 @@
<div align="center">
<img width="600" src="assets/spotube_banner.png" alt="Spotube Logo">
<img width="600" src="assets/branding/spotube_banner.png" alt="Spotube Logo">
An open source, cross-platform Spotify client that doesn't require Premium nor uses Electron!<br />
That uses Spotify's data/discovery API and YouTube (or Piped.video) as audio source
A cross-platform extensible open-source music streaming platform.<br>
Bring your own music metadata/playlist with plugins created by community or by yourself. A small step towards the decentralized music streaming era!
<a href="https://spotube.netlify.app"><img alt="Visit the website" height="56" src="https://cdn.jsdelivr.net/npm/@intergrav/devins-badges@3/assets/cozy/documentation/website_vector.svg"></a>
<a href="https://discord.gg/uJ94vxB6vg"><img alt="Discord Server" height="56" src="https://cdn.jsdelivr.net/npm/@intergrav/devins-badges@3/assets/cozy/social/discord-plural_vector.svg"></a>
Btw it's not just another Electron app 😉
<a href="https://patreon.com/krtirtho"><img alt="Support me on Patron" height="56" src="https://cdn.jsdelivr.net/npm/@intergrav/devins-badges@3/assets/cozy/donate/patreon-singular_vector.svg"></a>
<a href="https://www.buymeacoffee.com/krtirtho"><img alt="Buy me a Coffee" height="56" src="https://cdn.jsdelivr.net/npm/@intergrav/devins-badges@3/assets/cozy/donate/buymeacoffee-singular_vector.svg"></a>
<a href="https://spotube.krtirtho.dev"><img alt="Visit the website" height="56" src="https://cdn.jsdelivr.net/npm/@intergrav/devins-badges@3/assets/cozy/documentation/website_vector.svg"></a>
<a href="https://discord.gg/uJ94vxB6vg"><img alt="Discord Server" height="56" src="https://cdn.jsdelivr.net/npm/@intergrav/devins-badges@3/assets/cozy/social/discord-plural_vector.svg"></a>
<a href="https://opencollective.com/spotube"><img src="https://opencollective.com/spotube/donate/button.png?color=blue" alt="Donate to our Open Collective" height="45"></a>
<a href="https://patreon.com/krtirtho"><img alt="Support me on Patron" height="56" src="https://cdn.jsdelivr.net/npm/@intergrav/devins-badges@3/assets/cozy/donate/patreon-singular_vector.svg"></a>
<a href="https://www.buymeacoffee.com/krtirtho"><img alt="Buy me a Coffee" height="56" src="https://cdn.jsdelivr.net/npm/@intergrav/devins-badges@3/assets/cozy/donate/buymeacoffee-singular_vector.svg"></a>
---
[![HackerNews](https://hackerbadge.vercel.app/api?id=39066136&type=dark)](https://news.ycombinator.com/item?id=39066136)
![Spotube Desktop](assets/spotube-screenshot.png)
<a href="https://opencollective.com/spotube"><img src="https://opencollective.com/spotube/donate/button.png?color=blue" alt="Donate to our Open Collective" height="45"></a>
![Spotube Mobile](assets/mobile-screenshots/combined.png)
---
![Spotube Desktop](assets/branding/spotube-screenshot.png)
![Spotube Mobile](assets/branding/mobile-screenshots/combined.jpg)
</div>
## 🌃 Features
- 🚫 No ads, thanks to the use of public & free Spotify and YT Music APIs¹
- ⬇️ Downloadable tracks
- 🖥️ 📱 Cross-platform support
- 🪶 Small size & less data usage
- 🕵️ Anonymous/guest login
- 🕒 Time synced lyrics
- ✋ No telemetry, diagnostics or user data collection
- 🚀 Native performance
- 📖 Open source/libre software
- 🔉 Playback control is done locally, not on the server
**¹** It is still **recommended** to support the creators by watching/liking/subscribing to the artists' YouTube channels or liking their tracks on Spotify (or purchasing a Spotify Premium subscription too).
### ❌ Unsupported features
- 🗣️ **Spotify Shows & Podcasts:** Shows and Podcasts can **never be supported** because the audio tracks are _only_ available on Spotify and accessing them would require Spotify Premium.
- 🎧 **Spotify Listen Along:** [Coming soon!](https://github.com/KRTirtho/spotube/issues/8)
- 🧩 Plugin powered, supports any platform or custom music service through plugins.
- 🗺️ Community driven plugins for popular platforms or create your own.
- ⬇️ Freely downloadable tracks with tagged metadata.
- 🖥️ 📱 Cross-platform support.
- 🪶 Small size & less data usage.
- 🕒 Time synced lyrics regardless of the plugin support.
- ✋ No telemetry, diagnostics or user data collection.
- 🚀 Native performance.
- 📖 Open source/libre software.
- 🔉 Playback control is done locally, not on the server.
## 📜 ⬇️ Installation guide
New releases usually appear after 3-4 months.<br />
This handy table lists all methods you can use to install Spotube:
New versions usually release every 3-4 months.<br />
This handy table lists all the methods you can use to install Spotube:
<table>
<tr>
@ -61,17 +58,13 @@ This handy table lists all methods you can use to install Spotube:
<td>MacOS</td>
<td>
<a href="https://github.com/KRTirtho/spotube/releases/latest/download/Spotube-macos-universal.dmg">
<img width="220" alt="MacOS Download" src="https://reachify.io/wp-content/uploads/2018/09/mac-download-button-1.png">
<img width="220" alt="MacOS Download" src="https://memory-map.com/wp-content/uploads/download-mac-OS-01.svg">
</a>
</td>
</tr>
<tr>
<td>Android</td>
<td>
<a href="https://play.google.com/store/apps/details?id=oss.krtirtho.spotube">
<img width="220" alt="Get it on Google Play" src="https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png">
</a>
<br>
<a href="https://github.com/KRTirtho/spotube/releases/latest/download/Spotube-android-all-arch.apk">
<img width="220" alt="APK download" src="https://user-images.githubusercontent.com/114044633/223920025-83687de0-e463-4c5d-8122-e06e4bb7d40c.png">
</a>
@ -81,6 +74,19 @@ This handy table lists all methods you can use to install Spotube:
</a>
</td>
</tr>
<tr>
<tr>
<td>iOS</td>
<td>
<a href="https://github.com/KRTirtho/spotube/releases/latest/download/Spotube-iOS.ipa">
<img width="220" alt="Download iOS IPA" src="https://github.com/user-attachments/assets/3e50d93d-fb39-435c-be6b-337745f7c423">
</a>
<br/>
<blockquote style="color:red">
*iPA file only. Requires sideloading with <a href="https://altstore.io/">AltStore</a> or similar tools.
</blockquote>
</td>
</tr>
<tr>
<td>Flatpak</td>
<td>
@ -92,12 +98,7 @@ This handy table lists all methods you can use to install Spotube:
</tr>
<tr>
<td>AppImage</td>
<td>
<a href="https://github.com/KRTirtho/spotube/releases/latest/download/Spotube-linux-x86_64.AppImage">
<img width="220" alt="Download AppImage" src="https://user-images.githubusercontent.com/61944859/169455015-13385466-8901-48fe-ba90-b62d58b0be64.png">
</a>
<p><b>Note:</b> <a href="https://github.com/TheAssassin/AppImageLauncher">AppimageLauncher</a> is required!</p>
</td>
<td>AppImage's lacking stability led to it's temporary removal. More information at https://github.com/KRTirtho/spotube/issues/1082</td>
</tr>
<tr>
<td>Debian/Ubuntu</td>
@ -105,7 +106,7 @@ This handy table lists all methods you can use to install Spotube:
<a href="https://github.com/KRTirtho/spotube/releases/latest/download/Spotube-linux-x86_64.deb">
<img width="220" alt="Debian/Ubuntu Download" src="https://user-images.githubusercontent.com/61944859/169097994-e92aff78-fd75-4c93-b6e4-f072a4b5a7ed.png">
</a>
<p>Then run: <code>sudo apt install Spotube-linux-x86_64.deb</code></p>
<p>Then run: <code>sudo apt install ./Spotube-linux-x86_64.deb</code></p>
</td>
</tr>
<tr>
@ -133,6 +134,15 @@ This handy table lists all methods you can use to install Spotube:
</a>
</td>
</tr>
<tr>
<td>Macos - <a href="https://brew.sh">Homebrew</a></td>
<td>
<pre lang="bash">
brew tap krtirtho/apps
brew install --cask spotube
</pre>
</td>
</tr>
<tr>
<td>Windows - <a href="https://chocolatey.org">Chocolatey</a></td>
<td>
@ -168,7 +178,6 @@ You can compile Spotube's source code by [following these instructions](CONTRIBU
- [Kingkor Roy Tirtho](https://github.com/KRTirtho) - The Founder, Maintainer and Lead Developer
- [Owen Connor](https://github.com/owencz1998) - The Cool Discord Moderator
- [RaptaG](https://github.com/RaptaG) - The GitHub Moderator and Community Manager
- [Piotr Rogowski](https://github.com/karniv00l) - The MacOS Developer
- [Rusty Apple](https://github.com/RustyApple) - The Mysterious Unknown Guy
@ -176,108 +185,153 @@ You can compile Spotube's source code by [following these instructions](CONTRIBU
Spotube is open source and licensed under the [BSD-4-Clause](/LICENSE) License.
If you are concerned, you can [read the reason of choosing this license](https://dev.to/krtirtho/choosing-open-source-license-wisely-1m3p).
If you are curious, you can [read the reason of choosing this license](https://dev.to/krtirtho/choosing-open-source-license-wisely-1m3p).
<details>
<summary>
<h2><code>[Click to show]</code> 🙏 Library/Plugin/Framework Credits</h2>
<h2><code>[Click to show]</code> 🙏 Services/Package/Plugin Credits</h2>
</summary>
### Services
1. [Flutter](https://flutter.dev) - Flutter transforms the app development process. Build, test, and deploy beautiful mobile, web, desktop, and embedded apps from a single codebase
1. [Spotify API](https://developer.spotify.com/documentation/web-api) - The Spotify Web API is a RESTful API that provides access to Spotify data
1. [MPV](https://mpv.io) - mpv is a free (as in freedom) media player for the command line. It supports a wide variety of media file formats, audio and video codecs, and subtitle types.
1. [Musicbrainz](https://musicbrainz.org) - MusicBrainz is a MetaBrainz project that aims to create a collaborative music database that is similar to the freedb project.
1. [Listenbrainz](https://listenbrainz.org) - ListenBrainz is a open-source project by the MetaBrainz Foundation that allows users to crowdsource and publicly store their digital music listening data.
1. [Piped](https://piped-docs.kavin.rocks/) - Piped is a privacy friendly alternative YouTube frontend, which is efficient and scalable by design.
1. [YouTube](https://youtube.com/) - YouTube is an American online video-sharing platform headquartered in San Bruno, California. Three former PayPal employees—Chad Hurley, Steve Chen, and Jawed Karim—created the service in February 2005
1. [Invidious](https://invidious.io/) - Invidious is an open source alternative front-end to YouTube.
1. [yt-dlp](https://github.com/yt-dlp/yt-dlp) - A feature-rich command-line audio/video downloader.
1. [NewPipeExtractor](https://github.com/TeamNewPipe/NewPipeExtractor) - NewPipe's core library for extracting data from streaming sites.
1. [SongLink](https://song.link) - SongLink is a free smart link service that helps you share music with your audience. It's a one-stop-shop for creating smart links for music, podcasts, and other audio content
1. [LRCLib](https://lrclib.net/) - A public synced lyric API.
1. [Linux](https://www.linux.org) - Linux is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged in a Linux distribution
1. [AUR](https://aur.archlinux.org) - AUR stands for Arch User Repository. It is a community-driven repository for Arch-based Linux distributions users
1. [Flatpak](https://flatpak.org) - Flatpak is a utility for software deployment and package management for Linux
1. [SponsorBlock](https://sponsor.ajay.app) - SponsorBlock is an open-source crowdsourced browser extension and open API for skipping sponsor segments in YouTube videos.
1. [Inno Setup](https://jrsoftware.org/isinfo.php) - Inno Setup is a free installer for Windows programs by Jordan Russell and Martijn Laan
1. [F-Droid](https://f-droid.org) - F-Droid is an installable catalogue of FOSS (Free and Open Source Software) applications for the Android platform. The client makes it easy to browse, install, and keep track of updates on your device
1. [LastFM](https://last.fm) - Last.fm is a music streaming and discovery platform that helps users discover and share new music. It tracks users' music listening habits across many devices and platforms.
### Dependencies
1. [app_links](https://github.com/llfbandit/app_links) - Android App Links, Deep Links, iOs Universal Links and Custom URL schemes handler for Flutter (desktop included).
1. [args](https://pub.dev/packages/args) - Library for defining parsers for parsing raw command-line arguments into a set of options and values using GNU and POSIX style options.
1. [async](https://pub.dev/packages/async) - Utility functions and classes related to the 'dart:async' library.
1. [audio_service](https://github.com/ryanheise/audio_service/tree/master/audio_service) - Flutter plugin to play audio in the background while the screen is off.
1. [audio_service](https://pub.dev/packages/audio_service) - Flutter plugin to play audio in the background while the screen is off.
1. [audio_service_mpris](https://github.com/bdrazhzhov/audio-service-mpris) - audio_service platform interface supporting Media Player Remote Interfacing Specification.
1. [audio_session](https://github.com/ryanheise/audio_session) - Sets the iOS audio session category and Android audio attributes for your app, and manages your app's audio focus, mixing and ducking behaviour.
1. [auto_route](https://github.com/Milad-Akarie/auto_route_library) - AutoRoute is a declarative routing solution, where everything needed for navigation is automatically generated for you.
1. [auto_size_text](https://github.com/leisim/auto_size_text) - Flutter widget that automatically resizes text to fit perfectly within its bounds.
1. [buttons_tabbar](https://afonsoraposo.com) - A Flutter package that implements a TabBar where each label is a toggle button.
1. [bonsoir](https://bonsoir.skyost.eu) - A Zeroconf library that allows you to discover network services and to broadcast your own. Based on Apple Bonjour and Android NSD.
1. [cached_network_image](https://github.com/Baseflow/flutter_cached_network_image) - Flutter library to load and cache network images. Can also be used with placeholder and error widgets.
1. [collection](https://pub.dev/packages/collection) - Collections and utilities functions and classes related to collections.
1. [cupertino_icons](https://pub.dev/packages/cupertino_icons) - Default icons asset for Cupertino widgets based on Apple styled icons
1. [curved_navigation_bar](https://github.com/rafalbednarczuk/curved_navigation_bar) - Stunning Animating Curved Shape Navigation Bar. Adjustable color, background color, animation curve, animation duration.
1. [connectivity_plus](https://github.com/fluttercommunity/plus_plugins) - Flutter plugin for discovering the state of the network (WiFi & mobile/cellular) connectivity on Android and iOS.
1. [device_info_plus](https://github.com/fluttercommunity/plus_plugins) - Flutter plugin providing detailed information about the device (make, model, etc.), and Android or iOS version the app is running on.
1. [dio](https://github.com/cfug/dio) - A powerful HTTP networking package,supports Interceptors,Aborting and canceling a request,Custom adapters, Transformers, etc.
1. [drift](https://drift.simonbinder.eu/) - Drift is a reactive library to store relational data in Dart and Flutter applications.
1. [duration](https://github.com/desktop-dart/duration) - Utilities to make working with 'Duration's easier. Formats duration in human readable form and also parses duration in human readable form to Dart's Duration.
1. [encrypt](https://pub.dev/packages/encrypt) - A set of high-level APIs over PointyCastle for two-way cryptography.
1. [envied](https://github.com/petercinibulk/envied) - Explicitly reads environment variables into a dart file from a .env file for more security and faster start up times.
1. [file_picker](https://github.com/miguelpruivo/plugins_flutter_file_picker) - A package that allows you to use a native file explorer to pick single or multiple absolute file paths, with extension filtering support.
1. [fl_query](https://fl-query.vercel.app) - Asynchronous data caching, refetching & invalidation library for Flutter
1. [fl_query_hooks](https://fl-query.vercel.app) - Elite flutter_hooks compatible library for fl_query, the Asynchronous data caching, refetching & invalidation library for Flutter
1. [fl_query_connectivity_plus_adapter](https://fl-query.vercel.app) - Connectivity Plus adapter for FlQuery Connectivity
1. [file_selector](https://pub.dev/packages/file_selector) - Flutter plugin for opening and saving files, or selecting directories, using native file selection UI.
1. [fluentui_system_icons](https://github.com/microsoft/fluentui-system-icons/tree/main) - Fluent UI System Icons are a collection of familiar, friendly and modern icons from Microsoft.
1. [flutter_cache_manager](https://github.com/Baseflow/flutter_cache_manager/tree/master/flutter_cache_manager) - Generic cache manager for flutter. Saves web files on the storages of the device and saves the cache info using sqflite.
1. [flutter_cache_manager](https://github.com/Baseflow/flutter_cache_manager/tree/develop/flutter_cache_manager) - Generic cache manager for flutter. Saves web files on the storages of the device and saves the cache info using sqflite.
1. [flutter_discord_rpc](https://pub.dev/packages/flutter_discord_rpc) - Discord RPC support for Flutter desktop platforms
1. [flutter_displaymode](https://github.com/ajinasokan/flutter_displaymode) - A Flutter plugin to set display mode (resolution, refresh rate) on Android platform. Allows to enable high refresh rate on supported devices.
1. [flutter_feather_icons](https://github.com/muj-programmer/flutter_feather_icons) - Feather is a collection of simply beautiful open source icons. Each icon is designed on a 24x24 grid with an emphasis on simplicity, consistency and usability.
1. [flutter_form_builder](https://github.com/flutter-form-builder-ecosystem) - This package helps in creation of forms in Flutter by removing the boilerplate code, reusing validation, react to changes, and collect final user input.
1. [flutter_hooks](https://github.com/rrousselGit/flutter_hooks) - A flutter implementation of React hooks. It adds a new kind of widget with enhanced code reuse.
1. [flutter_inappwebview](https://inappwebview.dev/) - A Flutter plugin that allows you to add an inline webview, to use an headless webview, and to open an in-app browser window.
1. [flutter_native_splash](https://pub.dev/packages/flutter_native_splash) - Customize Flutter's default white native splash screen with background color and splash image. Supports dark mode, full screen, and more.
1. [flutter_riverpod](https://riverpod.dev) - A simple way to access state from anywhere in your application while robust and testable.
1. [flutter_riverpod](https://riverpod.dev) - A reactive caching and data-binding framework. Riverpod makes working with asynchronous code a breeze.
1. [flutter_secure_storage](https://pub.dev/packages/flutter_secure_storage) - Flutter Secure Storage provides API to store data in secure storage. Keychain is used in iOS, KeyStore based solution is used in Android.
1. [flutter_svg](https://pub.dev/packages/flutter_svg) - An SVG rendering and widget library for Flutter, which allows painting and displaying Scalable Vector Graphics 1.1 files.
1. [flutter_sharing_intent](https://github.com/bhagat-techind/flutter_sharing_intent.git) - A flutter plugin that allow flutter apps to receive photos, videos, text, urls or any other file types from another app.
1. [flutter_undraw](https://github.com/KRTirtho/flutter_undraw) - Undraw.co Illustrations for Flutter with customization options
1. [form_builder_validators](https://github.com/flutter-form-builder-ecosystem) - Form Builder Validators set of validators for FlutterFormBuilder. Provides common validators and a way to make your own.
1. [form_validator](https://github.com/TheMisir/form-validator) - Simplest form validation library for flutter's form field widgets
1. [freezed_annotation](https://pub.dev/packages/freezed_annotation) - Annotations for the freezed code-generator. This package does nothing without freezed too.
1. [fuzzywuzzy](https://github.com/sphericalkat/dart-fuzzywuzzy) - An implementation of the popular fuzzywuzzy package in Dart, to suit all your fuzzy string matching/searching needs!
1. [go_router](https://pub.dev/packages/go_router) - A declarative router for Flutter based on Navigation 2 supporting deep linking, data-driven routes and more
1. [hive](https://github.com/hivedb/hive/tree/master/hive) - Lightweight and blazing fast key-value database written in pure Dart. Strongly encrypted using AES-256.
1. [hive_flutter](https://github.com/hivedb/hive/tree/master/hive_flutter) - Extension for Hive. Makes it easier to use Hive in Flutter apps.
1. [hooks_riverpod](https://riverpod.dev) - A simple way to access state from anywhere in your application while robust and testable.
1. [gap](https://github.com/letsar/gap) - Flutter widgets for easily adding gaps inside Flex widgets such as Columns and Rows or scrolling views.
1. [google_fonts](https://pub.dev/packages/google_fonts) - A Flutter package to use fonts from fonts.google.com. Supports HTTP fetching, caching, and asset bundling.
1. [home_widget](https://pub.dev/packages/home_widget) - A plugin to provide a common interface for creating HomeScreen Widgets for Android and iOS.
1. [hooks_riverpod](https://riverpod.dev) - A reactive caching and data-binding framework. Riverpod makes working with asynchronous code a breeze.
1. [html](https://pub.dev/packages/html) - APIs for parsing and manipulating HTML content outside the browser.
1. [html_unescape](https://github.com/filiph/html_unescape) - A small library for un-escaping HTML. Supports all Named Character References, Decimal Character References and Hexadecimal Character References.
1. [http](https://pub.dev/packages/http) - A composable, multi-platform, Future-based API for HTTP requests.
1. [image_picker](https://pub.dev/packages/image_picker) - Flutter plugin for selecting images from the Android and iOS image library, and taking new pictures with the camera.
1. [intl](https://pub.dev/packages/intl) - Contains code to deal with internationalized/localized messages, date and number formatting and parsing, bi-directional text, and other internationalization issues.
1. [introduction_screen](https://github.com/pyozer/introduction_screen) - Introduction/Onboarding package for flutter app with some customizations possibilities
1. [invidious](https://pub.dev/packages/invidious) - Invidious API client for Dart and Flutter.
1. [jiosaavn](https://github.com/KRTirtho/jiosaavn) - Unofficial API client for jiosaavn.com
1. [json_annotation](https://pub.dev/packages/json_annotation) - Classes and helper functions that support JSON code generation via the `json_serializable` package.
1. [local_notifier](https://github.com/leanflutter/local_notifier) - This plugin allows Flutter desktop apps to displaying local notifications.
1. [logger](https://pub.dev/packages/logger) - Small, easy to use and extensible logger which prints beautiful logs.
1. [media_kit](https://github.com/alexmercerind/media_kit) - A complete video & audio playback library for Flutter & Dart. Performant, stable, feature-proof & modular.
1. [media_kit_libs_android_audio](https://github.com/alexmercerind/media_kit.git) - Android package providing audio (only) native libraries for package:media_kit.
1. [media_kit_libs_ios_audio](https://github.com/alexmercerind/media_kit.git) - iOS package providing audio native libraries for package:media_kit.
1. [media_kit_libs_linux](https://github.com/alexmercerind/media_kit.git) - GNU/Linux dependency package for package:media_kit. Necessary for initialization.
1. [media_kit_libs_macos_audio](https://github.com/alexmercerind/media_kit.git) - macOS package providing audio native libraries for package:media_kit.
1. [media_kit_libs_windows_audio](https://github.com/alexmercerind/media_kit.git) - Windows package providing audio (only) native libraries for package:media_kit.
1. [metadata_god](https://github.com/KRTirtho/metadata_god) - Plugin for retrieving and writing audio tags/metadata from audio files
1. [logging](https://pub.dev/packages/logging) - Provides APIs for debugging and error logging, similar to loggers in other languages, such as the Closure JS Logger and java.util.logging.Logger.
1. [lrc](https://pub.dev/packages/lrc) - A Dart-only package that creates, parses, and handles LRC, which is a format that stores song lyrics.
1. [media_kit](https://github.com/media-kit/media-kit) - A cross-platform video player & audio player for Flutter & Dart. Performant, stable, feature-proof & modular.
1. [media_kit_libs_audio](https://github.com/media-kit/media-kit.git) - package:media_kit audio (only) playback native libraries for all platforms.
1. [metadata_god](https://pub.dev/packages/metadata_god) - Plugin for retrieving and writing audio tags/metadata from audio files
1. [mime](https://pub.dev/packages/mime) - Utilities for handling media (MIME) types, including determining a type from a file extension and file contents.
1. [package_info_plus](https://plus.fluttercommunity.dev/) - Flutter plugin for querying information about the application package, such as CFBundleVersion on iOS or versionCode on Android.
1. [open_file](https://pub.dev/packages/open_file) - A plug-in that can call native APP to open files with string result in flutter, support iOS(UTI) / android(intent) / PC(ffi) / web(dart:html)
1. [package_info_plus](https://github.com/fluttercommunity/plus_plugins) - Flutter plugin for querying information about the application package, such as CFBundleVersion on iOS or versionCode on Android.
1. [palette_generator](https://pub.dev/packages/palette_generator) - Flutter package for generating palette colors from a source image.
1. [path](https://pub.dev/packages/path) - A string-based path manipulation library. All of the path operations you know and love, with solid support for Windows, POSIX (Linux and Mac OS X), and the web.
1. [path_provider](https://pub.dev/packages/path_provider) - Flutter plugin for getting commonly used locations on host platform file systems, such as the temp and app data directories.
1. [permission_handler](https://pub.dev/packages/permission_handler) - Permission plugin for Flutter. This plugin provides a cross-platform (iOS, Android) API to request and check permissions.
1. [popover](https://github.com/minikin/popover) - A popover is a transient view that appears above other content onscreen when you tap a control or in an area.
1. [scroll_to_index](https://github.com/quire-io/scroll-to-index) - Scroll to a specific child of any scrollable widget in Flutter
1. [shared_preferences](https://pub.dev/packages/shared_preferences) - Flutter plugin for reading and writing simple key-value pairs. Wraps NSUserDefaults on iOS and SharedPreferences on Android.
1. [sidebarx](https://github.com/Frezyx/sidebarx) - flutter multiplatform navigation sidebar / side navigationbar / drawer widget
1. [skeleton_text](https://github.com/101Loop/Skeleton-Text) - A package that provides an easy way to add skeleton text loading animation in Flutter project. This project is a part of 101Loop community.
1. [smtc_windows](https://github.com/KRTirtho/smtc_windows) - Windows `SystemMediaTransportControls` implementation for Flutter giving access to Windows OS Media Control applet.
1. [spotify](https://github.com/rinukkusu/spotify-dart) - An incomplete dart library for interfacing with the Spotify Web API.
1. [system_theme](https://pub.dev/packages/system_theme) - A plugin to get the current system theme info. Supports Android, Web, Windows, Linux and macOS
1. [titlebar_buttons](https://github.com/gtk-flutter/titlebar_buttons) - A package which provides most of the titlebar buttons from windows, linux and macos.
1. [url_launcher](https://pub.dev/packages/url_launcher) - Flutter plugin for launching a URL. Supports web, phone, SMS, and email schemes.
1. [uuid](https://github.com/Daegalus/dart-uuid) - RFC4122 (v1, v4, v5) UUID Generator and Parser for all Dart platforms (Web, VM, Flutter)
1. [version](https://github.com/dartninja/version) - Provides a simple class for parsing and comparing semantic versions as defined by http://semver.org/
1. [visibility_detector](https://pub.dev/packages/visibility_detector) - A widget that detects the visibility of its child and notifies a callback.
1. [window_manager](https://github.com/leanflutter/window_manager) - This plugin allows Flutter desktop apps to resizing and repositioning the window.
1. [piped_client](https://github.com/KRTirtho/piped_client) - API Client for piped.video
1. [supabase_flutter](https://supabase.com) - Flutter integration for Supabase. This package makes it simple for developers to build secure and scalable products.
1. [device_preview](https://github.com/aloisdeniel/flutter_device_preview) - Approximate how your Flutter app looks and performs on another device.
1. [media_kit_native_event_loop](https://github.com/alexmercerind/media_kit) - Platform specific threaded event handling for media_kit. Enables support for higher number of concurrent instances.
1. [dbus](https://github.com/canonical/dbus.dart) - A native Dart implementation of the D-Bus message bus client. This package allows Dart applications to directly access services on the Linux desktop.
1. [background_downloader](https://pub.dev/packages/background_downloader) - A multi-platform background file downloader and uploader. Define the task, enqueue and monitor progress
1. [duration](https://github.com/desktop-dart/duration) - Utilities to make working with 'Duration's easier. Formats duration in human readable form and also parses duration in human readable form to Dart's Duration.
1. [disable_battery_optimization](https://github.com/pvsvamsi/Disable-Battery-Optimizations) - Flutter plugin to check and disable battery optimizations. Also shows custom steps to disable the optimizations in devices like mi, xiaomi, samsung, oppo, huawei, oneplus etc
1. [riverpod](https://riverpod.dev) - A reactive caching and data-binding framework. Riverpod makes working with asynchronous code a breeze.
1. [scroll_to_index](https://github.com/quire-io/scroll-to-index) - Scroll to a specific child of any scrollable widget in Flutter
1. [shadcn_flutter](https://github.com/sunarya-thito/shadcn_flutter) - Beautifully designed components from Shadcn/UI is now available for Flutter
1. [shared_preferences](https://pub.dev/packages/shared_preferences) - Flutter plugin for reading and writing simple key-value pairs. Wraps NSUserDefaults on iOS and SharedPreferences on Android.
1. [shelf](https://pub.dev/packages/shelf) - A model for web server middleware that encourages composition and easy reuse.
1. [shelf_router](https://pub.dev/packages/shelf_router) - A convenient request router for the shelf web-framework, with support for URL-parameters, nested routers and routers generated from source annotations.
1. [shelf_web_socket](https://pub.dev/packages/shelf_web_socket) - A shelf handler that wires up a listener for every connection.
1. [simple_icons](https://teavelopment.com/) - The Simple Icon pack available as Flutter Icons. Provides over 1500 Free SVG icons for popular brands.
1. [skeletonizer](https://github.com/Milad-Akarie/skeletonizer) - Converts already built widgets into skeleton loaders with no extra effort.
1. [sliding_up_panel](https://github.com/akshathjain/sliding_up_panel) - A draggable Flutter widget that makes implementing a SlidingUpPanel much easier!
1. [sliver_tools](https://github.com/Kavantix) - A set of useful sliver tools that are missing from the flutter framework
1. [smtc_windows](https://pub.dev/packages/smtc_windows) - Windows `SystemMediaTransportControls` implementation for Flutter giving access to Windows OS Media Control applet.
1. [sqlite3](https://github.com/simolus3/sqlite3.dart/tree/main/sqlite3) - Provides lightweight yet convenient bindings to SQLite by using dart:ffi
1. [sqlite3_flutter_libs](https://github.com/simolus3/sqlite3.dart/tree/main/sqlite3_flutter_libs) - Flutter plugin to include native sqlite3 libraries with your app
1. [stroke_text](https://github.com/MohamedAbd0/stroke_text) - A Simple Flutter plugin for applying stroke (border) style to a text widget
1. [system_theme](https://github.com/bdlukaa/system_theme/tree/master/system_theme) - A plugin to get the current system theme info. Supports Android, Web, Windows, Linux and macOS
1. [test](https://pub.dev/packages/test) - A full featured library for writing and running Dart tests across platforms.
1. [timezone](https://pub.dev/packages/timezone) - Time zone database and time zone aware DateTime.
1. [titlebar_buttons](https://github.com/gtk-flutter/titlebar_buttons) - A package which provides most of the titlebar buttons from windows, linux and macos.
1. [tray_manager](https://github.com/leanflutter/tray_manager) - This plugin allows Flutter desktop apps to defines system tray.
1. [url_launcher](https://pub.dev/packages/url_launcher) - Flutter plugin for launching a URL. Supports web, phone, SMS, and email schemes.
1. [uuid](https://pub.dev/packages/uuid) - RFC4122 (v1, v4, v5, v6, v7, v8) UUID Generator and Parser for Dart
1. [version](https://github.com/dartninja/version) - Provides a simple class for parsing and comparing semantic versions as defined by http://semver.org/
1. [very_good_infinite_list](https://github.com/VeryGoodOpenSource/very_good_infinite_list) - A library for easily displaying paginated data, created by Very Good Ventures. Great for activity feeds, news feeds, and more.
1. [visibility_detector](https://pub.dev/packages/visibility_detector) - A widget that detects the visibility of its child and notifies a callback.
1. [web_socket_channel](https://pub.dev/packages/web_socket_channel) - StreamChannel wrappers for WebSockets. Provides a cross-platform WebSocketChannel API, a cross-platform implementation of that API that communicates over an underlying StreamChannel.
1. [wikipedia_api](https://github.com/KRTirtho/wikipedia_api) - Wikipedia API for dart and flutter
1. [win32_registry](https://pub.dev/packages/win32_registry) - A package that provides a friendly Dart API for accessing the Windows Registry.
1. [window_manager](https://github.com/leanflutter/window_manager) - This plugin allows Flutter desktop apps to resizing and repositioning the window.
1. [youtube_explode_dart](https://github.com/Hexer10/youtube_explode_dart) - A port in dart of the youtube explode library. Supports several API functions without the need of Youtube API Key.
1. [http_parser](https://pub.dev/packages/http_parser) - A platform-independent package for parsing and serializing HTTP formats.
1. [collection](https://pub.dev/packages/collection) - Collections and utilities functions and classes related to collections.
1. [otp_util](https://github.com/dushiling) - otp_util is a dart package to generate and verify one-time passwords,it It provides two methods TOPT and HOTP.They are Time-based OTPs and Counter-based OTPs.
1. [dio_http2_adapter](https://github.com/cfug/dio) - An adapter that combines HTTP/2 and dio. Supports reusing connections, header compression, etc.
1. [build_runner](https://pub.dev/packages/build_runner) - A build system for Dart code generation and modular compilation.
1. [envied_generator](https://github.com/petercinibulk/envied) - Generator for the Envied package. See https://pub.dev/packages/envied.
1. [flutter_distributor](https://distributor.leanflutter.org) - A complete tool for packaging and publishing your Flutter apps.
1. [flutter_gen_runner](https://github.com/FlutterGen/flutter_gen) - The Flutter code generator for your assets, fonts, colors, … — Get rid of all String-based APIs.
1. [flutter_launcher_icons](https://github.com/fluttercommunity/flutter_launcher_icons) - A package which simplifies the task of updating your Flutter app's launcher icon.
1. [flutter_lints](https://pub.dev/packages/flutter_lints) - Recommended lints for Flutter apps, packages, and plugins to encourage good coding practices.
1. [hive_generator](https://github.com/hivedb/hive/tree/master/hive_generator) - Extension for Hive. Automatically generates TypeAdapters to store any class.
1. [json_serializable](https://pub.dev/packages/json_serializable) - Automatically generate code for converting to and from JSON by annotating Dart classes.
1. [pub_api_client](https://github.com/leoafarias/pub_api_client) - An API Client for Pub to interact with public package information.
1. [freezed](https://pub.dev/packages/freezed) - Code generation for immutable classes that has a simple syntax/API without compromising on the features.
1. [process_run](https://github.com/tekartik/process_run.dart/blob/master/packages/process_run) - Process run helpers for Linux/Win/Mac and which like feature for finding executables.
1. [pubspec_parse](https://pub.dev/packages/pubspec_parse) - Simple package for parsing pubspec.yaml files with a type-safe API and rich error reporting.
1. [catcher](https://github.com/jhomlala/catcher) - Plugin for error catching which provides multiple handlers for dealing with errors when they are not caught by the developer.
1. [flutter_desktop_tools](https://github.com/KRTirtho/flutter_desktop_tools) - Essential collection of tools for flutter desktop app development
1. [window_size](https://github.com/google/flutter-desktop-embedding.git) - Allows resizing and repositioning the window containing Flutter.
1. [pub_api_client](https://github.com/leoafarias/pub_api_client) - An API Client for Pub to interact with public package information.
1. [xml](https://github.com/renggli/dart-xml) - A lightweight library for parsing, traversing, querying, transforming and building XML documents.
1. [io](https://pub.dev/packages/io) - Utilities for the Dart VM Runtime including support for ANSI colors, file copying, and standard exit code values.
1. [drift_dev](https://drift.simonbinder.eu/) - Dev-dependency for users of drift. Contains the generator and development tools.
1. [auto_route_generator](https://github.com/Milad-Akarie/auto_route_library) - AutoRoute is a declarative routing solution, where everything needed for navigation is automatically generated for you.
1. [desktop_webview_window](https://github.com/MixinNetwork/flutter-plugins/tree/main/packages/desktop_webview_window) - Show a webview window on your flutter desktop application.
1. [disable_battery_optimization](https://github.com/pvsvamsi/Disable-Battery-Optimizations) - Flutter plugin to check and disable battery optimizations. Also shows custom steps to disable the optimizations in devices like mi, xiaomi, samsung, oppo, huawei, oneplus etc
1. [draggable_scrollbar](https://github.com/fluttercommunity/flutter-draggable-scrollbar) - A scrollbar that can be dragged for quickly navigation through a vertical list. Additional option is showing label next to scrollthumb with information about current item.
1. [flutter_broadcasts](https://github.com/KRTirtho/flutter_broadcasts.git) - A plugin for sending and receiving broadcasts with Android intents and iOS notifications.
1. [scrobblenaut](https://github.com/Nebulino/Scrobblenaut) - A deadly simple LastFM API Wrapper for Dart. So deadly simple that it's gonna hit the mark.
1. [yt_dlp_dart](https://github.com/KRTirtho/yt_dlp_dart.git) - yt-dlp binding in Dart
1. [flutter_new_pipe_extractor](https://github.com/KRTirtho/flutter_new_pipe_extractor) - NewPipeExtractor binding for Flutter (Android only)
</details>
<div align="center"><h4>© Copyright Spotube 2023</h4></div>
<div align="center"><h4>© Copyright Spotube 2025</h4></div>

View File

@ -25,10 +25,16 @@ linter:
# avoid_print: false # Uncomment to disable the `avoid_print` rule
# prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
file_names: false
avoid_renaming_method_parameters: false
# Additional information about this file can be found at
# https://dart.dev/guides/language/analysis-options
analyzer:
enable-experiment:
- records
- patterns
errors:
invalid_annotation_target: ignore
exclude:
- "**.freezed.dart"
- "**.g.dart"
- "**.gr.dart"
- "**/generated_plugin_registrant.dart"
- test/**/*.dart

View File

@ -1,3 +1,9 @@
plugins {
id "com.android.application"
id "kotlin-android"
id "dev.flutter.flutter-gradle-plugin"
}
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
@ -6,11 +12,6 @@ if (localPropertiesFile.exists()) {
}
}
def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
flutterVersionCode = '1'
@ -21,22 +22,23 @@ if (flutterVersionName == null) {
flutterVersionName = '1.0'
}
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
android {
compileSdkVersion 33
def composeVersion = "1.4.8"
ndkVersion "21.4.7075529"
android {
namespace "oss.krtirtho.spotube"
compileSdkVersion 36
ndkVersion = "27.0.12077973"
compileOptions {
coreLibraryDesugaringEnabled true
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
@ -49,11 +51,18 @@ android {
main.java.srcDirs += 'src/main/kotlin'
}
buildFeatures {
compose true
}
composeOptions {
kotlinCompilerExtensionVersion "$composeVersion" // Correlates with org.jetbrains.kotlin.android plugin in settings.gradle
}
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "oss.krtirtho.spotube"
minSdkVersion 24
targetSdkVersion flutter.targetSdkVersion
targetSdkVersion 35
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
multiDexEnabled true
@ -67,10 +76,42 @@ android {
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
debug {
signingConfig signingConfigs.release
}
}
flavorDimensions "default"
productFlavors {
nightly {
dimension "default"
resValue "string", "app_name_en", "Spotube Nightly"
applicationIdSuffix ".nightly"
versionNameSuffix "-nightly"
signingConfig signingConfigs.release
}
dev {
dimension "default"
resValue "string", "app_name_en", "Spotube Dev"
applicationIdSuffix ".dev"
versionNameSuffix "-dev"
signingConfig signingConfigs.release
}
stable {
dimension "default"
resValue "string", "app_name_en", "Spotube"
signingConfig signingConfigs.release
}
}
packagingOptions {
resources.excludes += "DebugProbesKt.bin"
}
}
@ -78,18 +119,21 @@ flutter {
source '../..'
}
def glanceVersion = "1.1.1"
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
constraints {
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version") {
because("kotlin-stdlib-jdk7 is now a part of kotlin-stdlib")
}
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version") {
because("kotlin-stdlib-jdk8 is now a part of kotlin-stdlib")
}
}
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1'
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.1.4'
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1'
// other deps so just ignore
implementation 'com.android.support:multidex:2.0.1'
implementation "androidx.glance:glance-appwidget:$glanceVersion"
implementation "androidx.glance:glance-appwidget-preview:$glanceVersion"
implementation "androidx.glance:glance-preview:$glanceVersion"
implementation "androidx.glance:glance-material3:$glanceVersion"
implementation "androidx.glance:glance-material:$glanceVersion"
implementation "androidx.work:work-runtime-ktx:2.8.1"
implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3"
implementation 'com.google.code.gson:gson:2.11.0'
}

View File

@ -1 +1,59 @@
#Flutter Wrapper
# -keep class io.flutter.app.** { *; }
-keep class io.flutter.plugin.** { *; }
-keep class io.flutter.util.** { *; }
-keep class io.flutter.view.** { *; }
# -keep class io.flutter.** { *; }
-keep class io.flutter.plugins.** { *; }
-keep class de.prosiebensat1digital.** { *; }
-keep class androidx.lifecycle.DefaultLifecycleObserver
-keepnames class kotlinx.serialization.** { *; }
-keepnames class oss.krtirtho.spotube.glance.models.** { *; }
-keep @kotlinx.serialization.Serializable class *
-keepclassmembers class ** {
@kotlinx.serialization.* <fields>;
}
## We don't need beans
-dontwarn java.beans.BeanDescriptor
-dontwarn java.beans.BeanInfo
-dontwarn java.beans.IntrospectionException
-dontwarn java.beans.Introspector
-dontwarn java.beans.PropertyDescriptor
## Rules for NewPipeExtractor
-keep class org.schabi.newpipe.extractor.timeago.patterns.** { *; }
-keep class org.mozilla.javascript.** { *; }
-keep class org.mozilla.classfile.ClassFileWriter
-dontwarn org.mozilla.javascript.tools.**
-dontwarn javax.script.AbstractScriptEngine
-dontwarn javax.script.Bindings
-dontwarn javax.script.Compilable
-dontwarn javax.script.CompiledScript
-dontwarn javax.script.Invocable
-dontwarn javax.script.ScriptContext
-dontwarn javax.script.ScriptEngine
-dontwarn javax.script.ScriptEngineFactory
-dontwarn javax.script.ScriptException
-dontwarn javax.script.SimpleBindings
-dontwarn jdk.dynalink.CallSiteDescriptor
-dontwarn jdk.dynalink.DynamicLinker
-dontwarn jdk.dynalink.DynamicLinkerFactory
-dontwarn jdk.dynalink.NamedOperation
-dontwarn jdk.dynalink.Namespace
-dontwarn jdk.dynalink.NamespaceOperation
-dontwarn jdk.dynalink.Operation
-dontwarn jdk.dynalink.RelinkableCallSite
-dontwarn jdk.dynalink.StandardNamespace
-dontwarn jdk.dynalink.StandardOperation
-dontwarn jdk.dynalink.linker.GuardedInvocation
-dontwarn jdk.dynalink.linker.GuardingDynamicLinker
-dontwarn jdk.dynalink.linker.LinkRequest
-dontwarn jdk.dynalink.linker.LinkerServices
-dontwarn jdk.dynalink.linker.TypeBasedGuardingDynamicLinker
-dontwarn jdk.dynalink.linker.support.CompositeTypeBasedGuardingDynamicLinker
-dontwarn jdk.dynalink.linker.support.Guards
-dontwarn jdk.dynalink.support.ChainedCallSite

View File

@ -1,7 +1,19 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="oss.krtirtho.spotube">
<!-- Flutter needs it to communicate with the running application
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Flutter needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.INTERNET" />
<application
android:name="${applicationName}"
android:allowBackup="false"
android:fullBackupContent="false"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name_en"
android:requestLegacyExternalStorage="true"
android:usesCleartextTraffic="true">
<!-- Disable Impeller -->
<meta-data
android:name="io.flutter.embedding.android.EnableImpeller"
android:value="false" />
</application>
</manifest>

View File

@ -1,10 +1,12 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="oss.krtirtho.spotube">
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
<queries>
<!-- If your app opens https URLs -->
@ -15,49 +17,78 @@
</queries>
<application
android:name="${applicationName}"
android:allowBackup="false"
android:fullBackupContent="false"
android:label="Spotube"
android:name="${applicationName}"
android:icon="@mipmap/ic_launcher"
android:usesCleartextTraffic="true"
android:label="@string/app_name_en"
android:requestLegacyExternalStorage="true"
>
android:usesCleartextTraffic="true">
<!-- Enable Impeller -->
<!-- <meta-data
android:name="io.flutter.embedding.android.EnableImpeller"
android:value="false" /> -->
<activity
android:name="com.ryanheise.audioservice.AudioServiceActivity"
android:exported="true"
android:launchMode="singleTop"
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:exported="true"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize"
>
android:launchMode="singleInstance"
android:theme="@style/LaunchTheme"
android:windowSoftInputMode="adjustResize">
<!--
Specifies an Android theme to apply to this Activity as soon as
the Android process has started. This theme is visible to the user
while the Flutter UI initializes. After that, this theme continues
to determine the Window background behind the Flutter UI.
-->
Specifies an Android theme to apply to this Activity as soon as
the Android process has started. This theme is visible to the user
while the Flutter UI initializes. After that, this theme continues
to determine the Window background behind the Flutter UI.
-->
<meta-data
android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme"
/>
android:resource="@style/NormalTheme" />
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/*" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="spotube" />
</intent-filter>
<intent-filter>
<action android:name="es.antonborri.home_widget.action.LAUNCH" />
</intent-filter>
</activity>
<!-- AudioService Config -->
<service android:name="com.ryanheise.audioservice.AudioService"
android:foregroundServiceType="mediaPlayback"
android:exported="true">
<service
android:name="com.ryanheise.audioservice.AudioService"
android:exported="true"
android:foregroundServiceType="mediaPlayback">
<intent-filter>
<action android:name="android.media.browse.MediaBrowserService" />
</intent-filter>
</service>
<receiver android:name="com.ryanheise.audioservice.MediaButtonReceiver"
<receiver
android:name="com.ryanheise.audioservice.MediaButtonReceiver"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MEDIA_BUTTON" />
@ -65,8 +96,40 @@
</receiver>
<!-- =================== -->
<meta-data
android:name="com.google.android.gms.car.application"
android:resource="@xml/automotive_app_desc" />
<!-- Home Widget config -->
<receiver
android:name=".glance.HomePlayerWidgetReceiver"
android:exported="true">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/home_player_widget_config" />
</receiver>
<receiver
android:name="es.antonborri.home_widget.HomeWidgetBackgroundReceiver"
android:exported="true">
<intent-filter>
<action android:name="es.antonborri.home_widget.action.BACKGROUND" />
</intent-filter>
</receiver>
<service
android:name="es.antonborri.home_widget.HomeWidgetBackgroundService"
android:exported="true"
android:permission="android.permission.BIND_JOB_SERVICE" />
<!-- =================== -->
<!-- Don't delete the meta-data below.
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
<meta-data android:name="flutterEmbedding" android:value="2" />
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
<meta-data
android:name="flutterEmbedding"
android:value="2" />
</application>
</manifest>

View File

@ -0,0 +1,207 @@
package oss.krtirtho.spotube.glance
import HomeWidgetGlanceState
import HomeWidgetGlanceStateDefinition
import android.R
import android.content.Context
import android.graphics.drawable.Icon
import android.net.Uri
import android.util.Log
import androidx.compose.runtime.Composable
import androidx.compose.ui.unit.DpSize
import androidx.compose.ui.unit.dp
import androidx.glance.GlanceId
import androidx.glance.GlanceModifier
import androidx.glance.GlanceTheme
import androidx.glance.Image
import androidx.glance.ImageProvider
import androidx.glance.LocalSize
import androidx.glance.action.ActionParameters
import androidx.glance.action.actionParametersOf
import androidx.glance.action.clickable
import androidx.glance.background
import androidx.glance.appwidget.GlanceAppWidget
import androidx.glance.appwidget.SizeMode
import androidx.glance.appwidget.action.ActionCallback
import androidx.glance.appwidget.action.actionRunCallback
import androidx.glance.appwidget.background
import androidx.glance.appwidget.components.CircleIconButton
import androidx.glance.appwidget.components.Scaffold
import androidx.glance.appwidget.cornerRadius
import androidx.glance.appwidget.provideContent
import androidx.glance.background
import androidx.glance.currentState
import androidx.glance.layout.Alignment
import androidx.glance.layout.Box
import androidx.glance.layout.Column
import androidx.glance.layout.ContentScale
import androidx.glance.layout.Row
import androidx.glance.layout.Spacer
import androidx.glance.layout.fillMaxSize
import androidx.glance.layout.fillMaxWidth
import androidx.glance.layout.padding
import androidx.glance.layout.size
import androidx.glance.preview.ExperimentalGlancePreviewApi
import androidx.glance.preview.Preview
import androidx.glance.state.GlanceStateDefinition
import com.google.gson.Gson
import es.antonborri.home_widget.HomeWidgetBackgroundIntent
import es.antonborri.home_widget.actionStartActivity
import oss.krtirtho.spotube.MainActivity
import oss.krtirtho.spotube.glance.models.Track
import oss.krtirtho.spotube.glance.widgets.FlutterAssetImageProvider
import oss.krtirtho.spotube.glance.widgets.TrackDetailsView
import oss.krtirtho.spotube.glance.widgets.TrackProgress
val gson = Gson()
val serverAddressKey = ActionParameters.Key<String>("serverAddress")
class Breakpoints {
companion object {
val SMALL_SQUARE = DpSize(100.dp, 100.dp)
val HORIZONTAL_RECTANGLE = DpSize(250.dp, 100.dp)
val BIG_SQUARE = DpSize(250.dp, 250.dp)
}
}
class HomePlayerWidget : GlanceAppWidget() {
override val sizeMode = SizeMode.Responsive(
setOf(
Breakpoints.SMALL_SQUARE,
Breakpoints.HORIZONTAL_RECTANGLE,
Breakpoints.BIG_SQUARE
)
)
override val stateDefinition: GlanceStateDefinition<*>?
get() = HomeWidgetGlanceStateDefinition()
override suspend fun provideGlance(context: Context, id: GlanceId) {
provideContent {
GlanceContent(context, currentState())
}
}
@OptIn(ExperimentalGlancePreviewApi::class)
@Preview(widthDp = 100, heightDp = 100)
@Composable
private fun GlanceContent(context: Context, currentState: HomeWidgetGlanceState) {
val prefs = currentState.preferences
val size = LocalSize.current
val activeTrackStr = prefs.getString("activeTrack", null)
val isPlaying = prefs.getBoolean("isPlaying", false)
val playbackServerAddress = prefs.getString("playbackServerAddress", null) ?: ""
var activeTrack: Track? = null
if (activeTrackStr != null) {
activeTrack = gson.fromJson(activeTrackStr, Track::class.java)
}
val playIcon = Icon.createWithResource(context, R.drawable.ic_media_play);
val pauseIcon = Icon.createWithResource(context, R.drawable.ic_media_pause);
val previousIcon = Icon.createWithResource(context, R.drawable.ic_media_previous);
val nextIcon = Icon.createWithResource(context, R.drawable.ic_media_next);
GlanceTheme {
Box(
modifier = GlanceModifier
.fillMaxSize()
.cornerRadius(8.dp)
.background(
color = GlanceTheme.colors.surface.getColor(context)
)
.clickable {
actionStartActivity<MainActivity>(context)
}
,
) {
Box(
modifier = GlanceModifier
.background(
color =
GlanceTheme.colors.surface.getColor(context)
.copy(alpha = 0.5f),
)
.fillMaxSize(),
) {}
Column(
modifier = GlanceModifier.padding(top = 10.dp, start = 10.dp, end = 10.dp)
) {
Row(verticalAlignment = Alignment.Vertical.CenterVertically) {
TrackDetailsView(activeTrack)
}
Spacer(modifier = GlanceModifier.size(6.dp))
if (size != Breakpoints.SMALL_SQUARE) {
TrackProgress(prefs)
}
Spacer(modifier = GlanceModifier.size(6.dp))
Row(
modifier = GlanceModifier.fillMaxWidth(),
horizontalAlignment = Alignment.Horizontal.CenterHorizontally
) {
CircleIconButton(
imageProvider = ImageProvider(previousIcon),
contentDescription = "Previous",
onClick = actionRunCallback<PreviousAction>(
parameters = actionParametersOf(serverAddressKey to playbackServerAddress)
)
)
Spacer(modifier = GlanceModifier.size(6.dp))
CircleIconButton(
imageProvider =
if (isPlaying) ImageProvider(pauseIcon)
else ImageProvider(playIcon),
contentDescription = "Play/Pause",
onClick = actionRunCallback<PlayPauseAction>(
parameters = actionParametersOf(serverAddressKey to playbackServerAddress)
)
)
Spacer(modifier = GlanceModifier.size(6.dp))
CircleIconButton(
imageProvider = ImageProvider(nextIcon),
contentDescription = "Previous",
onClick = actionRunCallback<NextAction>(
parameters = actionParametersOf(
serverAddressKey to playbackServerAddress
)
)
)
}
}
}
}
}
}
class PlayPauseAction : InteractiveAction("toggle-playback")
class NextAction : InteractiveAction("next")
class PreviousAction : InteractiveAction("previous")
abstract class InteractiveAction(val command: String) : ActionCallback {
override suspend fun onAction(
context: Context,
glanceId: GlanceId,
parameters: ActionParameters
) {
val serverAddress = parameters[serverAddressKey] ?: ""
Log.d("HomePlayerWidget", "Sending command $command to $serverAddress")
if (serverAddress == null || serverAddress.isEmpty()) {
return
}
val backgroundIntent = HomeWidgetBackgroundIntent.getBroadcast(
context,
Uri.parse("spotube://playback/$command?serverAddress=$serverAddress")
)
backgroundIntent.send()
}
}

View File

@ -0,0 +1,7 @@
package oss.krtirtho.spotube.glance
import HomeWidgetGlanceWidgetReceiver
class HomePlayerWidgetReceiver : HomeWidgetGlanceWidgetReceiver<HomePlayerWidget>() {
override val glanceAppWidget = HomePlayerWidget()
}

View File

@ -0,0 +1,40 @@
package oss.krtirtho.spotube.glance.models
import com.google.gson.annotations.SerializedName
import kotlinx.serialization.Serializable
@Serializable
data class AlbumSimple(
@SerializedName("album_type")
val albumType: AlbumType?,
@SerializedName("available_markets")
val availableMarkets: List<Market>?,
val href: String?,
val id: String?,
val images: List<Image>?,
val name: String?,
@SerializedName("release_date")
val releaseDate: String?,
@SerializedName("release_date_precision")
val releaseDatePrecision: DatePrecision?,
val type: String?,
val uri: String?,
)
@Serializable
enum class AlbumType {
album,
single,
compilation
}
enum class DatePrecision {
year,
month,
day
}

View File

@ -0,0 +1,25 @@
package oss.krtirtho.spotube.glance.models
import com.google.gson.annotations.SerializedName
import kotlinx.serialization.Serializable
@Serializable
data class Artist(
val href: String?,
val id: String?,
val name: String?,
val type: String?,
val uri: String?,
val followers: Followers?,
val genres: List<String>?,
val images: List<Image>?,
@SerializedName("popularity")
val popularity: Int?
)
@Serializable
data class Followers(
val total: Int?
)

View File

@ -0,0 +1,10 @@
package oss.krtirtho.spotube.glance.models
import kotlinx.serialization.Serializable
@Serializable
data class Image(
val height: Int?,
val width: Int?,
val path: String,
)

View File

@ -0,0 +1,37 @@
package oss.krtirtho.spotube.glance.models
import com.google.gson.annotations.SerializedName
import kotlinx.serialization.Serializable
import kotlin.time.Duration.Companion.milliseconds
@Serializable
data class Track(
val album: AlbumSimple?, val artists: List<Artist>?,
@SerializedName("available_markets") val availableMarkets: List<Market>?,
@SerializedName("disc_number") val discNumber: Int?,
@SerializedName("duration_ms") val durationMs: Int,
val explicit: Boolean?, val href: String?, val id: String?,
@SerializedName("is_playable") val isPlayable: Boolean?,
val name: String?,
@SerializedName("popularity") val popularity: Int?,
@SerializedName("preview_url") val previewUrl: String?,
@SerializedName("track_number") val trackNumber: Int?,
val type: String?, val uri: String?
) {
val duration: kotlin.time.Duration
get() = durationMs.toLong().milliseconds
}
enum class Market {
AD, AE, AF, AG, AI, AL, AM, AO, AQ, AR, AS, AT, AU, AW, AX, AZ, BA, BB, BD, BE, BF, BG, BH, BI, BJ, BL, BM, BN, BO, BQ, BR, BS, BT, BV, BW, BY, BZ, CA, CC, CD, CF, CG, CH, CI, CK, CL, CM, CN, CO, CR, CU, CV, CW, CX, CY, CZ, DE, DJ, DK, DM, DO, DZ, EC, EE, EG, EH, ER, ES, ET, FI, FJ, FK, FM, FO, FR, GA, GB, GD, GE, GF, GG, GH, GI, GL, GM, GN, GP, GQ, GR, GS, GT, GU, GW, GY, HK, HM, HN, HR, HT, HU, ID, IE, IL, IM, IN, IO, IQ, IR, IS, IT, JE, JM, JO, JP, KE, KG, KH, KI, KM, KN, KP, KR, KW, KY, KZ, LA, LB, LC, LI, LK, LR, LS, LT, LU, LV, LY, MA, MC, MD, ME, MF, MG, MH, MK, ML, MM, MN, MO, MP, MQ, MR, MS, MT, MU, MV, MW, MX, MY, MZ, NA, NC, NE, NF, NG, NI, NL, NO, NP, NR, NU, NZ, OM, PA, PE, PF, PG, PH, PK, PL, PM, PN, PR, PS, PT, PW, PY, QA, RE, RO, RS, RU, RW, SA, SB, SC, SD, SE, SG, SH, SI, SJ, SK, SL, SM, SN, SO, SR, SS, ST, SV, SX, SY, SZ, TC, TD, TF, TG, TH, TJ, TK, TL, TM, TN, TO, TR, TT, TV, TW, TZ, UA, UG, UM, US, UY, UZ, VA, VC, VE, VG, VI, VN, VU, WF, WS, XK, YE, YT, ZA, ZM, ZW,
}

View File

@ -0,0 +1,14 @@
package oss.krtirtho.spotube.glance.widgets
import android.graphics.BitmapFactory
import android.util.Base64
import androidx.glance.ImageProvider
@Suppress("FunctionName")
fun Base64ImageProvider(base64: String): ImageProvider {
var bytes = Base64.decode(base64, Base64.DEFAULT);
var bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.size);
return ImageProvider(bitmap)
}

View File

@ -0,0 +1,14 @@
package oss.krtirtho.spotube.glance.widgets
import android.content.Context
import android.graphics.BitmapFactory
import androidx.glance.ImageProvider
@Suppress("FunctionName")
fun FlutterAssetImageProvider(context: Context, path: String): ImageProvider {
var inputStream = context.assets.open("flutter_assets/$path")
return ImageProvider(
BitmapFactory.decodeStream(inputStream)
)
}

View File

@ -0,0 +1,78 @@
package oss.krtirtho.spotube.glance.widgets
import android.graphics.BitmapFactory
import android.net.Uri
import android.util.Log
import androidx.compose.runtime.Composable
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.glance.GlanceModifier
import androidx.glance.GlanceTheme
import androidx.glance.Image
import androidx.glance.ImageProvider
import androidx.glance.LocalContext
import androidx.glance.LocalSize
import androidx.glance.appwidget.cornerRadius
import androidx.glance.layout.Alignment
import androidx.glance.layout.Row
import androidx.glance.layout.Column
import androidx.glance.layout.ContentScale
import androidx.glance.layout.Spacer
import androidx.glance.layout.size
import androidx.glance.text.FontWeight
import androidx.glance.text.Text
import androidx.glance.text.TextStyle
import oss.krtirtho.spotube.glance.Breakpoints
import oss.krtirtho.spotube.glance.models.Track
@Composable
fun TrackDetailsView(activeTrack: Track?) {
val context = LocalContext.current
val size = LocalSize.current
val artistStr = activeTrack?.artists?.map { it.name }?.joinToString(", ") ?: "<No Artist>"
val imgLocalPath = activeTrack?.album?.images?.get(0)?.path;
val title = activeTrack?.name ?: "<No Track>"
Image(
provider =
if (imgLocalPath == null)
ImageProvider(
BitmapFactory.decodeResource(
context.resources,
android.R.drawable.ic_delete
)
)
else ImageProvider(BitmapFactory.decodeFile(imgLocalPath)),
contentDescription = "Album Art",
modifier = GlanceModifier.cornerRadius(8.dp)
.size(
if (size.height < 200.dp) 50.dp
else 100.dp
),
contentScale = ContentScale.Fit
)
Spacer(modifier = GlanceModifier.size(6.dp))
Column {
Text(
text = title,
style = TextStyle(
fontSize = 16.sp,
fontWeight = FontWeight.Bold,
color = GlanceTheme.colors.onBackground
),
)
if (size != Breakpoints.SMALL_SQUARE) {
Spacer(modifier = GlanceModifier.size(6.dp))
Text(
text = artistStr,
style = TextStyle(
fontSize = 14.sp,
color = GlanceTheme.colors.onBackground
),
)
}
}
}

View File

@ -0,0 +1,77 @@
package oss.krtirtho.spotube.glance.widgets
import android.content.SharedPreferences
import androidx.compose.runtime.Composable
import androidx.compose.ui.unit.dp
import androidx.glance.GlanceModifier
import androidx.glance.GlanceTheme
import androidx.glance.LocalSize
import androidx.glance.appwidget.LinearProgressIndicator
import androidx.glance.layout.Column
import androidx.glance.layout.Row
import androidx.glance.layout.Spacer
import androidx.glance.layout.fillMaxWidth
import androidx.glance.layout.size
import androidx.glance.text.Text
import androidx.glance.text.TextStyle
import kotlin.math.max
import kotlin.time.Duration
import kotlin.time.Duration.Companion.seconds
import oss.krtirtho.spotube.glance.Breakpoints
fun Duration.format(): String {
return this.toComponents { hour, minutes, seconds, nanoseconds ->
var paddedSeconds = seconds.toString().padStart(2, '0')
var paddedMinutes = minutes.toString().padStart(2, '0')
var paddedHour = hour.toString().padStart(2, '0')
if (hour == 0L) {
"$paddedMinutes:$paddedSeconds"
} else {
"$paddedHour:$paddedMinutes:$paddedSeconds"
}
}
}
@Composable
fun TrackProgress(prefs: SharedPreferences) {
val size = LocalSize.current
val position = prefs.getInt("position", 0).seconds
var duration = prefs.getInt("duration", 0).seconds
var progress = position.inWholeSeconds.toFloat() / max(duration.inWholeSeconds.toFloat(), 1.0f)
var textStyle =
TextStyle(
color = GlanceTheme.colors.onBackground,
)
if (size == Breakpoints.HORIZONTAL_RECTANGLE) {
Row(modifier = GlanceModifier.fillMaxWidth()) {
Text(text = position.format(), style = textStyle)
Spacer(modifier = GlanceModifier.size(6.dp))
LinearProgressIndicator(
progress = progress,
modifier = GlanceModifier.defaultWeight(),
color = GlanceTheme.colors.primary,
backgroundColor = GlanceTheme.colors.primaryContainer,
)
Spacer(modifier = GlanceModifier.size(6.dp))
Text(text = duration.format(), style = textStyle)
}
} else {
Column(modifier = GlanceModifier.fillMaxWidth()) {
LinearProgressIndicator(
progress = progress,
modifier = GlanceModifier.fillMaxWidth(),
color = GlanceTheme.colors.primary,
backgroundColor = GlanceTheme.colors.primaryContainer,
)
Spacer(modifier = GlanceModifier.size(6.dp))
Row(modifier = GlanceModifier.fillMaxWidth()) {
Text(text = position.format(), style = textStyle)
Spacer(modifier = GlanceModifier.defaultWeight())
Text(text = duration.format(), style = textStyle)
}
}
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.2 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 91 KiB

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 214 KiB

After

Width:  |  Height:  |  Size: 162 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 253 KiB

After

Width:  |  Height:  |  Size: 247 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 MiB

After

Width:  |  Height:  |  Size: 3.0 MiB

View File

@ -6,7 +6,7 @@
<item>
<bitmap android:gravity="center" android:src="@drawable/splash"/>
</item>
<item>
<item android:bottom="0dp">
<bitmap android:gravity="bottom" android:src="@drawable/branding"/>
</item>
</layer-list>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 91 KiB

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 214 KiB

After

Width:  |  Height:  |  Size: 162 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 94 KiB

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 253 KiB

After

Width:  |  Height:  |  Size: 247 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 100 KiB

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 MiB

After

Width:  |  Height:  |  Size: 3.0 MiB

View File

@ -6,7 +6,7 @@
<item>
<bitmap android:gravity="center" android:src="@drawable/splash"/>
</item>
<item>
<item android:bottom="0dp">
<bitmap android:gravity="bottom" android:src="@drawable/branding"/>
</item>
</layer-list>

View File

@ -1,6 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@drawable/ic_launcher_foreground"/>
<monochrome android:drawable="@drawable/ic_launcher_monochrome"/>
<foreground>
<inset
android:drawable="@drawable/ic_launcher_foreground"
android:inset="16%" />
</foreground>
</adaptive-icon>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.4 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.9 KiB

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View File

@ -5,6 +5,10 @@
<!-- Show a splash screen on the activity. Automatically removed when
Flutter draws its first frame -->
<item name="android:windowBackground">@drawable/launch_background</item>
<item name="android:forceDarkAllowed">false</item>
<item name="android:windowFullscreen">false</item>
<item name="android:windowDrawsSystemBarBackgrounds">false</item>
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
</style>
<!-- Theme applied to the Android Window as soon as the process has started.
This theme determines the color of the Android Window while your

View File

@ -0,0 +1,3 @@
<automotiveApp>
<uses name="media" />
</automotiveApp>

View File

@ -0,0 +1,7 @@
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:initialLayout="@layout/glance_default_loading_layout"
android:minWidth="100dp"
android:minHeight="100dp"
android:resizeMode="horizontal|vertical"
android:updatePeriodMillis="10000">
</appwidget-provider>

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Some files were not shown because too many files have changed in this diff Show More