Files
RelayTV-Android/docs/RELEASE_CHECKLIST.md
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

3.2 KiB

RelayTV Android Release Checklist

Use this checklist before cutting a public release or uploading a new Play Console build.

Build Readiness

  1. Verify Android toolchain prerequisites:
    • ./scripts/check-android-env.sh all
  2. Install or refresh required SDK components:
    • ./scripts/bootstrap-android.sh
  3. Validate debug build, lint, and unit tests:
    • ./scripts/build-debug.sh
  4. Validate release bundle and release lint:
    • ./scripts/build-release.sh
  5. If you have a device connected, run instrumentation tests:
    • ./scripts/test-connected.sh

Versioning

  1. Increment versionCode for every public upload.
  2. Set versionName to the user-facing release number.
  3. Verify the user agent string and release notes match the version being shipped.

Play Console Requirements

  1. Keep targetSdk at the current Google Play minimum.
    • As of April 3, 2026, Play requires new apps and updates to target Android 15 / API 35.
  2. Upload an Android App Bundle:
    • app/build/outputs/bundle/release/app-release.aab
  3. Use Play App Signing in Play Console.
  4. Complete the Data safety form for this release.
    • The media controls feature adds no off-device data collection; no Data safety changes are expected.
  5. Provide a valid support email in Play Console.
  6. Publish a public privacy policy URL.
    • This repo includes a draft policy in docs/PRIVACY_POLICY.md.
    • The in-app privacy menu points to the GitHub-hosted copy on main.
  7. Complete the Foreground service permissions declaration (App content -> Foreground service permissions).
    • Declares FOREGROUND_SERVICE_MEDIA_PLAYBACK, used by the media controls notification that mirrors playback on the user's RelayTV server.
    • Requires a short demo video showing the media controls notification while a RelayTV server is playing.

App-Specific Verification

  1. Confirm manual server entry still works for both HTTP and HTTPS RelayTV servers.
  2. Confirm LAN discovery finds _relaytv._tcp services on the local network.
  3. Confirm both Android share targets work:
    • RelayTV Queue -> /smart
    • RelayTV Play -> /play_now
  4. Confirm the WebView reconnects after the RelayTV server restarts or the network drops.
  5. Confirm the privacy menu opens the published policy URL.
  6. Confirm system media controls appear while the active server is playing:
    • Play/pause, next/previous, seek, and the volume slider control the server.
    • The notification disappears after the server goes idle.
    • The Settings toggle ("Media controls") removes and restores the controls.
  7. Confirm the Settings screen opens from the toolbar menu and "Manage servers" opens the server picker.

Signing And Distribution

  1. Configure your release signing key or Play App Signing flow.
  2. Archive the signed .aab, release notes, and the exact commit SHA used for the build.
  3. Tag the release in git after the Play upload is verified.

Official References

  1. Target API requirement:
  2. App setup, versioning, and Play App Signing:
  3. Developer support contact requirements: