Commit Graph

360 Commits

Author SHA1 Message Date
Kingkor Roy Tirtho
aaa4d66db1 refactor(jam): move the room server to its own repository
The jam room server now lives in https://github.com/team-spotube/jam-server.
Remove jam-server/ and its deploy workflow, and point code comments, test
instructions, AGENTS.md and the self-hosting note (all locales) at the new
repository.
2026-10-31 19:01:44 +06:00
Kingkor Roy Tirtho
45a7758eb0 feat(jam): harden the room server, add device bans and friendly names
Security:
- Participants connect with a per-room key derived from a random per-install
  secret; others only see an id derived from it, so nobody can reconnect as
  someone else (including the host).
- "create" only works on a fresh code or for the room's own host, so empty
  rooms can't be taken over.
- Per-socket message and queue budgets disconnect clients that flood; the
  host throttles itself well under them.
- Bans also cover the device: a hashed digest of device traits combined with
  the network, stored only as an opaque per-room value. Earlier members are
  never caught by someone else's ban.
- Peer queue items and suggestions are sanitized (streaming tracks only, no
  URLs, https covers); suggestions are credited to the server-attested sender;
  local file paths go out as opaque ids. Names are cleaned server-side.
- Room codes and keys use a secure random source; the deploy workflow is
  read-only.

Names:
- Participants get a stable generated name ("Mellow Otter") per install, and
  can pick their own on the Jam screen or in Jam settings. The participant
  list marks "(you)".

Also translate the Jam strings into all locales and add tests for the above.
2026-10-31 18:14:45 +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
fa9b42cf10 cd(build): add support for building WebView native libraries on Linux and Windows 2026-10-29 16:03:55 +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
91867f571d ci: remove nightly tag movement from release workflow 2026-10-26 17:39:24 +06:00
Kingkor Roy Tirtho
cde359a9de cd: add iOS build process and package IPA for release 2026-10-26 16:52:56 +06:00
Kingkor Roy Tirtho
1b4fbe8d25 chore: update changelog for 6.0.0-beta.0 and optimize Gradle build settings 2026-10-26 16:40:46 +06:00
Kingkor Roy Tirtho
67e452493a feat(release): add beta release type
A beta is the stable build released as <version>-beta.N, with N set via
betaNumber in composeApp/build.gradle.kts. Betas and stable releases are
drafts; only nightly publishes immediately.
2026-10-26 16:34:02 +06:00
Kingkor Roy Tirtho
1ea5f1d1ee fix: update website URLs from spotube.org to spotube.cc 2026-10-26 15:31:17 +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
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
069b586d44 chore: update release workflow and documentation for dependency management 2026-10-19 11:50:53 +06:00
Kingkor Roy Tirtho
ced26462a9 chore: update GitHub Actions workflow for release process and improve permissions 2026-10-19 11:16:29 +06:00
Kingkor Roy Tirtho
b333c299d1 chore: update Android SDK setup to include NDK for composeApp configuration 2026-10-18 22:58:57 +06:00
Kingkor Roy Tirtho
613159e26e chore: add --stacktrace option to gradlew command for better debugging 2026-10-18 20:47:51 +06:00
Kingkor Roy Tirtho
33a8fdb8c2 cd: add GitHub token for API calls and set up Android SDK in workflow 2026-10-18 20:33:51 +06:00
Kingkor Roy Tirtho
c767b8dcd6 chore: update GitHub Actions to use latest versions of checkout, setup-java, setup-gradle, and upload-artifact 2026-10-17 19:21:42 +06:00
Kingkor Roy Tirtho
aa83708499 feat(graalvm): enable GraalVM native image support and update packaging configurations 2026-10-17 17:01:40 +06:00
Kingkor Roy Tirtho
62c1fe7902 feat: enhance Android build configuration with stable/nightly flavors and update launcher icons 2026-10-16 21:34:44 +06:00
Kingkor Roy Tirtho
2474c26a83 refactor: move package name from dev.krtirtho to org.spotube 2026-10-16 15:37:15 +06:00
Kingkor Roy Tirtho
df9403f2d3 feat(release): add support for Linux ARM64 builds and artifact uploads 2026-09-12 10:09:03 +06:00
Kingkor Roy Tirtho
14ee4f6a4c chore: remove dependabot configuration file 2026-07-30 22:51:07 +06:00
Kingkor Roy Tirtho
3d341f341c chore: update license information to GNU Affero General Public License 2026-07-23 10:05:14 +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
27e591d8a3 cd: remove AppImage upload steps from Linux build process 2026-07-22 01:11:53 +06:00
Kingkor Roy Tirtho
2af3a41bba cd: remove AppImage packaging and upload steps from Linux build process 2026-07-22 01:06:50 +06:00
Kingkor Roy Tirtho
720ac1136a cd: move ssh to end 2026-07-21 23:53:49 +06:00
Kingkor Roy Tirtho
8fcd35eb9b feat: add SSH debug session setup on failure for improved troubleshooting 2026-07-21 22:38:51 +06:00
Kingkor Roy Tirtho
16f10b5ba2 feat: refactor LyricsViewModel to use AudioPlayerInterface for improved abstraction 2026-07-20 22:24:53 +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
16d4adf59c cd: rename build artifacts for Android, Linux, Windows, and macOS for improved clarity 2026-07-17 10:08:54 +06:00
Kingkor Roy Tirtho
69a464dcd2 cd: fix version name conflict 2026-07-10 11:52:20 +06:00
Kingkor Roy Tirtho
f6308d0f8b cd: fix stuff 2026-07-10 11:06:53 +06:00
Kingkor Roy Tirtho
b26928a8a0 cd: fix stuff 2026-07-10 01:24:06 +06:00
Kingkor Roy Tirtho
4d1480dd4b cd: fix gh token secret 2026-07-10 00:47:23 +06:00
Kingkor Roy Tirtho
71d6a04109 cd: rename workflow file 2026-07-10 00:25:14 +06:00
Kingkor Roy Tirtho
812d2b1eae cd: remove push trigger from release workflow 2026-07-10 00:20:21 +06:00
Kingkor Roy Tirtho
a213e39907 cd: temporarily add on push 2026-07-10 00:17:53 +06:00
Kingkor Roy Tirtho
e520a020c7 cd: add release workflow for automated builds and artifact publishing across platforms 2026-07-10 00:11:41 +06:00
Kingkor Roy Tirtho
7d4d11705a chore: update project URLs and license to AGPL-3.0-or-later for improved compliance and accessibility 2026-07-07 09:37:49 +06:00
Kingkor Roy Tirtho
0c426689cb feat: migration to Compose Multiplatform 2026-06-30 17:00:13 +06:00
Kingkor Roy Tirtho
759bf36387
cd: disable free disk space step 2026-02-01 22:16:18 +06:00
Kingkor Roy Tirtho
5ea4df932f cd: add back rpm for x86_64 2025-11-13 16:03:08 +06:00
Kingkor Roy Tirtho
3462e32a6c chore: add arch for install deps 2025-11-13 15:39:58 +06:00
Kingkor Roy Tirtho
a452122302 cd: add appimage support and use fastforge 2025-11-13 15:15:13 +06:00
Kingkor Roy Tirtho
7c632c8f06 cd: remove unnecessary stuff for android build 2025-11-07 21:56:03 +06:00
Kingkor Roy Tirtho
64f937bd14 chore: remove useless appbundle build 2025-11-07 18:59:55 +06:00
Kingkor Roy Tirtho
4d57b134a3 cd: use xcode 16.2 2025-09-05 20:01:33 +06:00