Skip to content

[stealth 2/4] neutral identity, icons & manifest minimization#8860

Open
reflog wants to merge 1 commit into
stealth/pr1-foundationfrom
stealth/pr2-identity
Open

[stealth 2/4] neutral identity, icons & manifest minimization#8860
reflog wants to merge 1 commit into
stealth/pr1-foundationfrom
stealth/pr2-identity

Conversation

@reflog

@reflog reflog commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

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

@reflog reflog changed the title stealth(identity): neutral identity, icons & manifest minimization [stealth 2/6] neutral identity, icons & manifest minimization Jun 15, 2026
@reflog reflog force-pushed the stealth/pr1-foundation branch from def4ef0 to 82e0867 Compare June 15, 2026 15:45
@reflog reflog force-pushed the stealth/pr2-identity branch from 8e087bf to 73dd0ea Compare June 15, 2026 15:45
@reflog reflog marked this pull request as ready for review June 15, 2026 15:57
Copilot AI review requested due to automatic review settings June 15, 2026 15:57

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.

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/novpn modes.
  • 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.

Comment thread android/app/src/main/kotlin/org/getlantern/lantern/service/LanternVpnService.kt Outdated
Comment thread scripts/stealth/generate_android_icons.py
Comment thread scripts/stealth/generate_android_icons.py
Comment thread docs/stealth-android-icons.md Outdated
Comment thread docs/stealth-android-icons.md Outdated
Comment thread docs/stealth-android-icons.md
Comment thread docs/stealth-android-identity.md Outdated
Comment thread android/app/src/main/AndroidManifest.novpn.xml Outdated
Comment thread android/app/src/main/AndroidManifest.novpn.xml
@reflog reflog force-pushed the stealth/pr1-foundation branch from 82e0867 to bab8b58 Compare June 15, 2026 16:10
@reflog reflog force-pushed the stealth/pr2-identity branch from 73dd0ea to 3a9a501 Compare June 15, 2026 16:10
@reflog reflog force-pushed the stealth/pr1-foundation branch from bab8b58 to fa33939 Compare June 15, 2026 16:27
@reflog reflog force-pushed the stealth/pr2-identity branch from 3a9a501 to a8a0e78 Compare June 15, 2026 16:27
@reflog reflog changed the title [stealth 2/6] neutral identity, icons & manifest minimization [stealth 2/4] neutral identity, icons & manifest minimization Jun 15, 2026
@reflog reflog force-pushed the stealth/pr1-foundation branch from fa33939 to fb322ce Compare June 15, 2026 16:41
@reflog reflog force-pushed the stealth/pr2-identity branch from a8a0e78 to 6b0fb5c Compare June 15, 2026 16:41
@reflog reflog force-pushed the stealth/pr1-foundation branch from fb322ce to ec5db08 Compare June 15, 2026 16:51
@reflog reflog force-pushed the stealth/pr2-identity branch from 6b0fb5c to 4a146d2 Compare June 15, 2026 16:51
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