Skip to content

docs: prepare the Fire TV app for the Amazon Appstore - #352

Merged
MaxMB15 merged 4 commits into
devfrom
feat/fire-tv-appstore
Oct 22, 2026
Merged

MaxMB15 merged 4 commits into
devfrom
feat/fire-tv-appstore

Conversation

@MaxMB15

@MaxMB15 MaxMB15 commented Oct 22, 2026

Copy link
Copy Markdown
Owner

What this changes

Prepares the Fire TV app for the Amazon Appstore (spec 3). Nothing is submitted, and no developer account is created. This builds on #351, which builds on #350. Until those merge, the diff here includes their commits.

  • docs/amazon-appstore.md has:
    • The listing text: title, a short description of 170 characters (Fire TV shows 200), a long description, feature bullets and keywords. It says plainly that Cinette provides no content, and it names no provider.
    • The answers to the console's questions: Amazon DRM No, device support, content rating, target audience, the privacy questions (no data collected, the same as Apple's Data Not Collected), and testing instructions for reviewers that use the demo playlist.
    • Amazon's Fire TV test criteria as a checklist, with what Cinette does for each.
    • Signing. Amazon strips the signature and re-signs with a key per account, so an Appstore install and a GitHub APK can't update each other.
    • A checklist with every console step marked as the developer's.
    • A licensing note to read first. Amazon's Developer Services Agreement (Prohibited Actions) bars submitting software under licenses that would make Amazon disclose or license anything combined with it, and Amazon always wraps the app in its own code. The Android build carries other people's GPL code: FFmpeg with --enable-gpl and mpv with -Dgpl=true. The iOS build avoids that with LGPL builds. The decision is the developer's.
  • docs/images/amazon/ has the 114 and 512 px icons, the 1280x720 Fire TV app icon (the lockup fits the 882x448 safe area) and the 1920x1080 background, all made from icon.svg. The 3 to 10 screenshots at 1920x1080 still need a Fire TV.
  • Release signing: app/build.gradle.kts signs release builds with the key that gen/android/keystore.properties names, when the file exists. .gitignore already keeps that file and *.jks out of the repo. Without the file, release builds stay unsigned, as before. CI doesn't build release builds.
  • docs/privacy.md now covers Android, Android TV and Fire TV: uninstalling deletes the data, and a device backup, such as Android's to a Google account, keeps a copy.
  • docs/android.md points to the signing setup.

No changelog entry. Only the privacy policy changes for users, and it's about a platform that hasn't shipped.

How it was tested

  • macOS

  • Linux, for the Gradle check below

  • Linux (X11)

  • ./gradlew :app:signingReport, with a throwaway keystore.properties and key: universalRelease uses the release config with that key. Without the file, it shows Config: none. No build ran, and the key was deleted.

  • I checked the images' sizes, and that the icon lockup sits inside the safe area (823x215 of 882x448).

  • I checked the listing's claims against the code: donation links are already hidden on Android, downloads are off, and the demo playlist instructions follow docs/demo/README.md.

Still to do, by the developer or on a device:

  • Decide on the licensing question.
  • Screenshots on the Fire TV Stick.
  • Everything marked (console) in the checklist.

Checklist

  • The pull request targets dev
  • pnpm lint, pnpm test and cargo clippy --workspace --all-targets -- -D warnings pass (no code they cover changed; CI runs them)
  • User-facing changes are added to the Unreleased section of CHANGELOG.md (none for a shipped platform)
  • No playlist URLs, logins or API keys in the code, tests or screenshots
  • I have read the Contributor License Agreement and agree to it

A Gradle store property, google by default or amazon, puts the store in
the manifest as app.cinette.STORE, which the app reads and logs at
startup. It's a property rather than a flavor dimension because a second
dimension renames the variant tasks Tauri's RustPlugin.kt and CLI expect.
Both stores get the same Rust library and frontend.

CI's Android job builds the debug APK for each store and checks the
store in each manifest.
Fire TV's test criteria ask for both. On Home, Android took the surface
and mpv kept playing with no picture, so the sound went on behind the
home screen. Now the mpv plugin pauses when the activity stops. It also
pauses when the HDMI output disconnects, as when the TV turns off, and
stays paused when it comes back.

The multicast permission implied Wi-Fi as a required feature, which
both stores filter on, so TVs on Ethernet only couldn't get the app.
The manifest now says Wi-Fi isn't required, and CI fails on any
required feature.
docs/amazon-appstore.md has the listing text, the answers to the
console's questions, the Fire TV test criteria and a checklist, with
every console step marked as the developer's. It also raises Amazon's
agreement against the GPL code in the Android build before anything is
submitted.

docs/images/amazon has the icons and the Fire TV app icon and
background, made from icon.svg. The screenshots need a Fire TV.

Release builds are signed with the key keystore.properties names, when
that file exists. The privacy policy now covers Android, Android TV and
Fire TV.
Copilot AI balanced review requested due to automatic review settings October 22, 2026 03:46

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@MaxMB15
MaxMB15 merged commit 262dd80 into dev Oct 22, 2026
26 checks passed
@MaxMB15
MaxMB15 deleted the feat/fire-tv-appstore branch October 22, 2026 04:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants