Commit Graph

2497 Commits

Author SHA1 Message Date
Davide De Rosa
04e090e26f
Suppress SceneConfiguration warning (#341) 2023-08-06 09:43:24 +02:00
Davide De Rosa
4102894160
Always read profiles from fetched value (#340)
There may be a mismatch between profiles and profile headers. For
example, some profiles may appear in the main list, but the same ones
may not appear in the existing profile names when adding a new profile
(and vice versa). That's because they are being fetched from different
sources. Unify that.
2023-08-05 22:41:58 +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
c8abb245f3
Restore on-demand backward compatibility (#338)
In #333, the non-optional field `disconnectsIfNotMatching` was removed
completely. Therefore, downgrading from 2.2.0 may lose profiles due to
the missing required field.

Mitigate the issue by restoring the field as optional, even if it's
unused, for the sake of not breaking profile serialization until the
2.2.0 release. Remove the deprecated field after that.
2023-07-30 17:43:03 +02:00
Davide De Rosa
db4c6094ea Attempt release 2023-07-24 23:32:51 +02:00
Davide De Rosa
609b3a11b3
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:17 +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
773d5705f1 Upgrade GitHub Actions 2023-07-06 18:46:01 +01:00
Davide De Rosa
33af87206a
Throw error on reinstate()/connect() (#328)
Errors here were just being ignored, thus preventing error alert from
appearing.
2023-07-06 19:45:43 +02: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
fac06f58db Use versioned TunnelKit 2023-07-06 11:09:59 +01:00
Davide De Rosa
cf43e1cd7b Attempt release 2023-07-06 11:05:27 +01:00
Davide De Rosa
addbf8ab5f Update TunnelKit with keychain fix 2023-07-06 11:05:14 +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
de7e574fec Do some housekeeping
- Upgrade Xcode project

- Fix Twitter link in README
2023-07-03 12:30:26 +01:00
Davide De Rosa
e960943302
Revert "Move VPNProtocolType serialization to Data layer" (#319)
Reverts passepartoutvpn/passepartout-apple#318

`Codable` compliance at the domain layer (`Profile` etc.) makes this
change in serialization destructive.
2023-07-03 11:18:12 +02:00
Davide De Rosa
ddf3dc313f
Move VPNProtocolType serialization to Data layer (#318)
It's crucial that the data layer has full control over how entities are
(de)serialized.

Do not leave this choice up to the domain layer by defining an enum as a
raw value type, because any change in the enum raw value would literally
be a disaster, i.e. _any_ serialized data would break instantly.
2023-07-02 13:27:46 +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
3a59ac7684
Invoke VPNManager methods with a Profile object (#309)
The VPNConfiguration parameter is opaque and tightly coupled to
TunnelKit. Connecting to a Profile makes infinitely more sense, beyond
simplifying the VPNManager class. Configuration building is fully
delegated to the strategy (as it has to be).

- VPNManager takes Profile and produces VPNConfigurationParameters
- VPNManagerStrategy takes VPNConfigurationParameters (abstract)
- TunnelKitVPNManagerStrategy takes VPNConfigurationParameters and
produces TunnelKitVPNConfiguration internally
2023-05-28 09:56:51 +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
efcda495bc
Address logging issues (#304)
* Make specific message levels a default extension

* Define Loggable protocol

* Keep track of message originator metadata

* Fix tracing of Core Data logs

* Log query on entity not found
2023-05-27 12:14:04 +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