Commit Graph

414 Commits

Author SHA1 Message Date
Davide 63a0a661c9
Bump version 2024-11-07 09:56:27 +01:00
Davide a1b7679fb0
Bump version 2024-11-06 19:22:03 +01:00
Davide d3e5ccf17a
Exclude intents extension from tvOS 2024-11-06 19:21:51 +01:00
Davide dfe592cbbf
Bump version 2024-11-06 18:46:03 +01:00
Davide d8c4e87239
Refactor in-app entities for StoreKit/Kvitto integration (#820)
Refactoring:

- Get receipts from StoreKit Transaction.currentEntitlements
- Search for the originally purchased build in the local receipt anyway
(Kvitto)
- Fall back to release receipt (Kvitto), if any, for feature eligibility
in TestFlight builds
- Parse and verify expiration date in subscriptions
- Decouple in-app identifier composition from BundleConfiguration
- Fix user level features only applied when a receipt was not found

Testing:

- Add StoreKit configuration
- Fake purchases with PP_FAKE_IAP
- Fake user level with PP_USER_LEVEL

Then for reactive receipt reload, detect app activation differently:

- iOS/tvOS on .scenePhase
- macOS on launch and NSWorkspace.didActivateApplicationNotification

As to features:

- Credit former "Full version" purchasers with all current AND future
features, except the Apple TV
2024-11-06 13:20:12 +01:00
Davide 070b661c43
Refactor library targets (#799)
Renames:

- AppUI → UILibrary
- AppUIPlatform → AppUI (conditional umbrella) + AppUI[Main|TV]
- APILibrary/CommonLibrary/UtilsLibrary → Common[API|Library|Utils]

Dependencies:

- AppUI → UILibrary
- UILibrary → AppLibrary, CommonAPI
- AppLibrary → CommonLibrary, CommonUtils
2024-11-02 10:11:59 +01:00
Davide 72e784272a
Create basic UI for TV app (#798)
Start with the profile tab. Left to do: search and settings.

Fixes and refactoring:

- Listen to changes in current profile in ExtendedTunnel
- Externalize style from TunnelToggleButton and ConnectionStatusText
(renamed from View)
- Add ThemeCountryText for convenience
2024-11-02 08:41:32 +01:00
Davide dcdb03a735
Improve country flags (#786)
Leverage the convenience of FlagKit. Update credits too.
2024-10-30 19:11:58 +01:00
Davide 3ae6ec5784
Bump version 2024-10-30 17:09:36 +01:00
Davide 705130514c
Bump version 2024-10-30 10:40:02 +01:00
Davide c8ee557091
Bump version 2024-10-29 15:35:36 +01:00
Davide 0f6df3894e
Set "Skip install" to true for login item
It spoils archive otherwise, because there are two macOS apps.
2024-10-29 15:32:14 +01:00
Davide 374ac6f636
Bump version 2024-10-29 15:18:40 +01:00
Davide 944d6f8c28
Refactor AppUI for TV target (#775)
Split AppUI into AppUI and AppUIMain to allow for a new, simplified
AppUITV target tailored for the Apple TV.

As a PoC, present a view with a list of the shared profiles.
2024-10-29 14:30:41 +01:00
Davide 41de48789e
Show in Mac status bar plus Login Item (#773)
Add a status menu via SwiftUI MenuBarExtra where to:

- Show/hide app
- Launch on login via "Login Item" target
- Toggle profiles on/off

Only weird that the login item is not added to the list of "Open at
Login", but to "Allow in the Background", see
https://github.com/pilotmoon/Scroll-Reverser/issues/165

Requires some refactoring to bring AppContext initialization to the
AppDelegate.

Fixes #617
Fixes #482 
Fixes #696 
Fixes #505
2024-10-29 11:40:11 +01:00
Davide 92cf1985e2
Fix iOS app not reacting to open URL (#770)
Resort to SwiftUI .onOpenURL(), seems to do fine for single URL on iOS
(not on macOS).
2024-10-28 23:38:01 +01:00
Davide acaaf13ceb
Bump version 2024-10-28 21:48:29 +01:00
Davide b574dd68f1
Bump version 2024-10-28 21:06:49 +01:00
Davide 295ba4d662
Quick selection of provider server (#750)
First of all, add country flags assets. Then, present provider server
selector:

- From installed profile view, specifically from a button with the flag
of the current country
- From profile context menu
- On toggle profile when no server is selected

Closes #711
2024-10-23 17:17:20 +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 De Rosa 17f1331de0
Bump version 2024-10-05 12:29:32 +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 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 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 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 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 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 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 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 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 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 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 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 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 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