diff --git a/App/Resources/Info.plist b/App/Resources/Info.plist index 573af2b..152b359 100644 --- a/App/Resources/Info.plist +++ b/App/Resources/Info.plist @@ -27,14 +27,14 @@ LSMinimumSystemVersion 11.0 LSUIElement - + LSArchitecturePriority arm64 x86_64 NSHumanReadableCopyright - Copyright © 2024 ProduktEntdecker. All rights reserved. + Copyright © 2024-2026 ProduktEntdecker. All rights reserved. NSMainStoryboardFile NSPrincipalClass diff --git a/App/Sources/AnalyticsService.swift b/App/Sources/AnalyticsService.swift index 0f302cc..ca32de5 100644 --- a/App/Sources/AnalyticsService.swift +++ b/App/Sources/AnalyticsService.swift @@ -70,7 +70,7 @@ class AnalyticsService: ObservableObject { "success": success, "model_series": anonymizedModel, "timestamp": ISO8601DateFormatter().string(from: Date()), - "app_version": "1.3.0", + "app_version": Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? "1.5.0", // NO personal identifiers, IP is not stored server-side ] @@ -94,7 +94,7 @@ class AnalyticsService: ObservableObject { var request = URLRequest(url: url) request.httpMethod = "POST" request.setValue("application/json", forHTTPHeaderField: "Content-Type") - request.setValue("TouchBarFix/1.3.0", forHTTPHeaderField: "User-Agent") + request.setValue("TouchBarFix/\(Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? "1.5.0")", forHTTPHeaderField: "User-Agent") request.httpBody = try JSONSerialization.data(withJSONObject: data) @@ -132,7 +132,7 @@ class AnalyticsService: ObservableObject { do { var request = URLRequest(url: url) - request.setValue("TouchBarFix/1.3.0", forHTTPHeaderField: "User-Agent") + request.setValue("TouchBarFix/\(Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? "1.5.0")", forHTTPHeaderField: "User-Agent") request.timeoutInterval = 15 let (data, response) = try await session.data(for: request) diff --git a/App/Sources/ContentView.swift b/App/Sources/ContentView.swift index 1e7a303..58c2e9d 100644 --- a/App/Sources/ContentView.swift +++ b/App/Sources/ContentView.swift @@ -172,7 +172,7 @@ struct ContentView: View { Spacer() // Version footer - Text("v\(Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? "1.0") • Jan 2026") + Text("v\(Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? "1.0")") .font(.system(size: 8)) .foregroundColor(.secondary) } diff --git a/App/Sources/OnboardingView.swift b/App/Sources/OnboardingView.swift index 794f5b5..37e0073 100644 --- a/App/Sources/OnboardingView.swift +++ b/App/Sources/OnboardingView.swift @@ -9,7 +9,7 @@ struct OnboardingView: View { private let pages = [ OnboardingPage( - title: "Welcome to TouchBarFix 1.3!", + title: "Welcome to TouchBarFix!", subtitle: "New features to help you and other MacBook users", icon: "sparkles", color: .blue, diff --git a/App/Sources/ReviewRequestManager.swift b/App/Sources/ReviewRequestManager.swift index 1ed0086..1b5c2b5 100644 --- a/App/Sources/ReviewRequestManager.swift +++ b/App/Sources/ReviewRequestManager.swift @@ -59,18 +59,13 @@ class ReviewRequestManager: ObservableObject { recordReviewRequest() } - /// Fallback: Direct App Store review page + /// Fallback: Direct to Gumroad product page for reviews private func requestReviewFallback() { - // This will need to be updated with actual App Store ID when published - let appStoreReviewURL = "https://apps.apple.com/app/id[TOUCHBARFIX_APP_ID]?action=write-review" + // TouchBarFix is sold via Gumroad, not the App Store + let reviewURL = "https://produktentdecker.gumroad.com/l/touchbarfix" - if let url = URL(string: appStoreReviewURL) { + if let url = URL(string: reviewURL) { NSWorkspace.shared.open(url) - } else { - // Ultimate fallback: open TouchBarFix website - if let fallbackURL = URL(string: "https://touchbarfix.com/review") { - NSWorkspace.shared.open(fallbackURL) - } } } diff --git a/App/Sources/SharingManager.swift b/App/Sources/SharingManager.swift index 4abf1dd..090e42e 100644 --- a/App/Sources/SharingManager.swift +++ b/App/Sources/SharingManager.swift @@ -138,7 +138,7 @@ class SharingManager: ObservableObject { "event": "user_share", "platform": platform.rawValue, "timestamp": ISO8601DateFormatter().string(from: Date()), - "app_version": "1.3.0" + "app_version": Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? "1.5.0" ] // Submit to analytics (non-blocking) @@ -155,7 +155,7 @@ class SharingManager: ObservableObject { var request = URLRequest(url: url) request.httpMethod = "POST" request.setValue("application/json", forHTTPHeaderField: "Content-Type") - request.setValue("TouchBarFix/1.3.0", forHTTPHeaderField: "User-Agent") + request.setValue("TouchBarFix/\(Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? "1.5.0")", forHTTPHeaderField: "User-Agent") request.timeoutInterval = 10 request.httpBody = try JSONSerialization.data(withJSONObject: data) diff --git a/App/Sources/TouchBarManager.swift b/App/Sources/TouchBarManager.swift index 7058a4f..fcc6528 100644 --- a/App/Sources/TouchBarManager.swift +++ b/App/Sources/TouchBarManager.swift @@ -253,7 +253,7 @@ class TouchBarManager: ObservableObject { print(" Timestamp: \(Date())") print(" Device model: \(getModelIdentifier())") print(" Has Touch Bar: \(hasTouchBar)") - print(" App: TouchBarFix 1.3.0") + print(" App: TouchBarFix \(Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? "1.5.0")") print(String(repeating: "=", count: 60)) // Check if device has Touch Bar