Widget preview screen + shared widget rendering; dark-mode screenshots with real data

- Move widget entry view into Shared/FuelPriceWidgetViews.swift (FuelPriceWidgetContent,
  FuelPriceWidgetEntryData) so the app can render the REAL widget faces; widget
  extension now wraps it (FuelPriceEntry.data) — one source of truth for the face
- WidgetMockScreen (-widgets launch arg): app icon + small + medium widget previews
  for App Store captures; AppIconPreview image set (1024 drip master)
- AppStoreScreenshots: 5-8 dark-mode tab captures with real Halifax data, 9 widgets
- 95/95 tests green; Release IPA rebuilt + re-served
This commit is contained in:
FuelBoard Contributor
2026-08-15 16:25:10 +01:00
parent 24b6ca9bb2
commit 57121d5213
14 changed files with 316 additions and 160 deletions
+5
View File
@@ -33,6 +33,7 @@ struct ContentView: View {
@State private var isLoading = false
@State private var statusMessage = ""
@State private var showOnboarding = false
@State private var showWidgetMock = false
@State private var selectedTab = 0
@State private var locationManager = LocationManager()
@StateObject private var monitor = ProximityMonitor()
@@ -172,6 +173,9 @@ struct ContentView: View {
showOnboarding = false
}
}
.fullScreenCover(isPresented: $showWidgetMock) {
WidgetMockScreen()
}
.sheet(item: $monitor.pendingStationMap) { request in
StationMapView(request: request)
}
@@ -181,6 +185,7 @@ struct ContentView: View {
// opens the given tab; `-skipOnboarding` skips onboarding
// without touching the stored flag.
let args = ProcessInfo.processInfo.arguments
showWidgetMock = args.contains("-widgets")
if let i = args.firstIndex(of: "-tab"), i + 1 < args.count {
switch args[i + 1] {
case "favourites": selectedTab = 1