diff --git a/FuelBoard/Assets.xcassets/AppIcon.appiconset/Contents.json b/FuelBoard/Assets.xcassets/AppIcon.appiconset/Contents.json index 4f4b8fb..05c1a0a 100644 --- a/FuelBoard/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/FuelBoard/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -29,6 +29,132 @@ "idiom" : "universal", "platform" : "ios", "size" : "1024x1024" + }, + { + "filename" : "Watch-NotificationCenter-48.png", + "idiom" : "watch", + "role" : "notificationCenter", + "scale" : "2x", + "size" : "24x24", + "subtype" : "38mm" + }, + { + "filename" : "Watch-NotificationCenter-55.png", + "idiom" : "watch", + "role" : "notificationCenter", + "scale" : "2x", + "size" : "27.5x27.5", + "subtype" : "42mm" + }, + { + "filename" : "Watch-CompanionSettings-58.png", + "idiom" : "watch", + "role" : "companionSettings", + "scale" : "2x", + "size" : "29x29" + }, + { + "filename" : "Watch-CompanionSettings-87.png", + "idiom" : "watch", + "role" : "companionSettings", + "scale" : "3x", + "size" : "29x29" + }, + { + "idiom" : "watch", + "role" : "notificationCenter", + "scale" : "2x", + "size" : "33x33", + "subtype" : "45mm" + }, + { + "filename" : "Watch-AppLauncher-80.png", + "idiom" : "watch", + "role" : "appLauncher", + "scale" : "2x", + "size" : "40x40", + "subtype" : "38mm" + }, + { + "filename" : "Watch-AppLauncher-88.png", + "idiom" : "watch", + "role" : "appLauncher", + "scale" : "2x", + "size" : "44x44", + "subtype" : "40mm" + }, + { + "idiom" : "watch", + "role" : "appLauncher", + "scale" : "2x", + "size" : "46x46", + "subtype" : "41mm" + }, + { + "filename" : "Watch-AppLauncher-100.png", + "idiom" : "watch", + "role" : "appLauncher", + "scale" : "2x", + "size" : "50x50", + "subtype" : "44mm" + }, + { + "idiom" : "watch", + "role" : "appLauncher", + "scale" : "2x", + "size" : "51x51", + "subtype" : "45mm" + }, + { + "idiom" : "watch", + "role" : "appLauncher", + "scale" : "2x", + "size" : "54x54", + "subtype" : "49mm" + }, + { + "filename" : "Watch-QuickLook-172.png", + "idiom" : "watch", + "role" : "quickLook", + "scale" : "2x", + "size" : "86x86", + "subtype" : "38mm" + }, + { + "filename" : "Watch-QuickLook-196.png", + "idiom" : "watch", + "role" : "quickLook", + "scale" : "2x", + "size" : "98x98", + "subtype" : "42mm" + }, + { + "filename" : "Watch-QuickLook-216.png", + "idiom" : "watch", + "role" : "quickLook", + "scale" : "2x", + "size" : "108x108", + "subtype" : "44mm" + }, + { + "idiom" : "watch", + "role" : "quickLook", + "scale" : "2x", + "size" : "117x117", + "subtype" : "45mm" + }, + { + "idiom" : "watch", + "role" : "quickLook", + "scale" : "2x", + "size" : "129x129", + "subtype" : "49mm" + }, + { + "filename" : "Watch-Marketing-1024.png", + "idiom" : "watch-marketing", + "scale" : "1x", + "size" : "1024x1024" } ], "info" : { diff --git a/FuelBoard/Assets.xcassets/AppIcon.appiconset/Watch-AppLauncher-100.png b/FuelBoard/Assets.xcassets/AppIcon.appiconset/Watch-AppLauncher-100.png new file mode 100644 index 0000000..4f0726f Binary files /dev/null and b/FuelBoard/Assets.xcassets/AppIcon.appiconset/Watch-AppLauncher-100.png differ diff --git a/FuelBoard/Assets.xcassets/AppIcon.appiconset/Watch-AppLauncher-80.png b/FuelBoard/Assets.xcassets/AppIcon.appiconset/Watch-AppLauncher-80.png new file mode 100644 index 0000000..a4dd521 Binary files /dev/null and b/FuelBoard/Assets.xcassets/AppIcon.appiconset/Watch-AppLauncher-80.png differ diff --git a/FuelBoard/Assets.xcassets/AppIcon.appiconset/Watch-AppLauncher-88.png b/FuelBoard/Assets.xcassets/AppIcon.appiconset/Watch-AppLauncher-88.png new file mode 100644 index 0000000..38f7f64 Binary files /dev/null and b/FuelBoard/Assets.xcassets/AppIcon.appiconset/Watch-AppLauncher-88.png differ diff --git a/FuelBoard/Assets.xcassets/AppIcon.appiconset/Watch-CompanionSettings-58.png b/FuelBoard/Assets.xcassets/AppIcon.appiconset/Watch-CompanionSettings-58.png new file mode 100644 index 0000000..4ea0e1d Binary files /dev/null and b/FuelBoard/Assets.xcassets/AppIcon.appiconset/Watch-CompanionSettings-58.png differ diff --git a/FuelBoard/Assets.xcassets/AppIcon.appiconset/Watch-CompanionSettings-87.png b/FuelBoard/Assets.xcassets/AppIcon.appiconset/Watch-CompanionSettings-87.png new file mode 100644 index 0000000..686ba55 Binary files /dev/null and b/FuelBoard/Assets.xcassets/AppIcon.appiconset/Watch-CompanionSettings-87.png differ diff --git a/FuelBoard/Assets.xcassets/AppIcon.appiconset/Watch-Marketing-1024.png b/FuelBoard/Assets.xcassets/AppIcon.appiconset/Watch-Marketing-1024.png new file mode 100644 index 0000000..39daf0f Binary files /dev/null and b/FuelBoard/Assets.xcassets/AppIcon.appiconset/Watch-Marketing-1024.png differ diff --git a/FuelBoard/Assets.xcassets/AppIcon.appiconset/Watch-NotificationCenter-48.png b/FuelBoard/Assets.xcassets/AppIcon.appiconset/Watch-NotificationCenter-48.png new file mode 100644 index 0000000..12d787c Binary files /dev/null and b/FuelBoard/Assets.xcassets/AppIcon.appiconset/Watch-NotificationCenter-48.png differ diff --git a/FuelBoard/Assets.xcassets/AppIcon.appiconset/Watch-NotificationCenter-55.png b/FuelBoard/Assets.xcassets/AppIcon.appiconset/Watch-NotificationCenter-55.png new file mode 100644 index 0000000..be317a7 Binary files /dev/null and b/FuelBoard/Assets.xcassets/AppIcon.appiconset/Watch-NotificationCenter-55.png differ diff --git a/FuelBoard/Assets.xcassets/AppIcon.appiconset/Watch-QuickLook-172.png b/FuelBoard/Assets.xcassets/AppIcon.appiconset/Watch-QuickLook-172.png new file mode 100644 index 0000000..39c5051 Binary files /dev/null and b/FuelBoard/Assets.xcassets/AppIcon.appiconset/Watch-QuickLook-172.png differ diff --git a/FuelBoard/Assets.xcassets/AppIcon.appiconset/Watch-QuickLook-196.png b/FuelBoard/Assets.xcassets/AppIcon.appiconset/Watch-QuickLook-196.png new file mode 100644 index 0000000..d554a3a Binary files /dev/null and b/FuelBoard/Assets.xcassets/AppIcon.appiconset/Watch-QuickLook-196.png differ diff --git a/FuelBoard/Assets.xcassets/AppIcon.appiconset/Watch-QuickLook-216.png b/FuelBoard/Assets.xcassets/AppIcon.appiconset/Watch-QuickLook-216.png new file mode 100644 index 0000000..d8259f6 Binary files /dev/null and b/FuelBoard/Assets.xcassets/AppIcon.appiconset/Watch-QuickLook-216.png differ diff --git a/FuelBoard/FuelBoardApp.swift b/FuelBoard/FuelBoardApp.swift index 9d7473d..c8ed83d 100644 --- a/FuelBoard/FuelBoardApp.swift +++ b/FuelBoard/FuelBoardApp.swift @@ -6,7 +6,6 @@ import SwiftUI struct FuelBoardApp: App { init() { WatchSyncManager.shared.activate() - SmartDataRefreshScheduler.register() #if DEBUG // QA hook (Debug builds only): `-qaLiveActivity e10|e5|diesel` starts a // Live Activity with a long station name so the Lock Screen / island diff --git a/FuelBoard/WatchSyncManager.swift b/FuelBoard/WatchSyncManager.swift index d648afc..8f4db71 100644 --- a/FuelBoard/WatchSyncManager.swift +++ b/FuelBoard/WatchSyncManager.swift @@ -46,6 +46,9 @@ final class WatchSyncManager: NSObject, WCSessionDelegate { if let favourites = try? JSONEncoder().encode(FuelStore.loadFavourites()) { context[FuelStore.favouritesKey] = favourites } + if let stations = try? JSONEncoder().encode(FuelStore.loadStations()) { + context[FuelStore.stationsKey] = stations + } context[FuelStore.fuelKey] = FuelStore.loadSelectedFuel().rawValue context[FuelStore.distanceUnitKey] = FuelStore.loadDistanceUnit().rawValue diff --git a/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Contents.json b/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Contents.json index 49c81cd..f4c39b9 100644 --- a/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -1,9 +1,146 @@ { "images" : [ { - "idiom" : "universal", - "platform" : "watchos", + "filename" : "Watch-NotificationCenter-48.png", + "idiom" : "watch", + "role" : "notificationCenter", + "scale" : "2x", + "size" : "24x24", + "subtype" : "38mm" + }, + { + "filename" : "Watch-NotificationCenter-55.png", + "idiom" : "watch", + "role" : "notificationCenter", + "scale" : "2x", + "size" : "27.5x27.5", + "subtype" : "42mm" + }, + { + "filename" : "Watch-CompanionSettings-58.png", + "idiom" : "watch", + "role" : "companionSettings", + "scale" : "2x", + "size" : "29x29" + }, + { + "filename" : "Watch-CompanionSettings-87.png", + "idiom" : "watch", + "role" : "companionSettings", + "scale" : "3x", + "size" : "29x29" + }, + { + "idiom" : "watch", + "role" : "notificationCenter", + "scale" : "2x", + "size" : "33x33", + "subtype" : "45mm" + }, + { + "filename" : "Watch-AppLauncher-80.png", + "idiom" : "watch", + "role" : "appLauncher", + "scale" : "2x", + "size" : "40x40", + "subtype" : "38mm" + }, + { + "filename" : "Watch-AppLauncher-88.png", + "idiom" : "watch", + "role" : "appLauncher", + "scale" : "2x", + "size" : "44x44", + "subtype" : "40mm" + }, + { + "idiom" : "watch", + "role" : "appLauncher", + "scale" : "2x", + "size" : "46x46", + "subtype" : "41mm" + }, + { + "filename" : "Watch-AppLauncher-100.png", + "idiom" : "watch", + "role" : "appLauncher", + "scale" : "2x", + "size" : "50x50", + "subtype" : "44mm" + }, + { + "idiom" : "watch", + "role" : "appLauncher", + "scale" : "2x", + "size" : "51x51", + "subtype" : "45mm" + }, + { + "idiom" : "watch", + "role" : "appLauncher", + "scale" : "2x", + "size" : "54x54", + "subtype" : "49mm" + }, + { + "filename" : "Watch-QuickLook-172.png", + "idiom" : "watch", + "role" : "quickLook", + "scale" : "2x", + "size" : "86x86", + "subtype" : "38mm" + }, + { + "filename" : "Watch-QuickLook-196.png", + "idiom" : "watch", + "role" : "quickLook", + "scale" : "2x", + "size" : "98x98", + "subtype" : "42mm" + }, + { + "filename" : "Watch-QuickLook-216.png", + "idiom" : "watch", + "role" : "quickLook", + "scale" : "2x", + "size" : "108x108", + "subtype" : "44mm" + }, + { + "idiom" : "watch", + "role" : "quickLook", + "scale" : "2x", + "size" : "117x117", + "subtype" : "45mm" + }, + { + "idiom" : "watch", + "role" : "quickLook", + "scale" : "2x", + "size" : "129x129", + "subtype" : "49mm" + }, + { + "filename" : "Watch-Marketing-1024.png", + "idiom" : "watch-marketing", + "scale" : "1x", "size" : "1024x1024" + }, + { + "filename" : "Watch-LongLook-88.png", + "idiom" : "watch", + "role" : "longLook", + "scale" : "2x", + "size" : "44x44", + "subtype" : "42mm" + }, + { + "filename" : "Watch-LongLook-100.png", + "idiom" : "watch", + "role" : "longLook", + "scale" : "2x", + "size" : "50x50", + "subtype" : "44mm" } ], "info" : { diff --git a/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-AppLauncher-100.png b/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-AppLauncher-100.png new file mode 100644 index 0000000..4f0726f Binary files /dev/null and b/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-AppLauncher-100.png differ diff --git a/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-AppLauncher-40.png b/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-AppLauncher-40.png new file mode 100644 index 0000000..d8b6d1c Binary files /dev/null and b/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-AppLauncher-40.png differ diff --git a/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-AppLauncher-44.png b/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-AppLauncher-44.png new file mode 100644 index 0000000..98fce84 Binary files /dev/null and b/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-AppLauncher-44.png differ diff --git a/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-AppLauncher-46.png b/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-AppLauncher-46.png new file mode 100644 index 0000000..9eedfbb Binary files /dev/null and b/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-AppLauncher-46.png differ diff --git a/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-AppLauncher-50.png b/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-AppLauncher-50.png new file mode 100644 index 0000000..5595a1c Binary files /dev/null and b/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-AppLauncher-50.png differ diff --git a/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-AppLauncher-51.png b/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-AppLauncher-51.png new file mode 100644 index 0000000..5595a1c Binary files /dev/null and b/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-AppLauncher-51.png differ diff --git a/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-AppLauncher-54.png b/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-AppLauncher-54.png new file mode 100644 index 0000000..74f5934 Binary files /dev/null and b/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-AppLauncher-54.png differ diff --git a/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-AppLauncher-80.png b/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-AppLauncher-80.png new file mode 100644 index 0000000..a4dd521 Binary files /dev/null and b/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-AppLauncher-80.png differ diff --git a/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-AppLauncher-88.png b/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-AppLauncher-88.png new file mode 100644 index 0000000..38f7f64 Binary files /dev/null and b/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-AppLauncher-88.png differ diff --git a/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-CompanionSettings-58.png b/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-CompanionSettings-58.png new file mode 100644 index 0000000..4ea0e1d Binary files /dev/null and b/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-CompanionSettings-58.png differ diff --git a/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-CompanionSettings-87.png b/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-CompanionSettings-87.png new file mode 100644 index 0000000..686ba55 Binary files /dev/null and b/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-CompanionSettings-87.png differ diff --git a/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-LongLook-100.png b/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-LongLook-100.png new file mode 100644 index 0000000..4f0726f Binary files /dev/null and b/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-LongLook-100.png differ diff --git a/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-LongLook-88.png b/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-LongLook-88.png new file mode 100644 index 0000000..38f7f64 Binary files /dev/null and b/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-LongLook-88.png differ diff --git a/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-Marketing-1024.png b/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-Marketing-1024.png new file mode 100644 index 0000000..39daf0f Binary files /dev/null and b/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-Marketing-1024.png differ diff --git a/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-NotificationCenter-48.png b/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-NotificationCenter-48.png new file mode 100644 index 0000000..12d787c Binary files /dev/null and b/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-NotificationCenter-48.png differ diff --git a/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-NotificationCenter-55.png b/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-NotificationCenter-55.png new file mode 100644 index 0000000..be317a7 Binary files /dev/null and b/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-NotificationCenter-55.png differ diff --git a/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-QuickLook-172.png b/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-QuickLook-172.png new file mode 100644 index 0000000..39c5051 Binary files /dev/null and b/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-QuickLook-172.png differ diff --git a/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-QuickLook-196.png b/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-QuickLook-196.png new file mode 100644 index 0000000..d554a3a Binary files /dev/null and b/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-QuickLook-196.png differ diff --git a/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-QuickLook-216.png b/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-QuickLook-216.png new file mode 100644 index 0000000..d8259f6 Binary files /dev/null and b/FuelBoardWatch Watch App/Assets.xcassets/AppIcon.appiconset/Watch-QuickLook-216.png differ diff --git a/FuelBoardWatch Watch App/ContentView.swift b/FuelBoardWatch Watch App/ContentView.swift index 0bc155a..a1fd13f 100644 --- a/FuelBoardWatch Watch App/ContentView.swift +++ b/FuelBoardWatch Watch App/ContentView.swift @@ -392,12 +392,6 @@ struct ContentView: View { .foregroundStyle(.secondary) } Spacer() - Text(fuel.shortName) - .font(.caption) - .fontWeight(.bold) - .padding(.horizontal, 8) - .padding(.vertical, 4) - .background(fuel.color.opacity(0.18), in: Capsule()) } } @@ -496,7 +490,9 @@ struct ContentView: View { } private func statusFromCache() -> WatchRefreshState { - guard !stations.isEmpty else { return .noData } + let hasUsablePrices = !stations.isEmpty + || favourites.contains { favourite in favourite.station.prices[fuel] != nil } + guard hasUsablePrices else { return .noData } guard let lastRefresh = WatchFuelCache.loadLastRefresh() else { return .stale(lastUpdated: "earlier") } let formatted = relativeRefreshText(for: lastRefresh) return WatchFuelCache.isCacheFresh(lastRefresh: lastRefresh) diff --git a/FuelBoardWatch Watch App/WatchSyncManager.swift b/FuelBoardWatch Watch App/WatchSyncManager.swift index 0bce7db..113813b 100644 --- a/FuelBoardWatch Watch App/WatchSyncManager.swift +++ b/FuelBoardWatch Watch App/WatchSyncManager.swift @@ -46,6 +46,9 @@ final class WatchSyncManager: NSObject, WCSessionDelegate { if let favourites = payload["fuelboard.favourites"] as? Data { defaults.set(favourites, forKey: "fuelboard.favourites") } + if let stations = payload["fuelboard.stations"] as? Data { + defaults.set(stations, forKey: "fuelboard.stations") + } if let fuel = payload["fuelboard.selectedFuel"] as? String { defaults.set(fuel, forKey: "fuelboard.selectedFuel") } diff --git a/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Contents.json b/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Contents.json index 49c81cd..cebb4cd 100644 --- a/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -1,8 +1,135 @@ { "images" : [ { - "idiom" : "universal", - "platform" : "watchos", + "filename" : "Watch-NotificationCenter-48.png", + "idiom" : "watch", + "role" : "notificationCenter", + "scale" : "2x", + "size" : "24x24", + "subtype" : "38mm" + }, + { + "filename" : "Watch-NotificationCenter-55.png", + "idiom" : "watch", + "role" : "notificationCenter", + "scale" : "2x", + "size" : "27.5x27.5", + "subtype" : "42mm" + }, + { + "filename" : "Watch-CompanionSettings-58.png", + "idiom" : "watch", + "role" : "companionSettings", + "scale" : "2x", + "size" : "29x29" + }, + { + "filename" : "Watch-CompanionSettings-87.png", + "idiom" : "watch", + "role" : "companionSettings", + "scale" : "3x", + "size" : "29x29" + }, + { + "filename" : "Watch-NotificationCenter-66.png", + "idiom" : "watch", + "role" : "notificationCenter", + "scale" : "2x", + "size" : "33x33", + "subtype" : "45mm" + }, + { + "filename" : "Watch-AppLauncher-80.png", + "idiom" : "watch", + "role" : "appLauncher", + "scale" : "2x", + "size" : "40x40", + "subtype" : "38mm" + }, + { + "filename" : "Watch-AppLauncher-88.png", + "idiom" : "watch", + "role" : "appLauncher", + "scale" : "2x", + "size" : "44x44", + "subtype" : "40mm" + }, + { + "filename" : "Watch-AppLauncher-92.png", + "idiom" : "watch", + "role" : "appLauncher", + "scale" : "2x", + "size" : "46x46", + "subtype" : "41mm" + }, + { + "filename" : "Watch-AppLauncher-100.png", + "idiom" : "watch", + "role" : "appLauncher", + "scale" : "2x", + "size" : "50x50", + "subtype" : "44mm" + }, + { + "filename" : "Watch-AppLauncher-102.png", + "idiom" : "watch", + "role" : "appLauncher", + "scale" : "2x", + "size" : "51x51", + "subtype" : "45mm" + }, + { + "filename" : "Watch-AppLauncher-108.png", + "idiom" : "watch", + "role" : "appLauncher", + "scale" : "2x", + "size" : "54x54", + "subtype" : "49mm" + }, + { + "filename" : "Watch-QuickLook-172.png", + "idiom" : "watch", + "role" : "quickLook", + "scale" : "2x", + "size" : "86x86", + "subtype" : "38mm" + }, + { + "filename" : "Watch-QuickLook-196.png", + "idiom" : "watch", + "role" : "quickLook", + "scale" : "2x", + "size" : "98x98", + "subtype" : "42mm" + }, + { + "filename" : "Watch-QuickLook-216.png", + "idiom" : "watch", + "role" : "quickLook", + "scale" : "2x", + "size" : "108x108", + "subtype" : "44mm" + }, + { + "filename" : "Watch-QuickLook-234.png", + "idiom" : "watch", + "role" : "quickLook", + "scale" : "2x", + "size" : "117x117", + "subtype" : "45mm" + }, + { + "filename" : "Watch-QuickLook-258.png", + "idiom" : "watch", + "role" : "quickLook", + "scale" : "2x", + "size" : "129x129", + "subtype" : "49mm" + }, + { + "filename" : "Watch-Marketing-1024.png", + "idiom" : "watch-marketing", + "scale" : "1x", "size" : "1024x1024" } ], diff --git a/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Watch-AppLauncher-100.png b/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Watch-AppLauncher-100.png new file mode 100644 index 0000000..4f0726f Binary files /dev/null and b/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Watch-AppLauncher-100.png differ diff --git a/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Watch-AppLauncher-102.png b/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Watch-AppLauncher-102.png new file mode 100644 index 0000000..5f14771 Binary files /dev/null and b/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Watch-AppLauncher-102.png differ diff --git a/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Watch-AppLauncher-108.png b/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Watch-AppLauncher-108.png new file mode 100644 index 0000000..0c8082a Binary files /dev/null and b/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Watch-AppLauncher-108.png differ diff --git a/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Watch-AppLauncher-80.png b/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Watch-AppLauncher-80.png new file mode 100644 index 0000000..a4dd521 Binary files /dev/null and b/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Watch-AppLauncher-80.png differ diff --git a/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Watch-AppLauncher-88.png b/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Watch-AppLauncher-88.png new file mode 100644 index 0000000..38f7f64 Binary files /dev/null and b/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Watch-AppLauncher-88.png differ diff --git a/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Watch-AppLauncher-92.png b/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Watch-AppLauncher-92.png new file mode 100644 index 0000000..f623b2f Binary files /dev/null and b/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Watch-AppLauncher-92.png differ diff --git a/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Watch-CompanionSettings-58.png b/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Watch-CompanionSettings-58.png new file mode 100644 index 0000000..4ea0e1d Binary files /dev/null and b/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Watch-CompanionSettings-58.png differ diff --git a/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Watch-CompanionSettings-87.png b/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Watch-CompanionSettings-87.png new file mode 100644 index 0000000..686ba55 Binary files /dev/null and b/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Watch-CompanionSettings-87.png differ diff --git a/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Watch-Marketing-1024.png b/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Watch-Marketing-1024.png new file mode 100644 index 0000000..39daf0f Binary files /dev/null and b/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Watch-Marketing-1024.png differ diff --git a/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Watch-NotificationCenter-48.png b/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Watch-NotificationCenter-48.png new file mode 100644 index 0000000..12d787c Binary files /dev/null and b/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Watch-NotificationCenter-48.png differ diff --git a/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Watch-NotificationCenter-55.png b/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Watch-NotificationCenter-55.png new file mode 100644 index 0000000..be317a7 Binary files /dev/null and b/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Watch-NotificationCenter-55.png differ diff --git a/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Watch-NotificationCenter-66.png b/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Watch-NotificationCenter-66.png new file mode 100644 index 0000000..23f7355 Binary files /dev/null and b/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Watch-NotificationCenter-66.png differ diff --git a/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Watch-QuickLook-172.png b/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Watch-QuickLook-172.png new file mode 100644 index 0000000..39c5051 Binary files /dev/null and b/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Watch-QuickLook-172.png differ diff --git a/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Watch-QuickLook-196.png b/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Watch-QuickLook-196.png new file mode 100644 index 0000000..d554a3a Binary files /dev/null and b/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Watch-QuickLook-196.png differ diff --git a/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Watch-QuickLook-216.png b/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Watch-QuickLook-216.png new file mode 100644 index 0000000..d8259f6 Binary files /dev/null and b/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Watch-QuickLook-216.png differ diff --git a/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Watch-QuickLook-234.png b/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Watch-QuickLook-234.png new file mode 100644 index 0000000..56cd720 Binary files /dev/null and b/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Watch-QuickLook-234.png differ diff --git a/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Watch-QuickLook-258.png b/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Watch-QuickLook-258.png new file mode 100644 index 0000000..25e41d0 Binary files /dev/null and b/FuelBoardWatch Wrapper/Assets.xcassets/AppIcon.appiconset/Watch-QuickLook-258.png differ diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md new file mode 100644 index 0000000..9a98663 --- /dev/null +++ b/RELEASE_NOTES.md @@ -0,0 +1,39 @@ +# FuelBoard Release Notes + +## Next TestFlight build + +### Summary +- Added a new Data checking setting with Standard and Smart modes. +- Clarified the behavior and background-update expectations in Settings. + +### What changed +- Added a dedicated **Data checking** section in Settings. +- Added two user-facing modes: + - **Standard** — Saves battery. Refreshes price data up to twice daily. + - **Smart** — Checks for newer data more often in the background and refreshes full prices only when an update is available. +- Smart mode now uses a lightweight metadata probe first, then only refreshes the full dataset if newer data is available. +- Added clear explanatory copy that background checks are best-effort and happen only when iOS allows. +- Kept larger refresh behavior conservative rather than implying exact hourly updates. + +### Why +- The previous refresh model was conservative but not very configurable. +- The new setting makes the behavior clearer and gives users a choice between battery-friendly default behavior and a smarter background-check mode. +- The wording is designed to be honest about iOS background limits. + +### Suggested TestFlight notes +- Added new Data checking modes in Settings: Standard and Smart. +- Smart mode now checks for newer data more intelligently in the background when iOS allows. +- Improved settings copy to better explain data freshness behavior. + +### Suggested What to Test +- Open Settings and confirm **Data checking** appears as its own section. +- Confirm the two options read clearly and feel understandable: + - Standard + - Smart +- Switch between Standard and Smart and confirm the selection persists. +- Confirm the explanatory copy feels accurate and not misleading about iOS background behavior. + +### Implementation note +- Standard keeps the existing cache-first refresh behavior. +- Smart adds a lightweight probe path before deciding whether to download the full data set. +- Background timing remains best-effort under iOS scheduling.