[stealth 2/4] neutral identity, icons & manifest minimization#8860
Open
reflog wants to merge 1 commit into
Open
[stealth 2/4] neutral identity, icons & manifest minimization#8860reflog wants to merge 1 commit into
reflog wants to merge 1 commit into
Conversation
This was referenced Jun 15, 2026
def4ef0 to
82e0867
Compare
8e087bf to
73dd0ea
Compare
Contributor
There was a problem hiding this comment.
Pull request overview
This PR is the second in the Stealth Android stack and introduces build-time–gated mechanisms to neutralize install-time identity (package/app labels/auth scheme), generate neutral icon resources, and minimize the merged Android manifest for stealth modes while keeping normal builds on the existing identity defaults.
Changes:
- Add generators (with tests) for Android identity profiles (
.properties) and deterministic neutral icon resources driven by private seeds. - Introduce a post-merge Android manifest filter (with tests) to remove unwanted permissions/components and rewrite component names for stealth
vpn/novpnmodes. - Wire Android runtime strings/icons/labels to build-provided values (via placeholders/BuildConfig), and add stealth-only Kotlin + resource overlays for a neutral bridge surface.
Reviewed changes
Copilot reviewed 27 out of 27 changed files in this pull request and generated 9 comments.
Show a summary per file
| File | Description |
|---|---|
| android/app/src/main/AndroidManifest.novpn.xml | Adds a separate manifest variant intended for a no-VPN mode configuration. |
| android/app/src/main/AndroidManifest.xml | Switches app identity and icon fields to manifest placeholders (label/icons/auth scheme/tile icon). |
| android/app/src/main/kotlin/org/getlantern/lantern/LanternApp.kt | Makes the Application class extensible for generated/debranded variants. |
| android/app/src/main/kotlin/org/getlantern/lantern/notification/NotificationManager.kt | Uses BuildConfig-driven notification channel strings and resolves configurable small-icon resources. |
| android/app/src/main/kotlin/org/getlantern/lantern/service/LanternVpnService.kt | Makes VPN service extensible and moves session naming/exclusion behavior to BuildConfig + stealth helpers. |
| android/app/src/main/kotlin/org/getlantern/lantern/service/QuickTileService.kt | Makes tile service extensible and uses BuildConfig-driven tile labels + configurable service intent target. |
| android/app/src/main/res/drawable/neutral_app_icon.xml | Adds neutral drawable icon resource for identity/profile-based placeholder usage. |
| android/app/src/main/res/drawable/neutral_notification_icon.xml | Adds neutral notification icon drawable resource. |
| android/app/src/main/res/values/string.xml | Removes the checked-in app_name string to rely on build-injected values. |
| android/app/src/stealth/kotlin/foundation/bridge/AppHost.kt | Adds stealth Application host that initializes bridge context. |
| android/app/src/stealth/kotlin/foundation/bridge/BaseHomeActivity.kt | Adds a stealth FlutterActivity base with a bridge control MethodChannel. |
| android/app/src/stealth/kotlin/foundation/bridge/BridgeCommon.kt | Adds shared stealth bridge utilities (state/paths/foreground notification). |
| android/app/src/stealth/res/drawable/launch_background.xml | Adds stealth launch background resource. |
| android/app/src/stealth/res/drawable/neutral_app_icon.xml | Adds stealth overlay neutral app icon resource. |
| android/app/src/stealth/res/drawable/neutral_notification_icon.xml | Adds stealth overlay neutral notification icon resource. |
| android/app/src/stealth/res/values-night/styles.xml | Adds stealth night theme resources. |
| android/app/src/stealth/res/values/styles.xml | Adds stealth default theme resources. |
| docs/stealth-android-icons.md | Documents stealth icon generation and build wiring. |
| docs/stealth-android-identity.md | Documents identity profile generation/usage and schema. |
| lib/core/common/app_secrets.dart | Routes Android package name usage through build-info (stealth-aware) rather than a hard-coded constant. |
| scripts/stealth/android_manifest_filter.py | Implements post-merge manifest minimization + component rewrite for stealth vpn/novpn. |
| scripts/stealth/android_manifest_filter_test.py | Adds coverage for manifest filtering invariants and idempotency. |
| scripts/stealth/debrand_kotlin.py | Implements mechanical debranding copy/transform of Kotlin sources/resources for stealth builds. |
| scripts/stealth/generate_android_icons.py | Generates deterministic neutral icon resource set and metadata from a seed. |
| scripts/stealth/generate_android_icons_test.py | Adds deterministic and file-output tests for icon generation. |
| scripts/stealth/generate_android_identity.py | Generates Android identity profiles (properties) from seed or JSON profile input. |
| scripts/stealth/generate_android_identity_test.py | Adds tests for deterministic identity generation, profile import, and properties output. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
82e0867 to
bab8b58
Compare
73dd0ea to
3a9a501
Compare
bab8b58 to
fa33939
Compare
3a9a501 to
a8a0e78
Compare
fa33939 to
fb322ce
Compare
a8a0e78 to
6b0fb5c
Compare
fb322ce to
ec5db08
Compare
6b0fb5c to
4a146d2
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part of epic getlantern/engineering#3569 — stacked PR 2/4, targets
stealth/pr1-foundation.Per-build neutral Android identity (randomized package name, labels, VPN session name), generated neutral app/notification icons, and Android manifest + permission minimization (incl. the no-VPN manifest). Normal builds unchanged.
Implements #3624.
🤖 Generated with Claude Code