Commit Graph

419 Commits

Author SHA1 Message Date
Davide
0a51d1a1f6
Strip package dependencies (#862)
The Library package offers the PassepartoutImplementations target for
OpenVPN/OpenSSL and WireGuard/Go, but it doesn't need it itself. Only
the main app does, so move the dependency there.

On the other side, drop the potentially problematic AppUI meta target.
Move platform filters to the Xcode project.

Indirectly fixes a crash with Xcode 16 Previews on iOS (forced to use
legacy previews before):

https://forums.developer.apple.com/forums/thread/756681
2024-11-13 21:05:53 +01:00
Davide
54f4364c33
Split test jobs (#855)
Move Core Data tests out of the Library package so that we can still use
the more efficient `swift test` for most tests.

Create a PassepartoutTests target only for tests that require
`xcodebuild`, like Core Data tests.

Eventually:

- PRs only run SwiftPM tests
- Releases run ALL tests with `scan` before `gym`
2024-11-12 18:35:44 +01:00
Davide
4c4a28ca9e
Bump version 2024-11-10 20:57:12 +01:00
Davide
e07833b2a4
Revisit in-app eligibility for iCloud sharing (#837)
Restore .sharing feature:

- Merge "Apple TV" into "iCloud" section
  - "Enabled", disabled if ineligible for .sharing
  - "Apple TV", disabled if ineligible for .appleTV || !isShared
- Footer about TV restrictions

Paywalls:

- "Share on iCloud" if ineligible for .sharing
- "Drop TV restriction" if eligible for .sharing but not for .appleTV
  - Applies to full version products (user level 2)
  - Suggest Apple TV product

Restrictions:

- Toggle CloudKit sync on remote repository based on .sharing
eligibility
- Do not start tunnel on Apple TV if ineligible for .appleTV

Fixes:

- Incorrect zip() publishers in remote repository
- Resolve duplicates in Core Data, first profile wins sorted by
lastUpdate descending
- Reload receipt on OOB IAPManager events
2024-11-09 15:20:59 +01:00
Davide
83b2e6b4e0
Bump version 2024-11-07 18:36:08 +01:00
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