From e786f1b14556293c0f1ba973e1729c00fd09ec2f Mon Sep 17 00:00:00 2001 From: Saleh Date: Fri, 23 Oct 2026 17:00:13 +0000 Subject: [PATCH] fix(tv): keep BouncyCastle X25519 in release builds so identity transfer works R8 removed org.bouncycastle.jcajce.provider.asymmetric.edec, which the provider loads by name, so a release-built TV answered /mc-native with an empty identityKey and could never receive an identity. Verified: 1.0-test258 (release signed, code 992) on the Google TV Streamer publishes its key, and an iPad sent Desktop on xserv Gaming to it with no pairing on the TV. Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.md | 1 + app/proguard-rules.pro | 3 +++ 2 files changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 61c5d34856..fc41d4c015 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ # Changelog ## Unreleased +- **Identity transfer on release builds (TV):** a release-built MoonCast TV (1.0-beta2, for one) answered with an empty `identityKey`, so a phone or iPad could never send it its identity and a TV with no pairing of its own couldn't play PC games from it. R8 had removed BouncyCastle's X25519 classes, which the provider only loads by name; a keep rule brings them back. Debug builds were never affected. - **Store icon:** `ic_launcher-web.png` (the 512 px icon stores and some tools pick up) was still Moonlight's wheel, left from the fork. It's now the MoonCast moon on #1A1630, the same picture the launcher icon shows. Nothing on the device changes. ## 1.0-test257 (2026-10-23) diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index f897867437..85a040866c 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -17,6 +17,9 @@ -keep class org.bouncycastle.jcajce.provider.asymmetric.* {*;} -keep class org.bouncycastle.jcajce.provider.asymmetric.util.* {*;} -keep class org.bouncycastle.jcajce.provider.asymmetric.rsa.* {*;} +# MoonCast: X25519 for identity transfer (the TV's receiver key). The provider loads these by name, so R8 removed them +# and a release-built TV could not make its key: "identityKey" went out empty and no identity could be sent to it. +-keep class org.bouncycastle.jcajce.provider.asymmetric.edec.** {*;} -keep class org.bouncycastle.jcajce.provider.digest.** {*;} -keep class org.bouncycastle.jcajce.provider.symmetric.** {*;} -keep class org.bouncycastle.jcajce.spec.* {*;}