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