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
27266a6d47
Fix stupid compile error
2023-09-10 18:40:24 +02:00
Davide De Rosa
d02da0bad8
Fill missing descriptions for some errors ( #359 )
...
Fixes #358
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 ( #357 )
...
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 ( #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
c645f39254
Fix SandboxChecker actor ( #356 )
...
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 ( #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
33d9e05907
Drop < 2.2.0 key after migration ( #353 )
...
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 ( #351 )
...
Convenient for those with privacy concerns.
2023-09-09 21:52:32 +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
2d046181b0
Only migrate if current version is higher ( #349 )
2023-09-08 22:45:04 +02:00
Davide De Rosa
a3cfde1950
Drop v2 migrations ( #348 )
2023-09-08 22:18:41 +02:00
Davide De Rosa
0f84859354
Do some housekeeping ( #347 )
...
- 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 ( #346 )
2023-09-08 16:20:24 +02:00
Davide De Rosa
b4b2db176c
Fix .sink retain cycles ( #345 )
2023-09-08 16:20:01 +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
04e090e26f
Suppress SceneConfiguration warning ( #341 )
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 ( #339 )
...
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 ( #337 )
...
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 ( #336 )
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 ( #334 )
...
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 ( #335 )
...
Hosts only:
- Add new
- Edit/delete existing
- Reorder
Closes #206
2023-07-23 12:45:47 +02:00
Davide De Rosa
e0dbca224f
Rework "Trusted networks" to be a generic "On-demand" ( #333 )
...
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 #119
2023-07-23 08:44:46 +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
0734816c05
Bump version
2023-07-17 21:48:25 +02:00
Davide De Rosa
2357324a74
Update some metadata ( #331 )
...
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 ( #329 )
...
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 ( #327 )
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 ( #326 )
2023-07-05 18:07:47 +02: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
d7ebcb23ba
Split views into extensions ( #321 )
...
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 ( #320 )
2023-07-03 16:41:49 +02: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
7030ad40c2
Do not observe shared entities if uninterested ( #313 )
...
`@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 ( #316 )
2023-06-17 21:40:09 +02:00
Davide De Rosa
fb47def4ed
Avoid inline format for non-descriptive strings ( #302 )
2023-05-28 11:57:35 +02:00
Davide De Rosa
b89328b5c3
Only show 'Reconnect' on active profile ( #311 )
...
It doesn't make sense anywhere else.
2023-05-28 11:23:07 +02:00
Davide De Rosa
36cad41529
Fix IPv4/6 address validation ( #308 )
2023-05-27 21:34:31 +02:00
Davide De Rosa
d05cf7140c
Fail gracefully when refreshing infrastructure ( #307 )
2023-05-27 13:52:57 +02:00
Davide De Rosa
7ccb10febc
Rethink library architecture ( #301 )
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 ( #297 )
...
- 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
Davide De Rosa
50b4806275
Remove nonsense Mac menus ( #285 )
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 ( #282 )
...
* 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 ( #281 )
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 ( #280 )
2023-04-04 17:07:41 +02:00
Davide De Rosa
7f9ae7c3bc
Always show "Reconnect" button ( #278 )
...
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 ( #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
1e0d522010
Drop #available condition on iOS 15 ( #274 )
2023-03-25 17:05:53 +01:00
Davide De Rosa
6af4bb7e0f
Resolve issues with lock screen ( #273 )
...
* 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 ( #272 )
...
Implementation is buggy/incomplete.
See #259
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 ( #271 )
...
* 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 ( #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
513b38584d
Upgrade SwiftLint to CI version ( #266 )
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 ( #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
17ae9793df
Randomize provider server ( #263 )
...
* 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 ( #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
26c34638cb
Make category optional in server long description
2023-03-17 18:09:21 +01:00
Davide De Rosa
8f999a462e
Do not open long content when XOR is disabled
2023-03-17 17:52:57 +01:00
Davide De Rosa
37354d1b87
Update copyright
2023-03-17 16:56:19 +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
44ccd21536
Fetch full profiles from Core Data ( #258 )
...
* Fetch full profiles
* Manage full profiles in organizer
2023-03-16 16:49:09 +01:00
Davide De Rosa
17b01a4dbc
Clean up some code
...
- Drop stale generic
- Improve readability
2023-03-16 15:12:23 +01:00
Davide De Rosa
7ed27558fc
Move refund detection inside ProductManager ( #246 )
...
* Detect refunds inside ProductManager
Compare former value and report refund event via subject.
* Hook VPN uninstallation on refund event
2022-11-06 18:51:13 +01:00
Davide De Rosa
ba09dcffa7
Full OpenVPN XOR patch ( #245 )
2022-11-06 18:08:41 +01:00
Davide De Rosa
c48e35887c
Bump version
2022-11-02 22:33:26 +01:00
Dmitry Chirkin
07eaa54f1b
Ukrainian transaltion ( #243 )
...
Co-authored-by: Davide De Rosa <keeshux@gmail.com>
2022-11-01 14:20:09 +01:00
Davide De Rosa
e2c976e58d
Attempt beta release
2022-10-31 14:18:07 +01:00
Davide De Rosa
baac1f59a8
Bump version
2022-10-31 08:57:05 +01:00
Davide De Rosa
22c28de641
Retain original filename as imported profile name ( #240 )
2022-10-30 10:22:44 +01:00
Davide De Rosa
e4ec1e642d
Attempt beta release
2022-10-29 13:40:50 +02:00
Davide De Rosa
b2bdf23c54
Revisit pull section in OpenVPN Endpoint
...
- Hide from server diagnostics
- Use a better section title
2022-10-29 13:40:30 +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
b431ce4f05
Attempt beta release
2022-10-27 00:43:41 +02:00
Davide De Rosa
e28bb3db9a
Ack new refunds only if refunds list was altered
...
Fixes #238
2022-10-25 12:48:45 +02:00
Davide De Rosa
e1d8ec6066
Attempt beta release
2022-10-25 09:07:39 +02:00
Davide De Rosa
c0cc10ab94
Restore reconnect action ( #232 )
...
* Add "Reconnect" in profile view
* Add "Reconnect" in profile context menu
* Update CHANGELOG
* Restrict "Reconnect" in context menu to iOS 16
SwiftUI does not react properly to state updates.
2022-10-17 17:36:32 +02:00
Davide De Rosa
f6e0caaa73
Implement --remote-random-hostname
...
- Update TunnelKit
- Show in UI
2022-10-17 09:06:52 +02:00
Davide De Rosa
6c6904255d
Bump version
2022-10-17 09:05:27 +02:00
Davide De Rosa
54dc2307e9
Attempt beta release
2022-10-16 10:09:35 +02:00
Davide De Rosa
6a228d29c7
Use specific rounded Mac icon
2022-10-16 10:09:19 +02:00
Davide De Rosa
c345265451
Attempt beta release
2022-10-16 08:36:17 +02:00
Davide De Rosa
54c53707e0
Add app log in Diagnostics screen ( #234 )
2022-10-16 08:33:32 +02:00
Davide De Rosa
fbc17877b1
Suppress buggy Xcode warnings
...
@discardableResult annotations became suddenly ineffective.
2022-10-15 22:30:21 +02:00
Davide De Rosa
7f748e6d1e
Reuse "Download" for pulled OpenVPN settings
2022-10-15 16:52:58 +02:00
Davide De Rosa
c4ca510b72
Fix app icon inconsistencies
...
- iOS: Single size
- macOS: Add missing
2022-10-15 16:41:13 +02:00
Davide De Rosa
6031d0119a
Drop assertion on legit intents scenario
2022-10-13 19:10:45 +02:00
Davide De Rosa
f95e4f228d
Implement --route-nopull via TunnelKit ( #230 )
...
Use it internally to override server-pushed settings.
2022-10-13 19:09:51 +02:00
Davide De Rosa
5627e6c4a9
Address UI race conditions ( #229 )
...
* Make some managers concurrency-safe
- IntentsManager: @MainActor, non-shared, continuation
- SSIDReader: @MainActor, continuation
- Reviewer: main queue, non-shared
* Review wrong use of Concurrency framework
There were background thread calls e.g. in VPNToggle, because
ProfileManager was used inside a VPNManager async call.
Annotate @MainActor wherever a Task involves UI.
* Make main managers MainActor
* Apply MainActor to Mac menus
* [ci skip] Update CHANGELOG
* Set MainActor consistently on Mac menu view models
2022-10-13 08:53:50 +02:00
Davide De Rosa
f21d05aa53
Add IVPN metadata
2022-10-08 11:33:03 +02:00
Davide De Rosa
07328982d6
Restore PIA provider
2022-10-05 08:18:46 +02:00
Davide De Rosa
63c3ac80b4
Attempt beta release
2022-10-04 22:37:53 +02:00
Davide De Rosa
e2c1a4c686
Fix Oeck eligibility regression
2022-10-04 22:37:53 +02:00
Davide De Rosa
ecb3138817
Attempt beta release
2022-09-25 08:55:15 +02:00
Davide De Rosa
025421aa08
Refactor some alert translations
2022-09-25 08:35:52 +02:00
Davide De Rosa
496d993e3d
Attempt beta release
2022-09-23 23:07:40 +02:00
Davide De Rosa
1364d5153e
Attempt beta release
2022-09-23 22:57:36 +02:00
Davide De Rosa
a3fd5c40d4
Fix access to hidden OpenVPN.Configuration.Fallback
2022-09-23 22:56:27 +02:00
Davide De Rosa
be6726fbd8
Attempt beta release
2022-09-23 21:56:37 +02:00
Davide De Rosa
f755550974
Increase debug log view size
2022-09-23 09:04:27 +02:00
Davide De Rosa
c2aef310f3
Fix again server ordering
2022-09-21 22:32:33 +02:00
Davide De Rosa
db6f7bdf28
Revisit app metadata and screenshots
...
- Add script to import localized metadata
- Update app name, subtitle, keywords
- Update App Store description
- Replace "OpenVPN" with "VPN"
- Add .conf file extension (WireGuard)
- Drop PIA (404)
- Drop trailing notices
- Update README snapshots (Mac versions unused)
- Update App Store screenshots
- Revert to legacy launch screen (SwiftUI method stretches)
2022-09-15 17:41:22 +02:00
Davide De Rosa
38bdbc3697
Move diagnostics to settings
2022-09-12 22:58:37 +02:00
Davide De Rosa
940e0cf8c9
Attempt beta release
2022-09-05 22:35:22 +02:00
Davide De Rosa
092d4f5de2
Drop return in one-line functions
2022-09-04 20:30:55 +02:00
Davide De Rosa
1005a12a66
Add extended provider location description
...
- Profile: Below location row
- Menu: On top of server list
2022-09-04 19:23:40 +02:00
Davide De Rosa
7975ddd194
Fix provider header in profile view
2022-09-04 19:23:27 +02:00
Davide De Rosa
b322bde137
Refactor string ids after adding SettingsView
2022-09-03 14:59:17 +02:00
Davide De Rosa
4c4b3ee0c9
Revert to concrete-only managers
...
Abstraction was overcomplicated. Strategy pattern is enough.
2022-09-03 12:47:40 +02:00
Davide De Rosa
28f7c6bbe8
Restore longer localizations in Settings/About
2022-08-28 09:24:02 +02:00
Davide De Rosa
f36d7596d0
Integrate settings with about screen
...
Move everything to SettingsView and remove invite actions.
2022-08-27 23:15:51 +02:00
Davide De Rosa
10270b02ee
On Mac, copy debug log to pasteboard, do not share
...
UIActivityViewController is lame.
2022-08-27 22:21:34 +02:00
Davide De Rosa
0fee726951
Make profile "Connect" item a connection toggle
...
Requires adding multiple delegates to LightVPNManager.
2022-08-19 17:43:56 +02:00
Davide De Rosa
d10edc69fe
Restore truncated VPN footer workaround
2022-08-19 08:34:55 +02:00