From 0774986e79a73285d2c4691c963de8d8c8a4cb92 Mon Sep 17 00:00:00 2001 From: se2crid <151872490+se2crid@users.noreply.github.com> Date: Fri, 12 Dec 2025 15:06:33 +0100 Subject: [PATCH] Version 1.1.3 --- LocalDevVPN.xcodeproj/project.pbxproj | 16 +++++++------- LocalDevVPN/ContentView.swift | 30 ++++++++++++++++++--------- 2 files changed, 28 insertions(+), 18 deletions(-) diff --git a/LocalDevVPN.xcodeproj/project.pbxproj b/LocalDevVPN.xcodeproj/project.pbxproj index af4a6e9..f2361b2 100644 --- a/LocalDevVPN.xcodeproj/project.pbxproj +++ b/LocalDevVPN.xcodeproj/project.pbxproj @@ -432,7 +432,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.1.2; + MARKETING_VERSION = 1.1.3; 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.2; + MARKETING_VERSION = 1.1.3; PRODUCT_BUNDLE_IDENTIFIER = com.jkcoxson.LocalDevVPN; PROVISIONING_PROFILE_SPECIFIER = ""; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; @@ -493,16 +493,16 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.1.2; + MARKETING_VERSION = 1.1.3; PRODUCT_BUNDLE_IDENTIFIER = "$(TUNNEL_BUNDLE_IDENTIFIER)"; "PRODUCT_BUNDLE_IDENTIFIER[sdk=appletvos*]" = com.jkcoxson.LocalDevVPN.TunnelProv; "PRODUCT_BUNDLE_IDENTIFIER[sdk=iphoneos*]" = com.jkcoxson.LocalDevVPN.TunnelProv; SKIP_INSTALL = YES; - SUPPORTED_PLATFORMS = "appletvos appletvsimulator iphoneos iphonesimulator"; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTS_MACCATALYST = NO; SWIFT_OBJC_BRIDGING_HEADER = "LocalDevVPN/LocalDevVPN-Bridging-Header.h"; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2,3"; + TARGETED_DEVICE_FAMILY = "1,2"; TVOS_DEPLOYMENT_TARGET = 17.0; }; name = Debug; @@ -519,16 +519,16 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.1.2; + MARKETING_VERSION = 1.1.3; PRODUCT_BUNDLE_IDENTIFIER = "$(TUNNEL_BUNDLE_IDENTIFIER)"; "PRODUCT_BUNDLE_IDENTIFIER[sdk=appletvos*]" = com.jkcoxson.LocalDevVPN.TunnelProv; "PRODUCT_BUNDLE_IDENTIFIER[sdk=iphoneos*]" = com.jkcoxson.LocalDevVPN.TunnelProv; SKIP_INSTALL = YES; - SUPPORTED_PLATFORMS = "appletvos appletvsimulator iphoneos iphonesimulator"; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTS_MACCATALYST = NO; SWIFT_OBJC_BRIDGING_HEADER = "LocalDevVPN/LocalDevVPN-Bridging-Header.h"; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2,3"; + TARGETED_DEVICE_FAMILY = "1,2"; TVOS_DEPLOYMENT_TARGET = 17.0; }; name = Release; diff --git a/LocalDevVPN/ContentView.swift b/LocalDevVPN/ContentView.swift index 1892500..786a60c 100644 --- a/LocalDevVPN/ContentView.swift +++ b/LocalDevVPN/ContentView.swift @@ -811,14 +811,14 @@ struct StatusOverviewCard: View { struct StatusGlyphView: View { @StateObject private var tunnelManager = TunnelManager.shared - @State private var animate = false + @State private var ringScale: CGFloat = 1.0 + @Environment(\.accessibilityReduceMotion) private var reduceMotion var body: some View { ZStack { Circle() .stroke(tunnelManager.tunnelStatus.color.opacity(0.25), lineWidth: 6) - .scaleEffect(animate ? 1.05 : 0.95) - .animation(.easeInOut(duration: 1.2).repeatForever(autoreverses: true), value: animate) + .scaleEffect(reduceMotion ? 1 : ringScale, anchor: .center) Circle() .fill(tunnelManager.tunnelStatus.color.opacity(0.15)) @@ -828,14 +828,24 @@ struct StatusGlyphView: View { .foregroundColor(tunnelManager.tunnelStatus.color) } .frame(width: 92, height: 92) - .onAppear { - animate = true - } + .onAppear(perform: restartPulse) .onChange(of: tunnelManager.tunnelStatus) { _ in - animate.toggle() - DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) { - animate = true - } + restartPulse() + } + .onChange(of: reduceMotion) { _ in + restartPulse() + } + } + + private func restartPulse() { + guard !reduceMotion else { + ringScale = 1 + return + } + + ringScale = 1.0 + withAnimation(.easeInOut(duration: 1.2).repeatForever(autoreverses: true)) { + ringScale = 1.08 } } }