Author SHA1 Message Date
markandClaude Fable 5 24d1328dab ci: bump release actions to Node 24 majors
Update checkout@v7, setup-java@v5, setup-android@v4, upload-artifact@v7,
and action-gh-release@v3 — all target the Node 24 runtime, clearing the
Node 20 deprecation warning on the release workflow. Inputs we use are
unchanged; the app has no Node dependency (Android/Kotlin + JDK 17), so
no application changes are needed.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 19:59:41 -05:00
markandClaude Fable 5 edb367cca3 feat: system media controls (MediaSession) for the active server (#1)
* feat: add system media controls for the active server

Add a media3 MediaSessionService that mirrors playback on the active
RelayTV server as a system media session (lock screen / quick settings):

- MediaControlService polls GET /status and publishes state, metadata,
  artwork, and remote volume; forwards play/pause, next/previous, seek,
  stop, and volume to the server HTTP API
- RelayRemotePlayer implements SimpleBasePlayer over the remote state
- RemoteStatus parses /status defensively across server versions
- New Settings screen (toolbar menu) with a media-controls toggle and a
  Manage servers shortcut; fix open_servers intent handling via
  onNewIntent when MainActivity is already running

Release prep:

- Bump to versionCode 6 / versionName 1.3.0
- Wire optional release signing from MYAPP_RELEASE_* gradle properties
- Add FOREGROUND_SERVICE(_MEDIA_PLAYBACK) permissions and lint opt-ins
- Update privacy policy, release checklist (Play Console foreground
  service declaration), README, and Gradle daemon heap

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* ci: sign release bundle in GitHub Actions

Decode the upload keystore from the RELEASE_KEYSTORE_BASE64 secret and pass
the MYAPP_RELEASE_* signing properties to Gradle via ORG_GRADLE_PROJECT_*
env vars, so tagged releases produce a signed .aab. Fail fast if the keystore
secret is missing, and verify the bundle signature after the build.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 19:45:34 -05:00
+5 -5
View File
@@ -18,17 +18,17 @@ jobs:
steps:
- name: Check out repository
uses: actions/checkout@v4
uses: actions/checkout@v7
- name: Set up Java 17
uses: actions/setup-java@v4
uses: actions/setup-java@v5
with:
distribution: temurin
java-version: "17"
cache: gradle
- name: Set up Android SDK
uses: android-actions/setup-android@v3
uses: android-actions/setup-android@v4
- name: Accept Android SDK licenses
run: yes | sdkmanager --licenses >/dev/null
@@ -76,14 +76,14 @@ jobs:
cp app/build/outputs/bundle/release/app-release.aab "dist/relaytv-${GITHUB_REF_NAME}.aab"
- name: Upload workflow artifacts
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: relaytv-${{ github.ref_name }}
path: dist/*
if-no-files-found: error
- name: Publish GitHub release
uses: softprops/action-gh-release@v2
uses: softprops/action-gh-release@v3
with:
generate_release_notes: true
files: |