From a8a5c04b8c7f85f07cf67ef4fa47ad02dc6d90d5 Mon Sep 17 00:00:00 2001 From: se2crid <151872490+se2crid@users.noreply.github.com> Date: Wed, 10 Dec 2025 01:30:57 +0100 Subject: [PATCH] Adds shortcut action to stop LocalDevVPN Version 1.1.2 --- LocalDevVPN.xcodeproj/project.pbxproj | 8 ++++---- LocalDevVPN/VPNShortcuts.swift | 24 ++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/LocalDevVPN.xcodeproj/project.pbxproj b/LocalDevVPN.xcodeproj/project.pbxproj index e6c510f..af4a6e9 100644 --- a/LocalDevVPN.xcodeproj/project.pbxproj +++ b/LocalDevVPN.xcodeproj/project.pbxproj @@ -432,7 +432,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.1.1; + MARKETING_VERSION = 1.1.2; PRODUCT_BUNDLE_IDENTIFIER = com.jkcoxson.LocalDevVPN; PROVISIONING_PROFILE_SPECIFIER = ""; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; @@ -469,7 +469,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.1.1; + MARKETING_VERSION = 1.1.2; PRODUCT_BUNDLE_IDENTIFIER = com.jkcoxson.LocalDevVPN; PROVISIONING_PROFILE_SPECIFIER = ""; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; @@ -493,7 +493,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.1.0; + MARKETING_VERSION = 1.1.2; PRODUCT_BUNDLE_IDENTIFIER = "$(TUNNEL_BUNDLE_IDENTIFIER)"; "PRODUCT_BUNDLE_IDENTIFIER[sdk=appletvos*]" = com.jkcoxson.LocalDevVPN.TunnelProv; "PRODUCT_BUNDLE_IDENTIFIER[sdk=iphoneos*]" = com.jkcoxson.LocalDevVPN.TunnelProv; @@ -519,7 +519,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.1.0; + MARKETING_VERSION = 1.1.2; PRODUCT_BUNDLE_IDENTIFIER = "$(TUNNEL_BUNDLE_IDENTIFIER)"; "PRODUCT_BUNDLE_IDENTIFIER[sdk=appletvos*]" = com.jkcoxson.LocalDevVPN.TunnelProv; "PRODUCT_BUNDLE_IDENTIFIER[sdk=iphoneos*]" = com.jkcoxson.LocalDevVPN.TunnelProv; diff --git a/LocalDevVPN/VPNShortcuts.swift b/LocalDevVPN/VPNShortcuts.swift index 6236d77..4d0422d 100644 --- a/LocalDevVPN/VPNShortcuts.swift +++ b/LocalDevVPN/VPNShortcuts.swift @@ -25,6 +25,20 @@ struct StartLocalDevVPNIntent: AppIntent { } } +@available(iOS 16.0, *) +struct StopLocalDevVPNIntent: AppIntent { + static var title: LocalizedStringResource = "Stop LocalDevVPN" + static var description = IntentDescription("Disconnects LocalDevVPN without launching the app.") + + static var openAppWhenRun = false + + @MainActor + func perform() async throws -> some IntentResult { + TunnelManager.shared.stopVPN() + return .result() + } +} + @available(iOS 16.0, *) struct LocalDevVPNActions: AppShortcutsProvider { static var appShortcuts: [AppShortcut] { @@ -38,6 +52,16 @@ struct LocalDevVPNActions: AppShortcutsProvider { shortTitle: "Start VPN", systemImageName: "lock.shield" ) + AppShortcut( + intent: StopLocalDevVPNIntent(), + phrases: [ + "Stop \(.applicationName)", + "Disconnect \(.applicationName)", + "Disable \(.applicationName)" + ], + shortTitle: "Stop VPN", + systemImageName: "lock.shield.slash" + ) } } #endif