Skip to content

Reconnect the VPNs that were up after an update - #52

Merged
GarageDeveloper merged 1 commit into
mainfrom
reconnect-after-update
Oct 30, 2026
Merged

GarageDeveloper merged 1 commit into
mainfrom
reconnect-after-update

Conversation

@GarageDeveloper

@GarageDeveloper GarageDeveloper commented Oct 30, 2026 •

Copy link
Copy Markdown
Owner

Closes #49 (option A).

Installing an update stops the service, which closes every tunnel. Until now nothing brought them back.

  • The app records which VPNs are up. It keeps only their ids and how they were connected: directly or through their chain, in split mode or not. It never stores a secret. At the first launch of a new version, within 15 minutes, it connects those VPNs again through the usual path. The Keychain, prompts, exclusive VPNs and chains all apply as usual. A notification lists the VPNs being reconnected.
  • The service announces when it stops. A new stopping event, with a matching feature flag, tells watchers that the sessions it closes next were not ended by their users. Without it, the app would record those sessions as disconnected.
  • Sparkle updates are covered too. willInstallUpdate holds the record before the app is quit for the installer, and keeps that quit from disconnecting the VPNs.
  • A new setting. Settings > General gets "Reconnect VPNs after an update", on by default. Its French string is included.
  • The app's first unit tests run with swift test, which is now part of CI.

Out of scope: the update that installs this version reconnects nothing, because the app it replaces records nothing.

Manual test: install a package, connect VPNs, then install one that differs only in its version; the VPNs come back.

🤖 Generated with Claude Code

The installer stops the service, which closes every tunnel, and nothing
brought them back. The app now records which VPNs are up and how they
were connected (ids and options only, never a secret) and, at the first
launch of a new version shortly after, connects them again through the
usual path.

The service tells its watchers it is stopping (new `stopping` event and
feature), so the sessions it closes then are not taken for disconnections
by their users. Sparkle's willInstallUpdate does the same before the app
is quit for the installer, and keeps that quit from disconnecting.

Settings > General: "Reconnect VPNs after an update", on by default.
Adds the app's first unit tests (swift test, also in CI).

Refs #49

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@GarageDeveloper
GarageDeveloper merged commit f29de24 into main Oct 30, 2026
6 checks passed
@GarageDeveloper
GarageDeveloper deleted the reconnect-after-update branch October 30, 2026 15:40
@GarageDeveloper GarageDeveloper mentioned this pull request Oct 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Reconnect the VPNs that were up after an update

1 participant