Commit Graph

3037 Commits

Author SHA1 Message Date
Davide
ce3e1f2c9f
Enforce phased release 2024-12-23 22:48:13 +01:00
Davide
3706268bf9
Drop broken macOS code to get SSID (#1042)
Related to #497
2024-12-23 22:47:33 +01:00
Davide
5a4efa9d15
Bump version 2024-12-22 12:24:48 +01:00
Davide
3e04f03b01
Skip local receipt on Apple TV (#1041)
App/Tunnel behavior is inconsistent.
2024-12-22 12:24:20 +01:00
Davide
5acf1982cf
Bump version 2024-12-22 11:47:59 +01:00
Davide
6d62953eff
Improve display of keep-alive options in OpenVPN configuration (#1038)
Timeout was not displayed. Move options to a separate section.
2024-12-22 10:55:56 +01:00
Davide
a187fd56e0
Import manual translations with GPT (#1037)
Save prompt for proper input format.
2024-12-22 10:10:54 +01:00
Davide
2ae615406a
Update API with fixed keep-alive 2024-12-22 08:09:13 +01:00
Davide
f112ea8061
Save last used profile (#1036)
Especially useful on macOS and tvOS where Network Extension does not
retain this information when the profile is disabled. On these
platforms, there's no native way to tell the last used profile, so save
it to UserDefaults and fall back to it when tunnel.currentProfile is
nil.
2024-12-21 22:39:55 +01:00
Davide
60336ba110
Bump version 2024-12-20 23:28:20 +01:00
Davide
e13a84cba3
Fix uncredited features on tvOS (#1033)
This was not apparent on TestFlight, but features from single iOS and
macOS "Full version" purchases were not being credited on the Apple TV
because of the incomplete `#if` conditionals.
2024-12-20 23:21:22 +01:00
Davide
9e18466e2e
Bump version 2024-12-20 21:14:05 +01:00
Davide
a9becd17ad
Fix disconnection on OpenVPN renegotiation (#1032)
Affecting servers with --tls-auth or --tls-crypt enabled. It turned out
to be an extremely old drag from TunnelKit.

See https://github.com/passepartoutvpn/passepartoutkit-source/pull/443
2024-12-20 21:12:36 +01:00
Davide
0d3af046b4
Fall back to production if beta receipt is missing (#1031)
When level is .beta, it was relying on beta receipt exclusively without
falling back to production receipt.

This was preventing the sandbox receipt ("production" in TestFlight)
from being read unless the AppUserLevel was explicitly set to .freemium
(0).
2024-12-20 21:09:02 +01:00
Davide
46d236cb5e
Reuse $PLATFORMS in CI 2024-12-20 21:08:23 +01:00
Davide
59e4e2e4ab
Hide profiles until remote repository is ready
Regression from #1029
2024-12-20 10:39:39 +01:00
Davide
42bf392fff
Do not connect TV profile on server selection (#1030)
You may still connect manually, but iOS/macOS apps mainly serve as
remote to switch servers on the TV.
2024-12-20 10:30:57 +01:00
Davide
f8e623e1fe
Fix regressions with CloudKit synchronization (#1029)
The remote container is shared by ProfileManager and
PreferencesManager, but it must be the same for CloudKit sync
to work properly.

Externalize the logic of onEligibleFeatures() so that the
AppContext singleton can update the managers (and their
repositories) with the new remote store.

Now that the remote profile repository is reloaded every time that
eligible features change, the .removeDuplicates() may also be
restored. Just add a .dropFirst() to skip the initially empty
value of eligible features. Even when features are eventually empty,
a value is always emitted after IAPManager.reloadReceipt()

Lastly, enable Core Data lightweight migration.

Regressions from #1017
2024-12-20 10:05:07 +01:00
Davide
26e97625fa
Update library with HARD_RESET fix (#1028)
https://github.com/passepartoutvpn/passepartoutkit-source/pull/441
2024-12-20 09:56:08 +01:00
Davide
d3eea33656
Bump version 2024-12-18 17:29:37 +01:00
Davide
1f81c3dfea
Resolve NEVPNErrorDomain error and profile duplication on first import (#1026)
Fixes #1025
2024-12-18 17:26:35 +01:00
Davide
1be2510e8c
Bump version 2024-12-18 10:30:17 +01:00
Davide
810b8e4bd4
Fix compile errors on iOS 2024-12-18 10:30:02 +01:00
Davide
34b20ad73b
Bump version 2024-12-18 10:21:09 +01:00
Davide
c527171957
Simplify products (#1024)
Only offer compensations to former purchasers:

- .appleTV to .full purchasers
- .full to .appleTV purchasers

Always suggest .fullTV to new purchasers.

Finally rename:

- .full to .iOS_macOS
- .fullTV to .allFeatures (lifetime)
2024-12-18 10:15:58 +01:00
Davide
2eca757dc6
Verify sharing/TV features only on profile save (#1023)
Do not verify sharing/TV on connect iOS/macOS.
2024-12-18 09:16:58 +01:00
Davide
47b0b79fd7
Bump version 2024-12-17 20:58:27 +01:00
Davide
75de2029ff
Always refresh app features onForeground() (#1022)
Even if they haven't changed since the app was last sent to the
background.

Regression from #1019 where the initial .reloadReceipt() call was
wrapped in a Task to make it asynchronous.
2024-12-17 20:57:10 +01:00
Davide
09d598e893
Bump version 2024-12-17 18:58:31 +01:00
Davide
fbfa600d67
Use tagged PassepartoutKit packages (#1021)
Closes #956
2024-12-17 18:57:45 +01:00
Davide
a81b615261
Bump version 2024-12-17 18:50:27 +01:00
Davide
a577b0fc20
Sort config 2024-12-17 18:45:24 +01:00
Davide
c422f06713
Drop malformed keychain group
Fixes #725
2024-12-17 18:29:00 +01:00
Davide
6255a273fe
Add recurring products to paywall (#1019)
Suggest whenever .fullTV is suggested. For this reason, subscriptions
are not suggested to existing full version purchasers, because they only
miss the one-time .appleTV purchase. Group purchases by feature products
and full version products, e.g.:

- Features
  - Apple TV
- Full version
  - Yearly
  - Monthly
  - Full
  - Full + TV

Additionally, fix reloadReceipt() slowing down onLaunch() sometimes. The
warning sign would appear on restricted profiles until the receipt is
loaded.
2024-12-17 18:23:27 +01:00
Davide
6e8f10f919
Improve CI and local scripts (#1020)
- Move non-CI scripts to "scripts"
- Use lowercase variables consistently
- Work with relative paths
- Work with environment
- Parametrize Xcode build/version number (move uniq last)
2024-12-17 13:10:43 +01:00
Davide
ef59dcc08e
Reword strings in "Purchased" view
Title: "Purchases"
Products header: "Products"
2024-12-16 21:57:05 +01:00
Davide
789f6ad515
Unify paywall and eligibility (#1018)
- Present paywall only on save/connect because PurchaseRequiredButton
instances were presenting paywalls with partial requirements
- Retain PurchaseRequiredButton just to flag paid features visually, but
do nothing on tap
- Suggest paywall products via IAPManager and required features, rather
than from views
- Handle .sharing/.appleTV requirements in ProfileCoordinator, rather
than in StorageSection
- Discontinue platform purchases, but treat as full if iOS + macOS
2024-12-16 21:45:36 +01:00
Davide
ffb8829f4f
Reorganize Core Data containers (#1017)
Before anything, remove any code related to App Group containers from
tvOS target because they are not available. Include the beta receipt
override, it's broken for that reason.

In short:

- Store all Core Data containers locally. Do not use the App Group for
Core Data for consistency across platforms.
- Store logs in the App Group on iOS/macOS, but locally on tvOS (see
`urlForCaches`).

Then, rather than one container per model, merge models into:

- Local: Providers
- Remote: Profiles + Preferences (now in the same CloudKit container)

Reuse the remote model for backups too.

This change is safe because:

- Local profiles are stored via Network Extension in the keychain, not
Core Data
- Remote profiles are re-imported via CloudKit sync
- Providers are re-downloaded on first use
- Preferences are lost, but they are "cheap" data
- Profile backups are lost, but they were hidden anyway
2024-12-15 20:20:33 +01:00
Davide
1751c94891
Fix README 2024-12-15 19:47:09 +01:00
Davide
93559b3a48
Parallelize all tests 2024-12-15 14:22:37 +01:00
Davide
d6aaa4364c
Bump version 2024-12-15 14:06:34 +01:00
Davide
3a1ef87b95
Fix ProfileManagerTests waiting for wrong event 2024-12-15 14:06:17 +01:00
Davide
8ad71b2980
Bump version 2024-12-15 13:52:05 +01:00
Davide
3ecb308d57
Resolve Apple TV crashing on launch (#1016)
Create preferences container locally because tvOS cannot write to App
Group container.

Fixes #1007
2024-12-15 13:49:39 +01:00
Davide
a04c1072c8
Allow Ethernet on-demand on all platforms (#1012)
Fixes #1010
2024-12-14 21:59:25 +01:00
Davide
b9353a6b02
Temporarily disable auto-deletion of migrated profiles (#1013)
Leave room for downgrade until 3.0.0 is stable.
2024-12-14 21:58:39 +01:00
Davide
750b12c4ee
Improve variables in Config.xcconfig (#1011)
- Group variables linked to App Store Connect
- Reuse App ID as IAP prefix
- Reuse CloudKit prefix in container identifiers
2024-12-14 21:27:31 +01:00
Davide
e793c5d6ce
Update App Store description (#1009)
Closes #631
2024-12-14 11:32:41 +01:00
Davide
1837d0576e
Update README (#1008)
- Simplify badges
- Drop app description, annoying to maintain (refer to the website)
- Drop screenshots (refer to the App Store)
- Update Credits
- Inform about private PassepartoutKit

Fixes #613
2024-12-14 09:44:10 +01:00
Davide
ea931aa4c7
Update bundle 2024-12-12 23:56:40 +01:00