Commit Graph

37 Commits

Author SHA1 Message Date
Kingkor Roy Tirtho
9a47a1af5f
Merge branch 'dev' into fix/desugar-jdk-libs-nio 2026-11-03 13:42:50 +06:00
Kingkor Roy Tirtho
0a0b0c9374 feat(jam): replace MQTT with a Durable Object room server and synced playback
- Add jam-server/: a Cloudflare Worker with one Durable Object per room code.
  It tracks membership, host handoff and kicks/bans, keeps the queue for late
  joiners, routes guest commands to the host and serves the room clock.
- Sync playback: devices estimate the server clock, the host sends position
  anchors in server time, guests follow by nudging playback rate (seeking only
  when far off) and stream the host's audio source when they share a plugin.
- Seek, play/pause, skip and jump apply to the whole room.
- Recover from network loss instead of crashing: socket failures reconnect
  with backoff, silent sockets are detected, and an expired room is recreated
  by its host.
- Keep cost and battery low: anchors only on change (plus host drift and a
  60 s heartbeat), kept in memory rather than storage, free runtime keep-alives
  once a minute, rare clock re-syncs, and no polling while paused or buffering.
- Remove the MQTT broker settings and libraries.
- Add sync unit tests, client/session integration tests (JAM_TEST_URL) and a
  network-loss test, plus a deploy workflow for the server.
2026-10-31 16:26:41 +06:00
Kingkor Roy Tirtho
8d4ea82a7e fix(build): add headless mode for Linux and update CI to prepare dependencies 2026-10-29 15:01:43 +06:00
Kingkor Roy Tirtho
eb972c8633 fix(dependencies): update Android target SDK and various library versions 2026-10-29 11:25:22 +06:00
Kingkor Roy Tirtho
aca3aeb592 fix(theme): follow the OS dark mode on desktop
Compose's isSystemInDarkTheme never updates under the Tao window, so Theme.SYSTEM
stayed light. Use Nucleus' darkmode-detector on JVM and keep Compose's check on mobile.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-27 18:53:47 +06:00
Kingkor Roy Tirtho
5b36edd259 fix(windows): make VLC playback work through the stream proxy
The proxy copied every upstream header, duplicating Content-Length, which VLC
rejects. Forward only the range/validator headers. Bump vlcj-bundler to 0.2.1,
which bundles the Matroska demuxer needed for WebM. Make StreamingUrlRepository's
platform injectable and add VLC log switch via DebugConfig.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-27 18:49:20 +06:00
Kingkor Roy Tirtho
cc21568457 fix(build): restore version catalog lost in dev merge
The merge of dev resolved the libs.versions.toml conflict by taking the wrong
catalog: it reverted the Kotlin 2.4.21 / Compose 1.12.2 / Zipline 1.28.0
upgrade and dropped dev's jmustache entries, so buildSrc failed with
"Unresolved reference 'jmustache'". Keep both sides: mokkery 3.5.1 plus jmustache.
2026-10-26 15:04:26 +06:00
Kingkor Roy Tirtho
7fa3b029f6 Merge branch 'dev' into ios-crash-fix
# Conflicts:
#	gradle/libs.versions.toml
2026-10-26 13:45:32 +06:00
Kingkor Roy Tirtho
09df4b494c build: upgrade to Kotlin 2.4.21 and Compose Multiplatform 1.12.2
Several dependencies (coil 3.5.0, millennium, mqtt/ditchoom, composeunstyled,
markdown-renderer, composewebview, kmp-zip, filekit) now ship klibs built with
Kotlin 2.4, which Kotlin/Native 2.3 refuses to read, breaking the iOS build.

- Bump zipline (1.28.0), mokkery (3.5.1) and ksp (2.3.12) for the new compiler
- Type TOP_LEVEL_ROUTES as Set<NavKey> (Kotlin 2.4 inferred Set<Any>)
- Import ComposeApp in iOSApp.swift, which uses ExternalUriHandler
2026-10-23 11:54:29 +06:00
Kingkor Roy Tirtho
8ab9463c9a feat(packaging): Flathub, AUR, WinGet and Chocolatey publishing
- Flatpak manifest (GNOME 51, libvlc built from source) installing from a new
  portable spotube-linux-<version>-<arch>.tar.xz, shared with the AUR package
- Release workflow builds and attaches the Linux tarballs for x86_64 and aarch64
- Package files are JMustache templates rendered by :composeApp:renderPackaging<Target>
  with the version, release asset checksums and git-cliff release notes; the
  metainfo release history is generated
- Publish workflow (workflow_dispatch, release tag input) renders once and pushes to
  Flathub, the AUR, WinGet (PR from team-spotube/winget-pkgs) and Chocolatey
- Chocolatey and WinGet updated for the NSIS installer
2026-10-23 10:08:29 +06:00
Kingkor Roy Tirtho
79d47c1d87 feat: enhance loading states for various UI components and update dependencies 2026-10-20 20:32:47 +06:00
Kingkor Roy Tirtho
e92e62613e chore: implement Linux AppImage bundling for GTK and WebKitGTK, update dependencies and documentation 2026-10-19 19:15:13 +06:00
Kingkor Roy Tirtho
03aaffeca8 chore: update spotube gradle plugin version 2026-10-18 20:07:20 +06:00
Kingkor Roy Tirtho
1233967982 chore: update contact information and library version in project files 2026-10-18 19:23:18 +06:00
Kingkor Roy Tirtho
9db35e092b feat(server): implement port fallback mechanism for playback proxy server 2026-10-16 20:06:12 +06:00
Kingkor Roy Tirtho
d5eaf101eb fix: add window insets to top bar and bottom navigation bar, queue sheet 2026-10-14 19:26:54 +06:00
Kingkor Roy Tirtho
bb9f225fd7
Merge pull request #3136 from henrik242/kmp-zip-1-0-0
Upgrade kmp-zip to 1.0.0
2026-10-11 19:51:34 +06:00
Kingkor Roy Tirtho
cfd472016e refactor: integrate millennium UI 2026-10-11 17:17:34 +06:00
Kingkor Roy Tirtho
eeaff3c1db refactor(main): simplify main function and remove unused WebKit GPU compositing logic 2026-10-02 20:05:23 +06:00
Henrik Brautaset Aronsen
0def3e2e49
Upgrade kmp-zip to 1.0.0
https://github.com/henrik242/kmp-zip/blob/main/CHANGELOG.md
2026-09-30 10:06:42 +02:00
Kingkor Roy Tirtho
4e2afeaea4 feat(update): refactor update checking mechanism and implement new dialog for app and plugin updates 2026-09-30 09:58:04 +06:00
Kingkor Roy Tirtho
3a85ad0896 feat(update): implement update checker with dialog for available updates 2026-09-25 22:39:33 +06:00
Kingkor Roy Tirtho
78168d269c feat: implement shuffle play functionality for albums, playlists, and saved tracks 2026-09-25 18:47:29 +06:00
Omer Kaya Ekici
ed3743bbea fix(android): use desugar_jdk_libs_nio so URLEncoder.encode(String, Charset) is backported on API < 33
The default desugar_jdk_libs artifact does not include the java.nio/charset backing APIs, so on API < 33 (minSdk 28) NewPipeExtractor's URLEncoder.encode(String, Charset) call throws NoSuchMethodError and the app crashes on launch. The _nio variant backports those APIs (2.1.5 is available for it and matches the AGP 8.13.2 requirement).

Refs #3130
2026-09-20 10:43:52 +03:00
Kingkor Roy Tirtho
a2b9f4178c feat(jam-session): integrate MQTT broker configuration and enhance jam session settings 2026-09-11 19:35:54 +06:00
Kingkor Roy Tirtho
1aeee1db79 fix(sidebar): add spacer to AppSidebar for improved layout 2026-08-28 13:18:04 +06:00
Kingkor Roy Tirtho
d3a8548661 feat(devices): add device discovery and remote control features 2026-08-21 19:50:09 +06:00
Kingkor Roy Tirtho
94ec831a96 feat(mediacontrol): implement SystemMediaControlService for OS media integration 2026-08-16 15:07:28 +06:00
Kingkor Roy Tirtho
0a76abba65 chore: update Gradle wrapper to version 9.4.0 and Kotlin standard library to 2.4.10 2026-08-16 11:57:10 +06:00
Kingkor Roy Tirtho
e0b9ab530d feat: implement system tray functionality with Compose Native Tray integration 2026-08-14 21:41:09 +06:00
Kingkor Roy Tirtho
94903dcc33 feat: integrate Nucleus framework for enhanced window management and webview support 2026-08-14 20:40:37 +06:00
Kingkor Roy Tirtho
b6615bdbc8 feat: update dependencies and configure compose hot reload settings 2026-08-13 22:03:41 +06:00
Kingkor Roy Tirtho
b67a4a22b5 feat(plugin_interfaces): update Maven publishing configuration and add GitHub Actions workflow 2026-07-22 23:07:38 +06:00
Kingkor Roy Tirtho
a9760a711a feat: introduce AudioPlayerInterface and refactor AudioPlayer implementations for better abstraction 2026-07-20 21:45:33 +06:00
Kingkor Roy Tirtho
a09a7c8976 feat: integrate Uniffi for audio metadata reading and writing with Lofty library 2026-07-18 00:14:35 +06:00
Kingkor Roy Tirtho
28ff68dcc9 refactor: remove MusicBrainz ListenBrainz plugin and related configurations 2026-06-30 17:13:21 +06:00
Kingkor Roy Tirtho
0c426689cb feat: migration to Compose Multiplatform 2026-06-30 17:00:13 +06:00