Commit Graph

1091 Commits

Author SHA1 Message Date
Davide De Rosa
5cfa32dbb7
Add data count to WireGuard connections ()
Closes 
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
7ceec3f322 Bump event count for review 2023-10-14 19:48:52 +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 () 2023-10-10 23:00:19 +02:00
Davide De Rosa
7de000148f
Level up to strict Concurrency ()
Trigger and resolve some additional Concurrency issues.
2023-09-10 20:36:52 +02:00
Davide De Rosa
c5cf0ca1d2
Shift async responsibility to ProductManager ()
SandboxChecker should not care about what actor is running on.

Better than 
2023-09-10 19:08:31 +02:00
Davide De Rosa
27266a6d47 Fix stupid compile error 2023-09-10 18:40:24 +02:00
Davide De Rosa
d02da0bad8
Fill missing descriptions for some errors ()
Fixes 
2023-09-10 17:15:40 +02:00
Davide De Rosa
9d72dc43a2 Attempt release 2023-09-10 11:21:59 +02:00
Davide De Rosa
f32c6f8fde
Retain persistence objects in manager ()
Relying on Core Data for context retention is fragile, better to keep a
reference of the *Persistence objects ourselves.

Also, remove any CloudKit reference from CoreContext.
2023-09-10 11:20:56 +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 ()
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
c645f39254
Fix SandboxChecker actor ()
Mac function was still running on main actor. Only constrain to main
actor on public API.
2023-09-10 10:27:11 +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 ()
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
33d9e05907
Drop < 2.2.0 key after migration ()
Otherwise, iCloud is being constantly reinforced to true.
2023-09-10 00:50:12 +02:00
Davide De Rosa
791b6be7d5
Allow erasing remote iCloud store ()
Convenient for those with privacy concerns.
2023-09-09 21:52:32 +02:00
Davide De Rosa
a4ca8cc996
Support iCloud sync as an option ()
Sync will be enabled on upgrade for consistency with current behavior,
and disabled for new installs.

Fixes 
2023-09-09 20:29:04 +02:00
Davide De Rosa
2d046181b0
Only migrate if current version is higher () 2023-09-08 22:45:04 +02:00
Davide De Rosa
a3cfde1950
Drop v2 migrations () 2023-09-08 22:18:41 +02:00
Davide De Rosa
0f84859354
Do some housekeeping ()
- Be consistent with on-demand rules
- Use shortcut reduce(into:)
2023-09-08 16:20:42 +02:00
Davide De Rosa
c80d17ceb4
Fix .locksInBackground AppStorage key () 2023-09-08 16:20:24 +02:00
Davide De Rosa
b4b2db176c
Fix .sink retain cycles () 2023-09-08 16:20:01 +02:00
Davide De Rosa
f159252e24
Replicate Diagnostics in Settings ()
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
04e090e26f
Suppress SceneConfiguration warning () 2023-08-06 09:43:24 +02:00
Davide De Rosa
7a74525149 Fix b608d59d8f 2023-07-31 08:25:30 +02:00
Davide De Rosa
19e52bfd59 Attempt release 2023-07-30 18:01:44 +02:00
Davide De Rosa
b608d59d8f
Omit footer when on-demand is disabled ()
Preserve footer in that case, just empty. Adding/removing footer seems
to result in a worse animation.
2023-07-30 17:59:29 +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
bae843363c
Fall back sandbox receipt to release receipt ()
Could be a way to enable paid features in TestFlight builds for those
who originally bought them from the App Store.
2023-07-24 23:32:05 +02:00
Davide De Rosa
65d6e30469
Consider text length in endpoint rows () 2023-07-23 15:17:28 +02:00
Davide De Rosa
38cca79683 Attempt release 2023-07-23 13:59:56 +02:00
Davide De Rosa
34f6738b69
Focus some text fields on appearance ()
Feature from iOS 15, use it on:

- New profile name
- New profile passphrase
- Renamed profile name
- Account username
2023-07-23 13:28:47 +02:00
Davide De Rosa
6ede6f052a
Allow editing of OpenVPN endpoints ()
Hosts only:

- Add new
- Edit/delete existing
- Reorder

Closes 
2023-07-23 12:45:47 +02:00
Davide De Rosa
e0dbca224f
Rework "Trusted networks" to be a generic "On-demand" ()
Extend the feature by also providing a complementary "include" policy,
i.e. activate the VPN _only_ on the specified networks. "Trusted
networks" was only providing the "exclude" counterpart, i.e. _except_
the specified networks.

Closes 
2023-07-23 08:44:46 +02:00
Davide De Rosa
1c3cbe02e5
Improve OpenVPN Endpoint UX ()
- 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
0734816c05 Bump version 2023-07-17 21:48:25 +02:00
Davide De Rosa
2357324a74
Update some metadata ()
A bit of everything.

- Use GitHub handles in CHANGELOG
- Mention XOR patch in README and keywords
- Update gems
- Add GitHub issue template
- Fix missing script in release workflow
2023-07-17 21:46:32 +02:00
Davide De Rosa
4173c7aa6c
Externalize complex bindings ()
Some bindings are too convoluted, move them out of initializers.
2023-07-17 21:44:18 +02:00
Davide De Rosa
0804c6b38e Attempt release 2023-07-06 18:47:35 +01:00
Davide De Rosa
a7ea010d4e
Extend error handler to modals () 2023-07-06 19:29:10 +02:00
Davide De Rosa
1935d9e92c Attempt release 2023-07-06 11:10:10 +01:00
Davide De Rosa
cf43e1cd7b Attempt release 2023-07-06 11:05:27 +01:00
Davide De Rosa
b5d230f0b9 Attempt release
Use TunnelKit 6.1.0
2023-07-05 17:16:09 +01:00
Davide De Rosa
f0e3b2fa9c
Improve release workflow () 2023-07-05 18:07:47 +02:00
Davide De Rosa
98e5e4cdde
Share common protocols across localized strings () 2023-07-05 17:18:33 +02:00
Davide De Rosa
bf70c7c59a
Reorganize app folders () 2023-07-04 22:29:43 +02:00
Davide De Rosa
bd6340ce77
Split reusable views into extensions ()
Like in 
2023-07-03 17:37:16 +02:00
Davide De Rosa
d7ebcb23ba
Split views into extensions ()
Nothing but moving code around to reorganize views into the following
sections (MARK):

- Properties/Body
- Subviews
- Actions
2023-07-03 16:54:43 +02:00
Davide De Rosa
7198150f00
Refactor alerts to use latest API () 2023-07-03 16:41:49 +02:00
Davide De Rosa
278efaf347
Refactor domain errors () 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
7030ad40c2 Do not observe shared entities if uninterested ()
`@ObservedObject` is unnecessary in cases where manager operation is
unidirectional.
2023-06-18 10:05:10 +02:00
Davide De Rosa
ddab76326d
Replace deprecated .windows with .connectedScenes () 2023-06-17 21:40:09 +02:00
Davide De Rosa
fb47def4ed
Avoid inline format for non-descriptive strings () 2023-05-28 11:57:35 +02:00
Davide De Rosa
b89328b5c3
Only show 'Reconnect' on active profile ()
It doesn't make sense anywhere else.
2023-05-28 11:23:07 +02:00
Davide De Rosa
36cad41529
Fix IPv4/6 address validation () 2023-05-27 21:34:31 +02:00
Davide De Rosa
d05cf7140c
Fail gracefully when refreshing infrastructure () 2023-05-27 13:52:57 +02:00
Davide De Rosa
a78a7b18b5
Encapsulate *Persistence responsibilities ()
Do not leave the choice of a repository context up to the library
consumer. Instead, provide a specific factory (*Persistence) for each
module.
2023-05-27 12:32:53 +02:00
Davide De Rosa
7ccb10febc
Rethink library architecture () 2023-05-24 18:19:47 +02:00
Davide De Rosa
b4ad8dea0d Do some code clean up
- Use guard in validators

- Rename URL.openURL() to URL.open()

- Sort imports (SwiftLint)

- Drop unused VPNProtocolType.allTypes

- Drop unused imports
2023-05-21 11:48:03 +02:00
Davide De Rosa
1051a8dc52
Revisit domain name validators ()
- Allow TLDs longer than 6 characters

- Allow wildcards in proxy bypass domains
2023-05-01 11:44:41 +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
Dmytro Chyrkin
1cb5821f9d
Small fixes for Ukrainian translation () 2023-04-12 09:05:39 +02:00
Davide De Rosa
574f9a05b5
Show app version in Mac menu () 2023-04-08 11:57:42 +02:00
Davide De Rosa
50b4806275
Remove nonsense Mac menus () 2023-04-08 11:56:17 +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
e3cfdadf97
Cover screen on .inactive ()
* Make unlock block actor-safe

* Cover views on .inactive, lock on .background
2023-04-05 16:31:17 +02:00
Davide De Rosa
0591363b15 Refine platform-specific release notes
Symlink metadata to iOS, except "What's New".
2023-04-05 07:59:50 +02:00
Davide De Rosa
34e41ba93f Attempt beta release 2023-04-04 18:59:44 +02:00
Davide De Rosa
07bd126131
Recognize IAPs other than full version on Mac () 2023-04-04 18:59:05 +02:00
Davide De Rosa
d4d3d97081 Attempt beta release 2023-04-04 17:11:44 +02:00
Davide De Rosa
ad90a5908b Fix truncation in provider footer 2023-04-04 17:10:54 +02:00
Davide De Rosa
7e2e4d6caa
Import missing translations () 2023-04-04 17:07:41 +02:00
Davide De Rosa
e050c0c8df
Catch WireGuard parsing errors properly ()
They could be reported as OpenVPN errors.
2023-04-03 08:48:18 +02:00
Davide De Rosa
7f9ae7c3bc
Always show "Reconnect" button ()
Will do nothing if VPN is disabled. Suboptimal, but consistent
with Mac menu.
2023-04-01 22:46:12 +02:00
Davide De Rosa
33e0ceec04
Lock in background ()
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
1e0d522010
Drop #available condition on iOS 15 () 2023-03-25 17:05:53 +01:00
Davide De Rosa
6af4bb7e0f
Resolve issues with lock screen ()
* Make lock screen a View extension

- Reuse in global theme (apply to all modals)

- Use a ZStack rather than replace (retain content/navigation)

- Share lock state across all LockableView
2023-03-25 16:47:08 +01:00
Davide De Rosa
76084dbd30 Attempt beta release 2023-03-20 15:07:26 +01:00
Davide De Rosa
4eb2ac5e0e
Revert interactive login ()
Implementation is buggy/incomplete.

See 
2023-03-20 15:06:56 +01:00
Davide De Rosa
2d00a05c4c Attempt beta release 2023-03-20 14:14:20 +01:00
Davide De Rosa
5f991d9cc2
Unlock app with biometrics ()
* Prevent app lock completely in macOS

* Add missing Face ID metadata for biometrics auth

* Ensure MainActor

* Reword option

* Fix lock logic on launch
2023-03-20 14:12:42 +01:00
Davide De Rosa
325e10845d
Option to lock app when entering background () 2023-03-20 11:00:01 +01:00
Davide De Rosa
7346bfc65c
Add 3D Touch items ()
- 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
513b38584d
Upgrade SwiftLint to CI version () 2023-03-19 16:10:40 +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 () 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
17ae9793df
Randomize provider server ()
* Pick random server within location

* Add toggle to provider section in profile
2023-03-19 08:19:32 +01:00
Davide De Rosa
c85f3d894e
Restore DNS "Domain" setting () 2023-03-17 22:16:04 +01:00
Davide De Rosa
f06f097f27
Add SwiftLint phase () 2023-03-17 21:55:47 +01:00