Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
36eb81e
feat: migrate to new Android KMP structure
maxrave-dev Jan 4, 2026
e31e1e5
chore: add desktop mini player window skeleton
spiicez21 Jan 5, 2026
877face
chore: update .gitignore to include dev files
spiicez21 Jan 5, 2026
682b96f
feat: add resizable always-on-top mini player window
spiicez21 Jan 5, 2026
0532088
feat: implement adaptive layouts for mini player based on window size
spiicez21 Jan 5, 2026
1709e61
feat: add smooth animations and hover effects to mini player
spiicez21 Jan 5, 2026
8f2beb9
feat: implement toggle functionality for desktop mini player
spiicez21 Jan 5, 2026
3187525
feat: add logging to toggleMiniPlayer function for better state tracking
spiicez21 Jan 5, 2026
a70baf6
feat: add empty state and keyboard shortcuts to mini player window
spiicez21 Jan 5, 2026
56e27f0
feat: enhance mini player with close button and drag functionality
spiicez21 Jan 5, 2026
285c713
feat: implement drag functionality for mini player and make window tr…
spiicez21 Jan 6, 2026
590587c
feat: refine mini player drag handle size and add minimum window size…
spiicez21 Jan 6, 2026
0915db5
feat: add like and volume buttons to mini player with responsive layo…
spiicez21 Jan 6, 2026
2b81136
feat: add volume control and like button functionality to mini player
spiicez21 Jan 6, 2026
9f6fb7d
feat: fix playlist is empty when download local playlist
maxrave-dev Jan 7, 2026
c5c4804
Merge pull request #1601 from maxrave-dev/migrate-new-android-kmp
maxrave-dev Jan 7, 2026
99b657c
feat: fix build error JVM
maxrave-dev Jan 7, 2026
cf76d32
Merge remote-tracking branch 'origin/main' into v1.0.2/tracking
maxrave-dev Jan 8, 2026
30db4bc
feat: add analytics repository
maxrave-dev Jan 8, 2026
3bb6b89
feat: add local tracking to setting
maxrave-dev Jan 8, 2026
e7cc88a
feat: enhance analytics tracking with new event_artist entity and rel…
maxrave-dev Jan 9, 2026
f2b8026
feat: done local tracking
maxrave-dev Jan 11, 2026
774d499
Merge pull request #1610 from maxrave-dev/v1.0.2/tracking
maxrave-dev Jan 11, 2026
069175f
feat: init auto backup
maxrave-dev Jan 12, 2026
363f92b
Merge remote-tracking branch 'upstream/main' into feature/desktop-min…
spiicez21 Jan 13, 2026
1acbe28
feat: update backup settings and improve string formatting
maxrave-dev Jan 13, 2026
594221a
Merge pull request #1616 from maxrave-dev/v1.0.2/auto-backup
maxrave-dev Jan 13, 2026
cdfb6ad
Merge remote-tracking branch 'origin/dev' into feature/desktop-mini-p…
maxrave-dev Jan 13, 2026
99397cc
Merge pull request #1614 from spiicez21/feature/desktop-mini-player
maxrave-dev Jan 13, 2026
e46c7c2
feat: add analytics tracking features and UI components for top artis…
maxrave-dev Jan 13, 2026
d2bdc7b
docs: update README to acknowledge contributors with a badge
maxrave-dev Jan 14, 2026
efc771c
feat: add AppImage packaging support and create desktop entry for Sim…
maxrave-dev Jan 14, 2026
c07a386
feat: add target formats for macOS and Windows packaging in build con…
maxrave-dev Jan 14, 2026
6f0a5fe
feat: add installation step for libfuse2 in AppImage packaging workflow
maxrave-dev Jan 14, 2026
263f8e8
feat: fix rich sync in external windows
maxrave-dev Jan 14, 2026
5969a3f
feat: refactor AppImage packaging process to use ProcessBuilder
maxrave-dev Jan 15, 2026
d913435
feat: add voting functionality for SimpMusic lyrics and translated ly…
maxrave-dev Jan 15, 2026
1efac54
feat: enhance timestamp regex to support three-digit milliseconds in …
maxrave-dev Jan 16, 2026
9c7276e
feat: update packaging formats and dependencies, enhance README for L…
maxrave-dev Jan 17, 2026
ab1cf3e
feat: disable proguard msc
maxrave-dev Jan 17, 2026
928d9e8
feat: fix voting functionality for SimpMusic lyrics
maxrave-dev Jan 18, 2026
807bb63
feat: update ProGuard rules to include re2j library and suppress warn…
maxrave-dev Jan 18, 2026
45ee42b
feat: fix spotify canvas
maxrave-dev Jan 18, 2026
d1cfc1c
feat: update string
maxrave-dev Jan 19, 2026
0496a43
feat: update Spotify login URL validation regex
maxrave-dev Jan 19, 2026
4da7247
feat: fix spotify login crash
maxrave-dev Jan 20, 2026
872e50f
feat: update artifact paths in android-release.yml
maxrave-dev Jan 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ max_line_length = 150
tab_width = 4
ktlint_function_naming_ignore_when_annotated_with = Composable
ktlint_standard_no-wildcard-imports = disabled
ktlint_standard_no-trailing-spaces = disabled
ktlint_standard_blank-line-between-when-conditions = disabled

[*.md]
generated_code = true
Expand Down
117 changes: 100 additions & 17 deletions .github/workflows/android-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,6 @@ name: Build APK for Release (Full & FOSS) && Desktop app release

on:
workflow_dispatch:
pull_request:
branches: [ main ]
paths-ignore:
- 'README.md'
- 'fastlane/**'
- 'assets/**'
- '.github/**/*.md'
- '.github/FUNDING.yml'
- '.github/ISSUE_TEMPLATE/**'
push:
branches:
- 'main'
Expand Down Expand Up @@ -74,7 +65,7 @@ jobs:
uses: actions/upload-artifact@v4
with:
name: app-full-release
path: composeApp/build/outputs/apk/release/*.apk
path: androidApp/build/outputs/apk/release/*.apk

build-foss-release:
name: Build foss release version
Expand Down Expand Up @@ -116,7 +107,7 @@ jobs:
uses: actions/upload-artifact@v4
with:
name: app-foss-release
path: composeApp/build/outputs/apk/release/*.apk
path: androidApp/build/outputs/apk/release/*.apk

build-desktop-deb:
name: Build desktop DEB package
Expand Down Expand Up @@ -153,13 +144,105 @@ jobs:
run: ./gradlew exportLibraryDefinitions

- name: Build desktop DEB package
run: ./gradlew packageDeb
run: ./gradlew packageReleaseDeb

- name: Upload DEB package
uses: actions/upload-artifact@v4
with:
name: desktop-deb-package
path: composeApp/build/compose/binaries/main/deb/*.deb
path: composeApp/build/compose/binaries/main-release/deb/*.deb

build-desktop-rpm:
name: Build desktop RPM package
runs-on: ubuntu-latest
defaults:
run:
shell: bash
steps:
- uses: actions/checkout@v4
with:
submodules: 'recursive'

- name: Install RPM build tools
run: sudo apt-get update && sudo apt-get install -y rpm

- name: set up JDK 17
uses: actions/setup-java@v4
with:
java-version: 21
distribution: "zulu"
cache: 'gradle'

- name: Update build product flavor
run: |
echo "" >> ./gradle.properties
echo "isFullBuild=true" >> ./gradle.properties

- name: Update Sentry Secrets
env:
SENTRY_DSN: ${{ secrets.SENTRY_DSN_JVM }}
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
run: |
echo 'SENTRY_DSN=${{ secrets.SENTRY_DSN_JVM }}' > ./local.properties
echo "SENTRY_AUTH_TOKEN=${{ secrets.SENTRY_AUTH_TOKEN }}" >> ./local.properties

- name: Generate aboutLibraries.json
run: ./gradlew exportLibraryDefinitions

- name: Build desktop RPM package
run: ./gradlew packageReleaseRpm

- name: Upload RPM package
uses: actions/upload-artifact@v4
with:
name: desktop-rpm-package
path: composeApp/build/compose/binaries/main-release/rpm/*.rpm

build-desktop-appimage:
name: Build desktop AppImage package
runs-on: ubuntu-22.04
defaults:
run:
shell: bash
steps:
- uses: actions/checkout@v4
with:
submodules: 'recursive'

- name: set up JDK 17
uses: actions/setup-java@v4
with:
java-version: 21
distribution: "zulu"
cache: 'gradle'

- name: Install libfuse2
run: sudo apt install libfuse2

- name: Update build product flavor
run: |
echo "" >> ./gradle.properties
echo "isFullBuild=true" >> ./gradle.properties

- name: Update Sentry Secrets
env:
SENTRY_DSN: ${{ secrets.SENTRY_DSN_JVM }}
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
run: |
echo 'SENTRY_DSN=${{ secrets.SENTRY_DSN_JVM }}' > ./local.properties
echo "SENTRY_AUTH_TOKEN=${{ secrets.SENTRY_AUTH_TOKEN }}" >> ./local.properties

- name: Generate aboutLibraries.json
run: ./gradlew exportLibraryDefinitions

- name: Build desktop AppImage package
run: ./gradlew composeApp:packageReleaseAppImage

- name: Upload AppImage package
uses: actions/upload-artifact@v4
with:
name: desktop-appimage-package
path: composeApp/build/appimage/main-release/SimpMusic-x86_64.AppImage

build-desktop-dmg:
name: Build desktop DMG package
Expand Down Expand Up @@ -196,13 +279,13 @@ jobs:
run: ./gradlew exportLibraryDefinitions

- name: Build desktop DMG package
run: ./gradlew packageDmg
run: ./gradlew packageReleaseDmg

- name: Upload DMG package
uses: actions/upload-artifact@v4
with:
name: desktop-dmg-package
path: composeApp/build/compose/binaries/main/dmg/*.dmg
path: composeApp/build/compose/binaries/main-release/dmg/*.dmg

build-desktop-msi:
name: Build desktop MSI package
Expand Down Expand Up @@ -239,10 +322,10 @@ jobs:
run: ./gradlew exportLibraryDefinitions

- name: Build desktop MSI package
run: ./gradlew packageMsi
run: ./gradlew packageReleaseMsi

- name: Upload MSI package
uses: actions/upload-artifact@v4
with:
name: desktop-msi-package
path: composeApp/build/compose/binaries/main/msi/*.msi
path: composeApp/build/compose/binaries/main-release/msi/*.msi
6 changes: 3 additions & 3 deletions .github/workflows/android.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ jobs:
run: ./gradlew exportLibraryDefinitions

- name: Build release APK
run: ./gradlew composeApp:assembleRelease
run: ./gradlew androidApp:assembleRelease

- name: Check build-tools version
shell: bash
Expand All @@ -65,7 +65,7 @@ jobs:
- uses: kevin-david/zipalign-sign-android-release@v2
id: sign_app
with:
releaseDirectory: composeApp/build/outputs/apk/release
releaseDirectory: androidApp/build/outputs/apk/release
signingKeyBase64: ${{ secrets.SIGNING_KEY }}
alias: ${{ secrets.ALIAS }}
keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }}
Expand All @@ -78,4 +78,4 @@ jobs:
uses: actions/upload-artifact@v4
with:
name: app
path: composeApp/build/outputs/apk/release/*-signed.apk
path: androidApp/build/outputs/apk/release/*-signed.apk
64 changes: 64 additions & 0 deletions .github/workflows/desktop-appimage-package.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
name: Build desktop AppImage package

on:
workflow_dispatch:
push:
branches:
- 'dev'
paths-ignore:
- 'README.md'
- 'fastlane/**'
- 'assets/**'
- '.github/**/*.md'
- '.github/FUNDING.yml'
- '.github/ISSUE_TEMPLATE/**'

permissions:
contents: write

jobs:
build-desktop-appimage:
name: Build desktop AppImage package
runs-on: ubuntu-22.04
defaults:
run:
shell: bash
steps:
- uses: actions/checkout@v4
with:
submodules: 'recursive'

- name: set up JDK 17
uses: actions/setup-java@v4
with:
java-version: 21
distribution: "zulu"
cache: 'gradle'

- name: Install libfuse2
run: sudo apt install libfuse2

- name: Update build product flavor
run: |
echo "" >> ./gradle.properties
echo "isFullBuild=true" >> ./gradle.properties

- name: Update Sentry Secrets
env:
SENTRY_DSN: ${{ secrets.SENTRY_DSN_JVM }}
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
run: |
echo 'SENTRY_DSN=${{ secrets.SENTRY_DSN_JVM }}' > ./local.properties
echo "SENTRY_AUTH_TOKEN=${{ secrets.SENTRY_AUTH_TOKEN }}" >> ./local.properties

- name: Generate aboutLibraries.json
run: ./gradlew exportLibraryDefinitions

- name: Build desktop AppImage package
run: ./gradlew composeApp:packageReleaseAppImage

- name: Upload AppImage package
uses: actions/upload-artifact@v4
with:
name: desktop-appimage-package
path: composeApp/build/appimage/main-release/SimpMusic-x86_64.AppImage
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,17 @@ crowdin.yml
/simpmusic.jks
/ffmpeg-kit/build/

#dev files
ign.md
.docs

# Sentry Config File
sentry.properties
/.claude/
/composeApp/build/
/composeApp/cache/
/composeApp/kcef-bundle/
/.mcp.json

/androidApp/build/
/androidApp/cache/
2 changes: 1 addition & 1 deletion MediaServiceCore
Submodule MediaServiceCore updated 42 files
+1 −1 SharedModules
+0 −1 googleapi/build.gradle
+0 −1 mediaserviceinterfaces/build.gradle
+13 −0 mediaserviceinterfaces/src/main/java/com/liskovsoft/mediaserviceinterfaces/data/FormatInfoProvision.java
+4 −2 mediaserviceinterfaces/src/main/java/com/liskovsoft/mediaserviceinterfaces/data/MediaItemFormatInfo.java
+0 −8 mediaserviceinterfaces/src/main/java/com/liskovsoft/mediaserviceinterfaces/data/MediaSubtitle.java
+0 −1 youtubeapi/build.gradle
+121 −0 youtubeapi/src/androidTest/java/com/liskovsoft/youtubeapi/innertube/InnertubeServiceTest.kt
+4 −0 youtubeapi/src/main/java/com/liskovsoft/googlecommon/common/api/FileApi.kt
+1 −1 youtubeapi/src/main/java/com/liskovsoft/googlecommon/common/converters/jsonpath/JsonPathObj.java
+2 −2 youtubeapi/src/main/java/com/liskovsoft/googlecommon/common/helpers/DefaultHeaders.kt
+2 −1 youtubeapi/src/main/java/com/liskovsoft/youtubeapi/app/AppServiceIntCached.java
+46 −0 youtubeapi/src/main/java/com/liskovsoft/youtubeapi/app/potoken/Helpers.kt
+55 −0 youtubeapi/src/main/java/com/liskovsoft/youtubeapi/app/potoken/PoTokenService.kt
+6 −0 youtubeapi/src/main/java/com/liskovsoft/youtubeapi/common/helpers/AppClient.kt
+1 −0 youtubeapi/src/main/java/com/liskovsoft/youtubeapi/common/helpers/AppConstants.kt
+12 −1 youtubeapi/src/main/java/com/liskovsoft/youtubeapi/common/models/gen/CommonItems.kt
+22 −0 youtubeapi/src/main/java/com/liskovsoft/youtubeapi/innertube/InnertubeService.kt
+293 −0 youtubeapi/src/main/java/com/liskovsoft/youtubeapi/innertube/core/HTTPClient.kt
+243 −0 youtubeapi/src/main/java/com/liskovsoft/youtubeapi/innertube/core/Player.kt
+124 −0 youtubeapi/src/main/java/com/liskovsoft/youtubeapi/innertube/core/Session.kt
+137 −0 youtubeapi/src/main/java/com/liskovsoft/youtubeapi/innertube/impl/MediaFormatImpl.kt
+412 −0 youtubeapi/src/main/java/com/liskovsoft/youtubeapi/innertube/impl/MediaItemFormatInfoImpl.kt
+35 −0 youtubeapi/src/main/java/com/liskovsoft/youtubeapi/innertube/impl/MediaSubtitleImpl.kt
+8 −0 youtubeapi/src/main/java/com/liskovsoft/youtubeapi/innertube/models/InnertubeConfigResult.kt
+82 −0 youtubeapi/src/main/java/com/liskovsoft/youtubeapi/innertube/models/InnertubeContext.kt
+178 −0 youtubeapi/src/main/java/com/liskovsoft/youtubeapi/innertube/models/PlayerResult.kt
+10 −0 youtubeapi/src/main/java/com/liskovsoft/youtubeapi/innertube/models/SessionData.kt
+19 −3 youtubeapi/src/main/java/com/liskovsoft/youtubeapi/innertube/models/SessionDataResult.kt
+32 −0 youtubeapi/src/main/java/com/liskovsoft/youtubeapi/innertube/utils/ApiHelpers.kt
+170 −0 youtubeapi/src/main/java/com/liskovsoft/youtubeapi/innertube/utils/Constants.kt
+115 −0 youtubeapi/src/main/java/com/liskovsoft/youtubeapi/innertube/utils/PlayerResultExtensions.kt
+61 −0 youtubeapi/src/main/java/com/liskovsoft/youtubeapi/innertube/utils/UserAgents.kt
+73 −0 youtubeapi/src/main/java/com/liskovsoft/youtubeapi/innertube/utils/Utils.kt
+3 −3 youtubeapi/src/main/java/com/liskovsoft/youtubeapi/next/v2/impl/MediaItemMetadataImpl.kt
+30 −14 youtubeapi/src/main/java/com/liskovsoft/youtubeapi/service/YouTubeMediaItemService.java
+11 −2 youtubeapi/src/main/java/com/liskovsoft/youtubeapi/service/data/YouTubeMediaItemFormatInfo.java
+0 −40 youtubeapi/src/main/java/com/liskovsoft/youtubeapi/service/data/YouTubeMediaSubtitle.java
+0 −18 youtubeapi/src/main/java/com/liskovsoft/youtubeapi/session/SessionApi.kt
+0 −12 youtubeapi/src/main/java/com/liskovsoft/youtubeapi/session/SessionApiHelper.kt
+11 −0 youtubeapi/src/main/java/com/liskovsoft/youtubeapi/videoinfo/models/VideoUrlHolder.kt
+0 −46 youtubeapi/src/test/java/com/liskovsoft/youtubeapi/session/SessionApiTest.kt
8 changes: 7 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ I use [Sentry](http://sentry.io) crashlytics to catch all crashes in the Full ve
### Which file should I download?
- For Windows: Download the file with extension `.msi`.
- For macOS: Download the file with extension `.dmg`.
- For Linux: Download the file with extension `.deb`.
- For Linux: Download the file with extension `.deb` (Debian based), `.rpm` (Red-hat based), `.AppImage` (all Linux distributions) .

### Log in guide: https://www.simpmusic.org/blogs/en/how-to-log-in-on-desktop-app

Expand Down Expand Up @@ -134,6 +134,12 @@ sometimes, some songs or videos get the wrong lyrics
We're looking for more contributors, all contributions are welcome!
See our [CODE OF CONDUCT](https://github.com/maxrave-dev/SimpMusic/blob/main/CODE_OF_CONDUCT.md)

Thanks for all my contributors:

<a href="https://github.com/maxrave-dev/SimpMusic/graphs/contributors">
<img src="https://contrib.rocks/image?repo=maxrave-dev/SimpMusic" />
</a>

## Showcase
This project is following clean architecture and MVVM pattern (in UI, app module).

Expand Down
Loading
Loading