Commit Graph

133 Commits

Author SHA1 Message Date
Davide
e4333965bd
macOS: Fix broken subroute navigation in modules 2025-02-12 15:58:23 +01:00
Davide
ecf37558ec
Revert provider name in shortcuts 2025-02-12 15:56:43 +01:00
Davide
e6edeae3d4
Hide interactive section on tvOS 2025-02-12 15:56:43 +01:00
Davide
0f108fa83d
Add provider name in shortcuts 2025-02-12 14:36:48 +01:00
Davide
969b844eca
Drop unused preferences 2025-02-12 14:07:46 +01:00
Davide
9974ca6667
OpenVPN: Add shortcuts in main profile view (#1167)
Some useful shortcuts can be replicated in the main profile screen.

Requirements:

- Modules implementing `ModuleDestinationProviding` return a
`navigationDestination()` to navigate to module-specific routes (e.g.
OpenVPN credentials). This was done in #1166
- In order to navigate to the module routes from the main
`ProfileCoordinator` view, it must have a `navigationDestination()`
attached for each of the modules, without knowing the concrete route
types

Here is how this is accomplished in a generic fashion:

1. `ProfileEditor.navigationDestinations()` iterates over each
`ModuleDestinationProviding` to return a list of
`navigationDestination()`, [implemented as a
`ViewModifier`](https://github.com/passepartoutvpn/passepartout/pull/1167/files#diff-11dfcbc4f6c173b133fe8eb4c54710f2ac7161cd38126735c655a8c56a62b8c0R29)
2. With this in place, module routes can be pushed with a
`NavigationLink` from the main profile view
3. Lastly, in the profile view, we add a section for each module
implementing `ModuleShortcutsProviding`, where the module may return a
list of convenient shortcuts, e.g. in the form of the `NavigationLink`
in 2

Start with some OpenVPN entries:

- Provider server
- Credentials (if needed)

Some refactoring was necessary:

- Load ModulePreferences in the module destinations via
ModulePreferencesModifier, rather than in the module view (may revisit
later)
- Due to the above, move "Remote endpoints" from "Configuration" to a
separate destination (also less messy)
- Group complex module views (OpenVPN/WireGuard) into folders
- Reuse `ProviderServerRow` for consistency across modules/shortcuts
2025-02-12 14:06:23 +01:00
Davide
67bfe3c53c
Fix on-demand paywall on .any policy 2025-02-12 11:42:42 +01:00
Davide
afe66dad34
Omit included features from donation products 2025-02-12 11:42:42 +01:00
Davide
717a3492bf
Fix primary/accent colors
- Version screen
- Lock screen
2025-02-12 11:42:35 +01:00
Davide
5059423bf3
Move module destinations to standalone entities (#1166)
Decouple destinations from the module view so that one can navigate to
them from any point of the app. Affects only OpenVPN for now.

Preparation for "profile shortcuts".
2025-02-12 11:03:14 +01:00
Davide
41874c8bb1
Fix provider server columns wrapping on macOS 2025-02-12 09:41:35 +01:00
Davide
e88da17ad8
Fix help captions of attribute icons 2025-02-11 23:08:05 +01:00
Davide
c2a8db1cdb
Optionally resort to CloudFlare when no DNS settings are provided (#1165)
Fixes #1152
2025-02-11 18:50:02 +01:00
Davide
cc8a500dab
Prevent save profile without active modules (#1164)
A further improvement over #1163 with the same purpose. That is: if a
profile won't connect, don't let the user create/save it in the first
place.
2025-02-11 17:45:00 +01:00
Davide
c189668f3b
Ignore cancellation on "Restore purchase" 2025-02-11 17:21:53 +01:00
Davide
48c4bf4192
Add tip to suggest how to build profiles (#1163)
Close to the "Modules" +/- area.
2025-02-11 12:22:36 +01:00
Davide
23e8c56b1b
Revert erroneous submodule commit 2025-02-11 12:12:40 +01:00
Davide
c303e948ae
Fix compile error on iOS
Caused by 36d9ac59b8
2025-02-11 11:39:10 +01:00
Davide
6384d435dd
Group connection and settings modules in "Add module" (#1162)
Useful to introduce the concept of "Connection" modules.
2025-02-11 11:09:51 +01:00
Davide
36d9ac59b8
macOS: Fix empty space in "Delete profile"
Show nothing when profile is new.
2025-02-11 10:45:03 +01:00
Davide
40bafcfbb7
Fix compile errors on TV 2025-02-11 00:28:58 +01:00
Davide
21c23199a9
Use always "OK" in paywall confirmation 2025-02-11 00:22:54 +01:00
Davide
84791c4502
OpenVPN: Fix random crashes during negotiation (#1161)
Tie OpenVPN internals to the same global actor OpenVPNActor.

Regression in #1094
Fixes #1137
2025-02-11 00:21:59 +01:00
Davide
58be1cf8d8
Add "Delete profile" in profile editor (#1160)
With confirmation dialog.
2025-02-10 23:59:03 +01:00
Davide
3698b19f26
Unpin active profile from preferences (#1159)
Also with trailing swipe in List (iOS).
2025-02-10 22:17:41 +01:00
Davide
f7ac420bfe
Use "OK" rather than "Cancel" in beta alert 2025-02-10 21:21:31 +01:00
Davide
4a23ddc53e
Reword "Select a provider" to "No provider"
The picker choice is not just a placeholder but allows to
import a file.
2025-02-10 20:37:48 +01:00
Davide
9d90002294
macOS: Add "Reconnect" and "Disconnect" from menu (#1154)
Fixes #1069
2025-02-10 20:35:04 +01:00
Davide
b355a3a098
Rework the app colors for upgrade icons (#1158)
- Restore the default accent, but extend it to toggles on iOS
- Keep the "gold" color for the upgrade icon
- Replace the upgrade icon with the universally understandable lock icon
2025-02-10 20:34:41 +01:00
Davide
914520009a
Show the list of features included in each product (#1157)
List product features inline in the paywall. Inside the list, highlight
the required features that originated the paywall.
2025-02-10 20:18:56 +01:00
Davide
954475e117
macOS: Perform provider server action on click country (#1155)
Similar to #1117
2025-02-10 00:29:14 +01:00
Davide
4d970b6ac7
Rework in-app purchases and paywalls (#1156)
Fixes #1153
2025-02-10 00:27:42 +01:00
Davide
4619a0760b
Only show 'Verifying...' message in beta 2025-02-08 18:19:43 +01:00
Davide
1c8f758ff3
Fix German translations 2025-02-08 12:28:17 +01:00
Davide
b018e670ac
Fix behavior of "Including" on-demand policy (#1151)
Activate the VPN on the specified networks, and do nothing on the other
networks. This will NOT disconnect the VPN if it's been activated on a
non-included network.

NetworkExtension seems incapable of doing that, the bug came from a
wrong code expectation.

Originally reported here:

-
https://www.reddit.com/r/passepartout/comments/1idruci/ondemand_not_working_as_expected/
-
https://www.reddit.com/r/passepartout/comments/1bjgwy9/issues_with_ondemand_include_vs_exclude/
2025-02-08 12:18:22 +01:00
Davide
18c2b85096
Wrap rather than truncate long profile names (#1150)
Better trade-off than the fixed list/grid height now that the animations
are off.


https://www.reddit.com/r/passepartout/comments/1ik8tm2/comment/mbn1o1h/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button
2025-02-08 12:02:26 +01:00
Davide
ce77b4fc6a
Improve the UX of profile editing and management (#1149)
Restart from the v2 flow most users are familiar with.

- Restore the global v2 accent
- Restore the per-profile toggles
- Single tap to edit a profile
- Reuse the same chevron for profile and module navigation
- Improve the iCloud/TV section and rename it to "Synchronization"
- Drop the misleading moon icon from the "Keep alive on sleep" toggle
- Drop the marginal "Enable"/"Disable" action from context menus
- Drop the grid cell highlighting, now marginal with toggles
- Drop the complexity of `nextProfileId`

Ultimately, rework `TunnelToggleButton` into `TunnelToggle` for better
reuse across all platforms.

Things left to improve:

- The duplication of the active profile on top has not changed, but the
toggles may make it more visually apparent
- The "Inactive" subtitle in disabled profiles is there for balance as
it keeps rows and cells of the same height, but it serves no real
purpose
- Access to secondary actions (e.g. provider server, credentials)
- Use of TipKit for less intuitive flows (e.g. context menus, building a
profile from scratch)

Fixes #1111
2025-02-08 11:57:14 +01:00
Davide
b379d5c61c
Import profiles with on-demand enabled for stability (#1148)
Retain v2 behavior.
2025-02-08 10:52:29 +01:00
Davide
d51c60c5c8
Fix "No profiles" message flashing on launch (#1147)
Due to a regression in #1135
2025-02-07 17:58:23 +01:00
Davide
eb32aed2a4
Follow tunnel status from current profile (#1146)
In preparation for #218, when there will be "multiple current profiles",
i.e. the enabled profiles in the OS settings.
2025-02-07 16:42:00 +01:00
Davide
bb21f5be05
Fix unused variable warning 2025-02-07 14:44:44 +01:00
Davide
470585b4c6
OpenVPN: Fix issue with empty DNS servers 2025-02-07 01:19:03 +01:00
Davide
98160c24c2
OpenVPN: Fix regression in default routes (#1145)
Similarly to #1136, inject IPModule into OpenVPN .routingPolicies
because NetworkSettingsBuilder relies on it.
2025-02-07 01:15:21 +01:00
Davide
e8ffca9d50
Fix migration of DNS settings (#1144)
In some cases, the migration process may insert a DNS module without
servers. Do not add it at all.
2025-02-07 01:15:03 +01:00
Davide
f34dcd99f8
Bump version 2025-02-06 15:20:28 +01:00
Davide
6b2ba28728
Restore "Keep alive on sleep" feature (#1143)
Closes #1112
2025-02-06 14:57:53 +01:00
Davide
9e98f4c7ec
Drop unused Kvitto dependency (#1142) 2025-02-05 20:26:19 +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
bc5d08aed7
tvOS: Inform that all apps must run version 3.0.0+ 2025-02-05 16:07:13 +01:00