Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
2458 commits
Select commit Hold shift + click to select a range
19e52ad
i18n: Upgrade translations from crowdin (a7b416db).
Jul 29, 2025
4991d06
chore: Update custom DNS telemetry [VPNAND-2280]
AlexanderTalledo Jul 24, 2025
603d9e7
chore(telemetry): align Settings telemetry events [VPNAND-2280]
AlexanderTalledo Jul 29, 2025
9889d84
Enable stack protector for all OpenVPN libs [VPNAND-2269].
msimonides-proton Aug 1, 2025
c37e378
feat(netshield): Remove the distinctions for B2B Essentials plan [VPN…
AlexanderTalledo Aug 1, 2025
40bb599
chore: bump core version to 34.1.0 [VPNAND-2307]
AlexanderTalledo Aug 5, 2025
f4eeb91
i18n: Upgrade translations from crowdin (c37e3787).
Aug 5, 2025
71b6e90
i18n: Upgrade translations from crowdin (f4eeb917).
Aug 8, 2025
800b86c
Update go-vpn-lib to 0.1.77
mateusz-markowicz Aug 11, 2025
5222f0c
Update test automation users.
msimonides-proton Aug 14, 2025
6cceee9
i18n: Upgrade translations from crowdin (5222f0c1).
Aug 15, 2025
4c5c170
Remove OneClickUnlimitedPlan feature flag [VPNAND-2308].
msimonides-proton Aug 5, 2025
3a3251b
Remove PaymentDisplayRenewPrice kill switch [VPNAND-2308].
msimonides-proton Aug 5, 2025
37eee67
Remove OneClickPayments feature flag [VPNAND-2308].
msimonides-proton Aug 5, 2025
7d50fa7
Add promo notifications for introductory price [VPNAND-2311].
msimonides-proton Aug 6, 2025
d69df8e
Customize payment button label for notifications [VPNAND-2311].
msimonides-proton Aug 11, 2025
49ec453
Ensure that offer is still valid when opening notification [VPNAND-23…
msimonides-proton Aug 11, 2025
8821034
Update targetSdkVersion to 35 [VPNAND-2150].
msimonides-proton Aug 13, 2025
0087915
IAP promo banner non-dismissible [VPNAND-2311].
msimonides-proton Aug 19, 2025
d39ceb1
feat: support no shared servers connections available [VPNAND-2314]
AlexanderTalledo Aug 14, 2025
7e927e6
Use HTML-based strings for links [VPNAND-2314].
msimonides-proton Aug 18, 2025
37f42b0
chore: Do not display countries bottom bar item when no countries are…
AlexanderTalledo Aug 7, 2025
b8be6cc
Update buildTools and release tests target sdk
AlgirdasPundzius Aug 19, 2025
133f336
Improve load caused by generating intro price notifications [VPNAND-2…
msimonides-proton Aug 21, 2025
f26eafd
i18n: Upgrade translations from crowdin (82ccdb6d).
Aug 22, 2025
2f15799
Call setup_orchestrators from UpgradeActivityHelper [VPNAND-2330].
msimonides-proton Aug 25, 2025
49a2be0
i18n: Upgrade translations from crowdin (46b96807).
Aug 26, 2025
3f8c66e
Shorten the f-droid description.
msimonides-proton Aug 25, 2025
0d225fb
Don't use deprecated EncryptedSharedPreferences for cert storage [VPN…
mateusz-markowicz Aug 18, 2025
0904764
Disallow cert storage fallback for users with organization [VPNAND-2324]
mateusz-markowicz Aug 19, 2025
adb43c8
Don't catch generic exception in ObjectStore.read
mateusz-markowicz Aug 28, 2025
1876184
Add FF for the binary server status [VPNAND-2192].
msimonides-proton Jul 1, 2025
665d94e
Update PeriodicUpdateManager to allow for nullable results.
msimonides-proton Jul 1, 2025
0493ff1
Split the class for API and domain-layer Server.
msimonides-proton Jul 9, 2025
41b3566
Move classes representing API responses to servers.api.
msimonides-proton Jul 16, 2025
7574aff
Remove the "servers" argument to updateWithMutex.
msimonides-proton Jul 11, 2025
9b49071
Update responses for new logicals endpoint [VPNAND-2194].
msimonides-proton Jul 14, 2025
95a3f33
Filter out hidden servers.
msimonides-proton Jul 14, 2025
2c05e7b
Add support for binary server status updates [VPNAND-2194].
msimonides-proton Jul 16, 2025
9f86785
Provide location data to compute loads [VPNAND-2193].
msimonides-proton Jul 22, 2025
635a95a
Clean up ServerListUpdater's return value type [VPNAND-2193]
msimonides-proton Jul 22, 2025
c339769
Delete the server() method from test utils.
msimonides-proton Jul 23, 2025
a813851
Move more code away from ServerListUpdater.
msimonides-proton Jul 24, 2025
9407466
Use extension function to convert to PeriodicActionResult.
msimonides-proton Aug 7, 2025
e84e497
i18n: Upgrade translations from crowdin (94074660).
Aug 29, 2025
692dcc9
Remove server count from lists [VPNAND-2336].
msimonides-proton Sep 1, 2025
5ff0122
Add develocity for build scans
AlgirdasPundzius Aug 18, 2025
a056e87
Use proton gradle cache
AlgirdasPundzius Aug 18, 2025
7127e6a
Remove gitlab cache
AlgirdasPundzius Aug 19, 2025
1275cf3
Enable core FFs in UI tests.
msimonides-proton Aug 22, 2025
3ade7c1
Increase Java heap.
msimonides-proton Aug 27, 2025
e2062ae
Increase idling resource timeout.
msimonides-proton Aug 27, 2025
f8dac8d
Show TV settings to free users [VPNAND-2337].
msimonides-proton Sep 2, 2025
125859c
Move "sign out" to the end of the row on TV [VPNAND-2337].
msimonides-proton Aug 28, 2025
5cc64fe
i18n: Upgrade translations from crowdin (125859cf).
Sep 5, 2025
481eb2b
Add NetShield setting on TV [VPNAND-2334].
msimonides-proton Aug 28, 2025
6f98435
Add allow LAN connections setting to TV [VPNAND-2334].
msimonides-proton Aug 28, 2025
530c91b
Update TV list row padding [VPNAND-2334].
msimonides-proton Sep 2, 2025
7e5cfe4
Migrate TV LAN setting [VPNAND-2334].
msimonides-proton Sep 5, 2025
256c808
Allow fallback cert storage unconditionally for now [VPNAND-2347]
mateusz-markowicz Sep 5, 2025
76b6bcb
Trigger proton DNS for our API when connected [VPNAND-2344]
mateusz-markowicz Sep 10, 2025
c2f23e8
Trigger fetching new certificate after removing old storage [VPNAND-2…
mateusz-markowicz Sep 10, 2025
6d5cf70
i18n: Upgrade translations from crowdin (c2f23e81).
Sep 12, 2025
8cdcdfa
Update core to 34.3.0 and goopenpgp to v2.9.0-proton.1 [VPNAND-2331]
mateusz-markowicz Aug 25, 2025
17e28b5
feat(TV): Add custom DNS settings option
AlexanderTalledo Sep 10, 2025
4f02e1c
feat(TV): display custom DNS list [VPNAND-2352]
AlexanderTalledo Sep 11, 2025
cb8971f
feat(TV): support adding custom DNS [VPNAND-2353]
AlexanderTalledo Sep 11, 2025
b00a248
i18n: Upgrade translations from crowdin (6d5cf70d).
Sep 16, 2025
8da38e8
Base auto-connect functionality for TV [VPNAND-2339].
msimonides-proton Sep 3, 2025
f871cfc
Disable LeakCanary in Firebase Test Lab.
msimonides-proton Aug 19, 2025
2657a35
feat(TV): support custom DNS edit options [VPNAND-2354]
AlexanderTalledo Sep 12, 2025
aeb9fe2
feat: add NetShield settings learn more infor drawer [VPNAND-2338]
AlexanderTalledo Sep 9, 2025
74c6b64
feat(TV): redesigned upsell screens
AlexanderTalledo Sep 17, 2025
8906ffd
feat(TV): redesigned upsell screens
AlexanderTalledo Sep 17, 2025
507d808
feat(TV): support custom DNS edit options [VPNAND-2354]
AlexanderTalledo Sep 12, 2025
03f8aad
feat(TV) Handle NetShield and Custom DNS conflicts [VPNAND-2359]
AlexanderTalledo Sep 19, 2025
0687c19
Update to core 35.0.0, AGP to 8.9.1 and compile SDK to 36 [VPNAND-2363]
mateusz-markowicz Sep 15, 2025
fc19795
i18n: Upgrade translations from crowdin (b00a2483).
Sep 19, 2025
0c0d13f
Support opening apps for profile's Auto Open [VPNAND-2358]
mateusz-markowicz Sep 17, 2025
375079e
Support Auto Open url private mode with ephemeral Custom Tabs [VPNAND…
mateusz-markowicz Sep 17, 2025
b8d38fb
Connect and Go: show toast when app is not found [VPNAND-2358]
mateusz-markowicz Sep 18, 2025
4ae33e2
Fix foreground activity tracker in scenarios involving dialog activities
mateusz-markowicz Sep 18, 2025
a2c0a78
Fallback to other browser if default doesn't support private custom t…
mateusz-markowicz Sep 18, 2025
7cc6181
Don't show private mode switch for auto-open when no supporting brows…
mateusz-markowicz Sep 18, 2025
6d4bfe8
Add telemetry for auto-open private mode [VPNAND-2357]
mateusz-markowicz Sep 18, 2025
e819c98
Truncation: change remote search delay to 2.5s [VPNAND-2368]
mateusz-markowicz Sep 22, 2025
262ea0a
Use more informative message when VpnDns fail [VPNAND-2344]
mateusz-markowicz Sep 22, 2025
aaebe53
fix(TV): show re-connection when custom DNS settings change
AlexanderTalledo Sep 22, 2025
0106850
fix(TV): Show reconnect dialog when turning Custom DNS off from NetSh…
AlexanderTalledo Sep 22, 2025
e43c595
TV auto-connect: support only connect-on-boot [VPNAND-2339]
mateusz-markowicz Sep 22, 2025
db13e60
Check private mode availability for new profiles [VPNAND-2357]
mateusz-markowicz Sep 22, 2025
1f8f37c
Rename IsPrivateBrowsingAvailable to GetPrivateBrowsingAvailability
mateusz-markowicz Sep 23, 2025
8436fbe
i18n: Upgrade translations from crowdin (e43c5950).
Sep 23, 2025
4ab6a9d
style(TV): align text field error status style to guidelines
AlexanderTalledo Sep 23, 2025
c246e32
Switch back to KSP for Room, keep generating Java code.
msimonides-proton Sep 23, 2025
efc4bcf
Fix screenshot tests [VPNAND-2364].
msimonides-proton Sep 23, 2025
9314246
fix(TV): avoid resetting focus to the first element on Main screen wh…
AlexanderTalledo Sep 23, 2025
0887a2a
Report auto connect with settings telemetry [VPNAND-2348].
msimonides-proton Sep 23, 2025
e35ea76
Introduce FF for Connect and Go private browsing [VPNAND-2357]
mateusz-markowicz Sep 23, 2025
9915f99
Use stateIn for tv's mainViewState to fix focus issues on navigating …
mateusz-markowicz Sep 23, 2025
e6736fc
chore(TV): show re-connect toast the first time that custom DNS setti…
AlexanderTalledo Sep 23, 2025
625ac3f
Use second user for real connection tests.
msimonides-proton Sep 23, 2025
8655d0d
Remove pinned buildToolsVersion
AlgirdasPundzius Sep 24, 2025
0becbb5
Bump compileSdk for OpenVPN
AlgirdasPundzius Sep 24, 2025
64e6d8f
chore(TV): remove server counters from list [VPNAND-2367]
AlexanderTalledo Sep 24, 2025
3d73e1a
fix(TV): properly handle app version visibility on main screen [VPNAN…
AlexanderTalledo Sep 24, 2025
f2359ba
Remove streaming overlay from country cards in TV [VPNAND-2370].
msimonides-proton Sep 25, 2025
a95f414
chore(TV): bump Leanback version to 1.2.0
AlexanderTalledo Sep 26, 2025
128f376
i18n: Upgrade translations from crowdin (3d73e1a9).
Sep 26, 2025
552dae2
Calculate savings from regular (non-intro) price [VPNAND-2372].
msimonides-proton Sep 26, 2025
11160de
Use GB (ISO value) for United Kingdom [VPNAND-2306].
msimonides-proton Sep 25, 2025
1cd5d9d
Remove old method for checking no connections assigned.
msimonides-proton Aug 20, 2025
4fd64f8
Update the "no connections assigned" UI [VPNAND-2320].
msimonides-proton Aug 21, 2025
2a5fa72
Rename ServerLoadingViewModel to VpnAppViewModel.
msimonides-proton Aug 21, 2025
a46be97
Rename TvMainFragment to TvHomeFragment.
msimonides-proton Aug 22, 2025
09a5553
Move code from TvMainActivity to TvMainFragment [VPNAND-2320].
msimonides-proton Aug 25, 2025
d25bcf0
Implement no connections or servers for TV UI [VPNAND-2320].
msimonides-proton Aug 25, 2025
48aa09e
Automatically refresh VPN user when partially logged in [VPNAND-2320].
msimonides-proton Sep 3, 2025
6607154
Remove idling resource logs to remove noise.
msimonides-proton Sep 24, 2025
306d4eb
i18n: Upgrade translations from crowdin (6607154b).
Sep 30, 2025
4fa44cf
Remove unused CurrentUser from ServerManager.
msimonides-proton Sep 29, 2025
b477c03
Check server availability for "fastest" intent [VPNAND-2317].
msimonides-proton Sep 29, 2025
868033f
Remove one getBestScoreServer overload.
msimonides-proton Sep 30, 2025
929dafc
Fix the UK->GB mapping [VPNAND-2374].
msimonides-proton Sep 30, 2025
209b974
feat: support no available VPN connections state on Widgets [VPNAND-2…
AlexanderTalledo Sep 30, 2025
c3f78c4
Fix debug tools in "black" build flavors.
msimonides-proton Oct 1, 2025
d0150ef
Support missing countries and intent types in profile edit [VPNAND-23…
msimonides-proton Sep 30, 2025
27405bf
i18n: Upgrade translations from crowdin (d0150ef9).
Oct 7, 2025
e2b46ca
Enable per-app language setting [VPNAND-2378].
msimonides-proton Oct 6, 2025
cf176e1
Improve loading UI after login [VPNAND-2377].
msimonides-proton Oct 3, 2025
8796f88
Fix server recents on TV [VPNAND-2380].
msimonides-proton Oct 9, 2025
0873d95
Include TV recents in server "must haves" [VPNAND-2381].
msimonides-proton Oct 9, 2025
fbbfbc4
Update Espresso to 3.7.0.
msimonides-proton Oct 9, 2025
5d47488
Tests: improve credentialLessToRegularAccount stability.
msimonides-proton Oct 13, 2025
6bfd614
i18n: Upgrade translations from crowdin (5d474888).
Oct 14, 2025
91c069c
Log map click coordinates in debug builds
mateusz-markowicz Oct 13, 2025
2594a85
Provide support for more countries [VPNAND-2382]
mateusz-markowicz Oct 13, 2025
28cd32d
Fix error briefly showing on TV after login [VPNAND-2377].
msimonides-proton Oct 14, 2025
a9802e8
TV: fix map highlight of selected country [VPNAND-2395]
mateusz-markowicz Oct 15, 2025
300817f
TV: fix map not showing when navigating to country details [VPNAND-2395]
mateusz-markowicz Oct 15, 2025
0bc839a
Don't reset TV main screen focus when leaving settings [VPNAND-2389]
mateusz-markowicz Oct 14, 2025
2cd1f92
TV: fix highlighting selected country when another country is connect…
mateusz-markowicz Oct 15, 2025
954804c
i18n: Upgrade translations from crowdin (2cd1f92b).
Oct 17, 2025
0512672
Status update doesn't enable offline servers [VPNAND-2398].
msimonides-proton Oct 17, 2025
e4e6707
Disambiguate the bottom nav buttons in tests.
msimonides-proton Oct 20, 2025
9a01a55
Change update prompt period [VPNAND-2399].
msimonides-proton Oct 17, 2025
dd3cd46
chore(shared-servers): handle default connection when no countries ar…
AlexanderTalledo Sep 8, 2025
19060a4
fix(shared-servers): handle missing No Connections Assigned state on …
AlexanderTalledo Oct 21, 2025
118cf07
Fix supported action comparison.
msimonides-proton Oct 20, 2025
4d2ea4e
Don't recreate banner flow on recomposition.
msimonides-proton Oct 20, 2025
af87e0f
Implement IAP notifications [VPNAND-2402].
msimonides-proton Oct 21, 2025
9562040
Filter out banners with unsupported actions.
msimonides-proton Oct 21, 2025
be0896a
Disable "save percent" on notification upsells [VPNAND-2402].
msimonides-proton Oct 21, 2025
e92034a
Fix the loading placeholders in upsell screens.
msimonides-proton Oct 22, 2025
fd63a83
chore(bug-report): hide redesigned bug report behind a feature flag […
AlexanderTalledo Oct 22, 2025
e216454
Trigger server list refresh and block UI on corrupted server store [V…
mateusz-markowicz Oct 23, 2025
59e2cc7
Revert "Enable per-app language setting [VPNAND-2378]."
msimonides-proton Oct 24, 2025
7f3f5d2
i18n: Upgrade translations from crowdin (e2164546).
Oct 24, 2025
68968ec
Add Account observability to UpgradeDialogViewModel [VPNAND-1710].
msimonides-proton Oct 23, 2025
eecf2d4
Update split tunneling mode names [VPNAND-2388].
msimonides-proton Oct 24, 2025
b51e320
Update Unlimited upsell text [VPNAND-2327].
msimonides-proton Oct 24, 2025
81d3a6b
Update Welcome to Unlimited message [VPNAND-2326].
msimonides-proton Oct 24, 2025
e06db88
Fix profile dialogs size when soft-keyboard is out [VPNAND-2362].
msimonides-proton Oct 24, 2025
cf22f4d
Add IPv6 setting to AndroidTV [VPNAND-2390]
mateusz-markowicz Oct 14, 2025
3b7cff2
Fix client-side notifications.
msimonides-proton Oct 28, 2025
cc43d99
Add logs for promo offer debugging.
msimonides-proton Oct 28, 2025
82822bc
i18n: Upgrade translations from crowdin (cf22f4df).
Oct 28, 2025
8439891
Add more debug logs for promo notifications.
msimonides-proton Oct 28, 2025
8ecf4bc
Update Glide.
msimonides-proton Oct 29, 2025
f16c1d4
Add a CI job for generating screenshot test references.
msimonides-proton Oct 28, 2025
cfa8af1
refactor(bug-report): redesign dynamic bug report category selection …
AlexanderTalledo Oct 23, 2025
50bf8be
Update Core to 35.2.0 [VPNAND-2411].
msimonides-proton Oct 23, 2025
c7a7af6
i18n: Upgrade translations from crowdin (50bf8beb).
Nov 4, 2025
ed58f69
refactor(bug-report): re-design quick fix suggestions screen [VPNAND-…
AlexanderTalledo Oct 29, 2025
5fddcd1
Allow for aborted in-app updates to be resumed [VPNAND-2415].
msimonides-proton Oct 30, 2025
d4d1462
Use in-app update in bug report [VPNAND-2415].
msimonides-proton Oct 30, 2025
e98c38a
Add in-app update banner in settings [VPNAND-2415].
msimonides-proton Oct 31, 2025
0e99945
Warn about disconnect on app update [VPNAND-2415].
msimonides-proton Oct 31, 2025
1b11643
Switch to flow from Google's AppUpdateManager.
msimonides-proton Oct 31, 2025
52d6497
Move AppUpdateManager to a separate file.
msimonides-proton Oct 31, 2025
107b071
Update reference images for screenshot tests
proton-ci Nov 4, 2025
c267e8c
Don't wait for app update state for first UI state [VPNAND-2415].
msimonides-proton Nov 4, 2025
535044a
fix: TV auto-connect settings feature flag
AlexanderTalledo Nov 5, 2025
712cb8e
Load initial configuration on TV login.
msimonides-proton Nov 5, 2025
48df000
Enable reconnect dialog for TVs IPv6 [VPNAND-2390]
mateusz-markowicz Nov 6, 2025
ca47a94
Cache the result of GetEligibleIntroductoryOffers [VPNAND-2427].
msimonides-proton Nov 10, 2025
238a651
Request in-app update info on a BG thread.
msimonides-proton Nov 10, 2025
137edae
Make IncludeID use [] format in query [VPNAND-2428]
mateusz-markowicz Nov 10, 2025
0505004
i18n: Upgrade translations from crowdin (48df000e).
Nov 7, 2025
71fa163
i18n: Upgrade translations from crowdin (05050049).
Nov 11, 2025
ef59e88
Show deprecation dialog when selecting OpenVPN protocol [VPNAND-2400]
mateusz-markowicz Nov 11, 2025
d459e95
Add buttons for bug report and logs on auto-login error screen [VPNAN…
mateusz-markowicz Nov 11, 2025
dd07fe1
Hide signing-in on another device with QR when on MDM [VPNAND-2431]
mateusz-markowicz Nov 11, 2025
5d0f806
Fix autologin for users with external domain [VPNAND-2434]
msimonides-proton Nov 14, 2025
6545c44
i18n: Upgrade translations from crowdin (dd07fe11).
Nov 14, 2025
ae2c837
refactor(bug-report): re-design dynamic form screen [VPNAND-2393]
AlexanderTalledo Oct 30, 2025
b2a64be
Update reference images for screenshot tests
proton-ci Nov 11, 2025
51025b9
refactor(bug-report): add new dynamic form submission result screen […
AlexanderTalledo Nov 7, 2025
83945ba
test(bug-report): e2e automated tests [VPNAND-2386]
AlexanderTalledo Nov 11, 2025
0ed839e
test(bug-report): e2e TV automated tests [VPNAND-2386]
AlexanderTalledo Nov 12, 2025
2e0a01c
chore(telemetry): Use new event snapshot_heartbeat for settings telem…
AlexanderTalledo Nov 18, 2025
c970a76
chore(telemetry): Add telemetry for split tunneling settings [VPNAND-…
AlexanderTalledo Nov 18, 2025
c3e2fcc
Update the binary status library.
msimonides-proton Nov 18, 2025
a1914e9
test(bug-report): Fix TvBugReportTestsMocked#sendBugReportSuccess fla…
AlexanderTalledo Nov 19, 2025
e841e6e
Introduce sampling to reduce /metrics requests volume [VPNAND-2239]
mateusz-markowicz Nov 19, 2025
bdc63c3
i18n: Upgrade translations from crowdin (b2a64be1).
Nov 18, 2025
fa1503e
Fix server status with binary status updates.
msimonides-proton Nov 24, 2025
a57de7a
i18n: Upgrade translations from crowdin (bdc63c3b).
Nov 21, 2025
644da42
i18n: Upgrade translations from crowdin (a57de7ac).
Nov 25, 2025
a8f66c4
Fix missing class crash in VpnDns on API25 [VPNAND-2448]
mateusz-markowicz Nov 26, 2025
069934b
Initial support for Startup and Baseline profiles [VPNAND-1996]
mateusz-markowicz Nov 21, 2025
53d73c5
Remove Go libs early initialization [VPNAND-1996]
mateusz-markowicz Nov 20, 2025
08fa5b7
use dagger.Lazy for some early dependencies [VPNAND-1996]
mateusz-markowicz Nov 23, 2025
a91ef7d
i18n: Upgrade translations from crowdin (08fa5b7b).
Nov 28, 2025
6a07562
Don't show per-cycle prices for welcome offers [VPNAND-2449]
mateusz-markowicz Dec 1, 2025
565a0bf
Update R8 rules for JNA.
msimonides-proton Dec 1, 2025
0d99048
i18n: Upgrade translations from crowdin (565a0bf3).
Dec 2, 2025
2e50905
chore(automatic-connection-preferences): Add feature flag [VPNAND-2440]
AlexanderTalledo Nov 25, 2025
8655fe3
feat(automatic-connection-preferences) add new connection preferences…
AlexanderTalledo Nov 26, 2025
737ed05
Update reference images for screenshot tests
proton-ci Dec 2, 2025
88600ed
feat(automatic-connection-preferences) add new excluded locations pic…
AlexanderTalledo Nov 26, 2025
7cffdf8
chore(automatic-connection-preferences): Upsell Default Connection an…
AlexanderTalledo Dec 2, 2025
5a378b5
i18n: Upgrade translations from crowdin (7cffdf87).
Dec 5, 2025
df3c893
Fix mapping of binary status back to servers [VPNAND-2459].
msimonides-proton Dec 8, 2025
b512a0d
i18n: Upgrade translations from crowdin (df3c8934).
Dec 9, 2025
54c867d
Avoid applying V2 logicals as a partial, free-only update [VPNAND-2461]
msimonides-proton Dec 9, 2025
908220f
Keep servers with missing reference when updating binary status [VPNA…
msimonides-proton Dec 10, 2025
6561bc8
i18n: Upgrade translations from crowdin (908220f6).
Dec 12, 2025
7337c59
Update the binary status library.
msimonides-proton Dec 15, 2025
899d719
i18n: Upgrade translations from crowdin (6561bc81).
Dec 16, 2025
97b7a87
feat(automatic-connection-preferences): support excluded locations ed…
AlexanderTalledo Dec 5, 2025
23a1e15
chore(automatic-connection-preferences): connection preferences setti…
AlexanderTalledo Dec 11, 2025
f127474
chore(automatic-connection-preferences): excluded locations settings …
AlexanderTalledo Dec 11, 2025
d14e724
Update the certificate transparency library.
msimonides-proton Jan 5, 2026
1f026a7
i18n: Upgrade translations from crowdin (f1274744).
Jan 2, 2026
a9ce38a
Migrate atlas deploy to ephemera
AlgirdasPundzius Dec 15, 2025
0dffb46
refactor(automatic-connection-preferences): move excluded locations p…
AlexanderTalledo Jan 7, 2026
e552ddc
feat(automatic-connection-preferences): support undoing excluded loca…
AlexanderTalledo Jan 7, 2026
cde2a89
i18n: Upgrade translations from crowdin (e552ddc6).
Jan 8, 2026
eb682c4
Use Translator for all instances of displaying city name [VPNAND-1822].
msimonides-proton Dec 18, 2025
e3a0f39
Implement support for the city translations endpoint [VPNAND-1822].
msimonides-proton Dec 19, 2025
1bf721c
Display server state (e.g. California) in connection details.
msimonides-proton Dec 19, 2025
af42e03
Remove code for fetching translations from logicals [VPNAND-1822].
msimonides-proton Dec 19, 2025
19780d6
Don't update loads before server list has been fetched [VPNAND-2439].
msimonides-proton Jan 2, 2026
c713f80
Fix header for P2P server list [VPNAND-2425].
msimonides-proton Jan 2, 2026
4d8fe95
Fix servers never being set back to online with binary status [VPNAND…
msimonides-proton Jan 19, 2026
f33a5ac
chore(deps): update dependency proton/devops/cicd-components/kubernet…
Jan 19, 2026
f47ff69
Update guesthole servers
proton-ci Jan 21, 2026
aaa3fc7
Add fdroid metadata
proton-ci Jan 21, 2026
8221db0
Added a catch to the `def gitVersionProvider` in build.gradle. It def…
terrypearson Jan 26, 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.
2 changes: 2 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
*.psd filter=lfs diff=lfs merge=lfs -text
*.aar filter=lft diff=lfs merge=lfs -text
detekt.yml text eol=lf
app/src/*/screenshotTest/** filter=lfs diff=lfs merge=lfs -text
6 changes: 4 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,13 @@
/.idea
.DS_Store
/build
/config
strongswan-android-complete/build/**
/config/detekt/config.yml
/config/detekt/reports
/observability/domain/build
openvpn/build/**
/captures
.externalNativeBuild
openvpn/src/main/cpp/asio/asio/src/doc/
openvpn/.cxx/
pmcrypto/build/
app/src/androidTest/assets/sensitive/
29 changes: 29 additions & 0 deletions .gitleaks.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
[extend]
path = "/etc/gitleaks/proton.toml"

[allowlist]
paths = [
# OpenVPN test data
'''^openvpn/src/main/cpp/asio/asio/src/examples/(.*)''',
'''^openvpn/src/main/cpp/openvpn/doc/(.*)''',
'''^openvpn/src/main/cpp/openvpn/sample/(.*)''',
'''^openvpn/src/main/cpp/openvpn/tests/(.*)''',
'''^openvpn/src/test/(.*)''',
'''^openvpn/src/main/cpp/openvpn3/doc/(.*)''',
'''^openvpn/src/main/cpp/openvpn3/test/(.*)''',
# OpenSSL and mbedtls - never modified by us.
'''^openvpn/src/main/cpp/openssl/(.*)$''',
'''^openvpn/src/main/cpp/mbedtls/(.*)''',
# A patch file with false positive - never modified by us.
'''^openvpn/src/main/cpp/openvpn/contrib/vcpkg-ports/pkcs11-helper/pkcs11-helper-001-RFC7512.patch''',
# 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/(.*)''',
]
7 changes: 7 additions & 0 deletions .gitleaksignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Code searching for "BEGIN RSA..."
openvpn/src/main/cpp/openvpn3/openvpn/client/cliopthelper.hpp:private-key:211
# Sample HTTP auth header in comment
openvpn/src/main/cpp/openvpn3/openvpn/ws/httpcreds.hpp:authorization-header:42
# HTTP authorization code
openvpn/src/main/cpp/openvpn3/openvpn/transport/client/httpcli.hpp:authorization-header:697
openvpn/src/main/cpp/openvpn3/openvpn/ws/httpcli.hpp:authorization-header:1154
3 changes: 0 additions & 3 deletions .gitmodules

This file was deleted.

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.
7 changes: 7 additions & 0 deletions .semgrepignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
/.gradle/
/.sec/
/openvpn/

# 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
87 changes: 0 additions & 87 deletions Dockerfile

This file was deleted.

69 changes: 33 additions & 36 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,22 +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>`

### Rebuild strongswan
This project is using native libraries from [open-source project Strongswan](https://www.strongswan.org/).
To simplify the build process we include prebuilt copies of those libraries [here](app/src/main/jniLibs). To rebuild them follow these steps:
- `git submodule init` followed by `git submodule update` in the main directory (we include original Strongswan repository as a git submodule)
- `cd strongswan` and follow [build instructions](https://wiki.strongswan.org/projects/strongswan/wiki/AndroidVPNClientBuild) from Strongswan to rebuild native libraries
- after a successful build, run `cp -r strongswan/src/frontends/android/app/src/main/libs/* app/src/main/jniLibs` in our main directory to copy the prebuilt libraries and rebuild the ProtonVPN client
- `./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 @@ -30,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 @@ -39,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