Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
146 commits
Select commit Hold shift + click to select a range
7491175
feat: add metadata api service and models
KRTirtho May 1, 2025
9a861b9
chore: add proper error handling
KRTirtho May 1, 2025
8ac30c0
feat(metadata-plugin): add pagination support, feed and playlist CRUD…
KRTirtho May 2, 2025
abe04b2
feat(metadata-plugin): add local storage api
KRTirtho May 2, 2025
f4306ad
feat: add webviiew, totp and setInterval apis for plugins
KRTirtho May 7, 2025
bb0afa5
feat: enhance local storage and webview APIs with improved error hand…
KRTirtho May 9, 2025
67713c6
feat(metadata_plugin): add logout method
KRTirtho May 9, 2025
2d6fe88
chore: metadata
KRTirtho Jun 13, 2025
69c0333
feat: update plugin configuration with more fields
KRTirtho Jun 13, 2025
7a6821f
feat: implement metadata plugins based on hetu
KRTirtho Jun 14, 2025
3306f21
feat: update models to match hetu_spotube_plugin signature
KRTirtho Jun 14, 2025
f8211cb
feat: add user endpoint calls in metadata and paginated async notifiers
KRTirtho Jun 14, 2025
a9ba258
feat: add playlist endpoint and providers
KRTirtho Jun 14, 2025
326d821
feat: add albums metadata endpoint and provider
KRTirtho Jun 14, 2025
758b0bc
feat: add artist and album providers
KRTirtho Jun 14, 2025
4b09f6c
refactor: use metadata album & playlist object for card and pages
KRTirtho Jun 15, 2025
b8cae56
refactor: use metadata artist object for artist card and artist page
KRTirtho Jun 15, 2025
7569c37
refactor: home browse and browse section
KRTirtho Jun 15, 2025
fcc05a4
refactor: search to use metadata plugin
KRTirtho Jun 16, 2025
b979a6e
feat: add track endpoint for metadata service
KRTirtho Jun 16, 2025
4e6db8b
refactor: move from Track to SpotubeTrackObject and use TrackSources …
KRTirtho Jun 18, 2025
5f47dc3
refactor: remove old spotify.dart types and custom spotube metadata t…
KRTirtho Jun 19, 2025
d898d45
refactor: add database schema migrations
KRTirtho Jun 19, 2025
1eb0b5f
chore: uncomment important lines of code
KRTirtho Jun 19, 2025
86e55f7
chore: fix connect freezed model not working
KRTirtho Jun 19, 2025
41cc79b
chore: make playback working
KRTirtho Jun 19, 2025
aa65bf2
refactor: use metadata plugin authentication instead
KRTirtho Jun 19, 2025
53ad5bd
feat: remove green corp names formally
KRTirtho Jun 19, 2025
1538dc6
chore: fix macos issues
KRTirtho Jun 21, 2025
ee71dbf
chore: fix login not working and source quality not good when high qu…
KRTirtho Jun 21, 2025
cb97f43
chore: fix android build not working
KRTirtho Jun 21, 2025
5b457fc
chore: fix streaming quality is worse then available
KRTirtho Jun 21, 2025
5be4747
feat(metadata): add plugin form
KRTirtho Jul 3, 2025
412c427
chore: fix bad certificate error
KRTirtho Jul 5, 2025
5573deb
website: bring back download buttons for Nightly version
KRTirtho Jul 11, 2025
7de6423
feat: add support for entity specific search
KRTirtho Jul 13, 2025
d2827a5
chore: upgrade to flutter 3.32.5
KRTirtho Jul 13, 2025
f23a078
chore: fix spotube logo color on light mode
KRTirtho Jul 16, 2025
90f9cc2
feat: enhance image handling
KRTirtho Jul 16, 2025
e83a4bb
feat: add support for automatic plugin repository from github and cod…
KRTirtho Jul 16, 2025
2f304fa
feat: use isolate for youtube_explode engine
KRTirtho Jul 18, 2025
cdc64e4
feat: Add repository and plugin API version fields to metadata plugins
KRTirtho Jul 18, 2025
3e7b36f
feat: update new pipe version
KRTirtho Jul 18, 2025
d2e0dc1
chore: re-enable endless playback
KRTirtho Jul 19, 2025
60f0320
fix: endless playback not working
KRTirtho Jul 19, 2025
cfda46e
chore: fix saving tracks not working
KRTirtho Jul 19, 2025
0a604a9
chore: fix queue order
KRTirtho Jul 19, 2025
92dde72
chore: SafeArea
KRTirtho Jul 20, 2025
efdf091
fix(android): NewPipe invalid search content filters
KRTirtho Jul 20, 2025
c9556c2
chore: fix playback issues
KRTirtho Jul 21, 2025
7309e90
feat(metadata): add plugin update checker and dialog for available up…
KRTirtho Jul 21, 2025
53ef9e1
fix: make YoutubeExplode engine faster
KRTirtho Jul 22, 2025
3b21b05
chore: fix SliverLayoutBuilder rebuilds too much
KRTirtho Jul 22, 2025
3a5ddd6
feat: optimize track options and related artists
KRTirtho Jul 23, 2025
846fa67
chore: fix changing default plugin doesn't wortk
KRTirtho Jul 23, 2025
75bdbec
chore: fix track options causing track page exception
KRTirtho Jul 25, 2025
3bb7f0d
refactor: change updater to core
KRTirtho Aug 1, 2025
1e61bca
feat: add plugin scrobbling support and support button
KRTirtho Aug 1, 2025
93d6e06
chore: improve image display by adding rounded corners to plugin logos
KRTirtho Aug 1, 2025
066fe2a
fix: create and delete playlist not working
KRTirtho Aug 1, 2025
eb3fcfd
chore: add animation for browse sections loadingb
KRTirtho Aug 1, 2025
2bb91fe
Merge pull request #2746 from KRTirtho/code-greedy-green-corp-removal
KRTirtho Aug 2, 2025
fd3ddfe
Merge branch 'dev' into website
KRTirtho Aug 2, 2025
49e2d1b
website: remove vercel trashes
KRTirtho Aug 2, 2025
dffd494
Revert "website: remove vercel trashes"
KRTirtho Aug 2, 2025
7a63050
website: add downloads pages
KRTirtho Aug 4, 2025
ee7d0cf
website: markdown mdx support and wrap up other pages
KRTirtho Aug 4, 2025
f228937
website: hide older releases before 4.0.2
KRTirtho Aug 4, 2025
a734ded
website: add documentation structure and navigation components
KRTirtho Aug 4, 2025
7bb69c0
website: write into and sidebar and developing plugins pages
KRTirtho Aug 8, 2025
b3f6824
docs: add plugin create guide
KRTirtho Aug 11, 2025
8bdbe7d
docs: add detailed documentation for plugin endpoints and methods
KRTirtho Aug 14, 2025
fbd7b77
docs: add detailed documentation for BrowseEndpoint, CoreEndpoint, an…
KRTirtho Aug 14, 2025
858cbd1
docs: update model documentation and add new model files for Spotube …
KRTirtho Aug 14, 2025
032309a
feat: enhance markdown configuration and styling with rehype plugins …
KRTirtho Aug 14, 2025
0e34057
docs: merge some endpoints together to reduce too much elements on th…
KRTirtho Aug 14, 2025
30fd4ac
docs: add plugin API docs
KRTirtho Aug 14, 2025
3f18f35
docs: add search bar and libraries page
KRTirtho Aug 14, 2025
0a153fe
docs: fix invalid links and redirection
KRTirtho Aug 14, 2025
edcd784
website: update button styles and enhance background in global CSS
KRTirtho Aug 15, 2025
a2894db
website: add ads and mobile screen adaptability
KRTirtho Aug 15, 2025
dbba556
website: fix astro not compiling because it can't detect server-side …
KRTirtho Aug 15, 2025
089a344
website: add SEO metadata
KRTirtho Aug 15, 2025
71bcf35
website: add back warning
KRTirtho Aug 15, 2025
92c05a5
website: migrate to astro and add plugin docs
KRTirtho Aug 15, 2025
c615d48
Merge branch 'astro-website' into website
KRTirtho Aug 15, 2025
5add53e
fix: local track not working and images of local not showing up
KRTirtho Aug 16, 2025
ea7138e
chore: remove print
KRTirtho Aug 16, 2025
48490cf
chore(windows): fix Runner.rc not getting version information
KRTirtho Aug 16, 2025
b4f8d2d
chore: upgrade packages
KRTirtho Aug 18, 2025
c0dcc87
chore: upgrade hetu_spotube_plugin
KRTirtho Aug 19, 2025
08d1c98
refactor: move scrobbler to their own place
KRTirtho Aug 19, 2025
7037145
feat: add ErrorBox and NoDefaultMetadataPlugin components
KRTirtho Aug 19, 2025
0823629
chore: upgrade dependencies
KRTirtho Aug 23, 2025
308c417
cd: use macos 14 instead 15
KRTirtho Aug 25, 2025
66cae6c
chore: upgrade Flutter version
KRTirtho Aug 29, 2025
c0d50d4
fix: use plugin author and name as slug
KRTirtho Aug 29, 2025
7f30ae8
chore: disable caching of plugin download file
KRTirtho Aug 29, 2025
412f3dd
chore: optimize assets and app size
KRTirtho Aug 29, 2025
dddaa5a
chore: upgrade new pipe extractor
KRTirtho Aug 30, 2025
2a08530
fix: local playback not working for tracks with special # (hashtag) c…
KRTirtho Aug 30, 2025
e2c0dde
fix: inaccessible streaming url causing rapid skips
KRTirtho Sep 2, 2025
b248f90
chore: remove log in TrackSourceQuery.parseUri
KRTirtho Sep 2, 2025
ea329f4
fix(yt): fallback to different search result if all streaming url is …
KRTirtho Sep 2, 2025
aee2c92
chore: avoid checking stream accessibility all the time
KRTirtho Sep 3, 2025
005355e
chore(translation): add l10n support for new metadata plugin pages
KRTirtho Sep 3, 2025
345c6ac
chore: fix pagination for liked tracks and saved albums not working
KRTirtho Sep 5, 2025
f870e12
fix(playback): skip network requests if cached file already exists
KRTirtho Sep 5, 2025
83172f1
chore: fix saving/removing tracks, albums, artists and playlists from…
KRTirtho Sep 5, 2025
d22b534
chore: fix pagination not working
KRTirtho Sep 5, 2025
2e48ac3
chore(translation): update missing translations
KRTirtho Sep 5, 2025
69d50ee
chore: fix artist top tracks play button not showing loading indicator
KRTirtho Sep 5, 2025
a370166
chore: add metadata plugin version
KRTirtho Sep 5, 2025
4d57b13
cd: use xcode 16.2
KRTirtho Sep 5, 2025
6940e92
chore: system tray icon and pagination not working
KRTirtho Sep 5, 2025
469a76d
fix: yt-dlp playback not working and add partial support for HLS stre…
KRTirtho Sep 5, 2025
a4162dc
chore: upgrade drift schema for new plugin metadata fields
KRTirtho Sep 5, 2025
0d6d482
chore: build runner error
KRTirtho Sep 5, 2025
db22b4f
chore: syntax errors
KRTirtho Sep 5, 2025
90493f0
chore: add changelog generator config
KRTirtho Sep 5, 2025
878a441
fix: windows webview2 environment permission issue
KRTirtho Sep 6, 2025
43ddf90
docs: remove legal notice warning
KRTirtho Sep 7, 2025
7b21eca
fix(playback): play not fetching full playlist if playlist is too long
KRTirtho Sep 8, 2025
4a07945
fix(track_options): tapping on option doesn't close the menu
KRTirtho Sep 8, 2025
58dc80a
fix(playback): alternative track sources switch not working
KRTirtho Sep 8, 2025
7c49561
chore: allow for any libjsoncpp
KRTirtho Sep 8, 2025
aeb8caf
translation: add Traditional Chinese translation (#2762)
510208 Sep 8, 2025
84f119e
translation: fix Japanese translations (#2732)
maboroshin Sep 8, 2025
49db820
chore: add support for language dialects
KRTirtho Sep 8, 2025
719229b
chore: add gap between metadata plugin
KRTirtho Sep 8, 2025
3599a43
docs: Removed Google Play Store link from readme file (#2638)
lori28167 Sep 8, 2025
216fdad
chore: fix dependency issues
KRTirtho Sep 8, 2025
cbbd0a2
chore: update podfile
KRTirtho Sep 8, 2025
a299a97
doc: compilation with fvm (#2254)
richard-hajek Sep 8, 2025
eadf2d9
translation: correction of the dutch language (#1306)
Stephan-P Sep 8, 2025
afe0bea
docs: add updated screenshots
KRTirtho Sep 8, 2025
49c04af
chore: add translation attribute for conventional-commit
KRTirtho Sep 8, 2025
ecc0bdc
chore: slate color by default
KRTirtho Sep 8, 2025
9471e00
fix(ui): lyrics white text in white background and small player buttons
KRTirtho Sep 8, 2025
151a440
chore: bump version to v5 and generate changelogs
KRTirtho Sep 8, 2025
9190af9
chore: fix shuffling not working
KRTirtho Sep 9, 2025
8ff90ba
chore: fix not alternative source not working
KRTirtho Sep 9, 2025
b24dcd2
chore: show loading indicator for alternative sourced track
KRTirtho Sep 9, 2025
4ed40d9
chore: remove print
KRTirtho Sep 9, 2025
70970f6
chore: fix connect play playlist/album and clear queue not working
KRTirtho Sep 11, 2025
b8ecd75
chore: fix plugin import not working inside flatpak
KRTirtho Sep 11, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
7 changes: 1 addition & 6 deletions .env.example
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
# The format:
# SPOTIFY_SECRETS=clintId1:clientSecret1,clientId2:clientSecret2
SPOTIFY_SECRETS=$SPOTIFY_SECRETS

# 0 or 1
# 0 = disable
# 1 = enable
Expand All @@ -13,5 +9,4 @@ LASTFM_API_SECRET=$LASTFM_API_SECRET
# Release channel. Can be: nightly, stable
RELEASE_CHANNEL=$RELEASE_CHANNEL

HIDE_DONATIONS=$HIDE_DONATIONS
DISABLE_SPOTIFY_IMAGES=$DISABLE_SPOTIFY_IMAGES
HIDE_DONATIONS=$HIDE_DONATIONS
2 changes: 1 addition & 1 deletion .fvm/fvm_config.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
"flutterSdkVersion": "3.29.2"
"flutterSdkVersion": "3.35.2"
}
2 changes: 1 addition & 1 deletion .fvmrc
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
"flutter": "3.29.2",
"flutter": "3.35.2",
"flavors": {}
}
3 changes: 1 addition & 2 deletions .github/workflows/pr-lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ on:
pull_request:

env:
FLUTTER_VERSION: 3.29.2
FLUTTER_VERSION: 3.35.2

jobs:
lint:
Expand All @@ -21,7 +21,6 @@ jobs:
run: |
envsubst < .env.example > .env
env:
SPOTIFY_SECRETS: xxx:xxx
ENABLE_UPDATE_CHECK: true
LASTFM_API_KEY: xxx
LASTFM_API_SECRET: xxx
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/spotube-release-binary.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ on:
description: Dry run without uploading to release

env:
FLUTTER_VERSION: 3.29.2
FLUTTER_VERSION: 3.35.2
FLUTTER_CHANNEL: master

permissions:
Expand Down Expand Up @@ -56,7 +56,7 @@ jobs:
files: |
dist/Spotube-windows-x86_64.nupkg
dist/Spotube-windows-x86_64-setup.exe
- os: macos-latest
- os: macos-14
platform: ios
arch: all
files: |
Expand Down Expand Up @@ -95,7 +95,7 @@ jobs:
if: ${{matrix.platform == 'ios'}}
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: "16.1"
xcode-version: "16.2"

- name: Install ${{matrix.platform}} dependencies
run: |
Expand Down
10 changes: 5 additions & 5 deletions .metadata
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
# This file should be version controlled and should not be manually edited.

version:
revision: "300451adae589accbece3490f4396f10bdf15e6e"
revision: "d7b523b356d15fb81e7d340bbe52b47f93937323"
channel: "stable"

project_type: app
Expand All @@ -13,11 +13,11 @@ project_type: app
migration:
platforms:
- platform: root
create_revision: 300451adae589accbece3490f4396f10bdf15e6e
base_revision: 300451adae589accbece3490f4396f10bdf15e6e
create_revision: d7b523b356d15fb81e7d340bbe52b47f93937323
base_revision: d7b523b356d15fb81e7d340bbe52b47f93937323
- platform: windows
create_revision: 300451adae589accbece3490f4396f10bdf15e6e
base_revision: 300451adae589accbece3490f4396f10bdf15e6e
create_revision: d7b523b356d15fb81e7d340bbe52b47f93937323
base_revision: d7b523b356d15fb81e7d340bbe52b47f93937323

# User provided section

Expand Down
11 changes: 11 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,17 @@
"dev"
]
},
{
"name": "spotube (mobile-skia)",
"type": "dart",
"request": "launch",
"program": "lib/main.dart",
"args": [
"--flavor",
"dev",
"--no-enable-impeller"
]
},
{
"name": "spotube (profile)",
"type": "dart",
Expand Down
3 changes: 2 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
"ambiguate",
"Amoled",
"Buildless",
"configurators",
"danceability",
"fuzzywuzzy",
"gapless",
Expand All @@ -29,5 +30,5 @@
"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.29.2"
"dart.flutterSdkPath": ".fvm/versions/3.35.2"
}
63 changes: 63 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,68 @@
# Changelog

## [5.0.0](https://github.com/KRTirtho/spotube/compare/v4.0.2...v5.0.0) (2025-09-08)

### Features

- Add ISRC track search for YouTube ([#2594](https://github.com/KRTirtho/spotube/issues/2594))
- Add new icons #2676 by @alexio-dev ([#2678](https://github.com/KRTirtho/spotube/issues/2678))
- Add connect confirmation dialog
- Add metadata api service and models
- **metadata-plugin**: Add pagination support, feed and playlist CRUD endpoints
- **metadata-plugin**: Add local storage api
- Add webview, totp and setInterval apis for plugins
- Enhance local storage and webview APIs with improved error handling and resource management
- **metadata_plugin**: Add logout method
- Update plugin configuration with more fields
- Implement metadata plugins based on hetu
- Update models to match hetu_spotube_plugin signature
- Add user endpoint calls in metadata and paginated async notifiers
- Add playlist endpoint and providers
- Add albums metadata endpoint and provider
- Add artist and album providers
- Add track endpoint for metadata service
- Remove green corp names formally
- **metadata**: Add plugin form
- Add support for entity specific search
- Enhance image handling
- Add support for automatic plugin repository from github and codeberg
- Use isolate for youtube_explode engine
- Add repository and plugin API version fields to metadata plugins
- Update new pipe version
- **metadata**: Add plugin update checker and dialog for available updates
- Optimize track options and related artists
- Add plugin scrobbling support and support button
- Add ErrorBox and NoDefaultMetadataPlugin components

### Bug Fixes

- Calling /track/:streamId endpoint causes active sourced track to be anything
- **mobile**: Dialogs in bottom sheet are not opening
- Default accent color is orange but it shows blue in settings
- Artist images are not loading up
- CVE: Remote path traversal through websocket when devices are on same network
- Endless playback not working
- **android**: NewPipe invalid search content filters
- Make YoutubeExplode engine faster
- Create and delete playlist not working
- Local track not working and images of local not showing up
- Local playback not working for tracks with special # (hashtag) characters
- Inaccessible streaming url causing rapid skips
- **yt**: Fallback to different search result if all streaming url is inaccessible
- **playback**: Skip network requests if cached file already exists
- Yt-dlp playback not working and add partial support for HLS streaming
- Windows webview2 environment permission issue
- **playback**: Play not fetching full playlist if playlist is too long
- **track_options**: Tapping on option doesn't close the menu
- **playback**: Alternative track sources switch not working
- **ui**: Lyrics white text in white background and small player buttons

### Translation

- Add Traditional Chinese translation ([#2762](https://github.com/KRTirtho/spotube/issues/2762))
- Fix Japanese translations ([#2732](https://github.com/KRTirtho/spotube/issues/2732))
- Correction of the dutch language ([#1306](https://github.com/KRTirtho/spotube/issues/1306))

## [4.0.2](https://github.com/krtirtho/spotube/compare/v4.0.1...v4.0.2) (2025-03-16)

### Bug Fixes
Expand Down
6 changes: 3 additions & 3 deletions CONTRIBUTION.md
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ Enhancement suggestions are tracked as [GitHub issues](https://github.com/KRTirt

Do the following:

- Download the latest Flutter SDK (>=3.16.0) & enable desktop support
- Install [Dart](https://dart.dev/get-dart) and [fvm](https://fvm.app/documentation/getting-started/installation)
- Install Development dependencies in linux
- Debian (>=12/Bookworm)/Ubuntu
```bash
Expand All @@ -138,11 +138,11 @@ Do the following:
- 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 (dev) & we'll review your code
Expand Down
7 changes: 5 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ 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}-${PKG_ARCH}.tar.xz -C $(TEMP_DIR) .\
&& rm -rf $(TEMP_DIR)
Expand Down Expand Up @@ -52,4 +52,7 @@ dmg:
if [ -f dist/Spotube-macos-universal.dmg ];\
then rm dist/Spotube-macos-universal.dmg;\
fi &&\
appdmg appdmg.json dist/Spotube-macos-universal.dmg
appdmg appdmg.json dist/Spotube-macos-universal.dmg

changelog:
git-cliff --unreleased
Loading