App Store prep: privacy manifests, 1.0.1 (2), OGL attribution, UK empty state, screenshot harness

- PrivacyInfo.xcprivacy in app + widget targets (UserDefaults 1C8F.1;
  app declares Location linked + Diagnostics not-linked, no tracking)
- Version bump 1.0.1 (2) in App + Widget plists
- Settings → Data source footer: OGL attribution + 'refresh up to twice a day'
- Stations empty state: friendly UK-only explainer + 'Browse all UK stations'
- ContentView launch-arg harness (pattern of -showKeySheet): -skipOnboarding
  and -tab stations|favourites|alerts|settings for screenshot capture
- APPSTORE.md updated (blockers struck, tasks done, yuzu-hub workflow)
- BACKLOG.md hygiene: GitHub-first header, Trends merged note, offline-first-run DONE
This commit is contained in:
FuelBoard Contributor
2026-08-15 15:50:26 +01:00
parent 06dd8a919c
commit b5a49fc68d
302 changed files with 200 additions and 43 deletions
+12 -10
View File
@@ -1,8 +1,10 @@
# FuelBoard Backlog
FuelBoard — England-wide petrol-station price widget + app.
Relay mirrors the UK gov data (hourly CSV); app fetches the full-UK dump
(~8,038 stations, all prices) once per 12 h and filters/sorts on-device.
GitHub mirror (`aptonline/fuelboard-data`, daily) holds the full-UK dump
(~8,022 stations, all prices); app fetches it once per 12 h and filters/
sorts on-device, with a bundled snapshot as the no-network last resort.
LAN relay is dev-only (hidden `fuelboard.relayFallback` flag).
Priority guide: P0 = next build, P1 = soon, P2 = later, P3 = maybe/idea.
Status: TODO / IN PROGRESS / DONE / BLOCKED.
@@ -15,9 +17,8 @@ Status: TODO / IN PROGRESS / DONE / BLOCKED.
(App Intents, iOS 16+), dialog + price-card snippet, cached full-UK dump first
with freshness label ("as of 6am"), last-known-location fallback. Constraint:
fresh-data path needs a reachable source off-LAN — cached answers work anywhere
the app has previously fetched (see P3 data mirror). Interim: the relay on
Tailscale (100.120.217.98:8789) is reachable off-LAN for testing; relay will
move to a permanent box or the GitHub mirror long-term. *DONE — radius-scoped
the app has previously fetched (the GitHub mirror serves this now). *DONE —
radius-scoped
lookup `037c241` (real-data regression: GULF HISTON 100.9p 132 mi away),
per-fuel literal-word shortcuts `e55078c`, names = app words `a3b6f37`, plus
Directions-to-cheapest `caadf18` + spoken hand-off `aed99e3`.*
@@ -31,7 +32,7 @@ Status: TODO / IN PROGRESS / DONE / BLOCKED.
capsule fuel picker; range control 7/30/90 days; respects the price-display
toggle; honest empty-state copy in Localizable.strings ("Prices are recorded from
each refresh — check back in a few days"). No widget in v1 (one-kind rule).
Depends on the P0 archive. *DONE 2026-08-15 on feature/trends-history (unmerged):
Depends on the P0 archive. *DONE 2026-08-15, merged to main 2026-08-16:
`Shared/FuelHistory.swift` (FuelHistoryStore: day math, slim day decode w/ shared
band, series + deltaSeries, app-group favourites-only cache, parallel per-day
fetches) + `FuelBoard/TrendsView.swift` (chart, fuel capsule, 7/30/90, Price/vs
@@ -39,8 +40,8 @@ Status: TODO / IN PROGRESS / DONE / BLOCKED.
FavouritesView + strings. 83 tests incl. URL regression (appendingPathComponent
— URL(string:relativeTo:) dropped /main, all fetches 404'd). Sim-verified:
favourites rows + TOP/deltas; sheet controls + honest empty state w/ live first-
snapshot date. Pending: merge to main after device sideload test; lines render
once ≥2 snapshots (archive warming daily).*
snapshot date. Pending: lines render once ≥2 snapshots (archive warming daily,
~Aug 17).*
## P2 — Later
@@ -82,8 +83,9 @@ Status: TODO / IN PROGRESS / DONE / BLOCKED.
user-configurable (currently fixed 300 m trigger / 1 per station per hour).
- [ ] **Pull-to-refresh spinner state** — surface refresh in-flight state
(currently `refreshable` fires but no visible progress in the row list).
- [ ] **Offline first-run**first launch without network currently shows empty
states; bundle a sample dump so the app demos offline.
- [x] **Offline first-run**bundled REAL 8,022-station dump (`FuelBoardDump`,
refreshed by `scripts/refresh_bundled_dump.sh`) is the no-network last resort
in the live chain (P0, 2026-08-16); first launch demos the full dataset offline.
- [ ] **Localization** — UK English only today; audit string catalog for l10n.
- [ ] **Dark mode polish** — verify brand logos (white-circle clips) and RAG dot
contrast under dark appearance on-device.