Davide
5d2e24792c
Rewrite provider views ( #740 )
...
Resolve some flickering and state inconsistency due to overextended
observation of VPNProviderManager. Narrow down its scope to
VPNProviderServerView.
The downside of that, for now, is that servers are loaded "lazily late",
but this flow will make region selection from home easier.
Finally, show filters in popover on iPad.
2024-10-18 18:12:28 +02:00
Davide
0221aea6b6
Move some profile integrity checks to library ( #739 )
...
They really belong to Profile.Builder
2024-10-16 09:50:26 +02:00
Davide
9656e5ed29
Filter servers with category/country of selected server ( #735 )
...
And use Task for blocking actions in filters.
2024-10-15 23:48:27 +02:00
Davide
ed28126cf7
Rework OpenVPN view with provider modifiers ( #733 )
...
Improve rendering and work around some SwiftUI bugs, e.g. with .menu
Picker on iOS (use .navigationLink instead).
Here goes the hierarchy bottom-up:
- ProviderPicker: a Picker wrapper built around ProviderManager
- ProviderContentModifier: adds a ProviderPicker on top and replaces the
content with a set of provider selectors when a provider is selected
- VPNProviderContentModifier: wrapper for ProviderContentModifier that
adds a VPN server selector
- OpenVPNView: provides a view of specific OpenVPN settings, and adds a
credentials selector to the provider/server selectors provided by
VPNProviderContentModifier
2024-10-15 21:34:02 +02:00
Davide
87c7d63678
Redo provider managers lifecycle ( #732 )
...
Update library with more efficient choices for interacting with the
providers API.
Fixes #731
2024-10-13 11:36:34 +02:00
Davide
a5d4f6aee5
Unify library iOS target to 15
2024-10-12 15:51:00 +02:00
Davide
9769a151db
Provider configuration is persisted into module ( #730 )
...
When e.g. a OpenVPNModule is created without a configuration and a
provider/server is then selected, the ProfileProcessor class serializes
the profile with the provider configuration injected. When the module is
re-edited, we can see the provider server configuration in the module
after selecting "None" as provider.
Instead, validate the provider modules in ProfileProcessor, but generate the provider configuration on the fly in the tunnel.
2024-10-12 13:19:46 +02:00
Davide
208198c3f8
Create OpenVPN module without a configuration ( #729 )
...
Update library to allow optional VPN configurations. This in turn allows
a module to be used with a provider, where the configuration is
generated on the fly.
2024-10-11 19:11:42 +02:00
Davide
f2a141a189
Purge stale NetworkExtension/keychain data ( #728 )
...
- [x] NE managers were not deleted when unable to be decoded to a
profile
- [x] Keychain items were not deleted on profile removal
- [x] Perform clean-up on app launch
- [x] Perform clean-up on app active
Prematurely merged as #727 then reverted, this is the complete PR.
2024-10-11 17:48:37 +02:00
Davide
8f6192c2b6
Fix extra team prefix in keychain group ( #721 )
...
Team ID already included in .xcconfig
Fixes #720
2024-10-11 03:45:20 +02:00
Davide
a0b9529870
Delete keychain entry on profile deletion
2024-10-11 00:25:26 +02:00
Davide
da87ca698a
Add initial support for providers ( #723 )
...
Initial integration of providers via API:
- Generic views and modifiers for provider/server selection
- Add in OpenVPNView
- Prepare in WireGuardView
Also:
- Introduce ProfileProcessor, move IAP processing there
- Move .asModuleView() to ModuleViewModifier for proper animation
- Use .themeModal() rather than .sheet()
2024-10-11 00:24:06 +02:00
Davide
d589f1162d
Reorganize shared objects ( #716 )
...
Mainly:
- Aggregate shared/mock entities in less scattered files
- Review package dependencies
Also:
- Decouple ProfileRepository from Core Data Repository in UtilsLibrary
(filters done by ProfileManager)
2024-10-10 16:20:36 +02:00
Davide
0aac8cd9f3
In-place NetworkExtension profiles ( #715 )
...
Profiles are being maintained in two places:
- Core Data
- NetworkExtension
Core Data is redundant for local profiles, so make NetworkExtension the
only source of truth.
2024-10-10 16:03:02 +02:00
Davide
f4505d0efd
Refactor ProfileEditor to leverage ProfileType ( #689 )
...
Closes #688
2024-10-06 13:41:02 +02:00
Davide De Rosa
17f1331de0
Bump version
2024-10-05 12:29:32 +02:00
Davide
f66193cf78
Several fixes in ProfileManager ( #685 )
...
- [x] Search not accounted for when reloading profiles
- [x] Remote profile being saved twice
- [x] Add some logging
2024-10-04 20:58:11 +02:00
Davide De Rosa
a306d61a84
Bump version
2024-10-04 15:54:41 +02:00
Davide De Rosa
c461fe27be
Bump version
2024-10-04 10:02:43 +02:00
Davide
5fb6f4f4d2
Refactor static functions/entities in Library ( #679 )
...
Reduce the impact of hidden dependencies on BundleConfiguration and
Constants.shared
Fixes #656
2024-10-04 09:58:42 +02:00
Davide De Rosa
2d32e099b7
Rename repositories
2024-10-04 02:43:18 +02:00
Davide
0917e47ea3
Granularize app features ( #671 )
...
Split .networkSettings and add .sharing for #668
2024-10-03 12:13:03 +02:00
Davide De Rosa
dcdcec4da7
Bump version
2024-10-02 13:46:27 +02:00
Davide
3ab80cd076
Fix incorrect VPN status in some cases ( #661 )
...
Regression following #636
2024-10-02 13:40:44 +02:00
Davide
51dbc3f246
Add App Intents extension stub ( #655 )
...
Just the Xcode metadata, no actual content.
2024-10-01 10:17:20 +02:00
Davide De Rosa
f4a17e6df8
Restore accidentally removed Package.resolved
2024-10-01 09:58:51 +02:00
Davide De Rosa
8616c002f9
Bump version
2024-10-01 08:05:09 +02:00
Davide De Rosa
6aa9abc35a
Bump version
2024-09-30 21:47:18 +02:00
Davide De Rosa
5640d4abca
Add another missing key
2024-09-30 21:27:06 +02:00
Davide De Rosa
c079f606a9
Bump version
2024-09-30 21:16:31 +02:00
Davide De Rosa
0df95f9fab
Bump version
2024-09-30 21:10:17 +02:00
Davide De Rosa
51cb1d2d38
Fix library about previous commit
2024-09-30 21:08:45 +02:00
Davide
4b1f6e547b
Fix some on-demand behavior ( #646 )
...
Fixes #644
Fixes #645
2024-09-30 19:35:41 +02:00
Davide De Rosa
3f60dee9a2
Add missing Info.plist document key
2024-09-30 19:00:09 +02:00
Davide De Rosa
6a1da55841
Bump version
2024-09-30 18:11:17 +02:00
Davide De Rosa
e9298218be
Bump version
2024-09-30 17:45:52 +02:00
Davide
0e4dd086ef
Import profiles with on-demand disabled ( #641 )
...
Make it friendly to Shortcuts automation by default.
2024-09-30 17:40:24 +02:00
Davide
4877c2bd20
Restrict paywall to on-demand rules ( #639 )
...
Rather than whole module.
Closes #638
2024-09-30 15:56:32 +02:00
Davide
a9fa6a2f62
Maintain one configuration per profile ( #636 )
...
Helps with automation. Install the VPN configuration before persisting a
profile, so that the 1:1 reference with OS settings is maintained.
Likewise, uninstall the VPN configuration after removing a profile.
This before-save hook also resolves a problem with multiple imports,
where multiple VPN permission alerts coalesce if no VPN configuration is
installed. Now the first import waits for the permission synchronously.
Fixes #618
2024-09-30 14:56:20 +02:00
Davide
989886c434
Fix description of parsing errors on import ( #623 )
...
Fixes #607
2024-09-28 00:01:01 +02:00
Davide
fbc6ece59d
Reorganize library into AppUI ( #621 )
...
Closes #611
2024-09-26 23:13:55 +02:00
Davide
4124ff5cae
Lock app with FaceID ( #609 )
...
Restore feature as-is from v2.
Closes #606
2024-09-25 19:32:07 +02:00
Davide De Rosa
b7e8e15d1b
Bump version
2024-09-24 17:56:27 +02:00
Davide De Rosa
41e8d2c5f5
Bump version
2024-09-24 11:20:00 +02:00
Davide De Rosa
d12677f657
Bump version
2024-09-23 15:28:46 +02:00
Davide
6cc86e8668
Import v3 code ( #597 )
...
Closes #565
2024-09-23 15:02:26 +02:00
Davide De Rosa
6bfda3487b
Attempt release
2024-09-22 16:29:08 +02:00
Davide De Rosa
9ada8e1a04
Fix again
2024-09-22 16:29:00 +02:00
Davide De Rosa
913a7c61b3
Try fix signing
2024-09-22 16:27:55 +02:00
Davide De Rosa
ea4028d33c
Attempt release
2024-09-22 16:20:20 +02:00
Davide De Rosa
ffb1a26e30
Set distribution certs for release
2024-09-22 16:20:07 +02:00
Davide De Rosa
d1d66dcbb3
Attempt release
2024-09-22 16:16:26 +02:00
Davide De Rosa
a98cedfd7d
Attempt release
2024-09-22 16:02:40 +02:00
Davide De Rosa
1a6c5fd303
Attempt release
2024-09-22 15:58:52 +02:00
Davide De Rosa
10cfc8e54a
Attempt release
2024-09-22 15:55:50 +02:00
Davide De Rosa
9e2b757ec5
Attempt release
2024-09-22 15:43:34 +02:00
Davide De Rosa
18b933d36e
Respect global macOS accent ( #490 )
2024-02-03 11:52:29 +01:00
Davide De Rosa
e3f4443cc0
Attempt release
2024-01-19 00:07:12 +01:00
Davide De Rosa
5fe9d7405f
Attempt release
2024-01-14 15:14:42 +01:00
Davide De Rosa
64d1131fdd
Update copyright
...
Closes #473
2024-01-14 14:36:55 +01:00
Davide De Rosa
cdd33c881d
Attempt release
2024-01-14 14:04:39 +01:00
Davide De Rosa
ea0fd51362
Attempt release
2024-01-11 18:18:23 +01:00
Davide De Rosa
4b909ebf8a
Attempt release
2024-01-11 17:52:31 +01:00
Davide De Rosa
917e712510
Attempt release
2024-01-11 16:47:40 +01:00
Davide De Rosa
63cbf39a8a
Attempt release
2024-01-11 00:16:47 +01:00
Davide De Rosa
328e2bafd6
Attempt release
2024-01-11 00:15:49 +01:00
Davide De Rosa
e8d8f27750
Attempt release
2024-01-10 18:51:03 +01:00
Davide De Rosa
821d4c79f4
Attempt release
2024-01-09 18:18:53 +01:00
Davide De Rosa
dde2d22eed
Revisit submission of OpenVPN diagnostic report ( #452 )
...
Some improvements:
- Suggest replacing the template with the description of the issue
- Attach app log
- Append purchased features
Also reuse the same body for `mailto:` reports, as metadata were not
being attached in that case.
Closes #377
2024-01-07 12:11:16 +01:00
Davide De Rosa
60ed10e45e
Attempt release
2024-01-06 00:10:22 +01:00
Davide De Rosa
87804e89d8
Attempt release
2024-01-06 00:07:26 +01:00
Davide De Rosa
978c74ad6e
Attempt release
2024-01-05 23:55:19 +01:00
Davide De Rosa
4836bbac18
Restore proper OpenVPN connectivity ( #447 )
2024-01-05 23:54:16 +01:00
Davide De Rosa
7295249cb8
Attempt release
2023-12-31 01:24:28 +01:00
Davide De Rosa
5c5697762b
Add minimal TV app
...
Closes #315
2023-12-31 01:21:38 +01:00
Davide De Rosa
1551b59f21
Use async in ProductManager ( #438 )
...
Drop legacy completion handlers. Push `Task` to the views.
Also:
- Group library tests in a test plan
- Fix a broken library dependency
2023-12-21 08:09:52 +01:00
Davide De Rosa
a0da930d98
Refactor and test ProductManager ( #437 )
...
Carefully drop the StoreKit and Kvitto dependencies for ProductManager
to be testable.
Rebuild test target completely to start writing meaningful tests in
general.
2023-12-20 20:43:39 +01:00
Davide De Rosa
fe127e258b
Fix package dependencies
2023-12-17 08:09:51 +01:00
Davide De Rosa
5cfa32dbb7
Add data count to WireGuard connections ( #430 )
...
Closes #312
2023-12-14 22:18:20 +01:00
Davide De Rosa
4a92acbeb9
Attempt release
2023-10-14 19:50:24 +02:00
Davide De Rosa
cc6c8a90d7
Bump version
...
Drop stale version in project.
2023-10-14 16:06:17 +02:00
Davide De Rosa
2596622a43
Attempt release
2023-10-10 23:01:19 +02:00
Davide De Rosa
12c08c132c
Update metadata and translations ( #365 )
2023-10-10 23:00:19 +02:00
Davide De Rosa
7de000148f
Level up to strict Concurrency ( #361 )
...
Trigger and resolve some additional Concurrency issues.
2023-09-10 20:36:52 +02:00
Davide De Rosa
c5cf0ca1d2
Shift async responsibility to ProductManager ( #360 )
...
SandboxChecker should not care about what actor is running on.
Better than #356
2023-09-10 19:08:31 +02:00
Davide De Rosa
9d72dc43a2
Attempt release
2023-09-10 11:21:59 +02:00
Davide De Rosa
0b755c1c77
Attempt release
2023-09-10 10:35:22 +02:00
Davide De Rosa
0872c27fce
Move CloudKit logic to PersistenceManager ( #355 )
...
Observe updates rather than execute operations imperatively. Also refine
responsibilities of AppContext and CoreContext.
2023-09-10 10:34:42 +02:00
Davide De Rosa
3891723356
Attempt release
2023-09-10 08:09:05 +02:00
Davide De Rosa
6b0a08a189
Attempt release
...
Fix sed syntax on Mac.
2023-09-10 01:08:07 +02:00
Davide De Rosa
a38e3fed7a
Look up TestFlight flag asynchronously ( #352 )
...
Xcode has been quite obnoxious recently with this issue. Start the app
with the most restrictive type (.undefined), relax restrictions after
looking up sandbox and app receipt.
2023-09-10 00:52:39 +02:00
Davide De Rosa
a4ca8cc996
Support iCloud sync as an option ( #350 )
...
Sync will be enabled on upgrade for consistency with current behavior,
and disabled for new installs.
Fixes #227
2023-09-09 20:29:04 +02:00
Davide De Rosa
a3cfde1950
Drop v2 migrations ( #348 )
2023-09-08 22:18:41 +02:00
Davide De Rosa
f159252e24
Replicate Diagnostics in Settings ( #342 )
...
As the only link to "Diagnostics" appears in the profile screen, when
there are no profiles the screen is unreachable. Replicate the same
entry in Settings.
2023-08-06 20:27:16 +02:00
Davide De Rosa
19e52bfd59
Attempt release
2023-07-30 18:01:44 +02:00
Davide De Rosa
388af4a73c
Attempt release
2023-07-30 17:47:41 +02:00
Davide De Rosa
db4c6094ea
Attempt release
2023-07-24 23:32:51 +02:00
Davide De Rosa
38cca79683
Attempt release
2023-07-23 13:59:56 +02:00
Davide De Rosa
6ede6f052a
Allow editing of OpenVPN endpoints ( #335 )
...
Hosts only:
- Add new
- Edit/delete existing
- Reorder
Closes #206
2023-07-23 12:45:47 +02:00
Davide De Rosa
1c3cbe02e5
Improve OpenVPN Endpoint UX ( #332 )
...
- Make selection linear by address
- Do not hide endpoints when automatic, show disabled
- Suggest manual endpoint required
- Pre-expand selected endpoint address
- Do not dismiss on selection, because selected value is not visible in
ProfileView
2023-07-22 17:10:16 +02:00
Davide De Rosa
0804c6b38e
Attempt release
2023-07-06 18:47:35 +01:00
Davide De Rosa
1935d9e92c
Attempt release
2023-07-06 11:10:10 +01:00
Davide De Rosa
fac06f58db
Use versioned TunnelKit
2023-07-06 11:09:59 +01:00
Davide De Rosa
cf43e1cd7b
Attempt release
2023-07-06 11:05:27 +01:00
Davide De Rosa
addbf8ab5f
Update TunnelKit with keychain fix
2023-07-06 11:05:14 +01:00
Davide De Rosa
b5d230f0b9
Attempt release
...
Use TunnelKit 6.1.0
2023-07-05 17:16:09 +01:00
Davide De Rosa
98e5e4cdde
Share common protocols across localized strings ( #324 )
2023-07-05 17:18:33 +02:00
Davide De Rosa
bf70c7c59a
Reorganize app folders ( #323 )
2023-07-04 22:29:43 +02:00
Davide De Rosa
bd6340ce77
Split reusable views into extensions ( #322 )
...
Like in #321
2023-07-03 17:37:16 +02:00
Davide De Rosa
de7e574fec
Do some housekeeping
...
- Upgrade Xcode project
- Fix Twitter link in README
2023-07-03 12:30:26 +01:00
Davide De Rosa
278efaf347
Refactor domain errors ( #310 )
2023-07-02 12:51:50 +02:00
Davide De Rosa
3a06d6c984
Do not use spaces in filenames
2023-06-18 10:05:10 +02:00
Davide De Rosa
7ccb10febc
Rethink library architecture ( #301 )
2023-05-24 18:19:47 +02:00
Davide De Rosa
40330cc87a
Attempt beta release
2023-04-18 18:15:39 +02:00
Davide De Rosa
1fd38790e4
Attempt beta release
2023-04-18 17:24:47 +02:00
Davide De Rosa
7a7a815979
Attempt beta release
2023-04-06 12:51:01 +02:00
Davide De Rosa
aec7f8eefe
Attempt beta release
2023-04-05 16:32:50 +02:00
Davide De Rosa
34e41ba93f
Attempt beta release
2023-04-04 18:59:44 +02:00
Davide De Rosa
d4d3d97081
Attempt beta release
2023-04-04 17:11:44 +02:00
Davide De Rosa
3678d01dc1
Prepare release
...
- Use versioned TunnelKit
- Update targets in README
2023-04-04 17:10:54 +02:00
Davide De Rosa
7e2e4d6caa
Import missing translations ( #280 )
2023-04-04 17:07:41 +02:00
Davide De Rosa
e050c0c8df
Catch WireGuard parsing errors properly ( #279 )
...
They could be reported as OpenVPN errors.
2023-04-03 08:48:18 +02:00
Davide De Rosa
33e0ceec04
Lock in background ( #275 )
...
There are plenty of situations where the app kind of stays in the
foreground, but goes to .inactive state. Lock screen could be
annoying in those cases.
2023-03-31 23:47:29 +02:00
Davide De Rosa
e9f11d1dbe
Attempt beta release
2023-03-25 17:07:58 +01:00
Davide De Rosa
76084dbd30
Attempt beta release
2023-03-20 15:07:26 +01:00
Davide De Rosa
2d00a05c4c
Attempt beta release
2023-03-20 14:14:20 +01:00
Davide De Rosa
325e10845d
Option to lock app when entering background ( #270 )
2023-03-20 11:00:01 +01:00
Davide De Rosa
7346bfc65c
Add 3D Touch items ( #267 )
...
- Enable/Disable VPN
- Reconnect (if enabled)
Move lifecycle operations to SceneDelegate.
2023-03-19 20:04:31 +01:00
Davide De Rosa
4a2dec9c6a
Attempt beta release
2023-03-19 16:11:09 +01:00
Davide De Rosa
4faeb85295
Attempt beta release
...
Update bundle in beta script.
2023-03-19 14:42:56 +01:00
Davide De Rosa
fbd32d8b26
Fine-tune SwiftLint ( #265 )
2023-03-19 14:41:53 +01:00
Davide De Rosa
1dda8dce98
Attempt beta release
2023-03-19 08:45:34 +01:00
Davide De Rosa
8d0fb5c9b5
Support DoH/DoT network settings in WireGuard profiles ( #264 )
2023-03-19 08:41:51 +01:00
Davide De Rosa
c85f3d894e
Restore DNS "Domain" setting ( #260 )
2023-03-17 22:16:04 +01:00
Davide De Rosa
f06f097f27
Add SwiftLint phase ( #262 )
2023-03-17 21:55:47 +01:00
Davide De Rosa
cecf64d871
Move Diagnostics view to Profile bottom ( #261 )
2023-03-17 21:46:53 +01:00
Davide De Rosa
2e10aab039
Extend authentication methods ( #259 )
...
* Add profile authentication method
- Persistent (default, fallback)
- Interactive (may expire through reconnections)
- TOTP (seed-based) - currently disabled
* Disable on-demand if login is interactive
* Present interactive prompt on VPN toggle
2023-03-17 16:49:35 +01:00
Davide De Rosa
6e6c212649
Move .killSwitch property to extras
2022-11-10 07:55:31 +01:00
Davide De Rosa
ba09dcffa7
Full OpenVPN XOR patch ( #245 )
2022-11-06 18:08:41 +01:00
Davide De Rosa
e2c976e58d
Attempt beta release
2022-10-31 14:18:07 +01:00
Davide De Rosa
e1a3e7992f
Update TunnelKit with .killSwitch option
...
Fixes #181
2022-10-30 11:54:52 +01:00
Davide De Rosa
aca431aac5
Run tests on PR ( #241 )
2022-10-30 11:53:53 +01:00
Davide De Rosa
dad6d820e9
Upgrade project to Xcode 14
2022-10-29 22:18:02 +02:00
Davide De Rosa
e4ec1e642d
Attempt beta release
2022-10-29 13:40:50 +02:00
Davide De Rosa
b2ec7f0422
Attempt beta release
2022-10-29 13:01:18 +02:00
Davide De Rosa
cdc05f0c10
Update TunnelKit
...
Split IP settings and routes. Now properly handling local routes.
2022-10-29 12:28:27 +02:00
Davide De Rosa
0f04bdcce3
Attempt beta release
2022-10-28 15:42:10 +02:00
Davide De Rosa
0bf1c71504
Update TunnelKit
...
- Default gateway not properly configured
2022-10-28 15:41:49 +02:00
Davide De Rosa
b431ce4f05
Attempt beta release
2022-10-27 00:43:41 +02:00
Davide De Rosa
e9b7be6334
Update TunnelKit
...
- Could encode but not decode profiles with IPv6 endpoints from
Core Data
- Improve options logging
2022-10-27 00:42:48 +02:00