Releases: socoldkiller/easytier-macos
Release list
Dev 2026-08-03 (4b47e027)
EasyTier Dev 2026-08-03 (4b47e02)
This build packages the exact EasyTier GUI and Core revisions pinned by the dev branch commit.
Dev builds may be unstable. This DMG is Developer ID signed, Apple-notarized, stapled, and verified with Gatekeeper.
Dev 2026-08-03 (8d8b3f71)
EasyTier Dev 2026-08-03 (8d8b3f7)
This build packages the exact EasyTier GUI and Core revisions pinned by the dev branch commit.
Dev builds may be unstable. This DMG is Developer ID signed, Apple-notarized, stapled, and verified with Gatekeeper.
v1.5.0
EasyTier 1.5.0
Added
- Split Gateway into its own
GatewayPrivilegedHelperLaunchDaemon and XPC service (com.coldkiller.gateway.helper), with independent registration, lifecycle, protocol version, build metadata, and diagnostics from the EasyTier Core helper. - Added
Latest Stableand opt-inNightlysoftware-update tracks. Nightly packages exact GUI and EasyTier Coremainrevisions in one signed, notarized DMG. - Added SQLite persistence through GRDB 7.8.0 for network configurations, Workspace state, peer subscriptions, runtime intents, and desired Gateway state, including transactional legacy import, integrity checks, migration backups, and an in-app recovery flow.
- Added browser SSO and multiple Saved Accounts for Config Server deployments, including Active Account switching, Managed Network controls, and helper-owned credential restoration.
Changed
- TOML is now an explicit import/export format instead of the GUI's canonical storage. Existing
state.jsonmigrations import only referenced TOML files and leave all legacy files untouched; network secrets remain in Keychain. - Moved all EasyTier Core execution behind the privileged XPC helper. The GUI no longer links the Rust FFI, while
no_tunremains supported through the same helper and can now remain running after the GUI quits. - The app now checks, installs, and version-probes the helper after launch; stale helper protocol versions are replaced automatically before runtime restoration.
- TOML export now omits
network_secretby default without opening Keychain. Including it requires an explicit plaintext warning and fresh authentication. - Keychain authentication is scoped to each action: start/restart/wake may reuse a recent Touch ID device unlock for 10 seconds, while reveal, export, update, and delete require a fresh context.
- Extended the signed Sparkle appcast to preserve one Stable and one Nightly channel item, with immutable daily prereleases, duplicate-source suppression, and retention of the newest 14 Nightly builds.
- Unified local and GitHub release builds behind one tested signing, notarization, DMG, and Sparkle pipeline. Tag reruns now reuse an existing immutable GitHub Release DMG when recovering a failed feed or Pages deployment.
- Isolated Config Server-managed runtime state from Local Network configurations. Managed configurations are presented read-only while their runtime and selection state remain independently restorable.
- Simplified macOS packaging to publish one DMG and require Developer ID signing and Apple notarization for every release.
- Removed non-Developer-ID packaging fallbacks; local App and DMG packaging now require a Developer ID Application identity, secure timestamp, hardened runtime, and an installable privileged helper.
- Replaced the generated XCFramework/header pipeline with one current-architecture Rust static library and the tracked C header.
Fixed
- Restricted the root helper's XPC interface to the matching EasyTier app/helper bundle identifiers and Apple Team ID, with an identifier-only fallback limited to Debug builds.
- Fixed a macOS Keychain routing bug where legacy cleanup could also match and delete the newly saved Data Protection Keychain item. Modern and legacy operations now select their backends explicitly, verify protected writes before cleanup, and run through a signed release-gate integration harness.
- Legacy network-password entries now migrate in the safe order of read, protected write, verification, then precise legacy deletion. Cleanup failures no longer discard a verified modern password and are retried later.
- Sleep/wake recovery waits until both the macOS user session and the app are active before requesting authentication, and transient Keychain-loaded plaintext is cleared when the app becomes inactive.
- Passwords that were already deleted by version 1.4.1 cannot be recovered and must be entered again after installing this update.
- Hardened browser SSO callback state validation and normalized helper-owned Account Credential permissions before use.
- Preserved the selected Managed Network when Config Server reissues its runtime instance identifier, and fixed related account/sidebar selection regressions.
- Corrected the License string in the About pane: the app is MIT-licensed, not LGPL-3.0.
- Unified the minimum supported macOS version to 15.0 across
Package.swift, the generatedInfo.plist(LSMinimumSystemVersion), the README badges, and the update-feedminimumSystemVersion. Previously the badge/prose/Info.plist claimed macOS 14+ whilePackage.swiftrequired macOS 15. - The privileged helper
LaunchDaemonnow ships withRunAtLoad=falseso it starts when the app establishes its signed XPC runtime session instead of launching at every login.
This DMG is Developer ID signed, Apple-notarized, stapled, and verified with Gatekeeper.
Nightly 2026-08-04
EasyTier Nightly 2026-08-04
This build packages the latest tested GUI revision with the Core revision pinned by the nightly workflow.
Nightly builds may be unstable. This DMG is Developer ID signed, Apple-notarized, stapled, and verified with Gatekeeper.
Dev 2026-08-03 (aab7637b)
EasyTier Dev 2026-08-03 (aab7637)
This build packages the exact EasyTier GUI and Core revisions pinned by the dev branch commit.
Dev builds may be unstable. This DMG is Developer ID signed, Apple-notarized, stapled, and verified with Gatekeeper.
Dev 2026-08-02 (2cee6b59)
EasyTier Dev 2026-08-02 (2cee6b5)
This build packages the exact EasyTier GUI and Core revisions pinned by the dev branch commit.
Dev builds may be unstable. This DMG is Developer ID signed, Apple-notarized, stapled, and verified with Gatekeeper.
Dev 2026-07-31 (586cecf4)
EasyTier Dev 2026-07-31 (586cecf)
This build packages the exact EasyTier GUI and Core revisions pinned by the dev branch commit.
Dev builds may be unstable. This DMG is Developer ID signed, Apple-notarized, stapled, and verified with Gatekeeper.
Dev 2026-07-30 (7513d627)
EasyTier Dev 2026-07-30 (7513d62)
This build packages the exact EasyTier GUI and Core revisions pinned by the dev branch commit.
Dev builds may be unstable. This DMG is Developer ID signed, Apple-notarized, stapled, and verified with Gatekeeper.
Nightly 2026-07-26
EasyTier Nightly 2026-07-26
This build packages the latest tested GUI revision with the Core revision pinned by the nightly workflow.
Nightly builds may be unstable. This DMG is Developer ID signed, Apple-notarized, stapled, and verified with Gatekeeper.
Dev 2026-07-26 (de534bb1)
EasyTier Dev 2026-07-26 (de534bb)
This build packages the exact EasyTier GUI and Core revisions pinned by the dev branch commit.
Dev builds may be unstable. This DMG is Developer ID signed, Apple-notarized, stapled, and verified with Gatekeeper.