Commit Graph

3176 Commits

Author SHA1 Message Date
Davide
2a3456917d
Update bundle
Remove unused plugins.
2025-02-05 17:06:54 +01:00
Davide
3a4169f8fa
Retain release notes if no_log:true 2025-02-05 17:06:34 +01:00
Davide
9d9c738b23
Improve the text density of purchase alerts 2025-02-05 16:49:26 +01:00
Davide
dfdf338c3a
Fix typo in 'Verifying...' 2025-02-05 16:39:28 +01:00
Davide
6778f85976
Bump version 2025-02-05 16:13:57 +01:00
Davide
bc5d08aed7
tvOS: Inform that all apps must run version 3.0.0+ 2025-02-05 16:07:13 +01:00
Davide
91823f1572
Review upgrade icons (#1141)
- Add to "General" module on macOS
- Restore in profiles list/grid, removed in #1139
2025-02-05 15:38:25 +01:00
Davide
6ba8b32bef
Inform if beta build in Diagnostics 2025-02-05 15:16:52 +01:00
Davide
965c39ab51
iOS: Suggest that profile modules are editable (#1140)
Fixes #1080
2025-02-05 13:39:28 +01:00
Davide
d6c2a7f58c
Allow graceful period to work around slow receipt validation (#1139)
#1070 is very tricky. When the device boots, StoreKit operations seem to
be severely affected by on-demand VPN profiles. Slowdowns are huge and
unpredictable, as per my [report on the Apple
forums](https://developer.apple.com/forums/thread/773723). I found no
easy way to work around the chicken-and-egg situation where the VPN
requires StoreKit validation to start, but StoreKit requires network
access.

On the other hand, without StoreKit validations, the on-demand tunnel
starts on boot just fine, and so does the app. No eternal activity
indicators. StoreKit is clearly the culprit here.

Therefore, below is the strategy that this PR implements for a decent
trade-off:

- Configure a graceful period for the VPN to start without limitations.
This is initially set to 2 minutes in production, and 10 minutes in
TestFlight. Postpone StoreKit validation until then.
- After the graceful period, StoreKit validation is more likely to
complete fast
- At this point, paying users have their receipts validated and the
connection will silently keep going
- Non-paying users, instead, will see their connection hit the "Purchase
required" message

On the UI side, adjust the app accordingly:

- Drop the "Purchase required" icon from the list/grid of profiles
- The paywall informs that the connection will start, but it will
disconnect after the graceful period if the receipt is not valid
- Add a note that receipt validation may take a while if the device has
just started

This PR also introduces changes in TestFlight behavior:

- Profiles can be saved without limitations
- Profiles using free features work as usual
- Profiles using paid features work for 10 minutes
- Eligibility based on local receipt is ignored (deprecated in iOS 18)

Beta users may therefore test all paid features on iOS/macOS/tvOS for 10
minutes. Until now, paid features were only available to paying iOS
users and unavailable on macOS/tvOS. The tvOS beta was, in fact,
completely useless.

The downside is that paying iOS users will see beta builds restricted
like anybody else. I'll see if I can find a better solution later.
2025-02-05 13:00:42 +01:00
Davide
7ea6b6d37d
Update credits in README too 2025-02-04 13:31:06 +01:00
Davide
f58a469e0b
Update credits 2025-02-03 10:49:34 +01:00
Davide
a8e8e6edfb
Bump version 2025-02-03 10:38:00 +01:00
Davide
178dd08d5f
Bump version 2025-02-03 10:32:04 +01:00
Davide
3503f86eee
Fix more German translations 2025-02-03 10:29:27 +01:00
Davide
59ac302eb3
Mention in paywall that all purchases support "Family Sharing" (#1138)
Fixes #1130
2025-02-03 10:27:18 +01:00
Davide
e799ae9ae3
Update library 2025-02-03 10:01:14 +01:00
Davide
4b4e26b69e
Fix logic of migrated "Routing" modules (#1136)
OpenVPN is fine, but WireGuard requires included routes to also be
injected into AllowedIPs.

Fixes #1128
2025-02-03 10:00:22 +01:00
Davide
2dae4f0d2c
Add script to regen development certificates
For new devices.
2025-02-03 09:09:59 +01:00
Davide
24d7e51344
Update library and bump 2025-02-03 08:56:33 +01:00
Davide
185fec8749
Reword for consistency 2025-02-03 08:43:48 +01:00
Davide
504f5206f9
Add verification alert to profile editor
Finish up #1135
2025-02-03 08:29:05 +01:00
Davide
0132aa79cc
Delay profile verifications (#1135)
Fixes #1070
2025-02-03 01:18:39 +01:00
Davide
20e3894b5b
Fix German translation of 'Routing' 2025-02-01 00:46:27 +01:00
Davide
a36fdcf13e
Update submodule 2025-01-29 19:16:38 +01:00
Davide
652f417292
Handle unknown enum cases in OpenVPN/OpenSSL
- OpenVPN.CompressionAlgorithm
- OpenVPN.CompressionFraming
- OpenVPN.TLSWrap.Strategy
- OpenVPN.XORMethod
2025-01-29 17:30:09 +01:00
Davide
5bf53ff2b1
Bump version 2025-01-29 16:56:04 +01:00
Davide
c1d7fa1b3c
Update UITests after #1107 2025-01-29 16:52:55 +01:00
Dmytro Chyrkin
111c294d88
Fix Ukranian translations (#1122)
Co-authored-by: Davide <keeshux@gmail.com>
2025-01-29 15:55:42 +01:00
Davide
eb7d6a74e1
tvOS: Override focus behavior to enforce button colors (#1123)
The default gray color on focus defeats the purpose of having green/red
for Connect/Disconnect.
2025-01-29 15:51:00 +01:00
Davide
6f516d030e
Hijack environment to run tests in PRs (#1124)
Avoid the complications of accessing the PassepartoutKit private
repository by running tests against the public binary distribution.

Also a way to make sure that the framework is up to date.
2025-01-29 15:45:19 +01:00
Davide
04b574c3f1
Do not wait products until timeout
Fixes #1121
2025-01-29 12:56:03 +01:00
Davide
51f5c5824c
Move favorite column to the left 2025-01-29 12:54:15 +01:00
Davide
8d269e7113
Reuse provider entities for more than VPN (#1107)
Rename entities/views, and decouple provider templates from built
configurations. Reuse ProviderServerCoordinator.

This is in preparation for #507
2025-01-29 12:53:23 +01:00
Davide
cb93ee83ea
Publish CI release without draft flag 2025-01-29 12:12:54 +01:00
Davide
fcd91ce515
Fix indefinite spinner when listing products (#1121)
Reported by App Review on tvOS but applies in general.
2025-01-29 12:11:44 +01:00
Davide
7ff8dd4fc9
Decrease max log age to 1 day
Reuse log filenames in report issue.
2025-01-29 11:48:30 +01:00
Davide
d0077e03f1
Clarify the extent of the Ethernet rule 2025-01-29 10:00:04 +01:00
Davide
8513c2a22f
Only apply cellular/Ethernet on-demand rules on devices that support the interface (#1120)
Fixes #1096
Fixes #1060 

Revives #1119, but #1096 is more important.
2025-01-29 09:51:23 +01:00
Davide
b6cc5650c6
macOS: Perform provider server action on click address
Tap address to connect/select provider server, rather than a
separate column.

In the future, make country tappable to mean "connect to random
server of this country".

Fixes #1117
2025-01-29 01:44:43 +01:00
Davide
5752b3a8d0
Fix misaligned reveal button in secure fields
Fixes #1116
2025-01-29 01:44:42 +01:00
Davide
66285a819f
Get rid of unused scroll proxy in profiles list 2025-01-29 01:44:42 +01:00
Davide
c310b15688
macOS: Fix unreadable character in provider server favorite column
Fixes #1115
2025-01-29 01:44:42 +01:00
Davide
a7e67be3fd
macOS: Prevent main window from being minimized indefinitely
Fixes #1114
2025-01-29 01:44:42 +01:00
Davide
ab261084cd
iOS: Hide layout toggle on iPhone
Hardcode .list layout.

Fixes #1108
2025-01-29 01:44:40 +01:00
Davide
ec2b213b7c
Bump version 2025-01-27 12:33:14 +01:00
Davide
c6b1c03fcb
Do not show "Activating" when the tunnel is actually idle (#1105)
E.g. in airplane mode, the status shows as "Activating", but the tunnel
is not actively establishing any connection. It's just idle.

Reported here:
https://www.reddit.com/r/passepartout/comments/1i957zj/when_phone_going_into_airplane_mode_passepartout/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button
2025-01-27 12:31:50 +01:00
Davide
9145e81092
Group empty packages by path 2025-01-27 00:09:16 +01:00
Davide
11fcc132fb
OpenVPN: Prompt for credentials when needed (#1104)
Assume OpenVPN to be interactive if credentials are empty but required
(--auth-user-pass).

For this change, change paywall restriction to OTP only. Allow
interactive login similar to OpenVPN Connect "Save username/password".
2025-01-25 14:49:11 +01:00
Davide
b2e9f9a584
Log filtered profile names 2025-01-25 09:53:22 +01:00