Backlog, tests, logo compression, security audit, App Store icon

- BACKLOG.md: P0-P3 roadmap incl. govuk API switch (blocked on credentials)
- APPSTORE.md: review-gate analysis (2 blockers: LAN data source, Always-location notes)
- SECURITY.md: audit - no secrets, no ATS holes, one MEDIUM (relay IP in binary, planned fix)
- FuelBoardTests/: SPM package, 28 tests on real Shared/ sources (sanitizer, price guard, RAG, sort, distance, brands)
- Logos: proper 2x/3x pairs, palette-quantized, 75% smaller (315KB -> 79KB)
- App icon: 1024px fuelpump on gradient (was missing entirely -> instant rejection)
- decodeStations(from:) exposed for testability; relay fetch reuses it
This commit is contained in:
FuelBoard Contributor
2026-08-11 23:14:28 +01:00
parent 05f3ef0a70
commit 2ed18d81a3
57 changed files with 608 additions and 25 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 826 KiB

@@ -0,0 +1,14 @@
{
"images" : [
{
"filename" : "AppIcon.png",
"idiom" : "universal",
"platform" : "ios",
"size" : "1024x1024"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
@@ -1,9 +1,14 @@
{
"images": [
{
"filename": "brand_applegreen.png",
"filename": "brand_applegreen_2x.png",
"idiom": "universal",
"scale": "2x"
},
{
"filename": "brand_applegreen_3x.png",
"idiom": "universal",
"scale": "3x"
}
],
"info": {
Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

@@ -1,9 +1,14 @@
{
"images": [
{
"filename": "brand_asda.png",
"filename": "brand_asda_2x.png",
"idiom": "universal",
"scale": "2x"
},
{
"filename": "brand_asda_3x.png",
"idiom": "universal",
"scale": "3x"
}
],
"info": {
Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

+6 -1
View File
@@ -1,9 +1,14 @@
{
"images": [
{
"filename": "brand_bp.png",
"filename": "brand_bp_2x.png",
"idiom": "universal",
"scale": "2x"
},
{
"filename": "brand_bp_3x.png",
"idiom": "universal",
"scale": "3x"
}
],
"info": {
Binary file not shown.

Before

Width:  |  Height:  |  Size: 150 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

@@ -1,9 +1,14 @@
{
"images": [
{
"filename": "brand_esso.png",
"filename": "brand_esso_2x.png",
"idiom": "universal",
"scale": "2x"
},
{
"filename": "brand_esso_3x.png",
"idiom": "universal",
"scale": "3x"
}
],
"info": {
Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

@@ -1,9 +1,14 @@
{
"images": [
{
"filename": "brand_gulf.png",
"filename": "brand_gulf_2x.png",
"idiom": "universal",
"scale": "2x"
},
{
"filename": "brand_gulf_3x.png",
"idiom": "universal",
"scale": "3x"
}
],
"info": {
Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

+6 -1
View File
@@ -1,9 +1,14 @@
{
"images": [
{
"filename": "brand_jet.png",
"filename": "brand_jet_2x.png",
"idiom": "universal",
"scale": "2x"
},
{
"filename": "brand_jet_3x.png",
"idiom": "universal",
"scale": "3x"
}
],
"info": {
Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

@@ -1,9 +1,14 @@
{
"images": [
{
"filename": "brand_morrisons.png",
"filename": "brand_morrisons_2x.png",
"idiom": "universal",
"scale": "2x"
},
{
"filename": "brand_morrisons_3x.png",
"idiom": "universal",
"scale": "3x"
}
],
"info": {
Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

@@ -1,9 +1,14 @@
{
"images": [
{
"filename": "brand_sainsburys.png",
"filename": "brand_sainsburys_2x.png",
"idiom": "universal",
"scale": "2x"
},
{
"filename": "brand_sainsburys_3x.png",
"idiom": "universal",
"scale": "3x"
}
],
"info": {
Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

@@ -1,9 +1,14 @@
{
"images": [
{
"filename": "brand_shell.png",
"filename": "brand_shell_2x.png",
"idiom": "universal",
"scale": "2x"
},
{
"filename": "brand_shell_3x.png",
"idiom": "universal",
"scale": "3x"
}
],
"info": {
Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

@@ -1,9 +1,14 @@
{
"images": [
{
"filename": "brand_tesco.png",
"filename": "brand_tesco_2x.png",
"idiom": "universal",
"scale": "2x"
},
{
"filename": "brand_tesco_3x.png",
"idiom": "universal",
"scale": "3x"
}
],
"info": {
Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

@@ -1,9 +1,14 @@
{
"images": [
{
"filename": "brand_texaco.png",
"filename": "brand_texaco_2x.png",
"idiom": "universal",
"scale": "2x"
},
{
"filename": "brand_texaco_3x.png",
"idiom": "universal",
"scale": "3x"
}
],
"info": {
Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB