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
a78a7b18b5
Encapsulate *Persistence responsibilities ( #305 )
...
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 ( #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
Dmytro Chyrkin
1cb5821f9d
Small fixes for Ukrainian translation ( #288 )
2023-04-12 09:05:39 +02:00
Davide De Rosa
574f9a05b5
Show app version in Mac menu ( #286 )
2023-04-08 11:57:42 +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
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
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
1b704d7d4a
Decouple VPNManager from TunnelKit ( #248 )
...
* Drop VPNManager dependency on TunnelKit
* Hook .masksPrivateData to preferences updates
2022-11-10 07:42:08 +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
a96fff2add
Import new translations
2022-10-26 17:03:54 +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
c7a0a3e4b8
Drop 'non-official' from strings
2022-10-17 13:35:30 +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
592b0801e2
Prefix server description with category
2022-10-13 23:07:31 +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
54dc8a2556
Use MockVPN from TunnelKit
...
Rather than ad hoc strategy.
2022-10-12 22:37:40 +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
6183433c13
Drop unused libraries
2022-09-30 22:26:56 +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
5c681d6c3f
Import new localizations
2022-09-05 22:34:51 +02:00
Davide De Rosa
3b146b3e0f
Fix var syntax
2022-09-05 07:58:20 +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
4d56ed6fca
Only hide app by closing it
...
Keep constant "Show" action in menu:
- Bring app to foreground if in background
- Activate app if already in foreground
2022-08-19 17:43:52 +02:00
Davide De Rosa
d10edc69fe
Restore truncated VPN footer workaround
2022-08-19 08:34:55 +02:00
Davide De Rosa
f465108a0a
Attempt beta release
2022-08-16 12:43:20 +02:00
Davide De Rosa
0f790a9401
Fix leaks when reconnecting from menu
...
LightVPNManager implementation was still disabling/enabling VPN
manually instead of using reconnect() atomically, which led to an
IP leak in between the two steps.
2022-08-13 16:48:00 +02:00
Davide De Rosa
7a700408a8
Improve a few things about provider profile menus
...
- Add "Connect" item to connect to current server
- Sort provider categories ("Default" should also come first)
Reuse bundle from constants.
2022-08-13 16:47:01 +02:00
Davide De Rosa
80f71507e3
Do not navigate to active profile on launch
2022-08-05 12:50:12 +02:00
Davide De Rosa
0464cd0476
Fix property in launch on login bindings
2022-08-04 23:35:42 +02:00
Davide De Rosa
9195d426e4
Attempt beta release
2022-07-18 08:03:24 +02:00
Davide De Rosa
f8c6b6580d
Encapsulate launchesOnLogin AppPreference from Mac
2022-07-18 08:03:24 +02:00
Davide De Rosa
b26e334881
Get Mac strings from main bundle
...
Alter bundle in SwiftGen configuration file.
2022-07-18 07:55:56 +02:00
Davide De Rosa
04faf57d4c
Send app to background if started hidden
...
Sandbox had to be enabled in order to submit binary to App Store
Connect, therefore command line arguments cannot be used to tell
if the app was started by the launcher.
However, given that launcher starts app in hidden state, we can
safely assert that if the app is hidden on start, it was started
by the launcher.
See f33380b4e2
Also drop automatic signing on Mac bundle and unused utils.
2022-07-18 07:55:56 +02:00
Davide De Rosa
32e548421f
Attempt beta release
2022-07-17 14:50:05 +02:00
Davide De Rosa
2c5f3d0bf0
Send app to background in OrganizerView handler
...
Keep handler in a single place.
2022-07-17 14:47:15 +02:00
Davide De Rosa
781291940f
Enforce window appearance on 'Show' after closure
2022-07-16 21:24:53 +02:00
Davide De Rosa
9458c4f3a3
Fix server description and sorting
...
- Name (countries, area)
- Index
- Tags
Also use short description in menu (without country prefix).
2022-07-16 17:39:42 +02:00
Davide De Rosa
ce280c0826
Fix old entity naming
2022-07-16 17:39:42 +02:00
Davide De Rosa
48d8173871
Drop return in single line functions
2022-07-16 17:39:42 +02:00
Davide De Rosa
58e375ec41
Attach @MainActor where needed
...
Some methods were updating UI from non-main thread.
2022-07-16 17:39:42 +02:00
Davide De Rosa
f33380b4e2
Launch application in background from launcher
...
Requires disabling sandbox for launcher to receive arguments.
https://developer.apple.com/documentation/appkit/nsworkspace/openconfiguration/3172708-arguments
Refine some minor things about launcher:
- Pass invoker to NSApp.terminate() calls
- Use legacy version of .openApplication() to drop Concurrency
2022-07-16 17:39:42 +02:00
Davide De Rosa
3f4b55a003
Implement Mac bundle with system menu
...
Use bundle as a means to provide Mac APIs to Catalyst app.
In order to cross the @objc wall set by the Mac Bundle mechanism,
Swift structures cannot be used directly and must be bridged
through ObjC facades.
Create NSMenu in MVVM style and install it on app launch. Make
sure to do it in AppDelegate.applicationDidFinishLaunching(),
because doing it as early as in PassepartoutApp.init() would
crash Mac code.
Use .representedObject to own view models.
With menu in place, app can be sent to background when main window
is closed. Requires multiple documents support for app not to die
instantly.
2022-07-16 17:39:42 +02:00
Davide De Rosa
0a2d1e9d37
Mitigate fatalError() in properties, fail gracefully
...
Do not trigger fatalError() on properties too much because
SwiftUI may read them at any unpredictable time.
2022-07-08 20:01:53 +02:00
Davide De Rosa
a442603696
Polish bundleConfig with strong type checking
2022-07-05 08:11:31 +02:00
Davide De Rosa
ebe8ae3d29
Retain profiles order, no active on top
2022-07-04 00:32:06 +02:00
Davide De Rosa
e8f65e9db0
Also show active profile as "Disabled"
2022-07-04 00:31:54 +02:00
Davide De Rosa
15dec59692
Comment on app path inferral from launcher
2022-06-26 08:53:10 +02:00
Davide De Rosa
1543eef3c1
Add convenient appId constant
2022-06-25 20:27:24 +02:00
Davide De Rosa
b966826f19
Use main container path as launcher argument
...
Rather than "Contents/MacOS/Passepartout", raising a permission
error.
Also add .hides to prevent window from showing on launch.
2022-06-25 20:16:06 +02:00
Davide De Rosa
df0d40c556
Add launcher target
...
- Launch main app in background then die
- Do not launch app if already running
- Launch app binary relative to launcher location
2022-06-25 16:53:38 +02:00
Davide De Rosa
3cc82cc807
Fix case in Info keys related to launch screen
2022-06-25 16:53:38 +02:00
Davide De Rosa
7ba9879c8c
Revisit constants structure
...
Move some stuff back to App:
- Constants, and split library-dependent
- InApp entities and constants
Flatten global constants hierarchy.
2022-06-25 14:36:28 +02:00
Davide De Rosa
9a8477225e
Refactor library into domain + impl
2022-06-23 23:31:01 +02:00
Davide De Rosa
8504998bbb
Reorganize app-specific shared code into AppShared
2022-06-19 14:41:26 +02:00
Davide De Rosa
85129f17af
Prefix store keys with "Passepartout." domain
...
Also remove stale preferences from early betas after migrating
relevant ones.
Extend KeyValueStore with removeValue() for this purpose.
2022-06-19 13:33:49 +02:00
Davide De Rosa
02a9db057f
Update TunnelKit
...
- Set explicit tunnel log path
- OpenSSL 1.1.1o
2022-06-19 13:33:49 +02:00
Davide De Rosa
bb1a35acea
Set full log path relative to App Group container
...
Also rename from Debug.log to App.log
2022-06-19 13:33:49 +02:00
Davide De Rosa
10b4c321c8
Separate context responsibilities
...
- Split Core and App context
- Move .shared instantiation to extension
Context may differ by target.
2022-06-16 13:42:53 +02:00
Davide De Rosa
14b42fbea5
Persist managers state to generic key-value store
...
Move all persisted state out of AppManager to where it really
belongs. To do that, inject a shared KeyValueStore object into
managers that need to persist part of their state in a strongly
typed manner.
Below are persisted states:
- PersistenceManager
- persistenceAuthor
- ProfileManager
- activeProfileId
- UpgradeManager (formerly AppManager)
- didMigrateToV2 (migrate former value)
- VPNManager
- tunnelLogFormat
- masksPrivateData
A similar approach is used for app-specific preferences, by using
a strongly typed enum (AppPreference) together with SwiftUI
@AppStorage property wrapper.
Worth moving logging logic into a specific LogManager.
Finally, drop any former view dependency on AppManager, as states
are now accessed through specific managers.
2022-06-16 13:42:37 +02:00
Davide De Rosa
77ff910adc
Update and extend copyright notices
2022-06-16 13:42:21 +02:00
Davide De Rosa
b873e5e279
Strip VPNManager initialization
2022-06-02 20:52:51 +02:00
Davide De Rosa
1fd4fd4689
Fix required capabilities
2022-06-01 21:14:21 +02:00
Davide De Rosa
b768284197
Enforce .sidebar on Mac
...
Drops annoying side inset.
2022-05-24 09:15:27 +02:00
Davide De Rosa
f752594d3c
Refactor no autocorrection into raw text style
2022-05-24 08:25:34 +02:00
Davide De Rosa
02213a7c50
Drop truncation hack
2022-05-23 10:10:02 +02:00
Davide De Rosa
83cdd460e4
Attempt beta release
2022-05-21 19:15:48 +02:00
Davide De Rosa
a2d4ed370e
Revisit sidebar with per-profile VPN toggles
2022-05-21 19:15:37 +02:00
Davide De Rosa
f700993a52
Refactor global theme consistently
...
- Return values rather than apply modifiers
- Use .insetGrouped by default
- Reuse .insetGrouped in StyledPicker
- Enforce .sidebar on iPad
2022-05-21 19:04:35 +02:00
Davide De Rosa
f0c5ecd84f
Handle configuration errors out of VPN status
...
On configuration error, retain information about the profile that
triggered the error. For now, present an alert, but with this
information the UI can be easily changed later.
2022-05-21 19:01:49 +02:00
Davide De Rosa
ae748dd1b3
Fix logo name
2022-05-21 18:55:40 +02:00
Davide De Rosa
46a8fb8a74
Delay presentation of imported file modal
...
Fixes navigation bug on iOS 14 preventing modal from dismissing
via close button.
2022-05-20 16:35:45 +02:00
Davide De Rosa
d6866e8e95
Fix iPad multitasking condition
2022-05-20 11:58:25 +02:00
Davide De Rosa
9735b9ab14
Use consistent case in assets
2022-05-19 10:33:36 +02:00
Davide De Rosa
c88dfc28c4
Simplify a few things of CopySavingButton
...
- Make saving handler more readable
- Drop unnecessary protocol
2022-05-18 14:10:11 +02:00