Skip to content
Open
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
aee8a71
Add Queue Button To Mini Player
laoluogun Jul 23, 2026
86e39c5
Add Queue Button To Mini Player
laoluogun Jul 23, 2026
39a12df
Merge remote-tracking branch 'origin/feat/queue-button-desktop-minipl…
laoluogun Jul 23, 2026
145e348
Merge remote-tracking branch 'origin/feat/queue-button-desktop-minipl…
laoluogun Jul 23, 2026
9417bec
Merge remote-tracking branch 'origin/feat/queue-button-desktop-minipl…
laoluogun Jul 23, 2026
e979337
Fix queue button sizing
laoluogun Jul 23, 2026
bb55681
feat(player): add inline lyric line and remove blur backgrounds
maxrave-dev Jul 24, 2026
54fce50
fix(spotify): match login status URL with query string
maxrave-dev Jul 25, 2026
8d1a23d
feat(player): rework now playing backdrop and artist card
maxrave-dev Jul 25, 2026
b5e8877
chore(core): bump submodule
maxrave-dev Jul 25, 2026
9250483
Merge pull request #2275 from laoluogun/feat/queue-button-desktop-min…
maxrave-dev Jul 25, 2026
a57a3c1
chore(core): bump submodule for mpv desktop backend
maxrave-dev Jul 27, 2026
160f9ff
chore(core): bump submodule for mpv DJ crossfade
maxrave-dev Jul 27, 2026
88be088
chore(desktop): replace VLC natives with prebuilt libmpv slices
maxrave-dev Jul 27, 2026
dde01ee
fix(desktop): raise macOS floor to 15.0 for bundled libmpv
maxrave-dev Jul 27, 2026
1712819
fix(desktop): stage natives in release workflow and verify libmpv bun…
maxrave-dev Jul 27, 2026
004519e
feat(desktop): build Linux libmpv from source instead of extracting t…
maxrave-dev Jul 28, 2026
1661786
chore(core): bump submodule for libmpv load fixes
maxrave-dev Jul 28, 2026
153c015
fix(desktop): strip AppleDouble sidecars from mpv native slices
maxrave-dev Jul 28, 2026
e027443
docs: document the from-source Linux libmpv build and macOS signing p…
maxrave-dev Jul 28, 2026
e8e7d30
Merge pull request #2284 from maxrave-dev/feat/desktop-mpv-backend
maxrave-dev Jul 28, 2026
fd76739
fix(desktop): use the theme colour for the queue icon in the player bar
maxrave-dev Jul 28, 2026
fce8968
fix(desktop): keep buffered and played sections of the timeline distinct
maxrave-dev Jul 28, 2026
4c422ba
feat(desktop): tint the player bar timeline while crossfading
maxrave-dev Jul 28, 2026
ac6a0fa
feat(desktop): expand the volume slider only on hover
maxrave-dev Jul 28, 2026
0f2692f
fix(ui): give force-dark screens a dark colour scheme, not just dark …
maxrave-dev Jul 28, 2026
d91636b
refactor(player): apply volume to the player before persisting it
maxrave-dev Jul 28, 2026
1e20f6b
feat(desktop): show the current track in the tray menu and tooltip
maxrave-dev Jul 28, 2026
314bcf2
refactor(desktop): drop the mini player button from the Now Playing t…
maxrave-dev Jul 28, 2026
4526056
chore(core): bump submodule for volume handling and chart countries
maxrave-dev Jul 28, 2026
870f691
perf(desktop): tune allocator and GC to cut resident memory
maxrave-dev Jul 29, 2026
efca346
fix(ui): show a generic album label when the album name is unknown
maxrave-dev Jul 29, 2026
65fac8c
chore(core): bump submodule for song column parsing and album self-re…
maxrave-dev Jul 29, 2026
a9bbd6a
feat(windows): remove debug terminal
maxrave-dev Jul 30, 2026
11f5926
fix(desktop): drop the macOS native memory trim behind the launch crash
maxrave-dev Jul 30, 2026
90ec899
feat(settings): confirm before logging out of a linked account
maxrave-dev Jul 30, 2026
8191438
feat(lastfm): add Last.fm module gated by the full build
maxrave-dev Jul 30, 2026
48cff13
feat(lastfm): add login screen and scrobbling settings
maxrave-dev Jul 30, 2026
2c15e65
chore(core): bump submodule for artist parsing and Last.fm scrobbling
maxrave-dev Jul 30, 2026
9c6c641
docs: document the Last.fm integration and its auth pitfalls
maxrave-dev Jul 30, 2026
69aafc9
chore(gradle): refresh daemon JVM toolchain URLs
maxrave-dev Jul 30, 2026
4fc9e09
fix(ui): take the bottom sheet title, artist and like label from the …
maxrave-dev Jul 30, 2026
12acba2
feat(cicd): update workflow
maxrave-dev Jul 31, 2026
f7205d5
feat(cicd): update workflow
maxrave-dev Jul 31, 2026
2cae0ca
fix(desktop): register URL schemes correctly and restore link opening…
maxrave-dev Jul 31, 2026
5699333
chore(core): bump submodule for queue restore, video crossfade skip a…
maxrave-dev Aug 1, 2026
5412bd1
docs: update CLAUDE.md for Compose video render and video crossfade r…
maxrave-dev Aug 1, 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
46 changes: 30 additions & 16 deletions .github/workflows/android-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,14 @@ jobs:
echo 'SENTRY_DSN=${{ secrets.SENTRY_DSN }}' > ./local.properties
echo "SENTRY_AUTH_TOKEN=${{ secrets.SENTRY_AUTH_TOKEN }}" >> ./local.properties

- name: Update Last.fm secrets
env:
LASTFM_API_KEY: ${{ secrets.LASTFM_API_KEY }}
LASTFM_SECRET: ${{ secrets.LASTFM_SECRET }}
run: |
echo "LASTFM_API_KEY=${{ secrets.LASTFM_API_KEY }}" >> ./local.properties
echo "LASTFM_SECRET=${{ secrets.LASTFM_SECRET }}" >> ./local.properties

- name: Update environment variables
env:
BASE_64_SIGNING_KEY: ${{ secrets.BASE_64_SIGNING_KEY }}
Expand Down Expand Up @@ -127,19 +135,13 @@ jobs:
distribution: "microsoft"
cache: 'gradle'

- name: Install 7-Zip 24.x + libfuse2
# Ubuntu's p7zip-full (16.02) can't extract HFS+ DMG content fully —
# outer kolyDMG opens but the inner HFS+ partition stays opaque, so
# VLC.app never materializes. Use the official Igor Pavlov build,
# which has full HFS+ support like the modern Linux/macOS package.
# libfuse2 is needed by appimagetool when wrapping the Linux app.
- name: Install libfuse2
# Needed by appimagetool when wrapping the Linux app. Nothing else is
# required here: mpvSetupAll only downloads and untars the prebuilt
# native slices, so no 7-Zip, patchelf or dwarfs toolchain on the runner.
run: |
sudo apt-get update
sudo apt-get install -y libfuse2
curl -fsSL https://github.com/ip7z/7zip/releases/download/26.01/7z2601-linux-x64.tar.xz -o /tmp/7zz.tar.xz
sudo tar -xf /tmp/7zz.tar.xz -C /usr/local/bin/ 7zz
sudo ln -sf /usr/local/bin/7zz /usr/local/bin/7z
7z i | head -3

- name: Update build product flavor
run: |
Expand All @@ -154,17 +156,29 @@ jobs:
echo 'SENTRY_DSN=${{ secrets.SENTRY_DSN_JVM }}' > ./local.properties
echo "SENTRY_AUTH_TOKEN=${{ secrets.SENTRY_AUTH_TOKEN }}" >> ./local.properties

- name: Update Last.fm secrets
env:
LASTFM_API_KEY: ${{ secrets.LASTFM_API_KEY }}
LASTFM_SECRET: ${{ secrets.LASTFM_SECRET }}
run: |
echo "LASTFM_API_KEY=${{ secrets.LASTFM_API_KEY }}" >> ./local.properties
echo "LASTFM_SECRET=${{ secrets.LASTFM_SECRET }}" >> ./local.properties

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

- name: Cache vlc-natives
- name: Cache mpv-natives
uses: actions/cache@v4
with:
path: vlc-natives
key: vlc-natives-${{ hashFiles('gradle/libs.versions.toml') }}

- name: Populate vlc-natives for all OSes
run: ./gradlew :composeApp:vlcSetupAll --no-configuration-cache
path: mpv-natives
key: mpv-natives-${{ hashFiles('composeApp/build.gradle.kts') }}

- name: Populate mpv-natives for all OSes
# Conveyor is invoked by its own action further down, NOT through Gradle,
# so the dependsOn(":composeApp:mpvSetupAll") wired into the conveyor*
# tasks never fires on this path — the natives have to be staged here
# explicitly or the installers ship without libmpv.
run: ./gradlew :composeApp:mpvSetupAll --no-configuration-cache

- name: Generate Conveyor config
# Run writeConveyorConfig BEFORE Conveyor so the parser only reads
Expand Down
8 changes: 8 additions & 0 deletions .github/workflows/android.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,14 @@ jobs:
echo 'SENTRY_DSN=${{ secrets.SENTRY_DSN }}' > ./local.properties
echo "SENTRY_AUTH_TOKEN=${{ secrets.SENTRY_AUTH_TOKEN }}" >> ./local.properties

- name: Update Last.fm secrets
env:
LASTFM_API_KEY: ${{ secrets.LASTFM_API_KEY }}
LASTFM_SECRET: ${{ secrets.LASTFM_SECRET }}
run: |
echo "LASTFM_API_KEY=${{ secrets.LASTFM_API_KEY }}" >> ./local.properties
echo "LASTFM_SECRET=${{ secrets.LASTFM_SECRET }}" >> ./local.properties

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

Expand Down
32 changes: 17 additions & 15 deletions .github/workflows/desktop-package.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,19 +52,13 @@ jobs:
distribution: "microsoft"
cache: 'gradle'

- name: Install 7-Zip 24.x + libfuse2
# Ubuntu's p7zip-full (16.02) can't extract HFS+ DMG content fully —
# outer kolyDMG opens but the inner HFS+ partition stays opaque, so
# VLC.app never materializes. Use the official Igor Pavlov build,
# which has full HFS+ support like the modern Linux/macOS package.
# libfuse2 is needed by appimagetool when wrapping the Linux app.
- name: Install libfuse2
# Needed by appimagetool when wrapping the Linux app. Nothing else is
# required here: mpvSetupAll only downloads and untars the prebuilt
# native slices, so no 7-Zip, patchelf or dwarfs toolchain on the runner.
run: |
sudo apt-get update
sudo apt-get install -y libfuse2
curl -fsSL https://github.com/ip7z/7zip/releases/download/26.01/7z2601-linux-x64.tar.xz -o /tmp/7zz.tar.xz
sudo tar -xf /tmp/7zz.tar.xz -C /usr/local/bin/ 7zz
sudo ln -sf /usr/local/bin/7zz /usr/local/bin/7z
7z i | head -3

- name: Update build product flavor
run: |
Expand All @@ -79,17 +73,25 @@ jobs:
echo 'SENTRY_DSN=${{ secrets.SENTRY_DSN_JVM }}' > ./local.properties
echo "SENTRY_AUTH_TOKEN=${{ secrets.SENTRY_AUTH_TOKEN }}" >> ./local.properties

- name: Update Last.fm secrets
env:
LASTFM_API_KEY: ${{ secrets.LASTFM_API_KEY }}
LASTFM_SECRET: ${{ secrets.LASTFM_SECRET }}
run: |
echo "LASTFM_API_KEY=${{ secrets.LASTFM_API_KEY }}" >> ./local.properties
echo "LASTFM_SECRET=${{ secrets.LASTFM_SECRET }}" >> ./local.properties

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

- name: Cache vlc-natives
- name: Cache mpv-natives
uses: actions/cache@v4
with:
path: vlc-natives
key: vlc-natives-${{ hashFiles('gradle/libs.versions.toml') }}
path: mpv-natives
key: mpv-natives-${{ hashFiles('composeApp/build.gradle.kts') }}

- name: Populate vlc-natives for all OSes
run: ./gradlew :composeApp:vlcSetupAll --no-configuration-cache
- name: Populate mpv-natives for all OSes
run: ./gradlew :composeApp:mpvSetupAll --no-configuration-cache

- name: Generate Conveyor config
# Run writeConveyorConfig BEFORE Conveyor so the parser only reads
Expand Down
6 changes: 4 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,10 @@ sentry.properties
/.claude/settings.local.json
/androidApp/build/
/androidApp/cache/
# VLC native libraries (downloaded by vlc-setup plugin)
/vlc-natives/
/lastfm/build/
/lastfm-empty/build/
# libmpv native libraries (downloaded by `./gradlew :composeApp:mpvSetupAll`)
/mpv-natives/
/.omc/
/desktopApp/build/
# Conveyor auto-generated config (run `./gradlew :desktopApp:writeConveyorConfig`)
Expand Down
Loading
Loading