Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
2483 commits
Select commit Hold shift + click to select a range
6421d04
i18n(weekly-mr): Upgrade translations from crowdin (a9e20dd9).
Apr 14, 2026
df64ab7
Decrease update prompt delay from 45 to 21 days.
msimonides-proton Apr 14, 2026
8c75b14
chore(deps): update dependency proton/devops/cicd-components/kubernet…
Apr 15, 2026
2282914
Move OnboardingTelemetry to telemetry package.
msimonides-proton Apr 13, 2026
c2d3282
Add _LEGACY suffix to CommonDimensions.Keys using snake_case.
msimonides-proton Apr 13, 2026
4a8c834
Implement telemetry for TV sign-in flow [VPNPLG-52].
msimonides-proton Apr 13, 2026
898208b
Fix text in the streaming notification [VPNPLG-42].
msimonides-proton Apr 15, 2026
595ab54
Remove unused dependency from UpdateServerListFromApi.
msimonides-proton Apr 15, 2026
054dbe1
Encode session fork payload with Base64 [VPNPLG-52]
msimonides-proton Apr 16, 2026
4b7198f
protun: libvpnclient 0.3.12 + traffic optimizations
mateusz-markowicz Apr 20, 2026
b7b57da
i18n(weekly-mr): Upgrade translations from crowdin (4b7198f6).
Apr 21, 2026
391ad6f
Fix settings heartbeat telemetry blocking events before login [VPNPLG…
msimonides-proton Apr 21, 2026
08bf1ee
Update core to 36.5.0
mateusz-markowicz Apr 21, 2026
5d996f9
Update 3rd party licenses
mateusz-markowicz Apr 21, 2026
f60ec31
Fix userTierAtInitiation for TV sign-in [VPNPLG-52].
msimonides-proton Apr 23, 2026
925bd8a
i18n(weekly-mr): Upgrade translations from crowdin (f60ec314).
Apr 24, 2026
68a2fd8
Add new upsell dialog for streaming [VPNPLG-60]
msimonides-proton Apr 16, 2026
4ed7d89
Launch the new streaming upsell when FF is on [VPNPLG-60].
msimonides-proton Apr 16, 2026
f9d45b6
Add new layouts for speed and NetShield upsells [VPNPLG-60].
msimonides-proton Apr 17, 2026
1da7323
Update reference images for screenshot tests
proton-ci Apr 17, 2026
6975165
Accessibility for the benefits table [VPNPLG-60]
msimonides-proton Apr 21, 2026
0f4d94b
Use existing color constants for upsell dialog gradients [VPNPLG-70].
msimonides-proton Apr 21, 2026
4879a61
Deprecate the streamingServicesLogos feature flag.
msimonides-proton Apr 21, 2026
17eef8f
Introduce a ViewState type for new upgrade dialogs [VPNPLG-60].
msimonides-proton Apr 22, 2026
a98ef11
Add screenshot tests for upgrade dialogs [VPNPLG-60]
msimonides-proton Apr 22, 2026
e890c94
Update reference images for screenshot tests
proton-ci Apr 22, 2026
39d5d46
Add flowType for TV signin telemetry [VPNPLG-52].
msimonides-proton Apr 23, 2026
24bcc69
Add new upsell for countries [VPNPLG-60].
msimonides-proton Apr 21, 2026
9a1678b
Add modal_trigger to upsell telemetry [VPNPLG-60].
msimonides-proton Apr 24, 2026
cdd150c
Update reference images for screenshot tests
proton-ci Apr 24, 2026
b929612
Center upsell dialog content vertically [VPNPLG-60].
msimonides-proton Apr 24, 2026
03deb3d
Use new upsell dialogs in settings [VPNPLG-60].
msimonides-proton Apr 24, 2026
9e915d1
Replace ic_proton_cross with an updated version.
msimonides-proton Apr 27, 2026
c73f648
Update upsell gradients.
msimonides-proton Apr 27, 2026
3576d95
Update reference images for screenshot tests
proton-ci Apr 27, 2026
0b9e14e
i18n(weekly-mr): Upgrade translations from crowdin (39d5d46e).
Apr 28, 2026
8c7374b
i18n(weekly-mr): Upgrade translations from crowdin (0b9e14e6).
May 1, 2026
c5f1784
chore(MMP): setup MMP events local persistence [VPNPLG-11]
AlexanderTalledo Feb 24, 2026
2885520
chore(MMP): support events read/write operations [VPNPLG-11]
AlexanderTalledo Feb 24, 2026
61d1ad4
feat(MMP): support events delivery to the API [VPNPLG-11]
AlexanderTalledo Feb 24, 2026
3d2436d
feat(MMP): support opt-out events [VPNPLG-11]
AlexanderTalledo Mar 12, 2026
60f18ef
i18n(weekly-mr): Upgrade translations from crowdin (8c7374b6).
May 5, 2026
8c2969c
chore(MMP): support install event type [VPNPLG-12]
AlexanderTalledo Feb 26, 2026
cac20fc
chore(MMP): support subscription event type [VPNPLG-12]
AlexanderTalledo Apr 21, 2026
f72faa6
chore(MMP): support open event type [VPNPLG-12]
AlexanderTalledo Apr 21, 2026
099ff70
Fix maven cache.
msimonides-proton May 7, 2026
208a115
Fix feature flag refresh [VPNAND-2560].
msimonides-proton May 7, 2026
a56eafc
Add build source to TV QR code [VPNPLG-72].
msimonides-proton May 7, 2026
65e7433
i18n(weekly-mr): Upgrade translations from crowdin (a56eafcc).
May 8, 2026
edc8da9
Send the first settings snapshot after 24h.
msimonides-proton May 8, 2026
fac53de
Improve telemetry upload when multiple immediate events are reported.
msimonides-proton May 8, 2026
346d256
i18n(weekly-mr): Upgrade translations from crowdin (fac53de4).
May 12, 2026
1e36e7a
Send the actual A/B group with onboarding upsell [VPNPLG-76].
msimonides-proton May 13, 2026
b44929a
Remove upsell display event from free connections bottom sheet [VPNPL…
msimonides-proton May 13, 2026
66f636a
Use FeatureFlagRepository for getting feature flag values [VPNAND-2560].
msimonides-proton May 14, 2026
9eecf8f
i18n(weekly-mr): Upgrade translations from crowdin (66f636ac).
May 15, 2026
28d39e0
feat: user connection feedback [VPNUX-18]
AlexanderTalledo May 8, 2026
3f02fb1
Update reference images for screenshot tests
proton-ci May 14, 2026
adf6a34
Refactor LoadGoogleSubscriptionPlans result [VPNPLG-69].
msimonides-proton Apr 28, 2026
604b9ea
Pick GIAP prices by offer tag [VPNPLG-69]
msimonides-proton May 5, 2026
d050097
Move PaymentPanelFragment.CycleViewInfo to ViewModel.
msimonides-proton May 8, 2026
ced951c
Simplify and move error handling from PaymentPanelFragment to VM.
msimonides-proton May 8, 2026
5875f63
Use CommonUpgradeDialogViewModel.State in UI.
msimonides-proton May 8, 2026
6bb3998
Split composables for the new upsell dialogs.
msimonides-proton May 11, 2026
cec6f0d
Drop PaymentPanelFragment from Compose screens.
msimonides-proton May 11, 2026
76ea526
Update reference images for screenshot tests
proton-ci May 12, 2026
8dcf5f2
Repeat client-side promo every ~70 days.
msimonides-proton May 13, 2026
28351c8
Add 12m promo offer [VPNPLG-48]
msimonides-proton May 14, 2026
a07c53c
Trigger cyclic client-side promos on app open [VPNPLG-48].
msimonides-proton May 15, 2026
05510e1
Include plan cycles in client-side notification reference [VPNPLG-48].
msimonides-proton May 15, 2026
2dabc16
feat(TV): user connection feedback [VPNUX-21]
AlexanderTalledo May 11, 2026
92dc726
i18n(weekly-mr): Upgrade translations from crowdin (05510e1d).
May 19, 2026
447a0cd
Always report the FF value with upsell telemetry.
msimonides-proton May 18, 2026
88adc5e
Use uniqe IDs in client-side promo notifications [VPNPLG-48].
msimonides-proton May 19, 2026
a417c84
Add upsell_price_display event [VPNPLG-48].
msimonides-proton May 19, 2026
aa7b0e1
Introduce dimension for 12m A/B test [VPNPLG-48].
msimonides-proton May 19, 2026
7f052ce
chore: AutomaticConnectionPreferencesEnabled feature flag cleanup [VP…
AlexanderTalledo May 19, 2026
b073fdb
chore: IsAppUpdateBannerFeatureFlagEnabled feature flag cleanup [VPNA…
AlexanderTalledo May 19, 2026
94ea353
Add more logs for VPN permission denial.
msimonides-proton May 20, 2026
98fbdb1
Fix in-app review showing multiple times [VPNAND-2565].
msimonides-proton May 19, 2026
88b3bc4
i18n(weekly-mr): Upgrade translations from crowdin (98fbdb10).
May 22, 2026
a16fe3a
Implement telemetry for 12m promo experiment [VPNPLG-82].
msimonides-proton May 21, 2026
6ccb5d7
Use UserId to assing users to A/B groups [VPNPLG-82].
msimonides-proton May 22, 2026
76bd8a6
fix(TV): fixed connection feedback telemetry values when feedback has…
AlexanderTalledo May 22, 2026
34a7c11
i18n(weekly-mr): Upgrade translations from crowdin (76bd8a69).
May 26, 2026
b6f2495
chore(deps): update dependency devex/android-firebase-testing to v0.0.4
May 26, 2026
d67e506
i18n(weekly-mr): Upgrade translations from crowdin (34a7c11c).
May 29, 2026
8cd8272
chore: ConnectAndGoAppsIncognito feature flag cleanup [VPNAND-2570]
AlexanderTalledo May 25, 2026
12bd9a5
chore: isDirectLanConnectionsEnabled feature flag cleanup [VPNAND-2571]
AlexanderTalledo May 25, 2026
f0bea72
Add new countries.
msimonides-proton Jun 1, 2026
1f3a047
chore: StreamingRestrictionUpsellEnabled feature flag cleanup [VPNAND…
AlexanderTalledo Jun 1, 2026
846411a
i18n(weekly-mr): Upgrade translations from crowdin (1f3a047c).
Jun 2, 2026
09763dd
chore: IsNetShieldLevelThreeFeatureFlagEnabled feature flag cleanup […
AlexanderTalledo Jun 1, 2026
283d129
chore: IPv6Support feature flag cleanup [VPNAND-2572]
AlexanderTalledo May 25, 2026
0f75dfd
Add home_banner value to UpgradeTrigger [VPNPLG-91].
msimonides-proton Jun 3, 2026
b7d9016
Fix widget prompt sometimes shown to a wrong user [VPNAND-2540].
msimonides-proton Mar 9, 2026
ef1751c
Main flow for IAP on TV [VPNPLG-87]
msimonides-proton May 21, 2026
61a1969
Remove commented out code.
msimonides-proton Jun 2, 2026
c3f1e82
Fix warnings about unused focusRequester.
msimonides-proton Jun 8, 2026
057ece4
i18n(weekly-mr): Upgrade translations from crowdin (c3f1e826).
Jun 9, 2026
25684d0
fix: fixed upgrade success screen UI for tablet devices [VPNAND-2583]
AlexanderTalledo Jun 9, 2026
fa03bd3
chore: TvCustomDnsSettingEnabled feature flag cleanup [VPNAND-2577]
AlexanderTalledo Jun 1, 2026
6653d39
Add TV upsell telemetry [VPNPLG-89].
msimonides-proton Jun 10, 2026
ad4a190
Display redeem purchase on TV [VPNPLG-90].
msimonides-proton Jun 9, 2026
d6675f7
Suppress warnings in CI builds to make errors easier to find in log.
msimonides-proton Jun 10, 2026
2f49cdd
chore: TvNetShieldSettingEnabled feature flag cleanup [VPNAND-2578]
AlexanderTalledo Jun 1, 2026
a5abd33
chore: ServerListTruncation feature flag cleanup [VPNAND-2584]
AlexanderTalledo Jun 11, 2026
7564d1d
Add in-progress state to TV payment panel [VPNPLG-92].
msimonides-proton Jun 10, 2026
b662b19
i18n(weekly-mr): Upgrade translations from crowdin (a5abd337).
Jun 12, 2026
3e06ce8
Add debug logs for when an IAP is not valid.
msimonides-proton Jun 11, 2026
99d679e
Avoid checking for credless user when 2fa is needed [VPNAND-2587].
msimonides-proton Jun 11, 2026
b097dac
Use saved state for TV fork selector [VPNAND-2586]
msimonides-proton Jun 12, 2026
63102bc
chore: IsBinaryServerStatusEnabled feature flag cleanup [VPNAND-2588]
AlexanderTalledo Jun 12, 2026
db519b3
chore: logicals V1 endpoint cleanup [VPNAND-2588]
AlexanderTalledo Jun 15, 2026
1ba1a67
chore: loads V1 endpoint cleanup [VPNAND-2588]
AlexanderTalledo Jun 15, 2026
e1e7813
Remove FF for TV QR code login [VPNAND-2585].
msimonides-proton Jun 11, 2026
02b33f3
Remove unused TV layouts.
msimonides-proton Jun 11, 2026
ab8a32e
Fix the congrats activity for large screens [VPNAND-2583].
msimonides-proton Jun 17, 2026
3c6ba65
PaidFeature -> TvUpsellContent - this is not a generic type.
msimonides-proton Jun 18, 2026
3aab42e
Implement downgrade dialog for TV [VPNPLG-102].
msimonides-proton Jun 18, 2026
3754214
Remove bullet points from upgraded to VPN Plus dialog [VPNPLG-102].
msimonides-proton Jun 18, 2026
97300e2
Open TvUpsellActivity from SwitchDialogActivity for upgrade [VPNPLG-1…
msimonides-proton Jun 18, 2026
3316386
Update Core to 36.6.1 [VPNAND-2590]
msimonides-proton Jun 19, 2026
6763ed7
Improve logging of exceptions from WireguardBackend.
msimonides-proton Jun 19, 2026
1a30d45
i18n(weekly-mr): Upgrade translations from crowdin (97300e27).
Jun 19, 2026
7afab01
i18n(weekly-mr): Upgrade translations from crowdin (1a30d45b).
Jun 23, 2026
dec59b6
Implement split tunneling IPs in Compose [VPNAND-2592].
msimonides-proton Jun 22, 2026
f8b91e2
Update reference images for screenshot tests
proton-ci Jun 23, 2026
e4796b7
Implement split tunneling apps in Compose [VPNAND-2593].
msimonides-proton Jun 23, 2026
e61dcd8
Update reference images for screenshot tests
proton-ci Jun 23, 2026
00d2e34
Remove unused code [VPNAND-2593]
msimonides-proton Jun 24, 2026
5f9d7d0
Update licenses.
msimonides-proton Jun 24, 2026
f1e1cc9
Log APK signatures hashes in CurrentStateLogger
mateusz-markowicz Jun 24, 2026
5f6b316
Support IP prefix for split tunneling [VPNAND-2597]
mateusz-markowicz Jun 24, 2026
eb6eecc
Debug utils: add button to clear log
mateusz-markowicz Jun 24, 2026
82978e0
Debug utils: add log level dropdown
mateusz-markowicz Jun 25, 2026
d084b85
Debug utils: show loading state on refresh config button
mateusz-markowicz Jun 25, 2026
f1f63df
Use compose dialogs and undo in split tunneling [VPNAND-2594, VPNAND-…
msimonides-proton Jun 25, 2026
320172c
Group IAP errors by message for easier analysis [VPNPLG-115].
msimonides-proton Jun 30, 2026
761948a
chore: unused features V4 endpoint clean up [VPNAND-2599]
AlexanderTalledo Jun 30, 2026
76982ef
Update some dependencies and clean up R8 [VPNAND-2598].
msimonides-proton Jun 25, 2026
4ad5a5c
Update licenses.
msimonides-proton Jun 25, 2026
8889a7b
Update baseline profiles.
msimonides-proton Jun 25, 2026
dc84a64
Fix failing integration tests.
msimonides-proton Jul 2, 2026
e5fd421
Fix path for setting test env variables.
msimonides-proton May 22, 2026
890dfc9
i18n(weekly-mr): Upgrade translations from crowdin (dc84a64a).
Jul 2, 2026
a3e78c8
i18n(weekly-mr): Upgrade translations from crowdin (890dfc98).
Jul 3, 2026
59d304e
chore: remove NEW tag from settings widget option [VPNAND-2601]
AlexanderTalledo Jul 2, 2026
ac00938
Update reference images for screenshot tests
proton-ci Jul 3, 2026
cd69185
Fix http: links for documentation.
msimonides-proton Jul 3, 2026
a2b0e56
Update R8 to version that works with Kotlin 2.3 metadata.
msimonides-proton Jul 3, 2026
798dfff
Show upsell after TV login [VPNPLG-77].
msimonides-proton Jul 2, 2026
651b017
i18n(weekly-mr): Upgrade translations from crowdin (798dfffa).
Jul 7, 2026
69c8943
fix(TV): fixed d-pad up navigation within grid views [VPNAND-2603]
AlexanderTalledo Jul 7, 2026
0f7d4bf
Update telemetry for comparison table A/B test [VPNPLG-101].
msimonides-proton Jun 15, 2026
6f563b2
Start all upgrade dialogs via UpgradeDialogLauncher [VPNPLG-100].
msimonides-proton Jun 16, 2026
d908730
Open onboarding upgrade dialog via UpgradeDialogLauncher [VPNPLG-100].
msimonides-proton Jun 17, 2026
330c054
Use a better hashing function for A/B test split.
msimonides-proton Jun 19, 2026
aaf051b
Pass plan and billing cycle to upgrade_attempt.
msimonides-proton Jun 30, 2026
ec52181
fix(MMP): avoid losing events due to race conditions with feature fla…
AlexanderTalledo Jul 8, 2026
4d66116
Revert "Use a better hashing function for A/B test split."
msimonides-proton Jul 9, 2026
87a0b4c
i18n(weekly-mr): Upgrade translations from crowdin (ec52181c).
Jul 10, 2026
30ddf96
Show TV QR code login errors to the user [VPNAND-2606].
msimonides-proton Jul 9, 2026
f53c1c0
Reset NotReady account state when opening the app [VPNAND-2605].
msimonides-proton Jul 10, 2026
f09c7ae
Close the TvMainActivity when going back from login screen [VPNAND-26…
msimonides-proton Jul 10, 2026
3002bb6
Catch errors from postLoginAccountSetup at call site [VPNAND-2606].
msimonides-proton Jul 10, 2026
af50238
Upgrade Core version to 36.6.2.
msimonides-proton Jul 10, 2026
440dac9
feat: display smart routing country in connection details [VPNUX-114]
AlexanderTalledo Jun 30, 2026
218ae78
feat: display smart routing info banner at country servers level [VPN…
AlexanderTalledo Jul 7, 2026
214a7ad
refactor: extract info banner card to a common UI component [VPNUX-114]
AlexanderTalledo Jul 13, 2026
fdc3f1e
i18n(weekly-mr): Upgrade translations from crowdin (af502388).
Jul 14, 2026
8607670
Remove storage size from congrats screen.
msimonides-proton Jul 15, 2026
114faaa
Introduce non-exported InternalMainActivity alias for internal intent…
mateusz-markowicz Jul 16, 2026
59d15cb
Migrate protun v1 to 2.1.0 [VPNCORE-196]
mateusz-markowicz May 5, 2026
73f63f2
Update protun to 2.1.2 [VPNCORE-196]
mateusz-markowicz Jul 17, 2026
57c3ae8
i18n(weekly-mr): Upgrade translations from crowdin (73f63f28).
Jul 21, 2026
dfb419f
Remove an unnecessary assert from UpdateLoadsFromApi [VPNAND-2608].
msimonides-proton Jul 21, 2026
88f71f8
chore: bump Android target API to version 36 [VPNAND-2558]
AlexanderTalledo Jul 22, 2026
f773c46
Update the app name in metadata files.
msimonides-proton Jul 24, 2026
7e1efba
i18n(weekly-mr): Upgrade translations from crowdin (88f71f88).
Jul 24, 2026
a40b025
Update Core to 36.6.3.
msimonides-proton Jul 27, 2026
ebe2dbe
i18n(weekly-mr): Upgrade translations from crowdin (a40b0256).
Jul 28, 2026
60f5f01
Update datastore for 16KB page support.
msimonides-proton Jul 30, 2026
a446868
Update Core to 36.7.0.
msimonides-proton Jul 30, 2026
4b912f6
Fix edge-to-edge paddings for NoVpnPermissionActivity
mateusz-markowicz Jul 31, 2026
04f6bc6
Use MTU 1420 for ProTUN
mateusz-markowicz Jul 31, 2026
852cac8
Binary loads: fallback to physical location when IP-based not availab…
mateusz-markowicz Aug 3, 2026
6be6fc0
i18n(weekly-mr): Upgrade translations from crowdin (04f6bc69).
Aug 4, 2026
3b0cfee
i18n(weekly-mr): Upgrade translations from crowdin (6be6fc07).
Aug 7, 2026
b62de6e
Use individual modal_sources for some settings upsells [VPNPLG-139].
msimonides-proton Aug 7, 2026
79481da
Integrate Payments V3 [VPNPLG-114].
msimonides-proton Jul 7, 2026
87cfbe4
Close the "free connections" bottom sheet when opening upgrade.
msimonides-proton Jul 28, 2026
acd24b5
Update PaymentsHttpCapability to pass error body [VPNPLG-114].
msimonides-proton Jul 30, 2026
89651ba
Remove client checks for payments enabled [VPNPLG-114].
msimonides-proton Jul 30, 2026
ed1be20
Prefocus button in congrats dialog on TV.
msimonides-proton Aug 4, 2026
5bde741
[tests] Add jailUnban to auto login tests.
msimonides-proton Aug 7, 2026
856614a
i18n(weekly-mr): Upgrade translations from crowdin (5bde7417).
Aug 11, 2026
6505f36
Don't call GetSubscriptions unless needed [VPNPLG-141].
msimonides-proton Aug 10, 2026
357283a
Fix log message.
msimonides-proton Aug 10, 2026
1de6999
Include PaymentException code in reports to Sentry.
msimonides-proton Aug 10, 2026
eeb6503
Don't report transient payment errors to Sentry [VPNPLG-142]
msimonides-proton Aug 11, 2026
ec9364f
i18n(weekly-mr): Upgrade translations from crowdin (eeb65032).
Aug 14, 2026
79feeb6
Upsell comparison table: make all rows max width.
msimonides-proton Aug 7, 2026
fdf4c79
Add remaining comparison table upsell dialogs [VPNAND-135]
msimonides-proton Aug 7, 2026
88da63b
Update reference images for screenshot tests
Aug 13, 2026
5dbc794
Report suspicious free-non-free servers [VPNAND-2617].
msimonides-proton Aug 14, 2026
1358730
Set max width for upsell dialogs [VPNPLG-110].
msimonides-proton Aug 14, 2026
8b67610
Remove 12m A/B experiment.
msimonides-proton Aug 14, 2026
8b9f341
i18n(weekly-mr): Upgrade translations from crowdin (8b67610a).
Aug 18, 2026
3c5c6f0
Tweak and update comparison upsell dialogs [VPNPLG-150].
msimonides-proton Aug 19, 2026
40809c9
Remove duplicate screenshot tests for upsell dialogs.
msimonides-proton Aug 19, 2026
12cd575
Add onboarding comparison table screen [VPNPLG-147].
msimonides-proton Aug 20, 2026
482f4f6
Fix upsell comparison table for large screens.
msimonides-proton Aug 20, 2026
a2beb84
Update reference images for screenshot tests
proton-ci Aug 20, 2026
9ab4a2a
Update UI tests for A/B test in onboarding dialog.
msimonides-proton Aug 20, 2026
7f91cb8
i18n(weekly-mr): Upgrade translations from crowdin (9ab4a2ac).
Aug 21, 2026
5f6ca17
Simplify loadPlans in UpgradeDialogViewModel.
msimonides-proton Jul 24, 2026
ce72977
Extend notifications to include offer tag [VPNPLG-137].
msimonides-proton Jul 24, 2026
813261a
Rename GetEligibleIntroductoryOffers to GetEligibleOffers [VPNPLG-137].
msimonides-proton Aug 17, 2026
3a0a4c9
Implement payment plan flexibility [VPNPLG-138]
msimonides-proton Aug 18, 2026
d72a701
Add payment panel screenshot test [VPNPLG-138].
msimonides-proton Aug 19, 2026
70c44c2
Clear notifications cache when parsing fails [VPNPLG-137].
msimonides-proton Aug 19, 2026
441bbea
Update reference images for screenshot tests
proton-ci Aug 20, 2026
9035045
Reduce amount of Sentry reporting for payments network errors.
msimonides-proton Aug 21, 2026
1d08204
Improve RenewText sizing in payment panel.
msimonides-proton Aug 24, 2026
02660ff
Update reference images for screenshot tests
proton-ci Aug 24, 2026
dff6364
Build and publish reproducible build for F-Droid [VPNAND-2618].
msimonides-proton Aug 25, 2026
c866320
i18n(weekly-mr): Upgrade translations from crowdin (02660fff).
Aug 25, 2026
be0a3dc
Fix version of F-Droid reproducible builds [VPNAND-2618].
msimonides-proton Aug 25, 2026
a57c14c
Move offer eligibility cache to cache dir.
msimonides-proton Aug 26, 2026
f18aaa1
i18n(weekly-mr): Upgrade translations from crowdin (be0a3dc3).
Aug 26, 2026
d9cd010
i18n(weekly-mr): Upgrade translations from crowdin (f18aaa18).
Aug 28, 2026
fb87b16
i18n(weekly-mr): Upgrade translations from crowdin (d9cd0108).
Sep 1, 2026
e2b1a66
Report servers with unexpected state [VPNAND-2617].
msimonides-proton Sep 2, 2026
932a9e4
chore: Bump Core to version 36.8.0 [VPNAND-2624]
AlexanderTalledo Sep 3, 2026
84cbe04
i18n(weekly-mr): Upgrade translations from crowdin (932a9e40).
Sep 4, 2026
eb32e35
Small update to upsell strings.
msimonides-proton Aug 28, 2026
4f6f8eb
Support overriding upgrade offers with notifications [VPNPLG-146].
msimonides-proton Aug 28, 2026
e716112
Support base plan in notifications [VPNPLG-162].
msimonides-proton Sep 1, 2026
b5813a5
Update reference images for screenshot tests
proton-ci Sep 1, 2026
08f9bd9
Move plan resolution into view model to run with "loading" state [VPN…
msimonides-proton Sep 4, 2026
beafcc6
Build script cleanup.
msimonides-proton Sep 4, 2026
faadf80
Fix Sentry ignoredFlavors [VPNAND-2618].
msimonides-proton Sep 4, 2026
391f49f
Use productionVanillaOpenSource for F-Droid reproducible build [VPNAN…
msimonides-proton Sep 4, 2026
999075a
Disable Sentry in openSource flavor also when built by us [VPNAND-2618].
msimonides-proton Sep 4, 2026
23222cd
Fix warnings.
msimonides-proton Sep 7, 2026
fab1777
i18n(weekly-mr): Upgrade translations from crowdin (23222cda).
Sep 7, 2026
3643e9d
Update guesthole servers
proton-ci Sep 21, 2026
fab7c25
Add fdroid metadata
proton-ci Sep 21, 2026
80af680
Clip upsell card ripple to card shape
MAHAN-VS-MAHAN Jun 20, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
22 changes: 0 additions & 22 deletions .download-upload.gitlab-ci.yml

This file was deleted.

3 changes: 3 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1,2 +1,5 @@
*.psd filter=lfs diff=lfs merge=lfs -text
*.aar filter=lft diff=lfs merge=lfs -text
detekt.yml text eol=lf
# Folders starting with screenshotTest but NOT screenshotTest itself.
app/src/screenshotTest?*/** filter=lfs diff=lfs merge=lfs -text
4 changes: 1 addition & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,8 @@
/build
/config/detekt/config.yml
/config/detekt/reports
openvpn/build/**
/observability/domain/build
/captures
.externalNativeBuild
openvpn/src/main/cpp/asio/asio/src/doc/
openvpn/.cxx/
pmcrypto/build/
app/src/androidTest/assets/sensitive/
133 changes: 0 additions & 133 deletions .gitlab-ci-firebase.yml

This file was deleted.

20 changes: 20 additions & 0 deletions .gitleaks.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
[extend]
path = "/etc/gitleaks/proton.toml"

[allowlist]
paths = [
# R8 mapping file, contains function names, line numbers and other symbols that can be picked as false positives.
'''^app/build/outputs/mapping/(.*)/mapping.txt$''',
'''^app/build/outputs/mapping/(.*)/seeds.txt$''',
'''^app/build/outputs/mapping/(.*)/usage.txt$''',
# Semgrep configuration file
'''^custom/semgrep/rules.yaml$''',
# Added by CI job
'''^appetize-information.json$''',
# Profile rules are interpreted as secrets
'''^app/src/productionGooglePlayStoreRelease/generated/baselineProfiles/(.*)''',
# Data in these JSON files triggers the proton-aead-jwt-signing-key rule.
'''^app/src/main/assets/GuestHoleServers.json$''',
'''^app/src/main/java/com/protonvpn/android/utils/Constants.kt$''',
'''^app/src/main/res/raw/add_widget_animation.json$'''
]
File renamed without changes.
1 change: 1 addition & 0 deletions .grype.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# This file was created to make grype job always pass.
15 changes: 15 additions & 0 deletions .idea/icon.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
9 changes: 9 additions & 0 deletions .semgrep.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
exclude:
# we already run gitleaks separately, no need for duplicate reports
- generic.secrets.gitleaks.
# semgrepignore changes are being reviewed in MRs
- generic.ci.audit.changed-semgrepignore.changed-semgrepignore
# low quality rules with high number of false positives
- MSTG-
# low quality rules that trigger on words like 'key' or 'Log'
- mobsf.mobsfscan.android.
6 changes: 6 additions & 0 deletions .semgrepignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
/.gradle/
/.sec/

# oss_licenses is embedded in the app, it has JS for generating 3rd party licenses HTML
# from a JSON data file. No external input.
/app/src/main/assets/oss_licenses
2 changes: 2 additions & 0 deletions CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# ownership: tight
* @ProtonVPN/groups/android-developers
62 changes: 33 additions & 29 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,36 @@
# ProtonVPN for Android

Copyright (c) 2019 Proton Technologies AG
Copyright (c) 2019 Proton AG

## Download

<p align="center">
<img src="https://raw.githubusercontent.com/ProtonVPN/android-app/master/metadata/en-US/images/phoneScreenshots/2.jpg" height="400">
<img src="https://raw.githubusercontent.com/ProtonVPN/android-app/master/metadata/en-US/images/phoneScreenshots/3.jpg" height="400">
<img src="https://raw.githubusercontent.com/ProtonVPN/android-app/master/metadata/en-US/images/phoneScreenshots/4.jpg" height="400">
<img src="https://raw.githubusercontent.com/ProtonVPN/android-app/master/metadata/en-US/images/phoneScreenshots/5.jpg" height="400">
</p>

<p align="center">
<a href="https://play.google.com/store/apps/details?id=ch.protonvpn.android">
<img src="https://play.google.com/intl/en_us/badges/images/generic/en_badge_web_generic.png" alt="Get it on Google Play" height="80">
</a>
<a href="https://f-droid.org/packages/ch.protonvpn.android">
<img src="https://f-droid.org/badge/get-it-on.png" alt="Get it on F-Droid" height="80">
</a>
<a href="https://github.com/ProtonVPN/android-app/releases">
<img src="https://i.postimg.cc/kXfbyWjL/get-it-on-github.png" alt="Get it on GitHub" height="80">
</a>
</p>

## Build instructions
- Install sdk, ndk, cmake, swig
- Clone this repository
- `./gradlew assembleProdDebug` or open and build in Android Studio
- `./gradlew assembleProductionVanillaOpenSourceDebug` or open and build in Android Studio

### Build release
To complete a release build signing keys need to be provided:
./gradlew assembleProdRelease -PkeyStoreFilePath=<keystore> -PkeyStoreKeyAlias=<alias> -PkeyStorePassword=<pass> -PkeyStoreKeyPassword=<key-pass>`
- `./gradlew assembleProductionVanillaOpenSourceRelease -PkeyStoreFilePath=<keystore> -PkeyStoreKeyAlias=<alias> -PkeyStorePassword=<pass> -PkeyStoreKeyPassword=<key-pass>`

## Code style
Project uses agreed code style ProtonStyle.xml for java. Import it in Android studio via ```File>>Settings>>Editor>>Code style>>Import Scheme```
Expand All @@ -23,7 +44,7 @@ If you would like to contribute, please keep in mind the following rules:
- After adding/updating open source dependencies run `gradlew updateLicensesJson` to update attributions.

Internally our CI automatically checks all pull requests for code style issues, and runs our tests. However you can run those locally as well.
```bash
```
gradlew checkstyle
gradlew detekt
gradlew test
Expand All @@ -32,41 +53,24 @@ gradlew androidTest

By making a contribution to this project you agree to the following:

1. I assign any and all copyright related to the contribution to Proton Technologies AG;
1. I assign any and all copyright related to the contribution to Proton AG;
2. I certify that the contribution was created in whole by me;
3. I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it) is maintained indefinitely and may be redistributed with this project or the open source license(s) involved.

## Manage Image for the CI

### Create an image NAME_IMAGE:branch-<branch>

```sh
$ make image [branch=name]
```

### For the dev ~ Build the image on your computer: output ci-android:latest
## Signature

```sh
$ make local
All our builds (except for F-droid) will be signed with same key.
SHA256 fingerprint for signing certificate
```

### Run the image built via make local on your compute so you can inspect its content

```sh
$ make debug-local
```

### Deploy the image of the CI from your computer

```sh
$ make deploy-local: login-deploy imag
ch.protonvpn.android
DC:C9:43:9E:C1:A6:C6:A8:D0:20:3F:34:23:EE:42:BC:C8:B9:70:62:8E:53:CB:73:A0:39:3F:39:8D:D5:B8:53
```

## Versioning
- Version matches format: `[major][minor][patch]`
- Version matches format: `[major][minor][patch][hotfix]`

## License

The code and datafiles in this distribution are licensed under the terms of the GPLv3 as published by the Free Software Foundation. See <https://www.gnu.org/licenses/> for a copy of this license.

Copyright (c) 2019 Proton Technologies AG
Copyright (c) 2019 Proton AG
Loading