Book a pickup, track it to delivery — the rebuilt customer app. - Design language from doormile-screens.html: brand #8F0F06, Manrope + Geist Mono (variable fonts), bordered cards instead of shadows, crimson brand headers, sliding tab indicator, mono for anything read digit by digit. - lib/data (one live API implementation, plus a debug-only offline fake), lib/state, lib/ui (tokens, widgets, screens). - 84 tests, plus a design snapshot harness that renders every screen with the real fonts: flutter test test/design_snapshot_test.dart --run-skipped --update-goldens This replaces the previous app (pubspec 'doormile', app id com.doormile.customer). That tree remains in history at 6c7d656; note its android/app/google-services.json is not carried over, and the application id here is in.doormile.customer. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
123 lines
2.5 KiB
JSON
123 lines
2.5 KiB
JSON
{
|
|
"images" : [
|
|
{
|
|
"size" : "20x20",
|
|
"idiom" : "iphone",
|
|
"filename" : "Icon-App-20x20@2x.png",
|
|
"scale" : "2x"
|
|
},
|
|
{
|
|
"size" : "20x20",
|
|
"idiom" : "iphone",
|
|
"filename" : "Icon-App-20x20@3x.png",
|
|
"scale" : "3x"
|
|
},
|
|
{
|
|
"size" : "29x29",
|
|
"idiom" : "iphone",
|
|
"filename" : "Icon-App-29x29@1x.png",
|
|
"scale" : "1x"
|
|
},
|
|
{
|
|
"size" : "29x29",
|
|
"idiom" : "iphone",
|
|
"filename" : "Icon-App-29x29@2x.png",
|
|
"scale" : "2x"
|
|
},
|
|
{
|
|
"size" : "29x29",
|
|
"idiom" : "iphone",
|
|
"filename" : "Icon-App-29x29@3x.png",
|
|
"scale" : "3x"
|
|
},
|
|
{
|
|
"size" : "40x40",
|
|
"idiom" : "iphone",
|
|
"filename" : "Icon-App-40x40@2x.png",
|
|
"scale" : "2x"
|
|
},
|
|
{
|
|
"size" : "40x40",
|
|
"idiom" : "iphone",
|
|
"filename" : "Icon-App-40x40@3x.png",
|
|
"scale" : "3x"
|
|
},
|
|
{
|
|
"size" : "60x60",
|
|
"idiom" : "iphone",
|
|
"filename" : "Icon-App-60x60@2x.png",
|
|
"scale" : "2x"
|
|
},
|
|
{
|
|
"size" : "60x60",
|
|
"idiom" : "iphone",
|
|
"filename" : "Icon-App-60x60@3x.png",
|
|
"scale" : "3x"
|
|
},
|
|
{
|
|
"size" : "20x20",
|
|
"idiom" : "ipad",
|
|
"filename" : "Icon-App-20x20@1x.png",
|
|
"scale" : "1x"
|
|
},
|
|
{
|
|
"size" : "20x20",
|
|
"idiom" : "ipad",
|
|
"filename" : "Icon-App-20x20@2x.png",
|
|
"scale" : "2x"
|
|
},
|
|
{
|
|
"size" : "29x29",
|
|
"idiom" : "ipad",
|
|
"filename" : "Icon-App-29x29@1x.png",
|
|
"scale" : "1x"
|
|
},
|
|
{
|
|
"size" : "29x29",
|
|
"idiom" : "ipad",
|
|
"filename" : "Icon-App-29x29@2x.png",
|
|
"scale" : "2x"
|
|
},
|
|
{
|
|
"size" : "40x40",
|
|
"idiom" : "ipad",
|
|
"filename" : "Icon-App-40x40@1x.png",
|
|
"scale" : "1x"
|
|
},
|
|
{
|
|
"size" : "40x40",
|
|
"idiom" : "ipad",
|
|
"filename" : "Icon-App-40x40@2x.png",
|
|
"scale" : "2x"
|
|
},
|
|
{
|
|
"size" : "76x76",
|
|
"idiom" : "ipad",
|
|
"filename" : "Icon-App-76x76@1x.png",
|
|
"scale" : "1x"
|
|
},
|
|
{
|
|
"size" : "76x76",
|
|
"idiom" : "ipad",
|
|
"filename" : "Icon-App-76x76@2x.png",
|
|
"scale" : "2x"
|
|
},
|
|
{
|
|
"size" : "83.5x83.5",
|
|
"idiom" : "ipad",
|
|
"filename" : "Icon-App-83.5x83.5@2x.png",
|
|
"scale" : "2x"
|
|
},
|
|
{
|
|
"size" : "1024x1024",
|
|
"idiom" : "ios-marketing",
|
|
"filename" : "Icon-App-1024x1024@1x.png",
|
|
"scale" : "1x"
|
|
}
|
|
],
|
|
"info" : {
|
|
"version" : 1,
|
|
"author" : "xcode"
|
|
}
|
|
}
|