diff --git a/Android/app/src/main/AndroidManifest.xml b/Android/app/src/main/AndroidManifest.xml index fa3a6e4..2bb3a13 100644 --- a/Android/app/src/main/AndroidManifest.xml +++ b/Android/app/src/main/AndroidManifest.xml @@ -1,7 +1,9 @@ ) in + UIApplication.shared.setAlternateIconName(iconName) { error in + if let error { + continuation.resume(throwing: error) + } else { + continuation.resume(returning: ()) + } + } } } } #endif +#endif diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/100.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/100.png deleted file mode 100644 index a9a102e..0000000 Binary files a/Apple/UI/Assets.xcassets/AppIcon.appiconset/100.png and /dev/null differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/1024.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/1024.png deleted file mode 100644 index 1cb1d16..0000000 Binary files a/Apple/UI/Assets.xcassets/AppIcon.appiconset/1024.png and /dev/null differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/114.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/114.png deleted file mode 100644 index 267c580..0000000 Binary files a/Apple/UI/Assets.xcassets/AppIcon.appiconset/114.png and /dev/null differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/120.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/120.png deleted file mode 100644 index 6143b5c..0000000 Binary files a/Apple/UI/Assets.xcassets/AppIcon.appiconset/120.png and /dev/null differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/128.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/128.png deleted file mode 100644 index 4bed9b5..0000000 Binary files a/Apple/UI/Assets.xcassets/AppIcon.appiconset/128.png and /dev/null differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/144.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/144.png deleted file mode 100644 index 582c1f6..0000000 Binary files a/Apple/UI/Assets.xcassets/AppIcon.appiconset/144.png and /dev/null differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/152.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/152.png deleted file mode 100644 index 2b5c55f..0000000 Binary files a/Apple/UI/Assets.xcassets/AppIcon.appiconset/152.png and /dev/null differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/16.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/16.png deleted file mode 100644 index 09d45c2..0000000 Binary files a/Apple/UI/Assets.xcassets/AppIcon.appiconset/16.png and /dev/null differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/167.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/167.png deleted file mode 100644 index a956af6..0000000 Binary files a/Apple/UI/Assets.xcassets/AppIcon.appiconset/167.png and /dev/null differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/172.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/172.png deleted file mode 100644 index cb13e37..0000000 Binary files a/Apple/UI/Assets.xcassets/AppIcon.appiconset/172.png and /dev/null differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/180.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/180.png deleted file mode 100644 index bf2f5e3..0000000 Binary files a/Apple/UI/Assets.xcassets/AppIcon.appiconset/180.png and /dev/null differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/196.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/196.png deleted file mode 100644 index 5e30a18..0000000 Binary files a/Apple/UI/Assets.xcassets/AppIcon.appiconset/196.png and /dev/null differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/20.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/20.png deleted file mode 100644 index 3235829..0000000 Binary files a/Apple/UI/Assets.xcassets/AppIcon.appiconset/20.png and /dev/null differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/216.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/216.png deleted file mode 100644 index c9b3ada..0000000 Binary files a/Apple/UI/Assets.xcassets/AppIcon.appiconset/216.png and /dev/null differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/256.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/256.png deleted file mode 100644 index 77b832e..0000000 Binary files a/Apple/UI/Assets.xcassets/AppIcon.appiconset/256.png and /dev/null differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/29.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/29.png deleted file mode 100644 index cc338d6..0000000 Binary files a/Apple/UI/Assets.xcassets/AppIcon.appiconset/29.png and /dev/null differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/32.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/32.png deleted file mode 100644 index c54ae5b..0000000 Binary files a/Apple/UI/Assets.xcassets/AppIcon.appiconset/32.png and /dev/null differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/40.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/40.png deleted file mode 100644 index f08ed94..0000000 Binary files a/Apple/UI/Assets.xcassets/AppIcon.appiconset/40.png and /dev/null differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/48.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/48.png deleted file mode 100644 index 4865a7f..0000000 Binary files a/Apple/UI/Assets.xcassets/AppIcon.appiconset/48.png and /dev/null differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/50.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/50.png deleted file mode 100644 index 87f64df..0000000 Binary files a/Apple/UI/Assets.xcassets/AppIcon.appiconset/50.png and /dev/null differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/512.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/512.png deleted file mode 100644 index f365f4e..0000000 Binary files a/Apple/UI/Assets.xcassets/AppIcon.appiconset/512.png and /dev/null differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/55.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/55.png deleted file mode 100644 index cfb3f3c..0000000 Binary files a/Apple/UI/Assets.xcassets/AppIcon.appiconset/55.png and /dev/null differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/57.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/57.png deleted file mode 100644 index 1408202..0000000 Binary files a/Apple/UI/Assets.xcassets/AppIcon.appiconset/57.png and /dev/null differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/58.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/58.png deleted file mode 100644 index dcfd2d3..0000000 Binary files a/Apple/UI/Assets.xcassets/AppIcon.appiconset/58.png and /dev/null differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/60.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/60.png deleted file mode 100644 index b857673..0000000 Binary files a/Apple/UI/Assets.xcassets/AppIcon.appiconset/60.png and /dev/null differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/64.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/64.png deleted file mode 100644 index e24834b..0000000 Binary files a/Apple/UI/Assets.xcassets/AppIcon.appiconset/64.png and /dev/null differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/72.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/72.png deleted file mode 100644 index 45ad382..0000000 Binary files a/Apple/UI/Assets.xcassets/AppIcon.appiconset/72.png and /dev/null differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/76.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/76.png deleted file mode 100644 index b40df24..0000000 Binary files a/Apple/UI/Assets.xcassets/AppIcon.appiconset/76.png and /dev/null differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/80.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/80.png deleted file mode 100644 index 115867a..0000000 Binary files a/Apple/UI/Assets.xcassets/AppIcon.appiconset/80.png and /dev/null differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/87.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/87.png deleted file mode 100644 index 4f3ddb3..0000000 Binary files a/Apple/UI/Assets.xcassets/AppIcon.appiconset/87.png and /dev/null differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/88.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/88.png deleted file mode 100644 index 13acc2c..0000000 Binary files a/Apple/UI/Assets.xcassets/AppIcon.appiconset/88.png and /dev/null differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/Contents.json b/Apple/UI/Assets.xcassets/AppIcon.appiconset/Contents.json index f78687a..092f7cd 100644 --- a/Apple/UI/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/Apple/UI/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -1,344 +1,218 @@ { - "images" : [ + "images": [ { - "filename" : "40.png", - "idiom" : "iphone", - "scale" : "2x", - "size" : "20x20" + "filename": "ios-panel-01-40.png", + "idiom": "iphone", + "scale": "2x", + "size": "20x20" }, { - "filename" : "60.png", - "idiom" : "iphone", - "scale" : "3x", - "size" : "20x20" + "filename": "ios-panel-01-60.png", + "idiom": "iphone", + "scale": "3x", + "size": "20x20" }, { - "filename" : "29.png", - "idiom" : "iphone", - "scale" : "1x", - "size" : "29x29" + "filename": "ios-panel-01-29.png", + "idiom": "iphone", + "scale": "1x", + "size": "29x29" }, { - "filename" : "58.png", - "idiom" : "iphone", - "scale" : "2x", - "size" : "29x29" + "filename": "ios-panel-01-58.png", + "idiom": "iphone", + "scale": "2x", + "size": "29x29" }, { - "filename" : "87.png", - "idiom" : "iphone", - "scale" : "3x", - "size" : "29x29" + "filename": "ios-panel-01-87.png", + "idiom": "iphone", + "scale": "3x", + "size": "29x29" }, { - "filename" : "80.png", - "idiom" : "iphone", - "scale" : "2x", - "size" : "40x40" + "filename": "ios-panel-01-80.png", + "idiom": "iphone", + "scale": "2x", + "size": "40x40" }, { - "filename" : "120.png", - "idiom" : "iphone", - "scale" : "3x", - "size" : "40x40" + "filename": "ios-panel-01-120.png", + "idiom": "iphone", + "scale": "3x", + "size": "40x40" }, { - "filename" : "57.png", - "idiom" : "iphone", - "scale" : "1x", - "size" : "57x57" + "filename": "ios-panel-01-57.png", + "idiom": "iphone", + "scale": "1x", + "size": "57x57" }, { - "filename" : "114.png", - "idiom" : "iphone", - "scale" : "2x", - "size" : "57x57" + "filename": "ios-panel-01-114.png", + "idiom": "iphone", + "scale": "2x", + "size": "57x57" }, { - "filename" : "120.png", - "idiom" : "iphone", - "scale" : "2x", - "size" : "60x60" + "filename": "ios-panel-01-120.png", + "idiom": "iphone", + "scale": "2x", + "size": "60x60" }, { - "filename" : "180.png", - "idiom" : "iphone", - "scale" : "3x", - "size" : "60x60" + "filename": "ios-panel-01-180.png", + "idiom": "iphone", + "scale": "3x", + "size": "60x60" }, { - "filename" : "20.png", - "idiom" : "ipad", - "scale" : "1x", - "size" : "20x20" + "filename": "ios-panel-01-20.png", + "idiom": "ipad", + "scale": "1x", + "size": "20x20" }, { - "filename" : "40.png", - "idiom" : "ipad", - "scale" : "2x", - "size" : "20x20" + "filename": "ios-panel-01-40.png", + "idiom": "ipad", + "scale": "2x", + "size": "20x20" }, { - "filename" : "29.png", - "idiom" : "ipad", - "scale" : "1x", - "size" : "29x29" + "filename": "ios-panel-01-29.png", + "idiom": "ipad", + "scale": "1x", + "size": "29x29" }, { - "filename" : "58.png", - "idiom" : "ipad", - "scale" : "2x", - "size" : "29x29" + "filename": "ios-panel-01-58.png", + "idiom": "ipad", + "scale": "2x", + "size": "29x29" }, { - "filename" : "40.png", - "idiom" : "ipad", - "scale" : "1x", - "size" : "40x40" + "filename": "ios-panel-01-40.png", + "idiom": "ipad", + "scale": "1x", + "size": "40x40" }, { - "filename" : "80.png", - "idiom" : "ipad", - "scale" : "2x", - "size" : "40x40" + "filename": "ios-panel-01-80.png", + "idiom": "ipad", + "scale": "2x", + "size": "40x40" }, { - "filename" : "50.png", - "idiom" : "ipad", - "scale" : "1x", - "size" : "50x50" + "filename": "ios-panel-01-50.png", + "idiom": "ipad", + "scale": "1x", + "size": "50x50" }, { - "filename" : "100.png", - "idiom" : "ipad", - "scale" : "2x", - "size" : "50x50" + "filename": "ios-panel-01-100.png", + "idiom": "ipad", + "scale": "2x", + "size": "50x50" }, { - "filename" : "72.png", - "idiom" : "ipad", - "scale" : "1x", - "size" : "72x72" + "filename": "ios-panel-01-72.png", + "idiom": "ipad", + "scale": "1x", + "size": "72x72" }, { - "filename" : "144.png", - "idiom" : "ipad", - "scale" : "2x", - "size" : "72x72" + "filename": "ios-panel-01-144.png", + "idiom": "ipad", + "scale": "2x", + "size": "72x72" }, { - "filename" : "76.png", - "idiom" : "ipad", - "scale" : "1x", - "size" : "76x76" + "filename": "ios-panel-01-76.png", + "idiom": "ipad", + "scale": "1x", + "size": "76x76" }, { - "filename" : "152.png", - "idiom" : "ipad", - "scale" : "2x", - "size" : "76x76" + "filename": "ios-panel-01-152.png", + "idiom": "ipad", + "scale": "2x", + "size": "76x76" }, { - "filename" : "167.png", - "idiom" : "ipad", - "scale" : "2x", - "size" : "83.5x83.5" + "filename": "ios-panel-01-167.png", + "idiom": "ipad", + "scale": "2x", + "size": "83.5x83.5" }, { - "filename" : "1024.png", - "idiom" : "ios-marketing", - "scale" : "1x", - "size" : "1024x1024" + "filename": "ios-panel-01-1024.png", + "idiom": "ios-marketing", + "scale": "1x", + "size": "1024x1024" }, { - "filename" : "16.png", - "idiom" : "mac", - "scale" : "1x", - "size" : "16x16" + "filename": "mac-panel-05-16.png", + "idiom": "mac", + "scale": "1x", + "size": "16x16" }, { - "filename" : "32.png", - "idiom" : "mac", - "scale" : "2x", - "size" : "16x16" + "filename": "mac-panel-05-32.png", + "idiom": "mac", + "scale": "2x", + "size": "16x16" }, { - "filename" : "32.png", - "idiom" : "mac", - "scale" : "1x", - "size" : "32x32" + "filename": "mac-panel-05-32.png", + "idiom": "mac", + "scale": "1x", + "size": "32x32" }, { - "filename" : "64.png", - "idiom" : "mac", - "scale" : "2x", - "size" : "32x32" + "filename": "mac-panel-05-64.png", + "idiom": "mac", + "scale": "2x", + "size": "32x32" }, { - "filename" : "128.png", - "idiom" : "mac", - "scale" : "1x", - "size" : "128x128" + "filename": "mac-panel-05-128.png", + "idiom": "mac", + "scale": "1x", + "size": "128x128" }, { - "filename" : "256.png", - "idiom" : "mac", - "scale" : "2x", - "size" : "128x128" + "filename": "mac-panel-05-256.png", + "idiom": "mac", + "scale": "2x", + "size": "128x128" }, { - "filename" : "256.png", - "idiom" : "mac", - "scale" : "1x", - "size" : "256x256" + "filename": "mac-panel-05-256.png", + "idiom": "mac", + "scale": "1x", + "size": "256x256" }, { - "filename" : "512.png", - "idiom" : "mac", - "scale" : "2x", - "size" : "256x256" + "filename": "mac-panel-05-512.png", + "idiom": "mac", + "scale": "2x", + "size": "256x256" }, { - "filename" : "512.png", - "idiom" : "mac", - "scale" : "1x", - "size" : "512x512" + "filename": "mac-panel-05-512.png", + "idiom": "mac", + "scale": "1x", + "size": "512x512" }, { - "filename" : "1024.png", - "idiom" : "mac", - "scale" : "2x", - "size" : "512x512" - }, - { - "filename" : "48.png", - "idiom" : "watch", - "role" : "notificationCenter", - "scale" : "2x", - "size" : "24x24", - "subtype" : "38mm" - }, - { - "filename" : "55.png", - "idiom" : "watch", - "role" : "notificationCenter", - "scale" : "2x", - "size" : "27.5x27.5", - "subtype" : "42mm" - }, - { - "filename" : "58.png", - "idiom" : "watch", - "role" : "companionSettings", - "scale" : "2x", - "size" : "29x29" - }, - { - "filename" : "87.png", - "idiom" : "watch", - "role" : "companionSettings", - "scale" : "3x", - "size" : "29x29" - }, - { - "idiom" : "watch", - "role" : "notificationCenter", - "scale" : "2x", - "size" : "33x33", - "subtype" : "45mm" - }, - { - "filename" : "80.png", - "idiom" : "watch", - "role" : "appLauncher", - "scale" : "2x", - "size" : "40x40", - "subtype" : "38mm" - }, - { - "filename" : "88.png", - "idiom" : "watch", - "role" : "appLauncher", - "scale" : "2x", - "size" : "44x44", - "subtype" : "40mm" - }, - { - "idiom" : "watch", - "role" : "appLauncher", - "scale" : "2x", - "size" : "46x46", - "subtype" : "41mm" - }, - { - "filename" : "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" : "172.png", - "idiom" : "watch", - "role" : "quickLook", - "scale" : "2x", - "size" : "86x86", - "subtype" : "38mm" - }, - { - "filename" : "196.png", - "idiom" : "watch", - "role" : "quickLook", - "scale" : "2x", - "size" : "98x98", - "subtype" : "42mm" - }, - { - "filename" : "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" : "1024.png", - "idiom" : "watch-marketing", - "scale" : "1x", - "size" : "1024x1024" + "filename": "mac-panel-05-1024.png", + "idiom": "mac", + "scale": "2x", + "size": "512x512" } ], - "info" : { - "author" : "xcode", - "version" : 1 + "info": { + "author": "xcode", + "version": 1 } } diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-100.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-100.png new file mode 100644 index 0000000..dbe8e53 Binary files /dev/null and b/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-100.png differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-1024.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-1024.png new file mode 100644 index 0000000..e335771 Binary files /dev/null and b/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-1024.png differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-114.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-114.png new file mode 100644 index 0000000..af8f95a Binary files /dev/null and b/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-114.png differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-120.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-120.png new file mode 100644 index 0000000..eea76eb Binary files /dev/null and b/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-120.png differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-144.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-144.png new file mode 100644 index 0000000..ed3c1ba Binary files /dev/null and b/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-144.png differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-152.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-152.png new file mode 100644 index 0000000..2c7a7cd Binary files /dev/null and b/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-152.png differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-167.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-167.png new file mode 100644 index 0000000..7ce3660 Binary files /dev/null and b/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-167.png differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-180.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-180.png new file mode 100644 index 0000000..488ac42 Binary files /dev/null and b/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-180.png differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-20.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-20.png new file mode 100644 index 0000000..bd3cc95 Binary files /dev/null and b/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-20.png differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-29.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-29.png new file mode 100644 index 0000000..227cb6c Binary files /dev/null and b/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-29.png differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-40.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-40.png new file mode 100644 index 0000000..c0ef687 Binary files /dev/null and b/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-40.png differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-50.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-50.png new file mode 100644 index 0000000..377281b Binary files /dev/null and b/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-50.png differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-57.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-57.png new file mode 100644 index 0000000..b9b88e1 Binary files /dev/null and b/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-57.png differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-58.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-58.png new file mode 100644 index 0000000..0847ee9 Binary files /dev/null and b/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-58.png differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-60.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-60.png new file mode 100644 index 0000000..cd8358b Binary files /dev/null and b/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-60.png differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-72.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-72.png new file mode 100644 index 0000000..5d973f2 Binary files /dev/null and b/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-72.png differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-76.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-76.png new file mode 100644 index 0000000..1cde009 Binary files /dev/null and b/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-76.png differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-80.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-80.png new file mode 100644 index 0000000..ecf97e9 Binary files /dev/null and b/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-80.png differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-87.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-87.png new file mode 100644 index 0000000..e1f3193 Binary files /dev/null and b/Apple/UI/Assets.xcassets/AppIcon.appiconset/ios-panel-01-87.png differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/mac-panel-05-1024.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/mac-panel-05-1024.png new file mode 100644 index 0000000..065e8b6 Binary files /dev/null and b/Apple/UI/Assets.xcassets/AppIcon.appiconset/mac-panel-05-1024.png differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/mac-panel-05-128.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/mac-panel-05-128.png new file mode 100644 index 0000000..f4bd4bc Binary files /dev/null and b/Apple/UI/Assets.xcassets/AppIcon.appiconset/mac-panel-05-128.png differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/mac-panel-05-16.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/mac-panel-05-16.png new file mode 100644 index 0000000..30e2ad9 Binary files /dev/null and b/Apple/UI/Assets.xcassets/AppIcon.appiconset/mac-panel-05-16.png differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/mac-panel-05-256.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/mac-panel-05-256.png new file mode 100644 index 0000000..d919e9c Binary files /dev/null and b/Apple/UI/Assets.xcassets/AppIcon.appiconset/mac-panel-05-256.png differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/mac-panel-05-32.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/mac-panel-05-32.png new file mode 100644 index 0000000..3c1fd9f Binary files /dev/null and b/Apple/UI/Assets.xcassets/AppIcon.appiconset/mac-panel-05-32.png differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/mac-panel-05-512.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/mac-panel-05-512.png new file mode 100644 index 0000000..441a139 Binary files /dev/null and b/Apple/UI/Assets.xcassets/AppIcon.appiconset/mac-panel-05-512.png differ diff --git a/Apple/UI/Assets.xcassets/AppIcon.appiconset/mac-panel-05-64.png b/Apple/UI/Assets.xcassets/AppIcon.appiconset/mac-panel-05-64.png new file mode 100644 index 0000000..e6a72db Binary files /dev/null and b/Apple/UI/Assets.xcassets/AppIcon.appiconset/mac-panel-05-64.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel01Preview.imageset/Contents.json b/Apple/UI/Assets.xcassets/BurrowPanel01Preview.imageset/Contents.json new file mode 100644 index 0000000..d6ee58c --- /dev/null +++ b/Apple/UI/Assets.xcassets/BurrowPanel01Preview.imageset/Contents.json @@ -0,0 +1,13 @@ +{ + "images": [ + { + "filename": "preview.png", + "idiom": "universal", + "scale": "1x" + } + ], + "info": { + "author": "xcode", + "version": 1 + } +} diff --git a/Apple/UI/Assets.xcassets/BurrowPanel01Preview.imageset/preview.png b/Apple/UI/Assets.xcassets/BurrowPanel01Preview.imageset/preview.png new file mode 100644 index 0000000..561abcb Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel01Preview.imageset/preview.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-100.png b/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-100.png new file mode 100644 index 0000000..48c06a4 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-100.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-1024.png b/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-1024.png new file mode 100644 index 0000000..278575e Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-1024.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-114.png b/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-114.png new file mode 100644 index 0000000..411802b Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-114.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-120.png b/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-120.png new file mode 100644 index 0000000..95473ee Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-120.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-144.png b/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-144.png new file mode 100644 index 0000000..2b2afb9 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-144.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-152.png b/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-152.png new file mode 100644 index 0000000..0668af2 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-152.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-167.png b/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-167.png new file mode 100644 index 0000000..5486437 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-167.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-180.png b/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-180.png new file mode 100644 index 0000000..18111cf Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-180.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-20.png b/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-20.png new file mode 100644 index 0000000..b0df643 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-20.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-29.png b/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-29.png new file mode 100644 index 0000000..49d677b Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-29.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-40.png b/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-40.png new file mode 100644 index 0000000..1fb9e0f Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-40.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-50.png b/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-50.png new file mode 100644 index 0000000..c73d033 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-50.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-57.png b/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-57.png new file mode 100644 index 0000000..c55bc86 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-57.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-58.png b/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-58.png new file mode 100644 index 0000000..470ab9c Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-58.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-60.png b/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-60.png new file mode 100644 index 0000000..914fe25 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-60.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-72.png b/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-72.png new file mode 100644 index 0000000..463a7cc Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-72.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-76.png b/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-76.png new file mode 100644 index 0000000..7080ec3 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-76.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-80.png b/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-80.png new file mode 100644 index 0000000..90be22c Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-80.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-87.png b/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-87.png new file mode 100644 index 0000000..f494783 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/BurrowPanel02-87.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/Contents.json b/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/Contents.json new file mode 100644 index 0000000..a6ab553 --- /dev/null +++ b/Apple/UI/Assets.xcassets/BurrowPanel02.appiconset/Contents.json @@ -0,0 +1,158 @@ +{ + "images": [ + { + "filename": "BurrowPanel02-40.png", + "idiom": "iphone", + "scale": "2x", + "size": "20x20" + }, + { + "filename": "BurrowPanel02-60.png", + "idiom": "iphone", + "scale": "3x", + "size": "20x20" + }, + { + "filename": "BurrowPanel02-29.png", + "idiom": "iphone", + "scale": "1x", + "size": "29x29" + }, + { + "filename": "BurrowPanel02-58.png", + "idiom": "iphone", + "scale": "2x", + "size": "29x29" + }, + { + "filename": "BurrowPanel02-87.png", + "idiom": "iphone", + "scale": "3x", + "size": "29x29" + }, + { + "filename": "BurrowPanel02-80.png", + "idiom": "iphone", + "scale": "2x", + "size": "40x40" + }, + { + "filename": "BurrowPanel02-120.png", + "idiom": "iphone", + "scale": "3x", + "size": "40x40" + }, + { + "filename": "BurrowPanel02-57.png", + "idiom": "iphone", + "scale": "1x", + "size": "57x57" + }, + { + "filename": "BurrowPanel02-114.png", + "idiom": "iphone", + "scale": "2x", + "size": "57x57" + }, + { + "filename": "BurrowPanel02-120.png", + "idiom": "iphone", + "scale": "2x", + "size": "60x60" + }, + { + "filename": "BurrowPanel02-180.png", + "idiom": "iphone", + "scale": "3x", + "size": "60x60" + }, + { + "filename": "BurrowPanel02-20.png", + "idiom": "ipad", + "scale": "1x", + "size": "20x20" + }, + { + "filename": "BurrowPanel02-40.png", + "idiom": "ipad", + "scale": "2x", + "size": "20x20" + }, + { + "filename": "BurrowPanel02-29.png", + "idiom": "ipad", + "scale": "1x", + "size": "29x29" + }, + { + "filename": "BurrowPanel02-58.png", + "idiom": "ipad", + "scale": "2x", + "size": "29x29" + }, + { + "filename": "BurrowPanel02-40.png", + "idiom": "ipad", + "scale": "1x", + "size": "40x40" + }, + { + "filename": "BurrowPanel02-80.png", + "idiom": "ipad", + "scale": "2x", + "size": "40x40" + }, + { + "filename": "BurrowPanel02-50.png", + "idiom": "ipad", + "scale": "1x", + "size": "50x50" + }, + { + "filename": "BurrowPanel02-100.png", + "idiom": "ipad", + "scale": "2x", + "size": "50x50" + }, + { + "filename": "BurrowPanel02-72.png", + "idiom": "ipad", + "scale": "1x", + "size": "72x72" + }, + { + "filename": "BurrowPanel02-144.png", + "idiom": "ipad", + "scale": "2x", + "size": "72x72" + }, + { + "filename": "BurrowPanel02-76.png", + "idiom": "ipad", + "scale": "1x", + "size": "76x76" + }, + { + "filename": "BurrowPanel02-152.png", + "idiom": "ipad", + "scale": "2x", + "size": "76x76" + }, + { + "filename": "BurrowPanel02-167.png", + "idiom": "ipad", + "scale": "2x", + "size": "83.5x83.5" + }, + { + "filename": "BurrowPanel02-1024.png", + "idiom": "ios-marketing", + "scale": "1x", + "size": "1024x1024" + } + ], + "info": { + "author": "xcode", + "version": 1 + } +} diff --git a/Apple/UI/Assets.xcassets/BurrowPanel02Preview.imageset/Contents.json b/Apple/UI/Assets.xcassets/BurrowPanel02Preview.imageset/Contents.json new file mode 100644 index 0000000..d6ee58c --- /dev/null +++ b/Apple/UI/Assets.xcassets/BurrowPanel02Preview.imageset/Contents.json @@ -0,0 +1,13 @@ +{ + "images": [ + { + "filename": "preview.png", + "idiom": "universal", + "scale": "1x" + } + ], + "info": { + "author": "xcode", + "version": 1 + } +} diff --git a/Apple/UI/Assets.xcassets/BurrowPanel02Preview.imageset/preview.png b/Apple/UI/Assets.xcassets/BurrowPanel02Preview.imageset/preview.png new file mode 100644 index 0000000..f6d9feb Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel02Preview.imageset/preview.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-100.png b/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-100.png new file mode 100644 index 0000000..8d72c1b Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-100.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-1024.png b/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-1024.png new file mode 100644 index 0000000..6f40b0a Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-1024.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-114.png b/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-114.png new file mode 100644 index 0000000..9d44be4 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-114.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-120.png b/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-120.png new file mode 100644 index 0000000..434c1a8 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-120.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-144.png b/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-144.png new file mode 100644 index 0000000..d837b45 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-144.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-152.png b/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-152.png new file mode 100644 index 0000000..c507534 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-152.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-167.png b/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-167.png new file mode 100644 index 0000000..e79fc1e Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-167.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-180.png b/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-180.png new file mode 100644 index 0000000..7022128 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-180.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-20.png b/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-20.png new file mode 100644 index 0000000..28468f0 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-20.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-29.png b/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-29.png new file mode 100644 index 0000000..b4dc026 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-29.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-40.png b/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-40.png new file mode 100644 index 0000000..2ed0ee4 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-40.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-50.png b/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-50.png new file mode 100644 index 0000000..7015cf1 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-50.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-57.png b/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-57.png new file mode 100644 index 0000000..6cfb78d Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-57.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-58.png b/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-58.png new file mode 100644 index 0000000..1efe951 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-58.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-60.png b/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-60.png new file mode 100644 index 0000000..e007091 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-60.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-72.png b/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-72.png new file mode 100644 index 0000000..f82f554 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-72.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-76.png b/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-76.png new file mode 100644 index 0000000..5f92d14 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-76.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-80.png b/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-80.png new file mode 100644 index 0000000..37337e7 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-80.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-87.png b/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-87.png new file mode 100644 index 0000000..e37171c Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/BurrowPanel03-87.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/Contents.json b/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/Contents.json new file mode 100644 index 0000000..923e927 --- /dev/null +++ b/Apple/UI/Assets.xcassets/BurrowPanel03.appiconset/Contents.json @@ -0,0 +1,158 @@ +{ + "images": [ + { + "filename": "BurrowPanel03-40.png", + "idiom": "iphone", + "scale": "2x", + "size": "20x20" + }, + { + "filename": "BurrowPanel03-60.png", + "idiom": "iphone", + "scale": "3x", + "size": "20x20" + }, + { + "filename": "BurrowPanel03-29.png", + "idiom": "iphone", + "scale": "1x", + "size": "29x29" + }, + { + "filename": "BurrowPanel03-58.png", + "idiom": "iphone", + "scale": "2x", + "size": "29x29" + }, + { + "filename": "BurrowPanel03-87.png", + "idiom": "iphone", + "scale": "3x", + "size": "29x29" + }, + { + "filename": "BurrowPanel03-80.png", + "idiom": "iphone", + "scale": "2x", + "size": "40x40" + }, + { + "filename": "BurrowPanel03-120.png", + "idiom": "iphone", + "scale": "3x", + "size": "40x40" + }, + { + "filename": "BurrowPanel03-57.png", + "idiom": "iphone", + "scale": "1x", + "size": "57x57" + }, + { + "filename": "BurrowPanel03-114.png", + "idiom": "iphone", + "scale": "2x", + "size": "57x57" + }, + { + "filename": "BurrowPanel03-120.png", + "idiom": "iphone", + "scale": "2x", + "size": "60x60" + }, + { + "filename": "BurrowPanel03-180.png", + "idiom": "iphone", + "scale": "3x", + "size": "60x60" + }, + { + "filename": "BurrowPanel03-20.png", + "idiom": "ipad", + "scale": "1x", + "size": "20x20" + }, + { + "filename": "BurrowPanel03-40.png", + "idiom": "ipad", + "scale": "2x", + "size": "20x20" + }, + { + "filename": "BurrowPanel03-29.png", + "idiom": "ipad", + "scale": "1x", + "size": "29x29" + }, + { + "filename": "BurrowPanel03-58.png", + "idiom": "ipad", + "scale": "2x", + "size": "29x29" + }, + { + "filename": "BurrowPanel03-40.png", + "idiom": "ipad", + "scale": "1x", + "size": "40x40" + }, + { + "filename": "BurrowPanel03-80.png", + "idiom": "ipad", + "scale": "2x", + "size": "40x40" + }, + { + "filename": "BurrowPanel03-50.png", + "idiom": "ipad", + "scale": "1x", + "size": "50x50" + }, + { + "filename": "BurrowPanel03-100.png", + "idiom": "ipad", + "scale": "2x", + "size": "50x50" + }, + { + "filename": "BurrowPanel03-72.png", + "idiom": "ipad", + "scale": "1x", + "size": "72x72" + }, + { + "filename": "BurrowPanel03-144.png", + "idiom": "ipad", + "scale": "2x", + "size": "72x72" + }, + { + "filename": "BurrowPanel03-76.png", + "idiom": "ipad", + "scale": "1x", + "size": "76x76" + }, + { + "filename": "BurrowPanel03-152.png", + "idiom": "ipad", + "scale": "2x", + "size": "76x76" + }, + { + "filename": "BurrowPanel03-167.png", + "idiom": "ipad", + "scale": "2x", + "size": "83.5x83.5" + }, + { + "filename": "BurrowPanel03-1024.png", + "idiom": "ios-marketing", + "scale": "1x", + "size": "1024x1024" + } + ], + "info": { + "author": "xcode", + "version": 1 + } +} diff --git a/Apple/UI/Assets.xcassets/BurrowPanel03Preview.imageset/Contents.json b/Apple/UI/Assets.xcassets/BurrowPanel03Preview.imageset/Contents.json new file mode 100644 index 0000000..d6ee58c --- /dev/null +++ b/Apple/UI/Assets.xcassets/BurrowPanel03Preview.imageset/Contents.json @@ -0,0 +1,13 @@ +{ + "images": [ + { + "filename": "preview.png", + "idiom": "universal", + "scale": "1x" + } + ], + "info": { + "author": "xcode", + "version": 1 + } +} diff --git a/Apple/UI/Assets.xcassets/BurrowPanel03Preview.imageset/preview.png b/Apple/UI/Assets.xcassets/BurrowPanel03Preview.imageset/preview.png new file mode 100644 index 0000000..76d432e Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel03Preview.imageset/preview.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-100.png b/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-100.png new file mode 100644 index 0000000..3c70fad Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-100.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-1024.png b/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-1024.png new file mode 100644 index 0000000..4925f9f Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-1024.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-114.png b/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-114.png new file mode 100644 index 0000000..6ea1195 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-114.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-120.png b/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-120.png new file mode 100644 index 0000000..b07aa10 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-120.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-144.png b/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-144.png new file mode 100644 index 0000000..783367c Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-144.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-152.png b/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-152.png new file mode 100644 index 0000000..5a13fd3 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-152.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-167.png b/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-167.png new file mode 100644 index 0000000..694d1f1 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-167.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-180.png b/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-180.png new file mode 100644 index 0000000..af7e0fb Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-180.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-20.png b/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-20.png new file mode 100644 index 0000000..6889afc Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-20.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-29.png b/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-29.png new file mode 100644 index 0000000..81f027c Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-29.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-40.png b/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-40.png new file mode 100644 index 0000000..6fc8b68 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-40.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-50.png b/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-50.png new file mode 100644 index 0000000..cf8d516 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-50.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-57.png b/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-57.png new file mode 100644 index 0000000..6bddc05 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-57.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-58.png b/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-58.png new file mode 100644 index 0000000..c80a63f Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-58.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-60.png b/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-60.png new file mode 100644 index 0000000..22bf565 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-60.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-72.png b/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-72.png new file mode 100644 index 0000000..1ce020b Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-72.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-76.png b/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-76.png new file mode 100644 index 0000000..d0f2173 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-76.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-80.png b/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-80.png new file mode 100644 index 0000000..3d4be54 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-80.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-87.png b/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-87.png new file mode 100644 index 0000000..0de4b64 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/BurrowPanel04-87.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/Contents.json b/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/Contents.json new file mode 100644 index 0000000..ee5c59a --- /dev/null +++ b/Apple/UI/Assets.xcassets/BurrowPanel04.appiconset/Contents.json @@ -0,0 +1,158 @@ +{ + "images": [ + { + "filename": "BurrowPanel04-40.png", + "idiom": "iphone", + "scale": "2x", + "size": "20x20" + }, + { + "filename": "BurrowPanel04-60.png", + "idiom": "iphone", + "scale": "3x", + "size": "20x20" + }, + { + "filename": "BurrowPanel04-29.png", + "idiom": "iphone", + "scale": "1x", + "size": "29x29" + }, + { + "filename": "BurrowPanel04-58.png", + "idiom": "iphone", + "scale": "2x", + "size": "29x29" + }, + { + "filename": "BurrowPanel04-87.png", + "idiom": "iphone", + "scale": "3x", + "size": "29x29" + }, + { + "filename": "BurrowPanel04-80.png", + "idiom": "iphone", + "scale": "2x", + "size": "40x40" + }, + { + "filename": "BurrowPanel04-120.png", + "idiom": "iphone", + "scale": "3x", + "size": "40x40" + }, + { + "filename": "BurrowPanel04-57.png", + "idiom": "iphone", + "scale": "1x", + "size": "57x57" + }, + { + "filename": "BurrowPanel04-114.png", + "idiom": "iphone", + "scale": "2x", + "size": "57x57" + }, + { + "filename": "BurrowPanel04-120.png", + "idiom": "iphone", + "scale": "2x", + "size": "60x60" + }, + { + "filename": "BurrowPanel04-180.png", + "idiom": "iphone", + "scale": "3x", + "size": "60x60" + }, + { + "filename": "BurrowPanel04-20.png", + "idiom": "ipad", + "scale": "1x", + "size": "20x20" + }, + { + "filename": "BurrowPanel04-40.png", + "idiom": "ipad", + "scale": "2x", + "size": "20x20" + }, + { + "filename": "BurrowPanel04-29.png", + "idiom": "ipad", + "scale": "1x", + "size": "29x29" + }, + { + "filename": "BurrowPanel04-58.png", + "idiom": "ipad", + "scale": "2x", + "size": "29x29" + }, + { + "filename": "BurrowPanel04-40.png", + "idiom": "ipad", + "scale": "1x", + "size": "40x40" + }, + { + "filename": "BurrowPanel04-80.png", + "idiom": "ipad", + "scale": "2x", + "size": "40x40" + }, + { + "filename": "BurrowPanel04-50.png", + "idiom": "ipad", + "scale": "1x", + "size": "50x50" + }, + { + "filename": "BurrowPanel04-100.png", + "idiom": "ipad", + "scale": "2x", + "size": "50x50" + }, + { + "filename": "BurrowPanel04-72.png", + "idiom": "ipad", + "scale": "1x", + "size": "72x72" + }, + { + "filename": "BurrowPanel04-144.png", + "idiom": "ipad", + "scale": "2x", + "size": "72x72" + }, + { + "filename": "BurrowPanel04-76.png", + "idiom": "ipad", + "scale": "1x", + "size": "76x76" + }, + { + "filename": "BurrowPanel04-152.png", + "idiom": "ipad", + "scale": "2x", + "size": "76x76" + }, + { + "filename": "BurrowPanel04-167.png", + "idiom": "ipad", + "scale": "2x", + "size": "83.5x83.5" + }, + { + "filename": "BurrowPanel04-1024.png", + "idiom": "ios-marketing", + "scale": "1x", + "size": "1024x1024" + } + ], + "info": { + "author": "xcode", + "version": 1 + } +} diff --git a/Apple/UI/Assets.xcassets/BurrowPanel04Preview.imageset/Contents.json b/Apple/UI/Assets.xcassets/BurrowPanel04Preview.imageset/Contents.json new file mode 100644 index 0000000..d6ee58c --- /dev/null +++ b/Apple/UI/Assets.xcassets/BurrowPanel04Preview.imageset/Contents.json @@ -0,0 +1,13 @@ +{ + "images": [ + { + "filename": "preview.png", + "idiom": "universal", + "scale": "1x" + } + ], + "info": { + "author": "xcode", + "version": 1 + } +} diff --git a/Apple/UI/Assets.xcassets/BurrowPanel04Preview.imageset/preview.png b/Apple/UI/Assets.xcassets/BurrowPanel04Preview.imageset/preview.png new file mode 100644 index 0000000..36b526c Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel04Preview.imageset/preview.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-100.png b/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-100.png new file mode 100644 index 0000000..caed322 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-100.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-1024.png b/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-1024.png new file mode 100644 index 0000000..065e8b6 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-1024.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-114.png b/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-114.png new file mode 100644 index 0000000..a6a5dfa Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-114.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-120.png b/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-120.png new file mode 100644 index 0000000..184604d Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-120.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-144.png b/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-144.png new file mode 100644 index 0000000..89a64a9 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-144.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-152.png b/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-152.png new file mode 100644 index 0000000..339670e Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-152.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-167.png b/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-167.png new file mode 100644 index 0000000..ac23f7c Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-167.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-180.png b/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-180.png new file mode 100644 index 0000000..d2c8089 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-180.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-20.png b/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-20.png new file mode 100644 index 0000000..821044f Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-20.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-29.png b/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-29.png new file mode 100644 index 0000000..b20c630 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-29.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-40.png b/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-40.png new file mode 100644 index 0000000..9fa18b5 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-40.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-50.png b/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-50.png new file mode 100644 index 0000000..619429d Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-50.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-57.png b/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-57.png new file mode 100644 index 0000000..bde5672 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-57.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-58.png b/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-58.png new file mode 100644 index 0000000..8d8311d Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-58.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-60.png b/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-60.png new file mode 100644 index 0000000..5d37b74 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-60.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-72.png b/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-72.png new file mode 100644 index 0000000..a3624bf Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-72.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-76.png b/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-76.png new file mode 100644 index 0000000..35730d1 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-76.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-80.png b/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-80.png new file mode 100644 index 0000000..43ad408 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-80.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-87.png b/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-87.png new file mode 100644 index 0000000..1e7bbdf Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/BurrowPanel05-87.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/Contents.json b/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/Contents.json new file mode 100644 index 0000000..a1e0e4b --- /dev/null +++ b/Apple/UI/Assets.xcassets/BurrowPanel05.appiconset/Contents.json @@ -0,0 +1,158 @@ +{ + "images": [ + { + "filename": "BurrowPanel05-40.png", + "idiom": "iphone", + "scale": "2x", + "size": "20x20" + }, + { + "filename": "BurrowPanel05-60.png", + "idiom": "iphone", + "scale": "3x", + "size": "20x20" + }, + { + "filename": "BurrowPanel05-29.png", + "idiom": "iphone", + "scale": "1x", + "size": "29x29" + }, + { + "filename": "BurrowPanel05-58.png", + "idiom": "iphone", + "scale": "2x", + "size": "29x29" + }, + { + "filename": "BurrowPanel05-87.png", + "idiom": "iphone", + "scale": "3x", + "size": "29x29" + }, + { + "filename": "BurrowPanel05-80.png", + "idiom": "iphone", + "scale": "2x", + "size": "40x40" + }, + { + "filename": "BurrowPanel05-120.png", + "idiom": "iphone", + "scale": "3x", + "size": "40x40" + }, + { + "filename": "BurrowPanel05-57.png", + "idiom": "iphone", + "scale": "1x", + "size": "57x57" + }, + { + "filename": "BurrowPanel05-114.png", + "idiom": "iphone", + "scale": "2x", + "size": "57x57" + }, + { + "filename": "BurrowPanel05-120.png", + "idiom": "iphone", + "scale": "2x", + "size": "60x60" + }, + { + "filename": "BurrowPanel05-180.png", + "idiom": "iphone", + "scale": "3x", + "size": "60x60" + }, + { + "filename": "BurrowPanel05-20.png", + "idiom": "ipad", + "scale": "1x", + "size": "20x20" + }, + { + "filename": "BurrowPanel05-40.png", + "idiom": "ipad", + "scale": "2x", + "size": "20x20" + }, + { + "filename": "BurrowPanel05-29.png", + "idiom": "ipad", + "scale": "1x", + "size": "29x29" + }, + { + "filename": "BurrowPanel05-58.png", + "idiom": "ipad", + "scale": "2x", + "size": "29x29" + }, + { + "filename": "BurrowPanel05-40.png", + "idiom": "ipad", + "scale": "1x", + "size": "40x40" + }, + { + "filename": "BurrowPanel05-80.png", + "idiom": "ipad", + "scale": "2x", + "size": "40x40" + }, + { + "filename": "BurrowPanel05-50.png", + "idiom": "ipad", + "scale": "1x", + "size": "50x50" + }, + { + "filename": "BurrowPanel05-100.png", + "idiom": "ipad", + "scale": "2x", + "size": "50x50" + }, + { + "filename": "BurrowPanel05-72.png", + "idiom": "ipad", + "scale": "1x", + "size": "72x72" + }, + { + "filename": "BurrowPanel05-144.png", + "idiom": "ipad", + "scale": "2x", + "size": "72x72" + }, + { + "filename": "BurrowPanel05-76.png", + "idiom": "ipad", + "scale": "1x", + "size": "76x76" + }, + { + "filename": "BurrowPanel05-152.png", + "idiom": "ipad", + "scale": "2x", + "size": "76x76" + }, + { + "filename": "BurrowPanel05-167.png", + "idiom": "ipad", + "scale": "2x", + "size": "83.5x83.5" + }, + { + "filename": "BurrowPanel05-1024.png", + "idiom": "ios-marketing", + "scale": "1x", + "size": "1024x1024" + } + ], + "info": { + "author": "xcode", + "version": 1 + } +} diff --git a/Apple/UI/Assets.xcassets/BurrowPanel05Preview.imageset/Contents.json b/Apple/UI/Assets.xcassets/BurrowPanel05Preview.imageset/Contents.json new file mode 100644 index 0000000..d6ee58c --- /dev/null +++ b/Apple/UI/Assets.xcassets/BurrowPanel05Preview.imageset/Contents.json @@ -0,0 +1,13 @@ +{ + "images": [ + { + "filename": "preview.png", + "idiom": "universal", + "scale": "1x" + } + ], + "info": { + "author": "xcode", + "version": 1 + } +} diff --git a/Apple/UI/Assets.xcassets/BurrowPanel05Preview.imageset/preview.png b/Apple/UI/Assets.xcassets/BurrowPanel05Preview.imageset/preview.png new file mode 100644 index 0000000..d919e9c Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel05Preview.imageset/preview.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-100.png b/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-100.png new file mode 100644 index 0000000..c723bc5 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-100.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-1024.png b/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-1024.png new file mode 100644 index 0000000..54336b2 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-1024.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-114.png b/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-114.png new file mode 100644 index 0000000..f0d4a55 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-114.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-120.png b/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-120.png new file mode 100644 index 0000000..cf95959 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-120.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-144.png b/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-144.png new file mode 100644 index 0000000..b1bb422 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-144.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-152.png b/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-152.png new file mode 100644 index 0000000..a44333c Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-152.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-167.png b/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-167.png new file mode 100644 index 0000000..adb7652 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-167.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-180.png b/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-180.png new file mode 100644 index 0000000..0e64715 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-180.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-20.png b/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-20.png new file mode 100644 index 0000000..d9d652b Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-20.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-29.png b/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-29.png new file mode 100644 index 0000000..e200e3c Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-29.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-40.png b/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-40.png new file mode 100644 index 0000000..3db6db7 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-40.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-50.png b/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-50.png new file mode 100644 index 0000000..7f3b15e Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-50.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-57.png b/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-57.png new file mode 100644 index 0000000..49fd3f6 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-57.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-58.png b/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-58.png new file mode 100644 index 0000000..7f7c2ff Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-58.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-60.png b/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-60.png new file mode 100644 index 0000000..da1f3ca Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-60.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-72.png b/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-72.png new file mode 100644 index 0000000..1a9e3dc Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-72.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-76.png b/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-76.png new file mode 100644 index 0000000..e4407db Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-76.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-80.png b/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-80.png new file mode 100644 index 0000000..0c0b7f4 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-80.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-87.png b/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-87.png new file mode 100644 index 0000000..3740748 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/BurrowPanel06-87.png differ diff --git a/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/Contents.json b/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/Contents.json new file mode 100644 index 0000000..91d9323 --- /dev/null +++ b/Apple/UI/Assets.xcassets/BurrowPanel06.appiconset/Contents.json @@ -0,0 +1,158 @@ +{ + "images": [ + { + "filename": "BurrowPanel06-40.png", + "idiom": "iphone", + "scale": "2x", + "size": "20x20" + }, + { + "filename": "BurrowPanel06-60.png", + "idiom": "iphone", + "scale": "3x", + "size": "20x20" + }, + { + "filename": "BurrowPanel06-29.png", + "idiom": "iphone", + "scale": "1x", + "size": "29x29" + }, + { + "filename": "BurrowPanel06-58.png", + "idiom": "iphone", + "scale": "2x", + "size": "29x29" + }, + { + "filename": "BurrowPanel06-87.png", + "idiom": "iphone", + "scale": "3x", + "size": "29x29" + }, + { + "filename": "BurrowPanel06-80.png", + "idiom": "iphone", + "scale": "2x", + "size": "40x40" + }, + { + "filename": "BurrowPanel06-120.png", + "idiom": "iphone", + "scale": "3x", + "size": "40x40" + }, + { + "filename": "BurrowPanel06-57.png", + "idiom": "iphone", + "scale": "1x", + "size": "57x57" + }, + { + "filename": "BurrowPanel06-114.png", + "idiom": "iphone", + "scale": "2x", + "size": "57x57" + }, + { + "filename": "BurrowPanel06-120.png", + "idiom": "iphone", + "scale": "2x", + "size": "60x60" + }, + { + "filename": "BurrowPanel06-180.png", + "idiom": "iphone", + "scale": "3x", + "size": "60x60" + }, + { + "filename": "BurrowPanel06-20.png", + "idiom": "ipad", + "scale": "1x", + "size": "20x20" + }, + { + "filename": "BurrowPanel06-40.png", + "idiom": "ipad", + "scale": "2x", + "size": "20x20" + }, + { + "filename": "BurrowPanel06-29.png", + "idiom": "ipad", + "scale": "1x", + "size": "29x29" + }, + { + "filename": "BurrowPanel06-58.png", + "idiom": "ipad", + "scale": "2x", + "size": "29x29" + }, + { + "filename": "BurrowPanel06-40.png", + "idiom": "ipad", + "scale": "1x", + "size": "40x40" + }, + { + "filename": "BurrowPanel06-80.png", + "idiom": "ipad", + "scale": "2x", + "size": "40x40" + }, + { + "filename": "BurrowPanel06-50.png", + "idiom": "ipad", + "scale": "1x", + "size": "50x50" + }, + { + "filename": "BurrowPanel06-100.png", + "idiom": "ipad", + "scale": "2x", + "size": "50x50" + }, + { + "filename": "BurrowPanel06-72.png", + "idiom": "ipad", + "scale": "1x", + "size": "72x72" + }, + { + "filename": "BurrowPanel06-144.png", + "idiom": "ipad", + "scale": "2x", + "size": "72x72" + }, + { + "filename": "BurrowPanel06-76.png", + "idiom": "ipad", + "scale": "1x", + "size": "76x76" + }, + { + "filename": "BurrowPanel06-152.png", + "idiom": "ipad", + "scale": "2x", + "size": "76x76" + }, + { + "filename": "BurrowPanel06-167.png", + "idiom": "ipad", + "scale": "2x", + "size": "83.5x83.5" + }, + { + "filename": "BurrowPanel06-1024.png", + "idiom": "ios-marketing", + "scale": "1x", + "size": "1024x1024" + } + ], + "info": { + "author": "xcode", + "version": 1 + } +} diff --git a/Apple/UI/Assets.xcassets/BurrowPanel06Preview.imageset/Contents.json b/Apple/UI/Assets.xcassets/BurrowPanel06Preview.imageset/Contents.json new file mode 100644 index 0000000..d6ee58c --- /dev/null +++ b/Apple/UI/Assets.xcassets/BurrowPanel06Preview.imageset/Contents.json @@ -0,0 +1,13 @@ +{ + "images": [ + { + "filename": "preview.png", + "idiom": "universal", + "scale": "1x" + } + ], + "info": { + "author": "xcode", + "version": 1 + } +} diff --git a/Apple/UI/Assets.xcassets/BurrowPanel06Preview.imageset/preview.png b/Apple/UI/Assets.xcassets/BurrowPanel06Preview.imageset/preview.png new file mode 100644 index 0000000..7c63df0 Binary files /dev/null and b/Apple/UI/Assets.xcassets/BurrowPanel06Preview.imageset/preview.png differ diff --git a/Apple/UI/BurrowView.swift b/Apple/UI/BurrowView.swift index e15d3f7..8145928 100644 --- a/Apple/UI/BurrowView.swift +++ b/Apple/UI/BurrowView.swift @@ -4,17 +4,26 @@ import SwiftUI #if canImport(AuthenticationServices) import AuthenticationServices #endif -#if canImport(UIKit) -import UIKit -#elseif canImport(AppKit) -import AppKit -#endif + +@MainActor +public protocol AppIconManaging { + var supportsAlternateIcons: Bool { get } + var alternateIconName: String? { get } + func setAlternateIconName(_ iconName: String?) async throws +} public struct BurrowView: View { + private let appIconManager: (any AppIconManaging)? + @State private var networkViewModel: NetworkViewModel @State private var accountStore = NetworkAccountStore() @State private var activeSheet: ConfigurationSheet? @State private var didRunAutomation = false + #if os(iOS) + @State private var selectedAppIconName: String? + @State private var appIconError: String? + @State private var isSettingAppIcon = false + #endif public var body: some View { NavigationStack { @@ -56,6 +65,10 @@ public struct BurrowView: View { quickAddSection } + if showsAppIconSection { + appIconSection + } + VStack(alignment: .leading, spacing: 12) { sectionHeader( title: "Networks", @@ -121,10 +134,12 @@ public struct BurrowView: View { } .onAppear { runAutomationIfNeeded() + refreshAppIconSelection() } } - public init() { + public init(appIconManager: (any AppIconManaging)? = nil) { + self.appIconManager = appIconManager _networkViewModel = State( initialValue: NetworkViewModel( socketURLResult: Result { try Constants.socketURL } @@ -143,6 +158,12 @@ public struct BurrowView: View { activeSheet = .tailnet } + private func refreshAppIconSelection() { + #if os(iOS) + selectedAppIconName = appIconManager?.alternateIconName + #endif + } + @ViewBuilder private var quickAddSection: some View { VStack(alignment: .leading, spacing: 12) { @@ -157,6 +178,81 @@ public struct BurrowView: View { } } + @ViewBuilder + private var appIconSection: some View { + #if os(iOS) + VStack(alignment: .leading, spacing: 12) { + sectionHeader(title: "App Icon", detail: nil) + LazyVGrid( + columns: [GridItem(.adaptive(minimum: 86), spacing: 12)], + alignment: .leading, + spacing: 12 + ) { + ForEach(AppIconChoice.allCases) { choice in + let isSelected = selectedAppIconName == choice.alternateIconName + Button { + setAppIcon(choice) + } label: { + VStack(spacing: 8) { + Image(choice.previewAssetName) + .resizable() + .aspectRatio(1, contentMode: .fit) + .frame(width: 72, height: 72) + .clipShape(RoundedRectangle(cornerRadius: 16, style: .continuous)) + .overlay { + RoundedRectangle(cornerRadius: 16, style: .continuous) + .stroke(isSelected ? Color.accentColor : Color.clear, lineWidth: 3) + } + .shadow(color: .black.opacity(0.18), radius: 5, y: 2) + Text(choice.title) + .font(.caption2.weight(.semibold)) + .foregroundStyle(isSelected ? Color.accentColor : Color.primary) + .lineLimit(1) + .minimumScaleFactor(0.75) + } + .frame(width: 86, height: 104) + .contentShape(Rectangle()) + } + .buttonStyle(.plain) + .disabled(isSettingAppIcon) + .accessibilityLabel(choice.accessibilityLabel) + } + } + if let appIconError { + Text(appIconError) + .font(.footnote) + .foregroundStyle(.secondary) + } + } + #else + EmptyView() + #endif + } + + #if os(iOS) + private func setAppIcon(_ choice: AppIconChoice) { + guard let appIconManager, appIconManager.supportsAlternateIcons else { + return + } + guard selectedAppIconName != choice.alternateIconName else { + return + } + + isSettingAppIcon = true + appIconError = nil + Task { @MainActor in + do { + try await appIconManager.setAlternateIconName(choice.alternateIconName) + selectedAppIconName = appIconManager.alternateIconName + } catch { + appIconError = error.localizedDescription + selectedAppIconName = appIconManager.alternateIconName + } + isSettingAppIcon = false + } + } + #endif + @ViewBuilder private func sectionHeader(title: String, detail: String?) -> some View { VStack(alignment: .leading, spacing: 4) { @@ -193,6 +289,80 @@ public struct BurrowView: View { true #endif } + + private var showsAppIconSection: Bool { + #if os(iOS) + appIconManager?.supportsAlternateIcons == true + #else + false + #endif + } +} + +private enum AppIconChoice: CaseIterable, Identifiable { + case guardian + case field + case burrow + case sentinel + case stride + case post + + var id: String { previewAssetName } + + var title: String { + switch self { + case .guardian: + "Guardian" + case .field: + "Field" + case .burrow: + "Burrow" + case .sentinel: + "Sentinel" + case .stride: + "Stride" + case .post: + "Post" + } + } + + var previewAssetName: String { + switch self { + case .guardian: + "BurrowPanel01Preview" + case .field: + "BurrowPanel02Preview" + case .burrow: + "BurrowPanel03Preview" + case .sentinel: + "BurrowPanel04Preview" + case .stride: + "BurrowPanel05Preview" + case .post: + "BurrowPanel06Preview" + } + } + + var alternateIconName: String? { + switch self { + case .guardian: + nil + case .field: + "BurrowPanel02" + case .burrow: + "BurrowPanel03" + case .sentinel: + "BurrowPanel04" + case .stride: + "BurrowPanel05" + case .post: + "BurrowPanel06" + } + } + + var accessibilityLabel: String { + "\(title) app icon" + } } private enum ConfigurationSheet: String, CaseIterable, Identifiable { diff --git a/Scripts/check-brand-icon-lowres.sh b/Scripts/check-brand-icon-lowres.sh index 8b96d7b..c9243a9 100755 --- a/Scripts/check-brand-icon-lowres.sh +++ b/Scripts/check-brand-icon-lowres.sh @@ -4,8 +4,6 @@ set -euo pipefail repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" cd "$repo_root" -ictool="/Applications/Xcode/Xcode.app/Contents/Applications/Icon Composer.app/Contents/Executables/ictool" -icon_doc="$repo_root/design/brand/Burrow.icon" output_dir_arg="${1:-design/brand/low-res}" if [[ "$output_dir_arg" = /* ]]; then output_dir="$output_dir_arg" @@ -27,37 +25,15 @@ require_tool() { require_tool magick require_tool awk -if [[ ! -x "$ictool" ]]; then - echo "error: Icon Composer ictool not found at $ictool" >&2 - exit 127 -fi - mkdir -p "$output_dir" -if [[ "${BURROW_ICON_REFRESH:-0}" == "1" ]]; then - if ! "$ictool" "$icon_doc" \ - --export-image \ - --output-file "$master" \ - --platform iOS \ - --rendition Default \ - --width 1024 \ - --height 1024 \ - --scale 1 >/dev/null; then - echo "warning: ictool could not export $icon_doc; falling back to $checked_in_master" >&2 - magick "$checked_in_master" -colorspace sRGB -strip "PNG24:$master" - source_master="$checked_in_master" - else - source_master="$master" - fi -else - magick "$checked_in_master" -colorspace sRGB -strip "PNG24:$master" -fi +magick "$checked_in_master" -colorspace sRGB -strip "PNG32:$master" printf "size,colors,gray_stddev,status\n" >"$output_dir/report.csv" for size in "${sizes[@]}"; do image="$output_dir/burrow-icon-${size}.png" - magick "$source_master" -colorspace sRGB -resize "${size}x${size}!" -strip "PNG24:$image" + magick "$source_master" -colorspace sRGB -resize "${size}x${size}!" -strip "PNG32:$image" actual="$(magick "$image" -format "%wx%h" info:)" if [[ "$actual" != "${size}x${size}" ]]; then diff --git a/Scripts/generate-brand-icons.py b/Scripts/generate-brand-icons.py new file mode 100755 index 0000000..02dd15d --- /dev/null +++ b/Scripts/generate-brand-icons.py @@ -0,0 +1,450 @@ +#!/usr/bin/env python3 +"""Generate Burrow app icons from locked raster panel masters.""" + +from __future__ import annotations + +import json +import shutil +import subprocess +import sys +from pathlib import Path + + +ROOT = Path(__file__).resolve().parents[1] +BRAND = ROOT / "design" / "brand" +PANEL_DIR = BRAND / "panel-variants" +APPLE_ASSETS = ROOT / "Apple" / "UI" / "Assets.xcassets" +APPICON_SET = APPLE_ASSETS / "AppIcon.appiconset" +WATCHOS_BRAND_APPICON_SET = BRAND / "watchos" / "AppIcon.appiconset" +ANDROID_RES = ROOT / "Android" / "app" / "src" / "main" / "res" +GTK_ICONS = ROOT / "burrow-gtk" / "data" / "icons" / "hicolor" + +VARIANTS = [ + ("panel-01-guardian", "BurrowPanel01", "Guardian", "top-left panel"), + ("panel-02-field", "BurrowPanel02", "Field", "top-middle panel"), + ("panel-03-burrow", "BurrowPanel03", "Burrow", "top-right panel"), + ("panel-04-sentinel", "BurrowPanel04", "Sentinel", "bottom-left panel"), + ("panel-05-stride", "BurrowPanel05", "Stride", "bottom-middle panel"), + ("panel-06-post", "BurrowPanel06", "Post", "bottom-right panel"), +] + +PRIMARY_IOS = "panel-01-guardian" +PRIMARY_MACOS = "panel-05-stride" +PRIMARY_WATCHOS = "panel-03-burrow" +PRIMARY_ANDROID = PRIMARY_IOS +PRIMARY_LINUX = PRIMARY_IOS + +# Rough cells in the supplied 2928x1896 panel screenshot. Extraction trims the +# white sheet background, makes the crop square with transparent padding, then +# normalizes to 1024px. +EXTRACTION_CELLS = { + "panel-01-guardian": (40, 40, 900, 900), + "panel-02-field": (940, 40, 900, 900), + "panel-03-burrow": (1840, 40, 900, 900), + "panel-04-sentinel": (40, 980, 900, 900), + "panel-05-stride": (940, 980, 900, 900), + "panel-06-post": (1840, 980, 900, 900), +} + +IOS_ROWS = [ + ("iphone", "20x20", "2x", 40, {}), + ("iphone", "20x20", "3x", 60, {}), + ("iphone", "29x29", "1x", 29, {}), + ("iphone", "29x29", "2x", 58, {}), + ("iphone", "29x29", "3x", 87, {}), + ("iphone", "40x40", "2x", 80, {}), + ("iphone", "40x40", "3x", 120, {}), + ("iphone", "57x57", "1x", 57, {}), + ("iphone", "57x57", "2x", 114, {}), + ("iphone", "60x60", "2x", 120, {}), + ("iphone", "60x60", "3x", 180, {}), + ("ipad", "20x20", "1x", 20, {}), + ("ipad", "20x20", "2x", 40, {}), + ("ipad", "29x29", "1x", 29, {}), + ("ipad", "29x29", "2x", 58, {}), + ("ipad", "40x40", "1x", 40, {}), + ("ipad", "40x40", "2x", 80, {}), + ("ipad", "50x50", "1x", 50, {}), + ("ipad", "50x50", "2x", 100, {}), + ("ipad", "72x72", "1x", 72, {}), + ("ipad", "72x72", "2x", 144, {}), + ("ipad", "76x76", "1x", 76, {}), + ("ipad", "76x76", "2x", 152, {}), + ("ipad", "83.5x83.5", "2x", 167, {}), + ("ios-marketing", "1024x1024", "1x", 1024, {}), +] + +MAC_ROWS = [ + ("mac", "16x16", "1x", 16, {}), + ("mac", "16x16", "2x", 32, {}), + ("mac", "32x32", "1x", 32, {}), + ("mac", "32x32", "2x", 64, {}), + ("mac", "128x128", "1x", 128, {}), + ("mac", "128x128", "2x", 256, {}), + ("mac", "256x256", "1x", 256, {}), + ("mac", "256x256", "2x", 512, {}), + ("mac", "512x512", "1x", 512, {}), + ("mac", "512x512", "2x", 1024, {}), +] + +WATCH_ROWS = [ + ("watch", "24x24", "2x", 48, {"role": "notificationCenter", "subtype": "38mm"}), + ("watch", "27.5x27.5", "2x", 55, {"role": "notificationCenter", "subtype": "42mm"}), + ("watch", "33x33", "2x", 66, {"role": "notificationCenter", "subtype": "45mm"}), + ("watch", "29x29", "2x", 58, {"role": "companionSettings"}), + ("watch", "29x29", "3x", 87, {"role": "companionSettings"}), + ("watch", "40x40", "2x", 80, {"role": "appLauncher", "subtype": "38mm"}), + ("watch", "44x44", "2x", 88, {"role": "appLauncher", "subtype": "40mm"}), + ("watch", "46x46", "2x", 92, {"role": "appLauncher", "subtype": "41mm"}), + ("watch", "50x50", "2x", 100, {"role": "appLauncher", "subtype": "44mm"}), + ("watch", "51x51", "2x", 102, {"role": "appLauncher", "subtype": "45mm"}), + ("watch", "54x54", "2x", 108, {"role": "appLauncher", "subtype": "49mm"}), + ("watch", "86x86", "2x", 172, {"role": "quickLook", "subtype": "38mm"}), + ("watch", "98x98", "2x", 196, {"role": "quickLook", "subtype": "42mm"}), + ("watch", "108x108", "2x", 216, {"role": "quickLook", "subtype": "44mm"}), + ("watch", "117x117", "2x", 234, {"role": "quickLook", "subtype": "45mm"}), + ("watch", "129x129", "2x", 258, {"role": "quickLook", "subtype": "49mm"}), + ("watch-marketing", "1024x1024", "1x", 1024, {}), +] + +ANDROID_MIPMAPS = { + "mipmap-mdpi": 48, + "mipmap-hdpi": 72, + "mipmap-xhdpi": 96, + "mipmap-xxhdpi": 144, + "mipmap-xxxhdpi": 192, +} + +LINUX_SIZES = [16, 24, 32, 48, 64, 128, 256, 512] + + +def run(args: list[str]) -> None: + subprocess.run(args, cwd=ROOT, check=True) + + +def output(args: list[str]) -> str: + return subprocess.check_output(args, cwd=ROOT, text=True).strip() + + +def write_text(path: Path, text: str) -> None: + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text(text, encoding="utf-8") + + +def write_json(path: Path, value: object) -> None: + write_text(path, json.dumps(value, indent=2) + "\n") + + +def variant(asset_id: str) -> tuple[str, str, str, str]: + for item in VARIANTS: + if item[0] == asset_id: + return item + raise KeyError(asset_id) + + +def master_path(asset_id: str) -> Path: + return PANEL_DIR / f"{asset_id}.png" + + +def extract_masters(sheet: Path) -> None: + PANEL_DIR.mkdir(parents=True, exist_ok=True) + shutil.copyfile(sheet, PANEL_DIR / "source-sheet.png") + for asset_id, (x, y, w, h) in EXTRACTION_CELLS.items(): + tmp = PANEL_DIR / f".{asset_id}-trim.png" + dest = master_path(asset_id) + run( + [ + "magick", + str(sheet), + "-crop", + f"{w}x{h}+{x}+{y}", + "-fuzz", + "8%", + "-trim", + "+repage", + str(tmp), + ] + ) + geometry = output(["magick", str(tmp), "-format", "%w %h", "info:"]) + width, height = [int(part) for part in geometry.split()] + extent = max(width, height) + run( + [ + "magick", + str(tmp), + "-alpha", + "set", + "-fuzz", + "6%", + "-fill", + "none", + "-draw", + "color 0,0 floodfill", + "-draw", + f"color {width - 1},0 floodfill", + "-draw", + f"color 0,{height - 1} floodfill", + "-draw", + f"color {width - 1},{height - 1} floodfill", + "-background", + "none", + "-gravity", + "center", + "-extent", + f"{extent}x{extent}", + "-resize", + "1024x1024!", + "(", + "-size", + "1024x1024", + "xc:none", + "-fill", + "white", + "-draw", + "roundrectangle 10,10 1013,1013 166,166", + ")", + "-compose", + "DstIn", + "-composite", + "-strip", + f"PNG32:{dest}", + ] + ) + tmp.unlink() + + +def ensure_masters() -> None: + missing = [asset_id for asset_id, *_ in VARIANTS if not master_path(asset_id).exists()] + if missing: + raise SystemExit(f"missing panel masters: {', '.join(missing)}") + + +def clean_generated() -> None: + APPICON_SET.mkdir(parents=True, exist_ok=True) + for path in APPICON_SET.glob("*.png"): + path.unlink() + for path in APPLE_ASSETS.glob("BurrowPanel*.appiconset"): + shutil.rmtree(path) + for path in APPLE_ASSETS.glob("BurrowPanel*Preview.imageset"): + shutil.rmtree(path) + shutil.rmtree(WATCHOS_BRAND_APPICON_SET, ignore_errors=True) + + low_res = BRAND / "low-res" + low_res.mkdir(parents=True, exist_ok=True) + for path in low_res.glob("*.png"): + path.unlink() + report = low_res / "report.csv" + if report.exists(): + report.unlink() + + for folder in ANDROID_MIPMAPS: + shutil.rmtree(ANDROID_RES / folder, ignore_errors=True) + + for size in LINUX_SIZES: + shutil.rmtree(GTK_ICONS / str(size), ignore_errors=True) + + for path in PANEL_DIR.glob("*-preview.png"): + path.unlink() + preview = PANEL_DIR / "preview-strip.png" + if preview.exists(): + preview.unlink() + + +def render_png(source: Path, dest: Path, size: int, *, png32: bool = True) -> None: + dest.parent.mkdir(parents=True, exist_ok=True) + prefix = "PNG32:" if png32 else "PNG24:" + run( + [ + "magick", + str(source), + "-resize", + f"{size}x{size}!", + "-strip", + f"{prefix}{dest}", + ] + ) + + +def image_entry(idiom: str, size: str, scale: str, filename: str, extra: dict[str, str]) -> dict[str, str]: + row = {"filename": filename, "idiom": idiom, "scale": scale, "size": size} + row.update(extra) + return row + + +def write_appicon_contents(path: Path, rows: list[dict[str, str]]) -> None: + write_json(path / "Contents.json", {"images": rows, "info": {"author": "xcode", "version": 1}}) + + +def generate_appicon_set( + path: Path, + source: Path, + prefix: str, + rows_def: list[tuple[str, str, str, int, dict[str, str]]], +) -> list[dict[str, str]]: + path.mkdir(parents=True, exist_ok=True) + rows = [] + rendered: set[tuple[str, int]] = set() + for idiom, size_label, scale, pixels, extra in rows_def: + filename = f"{prefix}-{pixels}.png" + rows.append(image_entry(idiom, size_label, scale, filename, extra)) + key = (filename, pixels) + if key not in rendered: + render_png(source, path / filename, pixels) + rendered.add(key) + return rows + + +def generate_apple_assets() -> None: + primary_rows = [] + primary_rows.extend(generate_appicon_set(APPICON_SET, master_path(PRIMARY_IOS), "ios-panel-01", IOS_ROWS)) + primary_rows.extend(generate_appicon_set(APPICON_SET, master_path(PRIMARY_MACOS), "mac-panel-05", MAC_ROWS)) + write_appicon_contents(APPICON_SET, primary_rows) + + watch_rows = generate_appicon_set( + WATCHOS_BRAND_APPICON_SET, + master_path(PRIMARY_WATCHOS), + "watch-panel-03", + WATCH_ROWS, + ) + write_appicon_contents(WATCHOS_BRAND_APPICON_SET, watch_rows) + + for asset_id, asset_name, _, _ in VARIANTS[1:]: + set_path = APPLE_ASSETS / f"{asset_name}.appiconset" + rows = generate_appicon_set(set_path, master_path(asset_id), asset_name, IOS_ROWS) + write_appicon_contents(set_path, rows) + + for asset_id, asset_name, _, _ in VARIANTS: + preview_dir = APPLE_ASSETS / f"{asset_name}Preview.imageset" + preview_dir.mkdir(parents=True, exist_ok=True) + render_png(master_path(asset_id), preview_dir / "preview.png", 256) + write_json( + preview_dir / "Contents.json", + { + "images": [{"filename": "preview.png", "idiom": "universal", "scale": "1x"}], + "info": {"author": "xcode", "version": 1}, + }, + ) + + +def generate_brand_outputs() -> None: + primary = master_path(PRIMARY_IOS) + render_png(primary, BRAND / "burrow-owl-icon-master.png", 1024) + render_png(primary, BRAND / "burrowing-owl-icon-flat.png", 1024) + render_png(primary, BRAND / "Burrow.icon" / "Assets" / "owl-figure.png", 1024) + render_png(primary, BRAND / "Burrow.icon" / "Assets" / "owl-body.png", 1024) + transparent = BRAND / "Burrow.icon" / "Assets" / "transparent.png" + run(["magick", "-size", "1024x1024", "xc:none", f"PNG32:{transparent}"]) + for name in ["burrow-ground", "owl-face", "owl-legs", "owl-spots"]: + shutil.copyfile(transparent, BRAND / "Burrow.icon" / "Assets" / f"{name}.png") + transparent.unlink() + write_json( + BRAND / "Burrow.icon" / "icon.json", + { + "fill": {"type": "solid", "color": "#00000000"}, + "layers": [ + { + "blend-mode": "normal", + "image-name": "owl-figure.png", + "name": "panel-raster", + "position": {"scale": 1, "translation-in-points": [0, 0]}, + } + ], + }, + ) + + low_res = BRAND / "low-res" + report_rows = ["size,colors,gray_stddev,status"] + preview_inputs = [] + pixel_inputs = [] + for size in [16, 20, 24, 29, 32, 40, 48, 64, 80, 128, 256, 1024]: + icon = low_res / f"burrow-icon-{size}.png" + render_png(primary, icon, size) + if size <= 256: + colors = output(["magick", str(icon), "-format", "%k", "info:"]) + stddev = output(["magick", str(icon), "-colorspace", "Gray", "-format", "%[fx:standard_deviation]", "info:"]) + status = "ok" if int(colors) >= 8 and float(stddev) >= 0.025 else "check" + report_rows.append(f"{size},{colors},{stddev},{status}") + preview = low_res / f"preview-{size}.png" + filter_name = "Point" if size <= 32 else "Lanczos" + run(["magick", str(icon), "-filter", filter_name, "-resize", "128x128", str(preview)]) + preview_inputs.append(preview) + if size <= 32: + pixel = low_res / f"pixel-preview-{size}.png" + run(["magick", str(icon), "-filter", "Point", "-resize", "128x128", str(pixel)]) + pixel_inputs.append(pixel) + + write_text(low_res / "report.csv", "\n".join(report_rows) + "\n") + preview_inputs.reverse() + pixel_inputs.reverse() + run(["magick", "-background", "#202020", "-gravity", "center", *map(str, preview_inputs), "+append", str(low_res / "preview-strip.png")]) + run(["magick", "-background", "#202020", "-gravity", "center", *map(str, pixel_inputs), "+append", str(low_res / "pixel-preview-strip.png")]) + + variant_previews = [] + for asset_id, _, _, _ in VARIANTS: + preview = PANEL_DIR / f"{asset_id}-preview.png" + render_png(master_path(asset_id), preview, 256) + variant_previews.append(preview) + run(["magick", "-background", "#fbfaf6", "-gravity", "center", *map(str, variant_previews), "+append", str(PANEL_DIR / "preview-strip.png")]) + + lines = [ + "# Burrow Raster Panel Icon Variants", + "", + "The six PNG masters here are cropped from `source-sheet.png` and are the", + "locked app icon source. Do not redraw them; regenerate package assets from", + "these rasters.", + "", + "| Variant | Use | Source |", + "| --- | --- | --- |", + ] + for asset_id, _, title, source in VARIANTS: + uses = [] + if asset_id == PRIMARY_IOS: + uses.append("iOS primary") + else: + uses.append("iOS alternate") + if asset_id == PRIMARY_MACOS: + uses.append("macOS primary") + if asset_id == PRIMARY_WATCHOS: + uses.append("watchOS primary") + if asset_id == PRIMARY_ANDROID: + uses.append("Android primary") + if asset_id == PRIMARY_LINUX: + uses.append("Linux primary") + use_text = ", ".join(uses) + lines.append(f"| `{asset_id}` | {use_text} | {title}, {source} |") + lines.append("") + lines.append("`preview-strip.png` shows the six raster masters side by side.") + write_text(PANEL_DIR / "README.md", "\n".join(lines) + "\n") + + +def generate_android_assets() -> None: + primary = master_path(PRIMARY_ANDROID) + for folder, size in ANDROID_MIPMAPS.items(): + out_dir = ANDROID_RES / folder + render_png(primary, out_dir / "ic_launcher.png", size) + render_png(primary, out_dir / "ic_launcher_round.png", size) + render_png(primary, ROOT / "store-metadata" / "android" / "icon.png", 512) + + +def generate_linux_assets() -> None: + primary = master_path(PRIMARY_LINUX) + for size in LINUX_SIZES: + render_png(primary, GTK_ICONS / str(size) / "apps" / "burrow-gtk.png", size) + + +def main(argv: list[str]) -> None: + if len(argv) == 3 and argv[1] == "--extract-from": + extract_masters(Path(argv[2])) + elif len(argv) != 1: + raise SystemExit("usage: generate-brand-icons.py [--extract-from /path/to/panel-sheet.png]") + + ensure_masters() + clean_generated() + generate_apple_assets() + generate_brand_outputs() + generate_android_assets() + generate_linux_assets() + + +if __name__ == "__main__": + main(sys.argv) diff --git a/burrow-gtk/data/icons/hicolor/128/apps/burrow-gtk.png b/burrow-gtk/data/icons/hicolor/128/apps/burrow-gtk.png new file mode 100644 index 0000000..54b67da Binary files /dev/null and b/burrow-gtk/data/icons/hicolor/128/apps/burrow-gtk.png differ diff --git a/burrow-gtk/data/icons/hicolor/16/apps/burrow-gtk.png b/burrow-gtk/data/icons/hicolor/16/apps/burrow-gtk.png new file mode 100644 index 0000000..cf418ae Binary files /dev/null and b/burrow-gtk/data/icons/hicolor/16/apps/burrow-gtk.png differ diff --git a/burrow-gtk/data/icons/hicolor/24/apps/burrow-gtk.png b/burrow-gtk/data/icons/hicolor/24/apps/burrow-gtk.png new file mode 100644 index 0000000..cfe8e33 Binary files /dev/null and b/burrow-gtk/data/icons/hicolor/24/apps/burrow-gtk.png differ diff --git a/burrow-gtk/data/icons/hicolor/256/apps/burrow-gtk.png b/burrow-gtk/data/icons/hicolor/256/apps/burrow-gtk.png new file mode 100644 index 0000000..561abcb Binary files /dev/null and b/burrow-gtk/data/icons/hicolor/256/apps/burrow-gtk.png differ diff --git a/burrow-gtk/data/icons/hicolor/32/apps/burrow-gtk.png b/burrow-gtk/data/icons/hicolor/32/apps/burrow-gtk.png new file mode 100644 index 0000000..52e7a25 Binary files /dev/null and b/burrow-gtk/data/icons/hicolor/32/apps/burrow-gtk.png differ diff --git a/burrow-gtk/data/icons/hicolor/48/apps/burrow-gtk.png b/burrow-gtk/data/icons/hicolor/48/apps/burrow-gtk.png new file mode 100644 index 0000000..68cf88b Binary files /dev/null and b/burrow-gtk/data/icons/hicolor/48/apps/burrow-gtk.png differ diff --git a/burrow-gtk/data/icons/hicolor/512/apps/burrow-gtk.png b/burrow-gtk/data/icons/hicolor/512/apps/burrow-gtk.png new file mode 100644 index 0000000..c5997ae Binary files /dev/null and b/burrow-gtk/data/icons/hicolor/512/apps/burrow-gtk.png differ diff --git a/burrow-gtk/data/icons/hicolor/64/apps/burrow-gtk.png b/burrow-gtk/data/icons/hicolor/64/apps/burrow-gtk.png new file mode 100644 index 0000000..46872b4 Binary files /dev/null and b/burrow-gtk/data/icons/hicolor/64/apps/burrow-gtk.png differ diff --git a/burrow-gtk/data/icons/hicolor/scalable/apps/burrow-gtk.svg b/burrow-gtk/data/icons/hicolor/scalable/apps/burrow-gtk.svg deleted file mode 100644 index 2acb475..0000000 --- a/burrow-gtk/data/icons/hicolor/scalable/apps/burrow-gtk.svg +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/burrow-gtk/data/meson.build b/burrow-gtk/data/meson.build index 2c3ffd8..4abb3c5 100644 --- a/burrow-gtk/data/meson.build +++ b/burrow-gtk/data/meson.build @@ -77,11 +77,14 @@ if appstream_util.found() ) endif -install_data( - 'icons/hicolor/scalable/apps/' + app_name + '.svg', - install_dir: datadir / 'icons' / 'hicolor' / 'scalable' / 'apps', - rename: app_id + '.svg', -) +foreach size : ['16', '24', '32', '48', '64', '128', '256', '512'] + size_dir = size + 'x' + size + install_data( + 'icons/hicolor/' + size + '/apps/' + app_name + '.png', + install_dir: datadir / 'icons' / 'hicolor' / size_dir / 'apps', + rename: app_id + '.png', + ) +endforeach install_data( 'icons/hicolor/symbolic/apps/' + app_name + '-symbolic.svg', diff --git a/design/brand/Burrow.icon/Assets/burrow-ground.png b/design/brand/Burrow.icon/Assets/burrow-ground.png index c553471..a39c507 100644 Binary files a/design/brand/Burrow.icon/Assets/burrow-ground.png and b/design/brand/Burrow.icon/Assets/burrow-ground.png differ diff --git a/design/brand/Burrow.icon/Assets/owl-body.png b/design/brand/Burrow.icon/Assets/owl-body.png index 6c81fa5..e335771 100644 Binary files a/design/brand/Burrow.icon/Assets/owl-body.png and b/design/brand/Burrow.icon/Assets/owl-body.png differ diff --git a/design/brand/Burrow.icon/Assets/owl-face.png b/design/brand/Burrow.icon/Assets/owl-face.png index b224f80..a39c507 100644 Binary files a/design/brand/Burrow.icon/Assets/owl-face.png and b/design/brand/Burrow.icon/Assets/owl-face.png differ diff --git a/design/brand/Burrow.icon/Assets/owl-figure.png b/design/brand/Burrow.icon/Assets/owl-figure.png index c50f498..e335771 100644 Binary files a/design/brand/Burrow.icon/Assets/owl-figure.png and b/design/brand/Burrow.icon/Assets/owl-figure.png differ diff --git a/design/brand/Burrow.icon/Assets/owl-legs.png b/design/brand/Burrow.icon/Assets/owl-legs.png index 9206c7b..a39c507 100644 Binary files a/design/brand/Burrow.icon/Assets/owl-legs.png and b/design/brand/Burrow.icon/Assets/owl-legs.png differ diff --git a/design/brand/Burrow.icon/Assets/owl-spots.png b/design/brand/Burrow.icon/Assets/owl-spots.png index f61fce1..a39c507 100644 Binary files a/design/brand/Burrow.icon/Assets/owl-spots.png and b/design/brand/Burrow.icon/Assets/owl-spots.png differ diff --git a/design/brand/Burrow.icon/icon.json b/design/brand/Burrow.icon/icon.json index d12785f..b1e196a 100644 --- a/design/brand/Burrow.icon/icon.json +++ b/design/brand/Burrow.icon/icon.json @@ -1,64 +1,20 @@ { - "fill" : { - "automatic-gradient" : "srgb:0.09020,0.06275,0.04314,1.00000" + "fill": { + "type": "solid", + "color": "#00000000" }, - "groups" : [ + "layers": [ { - "layers" : [ - { - "glass" : false, - "hidden" : false, - "image-name" : "burrow-ground.png", - "name" : "burrow-ground", - "position" : { - "scale" : 1, - "translation-in-points" : [ - 0, - 18 - ] - } - }, - { - "glass" : false, - "hidden" : false, - "image-name" : "owl-figure.png", - "name" : "owl-figure", - "position" : { - "scale" : 1.16, - "translation-in-points" : [ - 0, - 18 - ] - } - }, - { - "glass" : false, - "hidden" : false, - "image-name" : "owl-legs.png", - "name" : "owl-legs", - "position" : { - "scale" : 1.16, - "translation-in-points" : [ - 0, - 18 - ] - } - } - ], - "shadow" : { - "kind" : "neutral", - "opacity" : 0.36 - }, - "translucency" : { - "enabled" : false, - "value" : 0 + "blend-mode": "normal", + "image-name": "owl-figure.png", + "name": "panel-raster", + "position": { + "scale": 1, + "translation-in-points": [ + 0, + 0 + ] } } - ], - "supported-platforms" : { - "circles" : [ - "watchOS" - ], - "squares" : "shared" - } + ] } diff --git a/design/brand/README.md b/design/brand/README.md index 2bef527..30094e3 100644 --- a/design/brand/README.md +++ b/design/brand/README.md @@ -1,50 +1,46 @@ # Burrow Brand Source -`burrow-owl-icon-master.png` is the current generated master for the Burrow app -icon. The mark centers a leg-forward burrowing owl in a dark brown/black field -with minimal warm brown and gold accents. +`design/brand/panel-variants/source-sheet.png` is the locked icon style sheet. +The six cropped PNG masters in `design/brand/panel-variants/` are the canonical +app icon source. Do not redraw these as SVG; regenerate platform outputs from +the raster panel masters. -The editable source is split by intent: +`Scripts/generate-brand-icons.py` owns all generated outputs: -- `burrowing-owl-icon-source.svg` is the human-readable vector source. -- `icon-layers/*.svg` are the transparent source layers used to regenerate the - Icon Composer package. -- `Burrow.icon` is the Icon Composer document. Keep it to three broad raster - layers: `burrow-ground`, `owl-figure`, and `owl-legs`. -- `burrowing-owl-concept-v2.png` is reference art only; do not use it directly - as an app icon. +- `Apple/UI/Assets.xcassets/AppIcon.appiconset`: primary iOS and macOS app + icons at exact asset-catalog dimensions. +- `Apple/UI/Assets.xcassets/BurrowPanel*.appiconset`: iOS alternate app icons. +- `Apple/UI/Assets.xcassets/BurrowPanel*Preview.imageset`: in-app selector + previews. +- `design/brand/watchos/AppIcon.appiconset`: watchOS reference app icon catalog + using the selected watchOS panel. +- `Android/app/src/main/res/mipmap-*`: Android launcher PNGs. +- `store-metadata/android/icon.png`: Google Play icon. +- `burrow-gtk/data/icons/hicolor/{16,24,32,48,64,128,256,512}/apps`: Linux + hicolor PNGs. +- `design/brand/low-res`: low-resolution QA exports and preview strips. -That layer count is intentional. The identifying cue is the long Burrowing Owl -leg silhouette, so Icon Composer should receive broad shape planes instead of -small decorative SVG layers. Face and spot details are flattened into -`owl-figure.png`; the legs stay in the front layer so they survive small sizes. +Platform picks: -Regenerate the Icon Composer layer assets and Apple app icon PNGs with: +- iOS primary: `panel-01-guardian` +- iOS alternates: `panel-02-field`, `panel-03-burrow`, `panel-04-sentinel`, + `panel-05-stride`, `panel-06-post` +- macOS primary: `panel-05-stride` +- watchOS primary: `panel-03-burrow` +- Android primary: `panel-01-guardian` +- Linux primary: `panel-01-guardian` + +Regenerate all package assets from existing masters with: ```bash -for src in design/brand/icon-layers/*.svg; do - name="$(basename "$src" .svg)" - sips -s format png "$src" --out "design/brand/Burrow.icon/Assets/${name}.png" >/dev/null -done -magick \ - design/brand/Burrow.icon/Assets/owl-body.png \ - design/brand/Burrow.icon/Assets/owl-face.png \ - design/brand/Burrow.icon/Assets/owl-spots.png \ - -background none -layers merge -strip \ - PNG32:design/brand/Burrow.icon/Assets/owl-figure.png -"/Applications/Xcode/Xcode.app/Contents/Applications/Icon Composer.app/Contents/Executables/ictool" \ - design/brand/Burrow.icon \ - --export-image \ - --output-file design/brand/burrow-owl-icon-master.png \ - --platform iOS \ - --rendition Default \ - --width 1024 \ - --height 1024 \ - --scale 1 -for f in Apple/UI/Assets.xcassets/AppIcon.appiconset/*.png; do - size="$(basename "$f" .png)" - magick design/brand/burrow-owl-icon-master.png -colorspace sRGB -resize "${size}x${size}!" -strip "PNG24:$f" -done +Scripts/generate-brand-icons.py +``` + +If the locked source sheet changes, extract fresh 1024px masters and regenerate +with: + +```bash +Scripts/generate-brand-icons.py --extract-from /path/to/source-sheet.png ``` Run low-resolution export QA with: @@ -53,12 +49,9 @@ Run low-resolution export QA with: Scripts/check-brand-icon-lowres.sh ``` -The script writes `design/brand/low-res/`, including: +Review these after every icon change: -- `burrow-icon-{16,20,24,29,32,40,48,64,80,128,256}.png` -- `preview-strip.png`, a 256-to-16px visual strip scaled up for inspection -- `pixel-preview-strip.png`, a nearest-neighbor strip for 32px and below -- `report.csv`, with color-count and grayscale-contrast checks - -Sizes that overlap `Apple/UI/Assets.xcassets/AppIcon.appiconset/` should remain -pixel-identical to the generated app catalog assets. +- `design/brand/panel-variants/preview-strip.png` +- `design/brand/low-res/preview-strip.png` +- `design/brand/low-res/pixel-preview-strip.png` +- `design/brand/low-res/report.csv` diff --git a/design/brand/burrow-owl-icon-master.png b/design/brand/burrow-owl-icon-master.png index 45b9ccd..e335771 100644 Binary files a/design/brand/burrow-owl-icon-master.png and b/design/brand/burrow-owl-icon-master.png differ diff --git a/design/brand/burrowing-owl-icon-flat.png b/design/brand/burrowing-owl-icon-flat.png index 2b2afd9..e335771 100644 Binary files a/design/brand/burrowing-owl-icon-flat.png and b/design/brand/burrowing-owl-icon-flat.png differ diff --git a/design/brand/burrowing-owl-icon-source.svg b/design/brand/burrowing-owl-icon-source.svg deleted file mode 100644 index 1b05855..0000000 --- a/design/brand/burrowing-owl-icon-source.svg +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/design/brand/icon-layers/burrow-ground.svg b/design/brand/icon-layers/burrow-ground.svg deleted file mode 100644 index 66a987d..0000000 --- a/design/brand/icon-layers/burrow-ground.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/design/brand/icon-layers/owl-body.svg b/design/brand/icon-layers/owl-body.svg deleted file mode 100644 index 2df3e32..0000000 --- a/design/brand/icon-layers/owl-body.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/design/brand/icon-layers/owl-face.svg b/design/brand/icon-layers/owl-face.svg deleted file mode 100644 index ddf6c83..0000000 --- a/design/brand/icon-layers/owl-face.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/design/brand/icon-layers/owl-legs.svg b/design/brand/icon-layers/owl-legs.svg deleted file mode 100644 index f2bf950..0000000 --- a/design/brand/icon-layers/owl-legs.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/design/brand/icon-layers/owl-spots.svg b/design/brand/icon-layers/owl-spots.svg deleted file mode 100644 index 8898e0b..0000000 --- a/design/brand/icon-layers/owl-spots.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/design/brand/low-res/burrow-icon-1024.png b/design/brand/low-res/burrow-icon-1024.png index 1cb1d16..e335771 100644 Binary files a/design/brand/low-res/burrow-icon-1024.png and b/design/brand/low-res/burrow-icon-1024.png differ diff --git a/design/brand/low-res/burrow-icon-128.png b/design/brand/low-res/burrow-icon-128.png index 4bed9b5..54b67da 100644 Binary files a/design/brand/low-res/burrow-icon-128.png and b/design/brand/low-res/burrow-icon-128.png differ diff --git a/design/brand/low-res/burrow-icon-16.png b/design/brand/low-res/burrow-icon-16.png index 09d45c2..cf418ae 100644 Binary files a/design/brand/low-res/burrow-icon-16.png and b/design/brand/low-res/burrow-icon-16.png differ diff --git a/design/brand/low-res/burrow-icon-20.png b/design/brand/low-res/burrow-icon-20.png index 3235829..bd3cc95 100644 Binary files a/design/brand/low-res/burrow-icon-20.png and b/design/brand/low-res/burrow-icon-20.png differ diff --git a/design/brand/low-res/burrow-icon-24.png b/design/brand/low-res/burrow-icon-24.png index 447de5c..cfe8e33 100644 Binary files a/design/brand/low-res/burrow-icon-24.png and b/design/brand/low-res/burrow-icon-24.png differ diff --git a/design/brand/low-res/burrow-icon-256.png b/design/brand/low-res/burrow-icon-256.png index 77b832e..561abcb 100644 Binary files a/design/brand/low-res/burrow-icon-256.png and b/design/brand/low-res/burrow-icon-256.png differ diff --git a/design/brand/low-res/burrow-icon-29.png b/design/brand/low-res/burrow-icon-29.png index cc338d6..227cb6c 100644 Binary files a/design/brand/low-res/burrow-icon-29.png and b/design/brand/low-res/burrow-icon-29.png differ diff --git a/design/brand/low-res/burrow-icon-32.png b/design/brand/low-res/burrow-icon-32.png index c54ae5b..52e7a25 100644 Binary files a/design/brand/low-res/burrow-icon-32.png and b/design/brand/low-res/burrow-icon-32.png differ diff --git a/design/brand/low-res/burrow-icon-40.png b/design/brand/low-res/burrow-icon-40.png index f08ed94..c0ef687 100644 Binary files a/design/brand/low-res/burrow-icon-40.png and b/design/brand/low-res/burrow-icon-40.png differ diff --git a/design/brand/low-res/burrow-icon-48.png b/design/brand/low-res/burrow-icon-48.png index 4865a7f..68cf88b 100644 Binary files a/design/brand/low-res/burrow-icon-48.png and b/design/brand/low-res/burrow-icon-48.png differ diff --git a/design/brand/low-res/burrow-icon-64.png b/design/brand/low-res/burrow-icon-64.png index e24834b..46872b4 100644 Binary files a/design/brand/low-res/burrow-icon-64.png and b/design/brand/low-res/burrow-icon-64.png differ diff --git a/design/brand/low-res/burrow-icon-80.png b/design/brand/low-res/burrow-icon-80.png index 115867a..ecf97e9 100644 Binary files a/design/brand/low-res/burrow-icon-80.png and b/design/brand/low-res/burrow-icon-80.png differ diff --git a/design/brand/low-res/pixel-preview-16.png b/design/brand/low-res/pixel-preview-16.png index c41ab9e..54cb3a4 100644 Binary files a/design/brand/low-res/pixel-preview-16.png and b/design/brand/low-res/pixel-preview-16.png differ diff --git a/design/brand/low-res/pixel-preview-20.png b/design/brand/low-res/pixel-preview-20.png index f0f29c5..3064ac7 100644 Binary files a/design/brand/low-res/pixel-preview-20.png and b/design/brand/low-res/pixel-preview-20.png differ diff --git a/design/brand/low-res/pixel-preview-24.png b/design/brand/low-res/pixel-preview-24.png index a2ee4e6..139a265 100644 Binary files a/design/brand/low-res/pixel-preview-24.png and b/design/brand/low-res/pixel-preview-24.png differ diff --git a/design/brand/low-res/pixel-preview-29.png b/design/brand/low-res/pixel-preview-29.png index 97a9d17..e25f0ad 100644 Binary files a/design/brand/low-res/pixel-preview-29.png and b/design/brand/low-res/pixel-preview-29.png differ diff --git a/design/brand/low-res/pixel-preview-32.png b/design/brand/low-res/pixel-preview-32.png index 431d3fd..e997e05 100644 Binary files a/design/brand/low-res/pixel-preview-32.png and b/design/brand/low-res/pixel-preview-32.png differ diff --git a/design/brand/low-res/pixel-preview-strip.png b/design/brand/low-res/pixel-preview-strip.png index 03be049..83a7060 100644 Binary files a/design/brand/low-res/pixel-preview-strip.png and b/design/brand/low-res/pixel-preview-strip.png differ diff --git a/design/brand/low-res/preview-128.png b/design/brand/low-res/preview-128.png index 2a09dca..41d405f 100644 Binary files a/design/brand/low-res/preview-128.png and b/design/brand/low-res/preview-128.png differ diff --git a/design/brand/low-res/preview-16.png b/design/brand/low-res/preview-16.png index c41ab9e..54cb3a4 100644 Binary files a/design/brand/low-res/preview-16.png and b/design/brand/low-res/preview-16.png differ diff --git a/design/brand/low-res/preview-20.png b/design/brand/low-res/preview-20.png index f0f29c5..3064ac7 100644 Binary files a/design/brand/low-res/preview-20.png and b/design/brand/low-res/preview-20.png differ diff --git a/design/brand/low-res/preview-24.png b/design/brand/low-res/preview-24.png index a2ee4e6..139a265 100644 Binary files a/design/brand/low-res/preview-24.png and b/design/brand/low-res/preview-24.png differ diff --git a/design/brand/low-res/preview-256.png b/design/brand/low-res/preview-256.png index 165d830..474fa4d 100644 Binary files a/design/brand/low-res/preview-256.png and b/design/brand/low-res/preview-256.png differ diff --git a/design/brand/low-res/preview-29.png b/design/brand/low-res/preview-29.png index 97a9d17..e25f0ad 100644 Binary files a/design/brand/low-res/preview-29.png and b/design/brand/low-res/preview-29.png differ diff --git a/design/brand/low-res/preview-32.png b/design/brand/low-res/preview-32.png index 431d3fd..e997e05 100644 Binary files a/design/brand/low-res/preview-32.png and b/design/brand/low-res/preview-32.png differ diff --git a/design/brand/low-res/preview-40.png b/design/brand/low-res/preview-40.png index a019817..5938193 100644 Binary files a/design/brand/low-res/preview-40.png and b/design/brand/low-res/preview-40.png differ diff --git a/design/brand/low-res/preview-48.png b/design/brand/low-res/preview-48.png index 9ee2acb..940f132 100644 Binary files a/design/brand/low-res/preview-48.png and b/design/brand/low-res/preview-48.png differ diff --git a/design/brand/low-res/preview-64.png b/design/brand/low-res/preview-64.png index b76ea8a..4f563f0 100644 Binary files a/design/brand/low-res/preview-64.png and b/design/brand/low-res/preview-64.png differ diff --git a/design/brand/low-res/preview-80.png b/design/brand/low-res/preview-80.png index 94eec1e..4524c81 100644 Binary files a/design/brand/low-res/preview-80.png and b/design/brand/low-res/preview-80.png differ diff --git a/design/brand/low-res/preview-strip.png b/design/brand/low-res/preview-strip.png index 0e1ab89..ab83302 100644 Binary files a/design/brand/low-res/preview-strip.png and b/design/brand/low-res/preview-strip.png differ diff --git a/design/brand/low-res/report.csv b/design/brand/low-res/report.csv index 5d7528f..7205aeb 100644 --- a/design/brand/low-res/report.csv +++ b/design/brand/low-res/report.csv @@ -1,12 +1,12 @@ size,colors,gray_stddev,status -16,194,0.109923,ok -20,260,0.101566,ok -24,358,0.0940771,ok -29,475,0.103601,ok -32,541,0.0941397,ok -40,763,0.129173,ok -48,963,0.133595,ok -64,1399,0.149997,ok -80,1804,0.163688,ok -128,2922,0.180054,ok -256,5348,0.19461,ok +16,182,0.135534,ok +20,247,0.142914,ok +24,325,0.157326,ok +29,436,0.156951,ok +32,504,0.164219,ok +40,691,0.173161,ok +48,868,0.179509,ok +64,1287,0.190366,ok +80,1701,0.198425,ok +128,3115,0.210773,ok +256,6728,0.212284,ok diff --git a/design/brand/panel-variants/README.md b/design/brand/panel-variants/README.md new file mode 100644 index 0000000..ca368bf --- /dev/null +++ b/design/brand/panel-variants/README.md @@ -0,0 +1,16 @@ +# Burrow Raster Panel Icon Variants + +The six PNG masters here are cropped from `source-sheet.png` and are the +locked app icon source. Do not redraw them; regenerate package assets from +these rasters. + +| Variant | Use | Source | +| --- | --- | --- | +| `panel-01-guardian` | iOS primary, Android primary, Linux primary | Guardian, top-left panel | +| `panel-02-field` | iOS alternate | Field, top-middle panel | +| `panel-03-burrow` | iOS alternate, watchOS primary | Burrow, top-right panel | +| `panel-04-sentinel` | iOS alternate | Sentinel, bottom-left panel | +| `panel-05-stride` | iOS alternate, macOS primary | Stride, bottom-middle panel | +| `panel-06-post` | iOS alternate | Post, bottom-right panel | + +`preview-strip.png` shows the six raster masters side by side. diff --git a/design/brand/panel-variants/panel-01-guardian-preview.png b/design/brand/panel-variants/panel-01-guardian-preview.png new file mode 100644 index 0000000..561abcb Binary files /dev/null and b/design/brand/panel-variants/panel-01-guardian-preview.png differ diff --git a/design/brand/panel-variants/panel-01-guardian.png b/design/brand/panel-variants/panel-01-guardian.png new file mode 100644 index 0000000..e335771 Binary files /dev/null and b/design/brand/panel-variants/panel-01-guardian.png differ diff --git a/design/brand/panel-variants/panel-02-field-preview.png b/design/brand/panel-variants/panel-02-field-preview.png new file mode 100644 index 0000000..f6d9feb Binary files /dev/null and b/design/brand/panel-variants/panel-02-field-preview.png differ diff --git a/design/brand/panel-variants/panel-02-field.png b/design/brand/panel-variants/panel-02-field.png new file mode 100644 index 0000000..278575e Binary files /dev/null and b/design/brand/panel-variants/panel-02-field.png differ diff --git a/design/brand/panel-variants/panel-03-burrow-preview.png b/design/brand/panel-variants/panel-03-burrow-preview.png new file mode 100644 index 0000000..76d432e Binary files /dev/null and b/design/brand/panel-variants/panel-03-burrow-preview.png differ diff --git a/design/brand/panel-variants/panel-03-burrow.png b/design/brand/panel-variants/panel-03-burrow.png new file mode 100644 index 0000000..6f40b0a Binary files /dev/null and b/design/brand/panel-variants/panel-03-burrow.png differ diff --git a/design/brand/panel-variants/panel-04-sentinel-preview.png b/design/brand/panel-variants/panel-04-sentinel-preview.png new file mode 100644 index 0000000..36b526c Binary files /dev/null and b/design/brand/panel-variants/panel-04-sentinel-preview.png differ diff --git a/design/brand/panel-variants/panel-04-sentinel.png b/design/brand/panel-variants/panel-04-sentinel.png new file mode 100644 index 0000000..4925f9f Binary files /dev/null and b/design/brand/panel-variants/panel-04-sentinel.png differ diff --git a/design/brand/panel-variants/panel-05-stride-preview.png b/design/brand/panel-variants/panel-05-stride-preview.png new file mode 100644 index 0000000..d919e9c Binary files /dev/null and b/design/brand/panel-variants/panel-05-stride-preview.png differ diff --git a/design/brand/panel-variants/panel-05-stride.png b/design/brand/panel-variants/panel-05-stride.png new file mode 100644 index 0000000..065e8b6 Binary files /dev/null and b/design/brand/panel-variants/panel-05-stride.png differ diff --git a/design/brand/panel-variants/panel-06-post-preview.png b/design/brand/panel-variants/panel-06-post-preview.png new file mode 100644 index 0000000..7c63df0 Binary files /dev/null and b/design/brand/panel-variants/panel-06-post-preview.png differ diff --git a/design/brand/panel-variants/panel-06-post.png b/design/brand/panel-variants/panel-06-post.png new file mode 100644 index 0000000..54336b2 Binary files /dev/null and b/design/brand/panel-variants/panel-06-post.png differ diff --git a/design/brand/panel-variants/preview-strip.png b/design/brand/panel-variants/preview-strip.png new file mode 100644 index 0000000..8ecc2ff Binary files /dev/null and b/design/brand/panel-variants/preview-strip.png differ diff --git a/design/brand/panel-variants/source-sheet.png b/design/brand/panel-variants/source-sheet.png new file mode 100644 index 0000000..a3b6f7f Binary files /dev/null and b/design/brand/panel-variants/source-sheet.png differ diff --git a/design/brand/watchos/AppIcon.appiconset/Contents.json b/design/brand/watchos/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..e3f5ccd --- /dev/null +++ b/design/brand/watchos/AppIcon.appiconset/Contents.json @@ -0,0 +1,140 @@ +{ + "images": [ + { + "filename": "watch-panel-03-48.png", + "idiom": "watch", + "scale": "2x", + "size": "24x24", + "role": "notificationCenter", + "subtype": "38mm" + }, + { + "filename": "watch-panel-03-55.png", + "idiom": "watch", + "scale": "2x", + "size": "27.5x27.5", + "role": "notificationCenter", + "subtype": "42mm" + }, + { + "filename": "watch-panel-03-66.png", + "idiom": "watch", + "scale": "2x", + "size": "33x33", + "role": "notificationCenter", + "subtype": "45mm" + }, + { + "filename": "watch-panel-03-58.png", + "idiom": "watch", + "scale": "2x", + "size": "29x29", + "role": "companionSettings" + }, + { + "filename": "watch-panel-03-87.png", + "idiom": "watch", + "scale": "3x", + "size": "29x29", + "role": "companionSettings" + }, + { + "filename": "watch-panel-03-80.png", + "idiom": "watch", + "scale": "2x", + "size": "40x40", + "role": "appLauncher", + "subtype": "38mm" + }, + { + "filename": "watch-panel-03-88.png", + "idiom": "watch", + "scale": "2x", + "size": "44x44", + "role": "appLauncher", + "subtype": "40mm" + }, + { + "filename": "watch-panel-03-92.png", + "idiom": "watch", + "scale": "2x", + "size": "46x46", + "role": "appLauncher", + "subtype": "41mm" + }, + { + "filename": "watch-panel-03-100.png", + "idiom": "watch", + "scale": "2x", + "size": "50x50", + "role": "appLauncher", + "subtype": "44mm" + }, + { + "filename": "watch-panel-03-102.png", + "idiom": "watch", + "scale": "2x", + "size": "51x51", + "role": "appLauncher", + "subtype": "45mm" + }, + { + "filename": "watch-panel-03-108.png", + "idiom": "watch", + "scale": "2x", + "size": "54x54", + "role": "appLauncher", + "subtype": "49mm" + }, + { + "filename": "watch-panel-03-172.png", + "idiom": "watch", + "scale": "2x", + "size": "86x86", + "role": "quickLook", + "subtype": "38mm" + }, + { + "filename": "watch-panel-03-196.png", + "idiom": "watch", + "scale": "2x", + "size": "98x98", + "role": "quickLook", + "subtype": "42mm" + }, + { + "filename": "watch-panel-03-216.png", + "idiom": "watch", + "scale": "2x", + "size": "108x108", + "role": "quickLook", + "subtype": "44mm" + }, + { + "filename": "watch-panel-03-234.png", + "idiom": "watch", + "scale": "2x", + "size": "117x117", + "role": "quickLook", + "subtype": "45mm" + }, + { + "filename": "watch-panel-03-258.png", + "idiom": "watch", + "scale": "2x", + "size": "129x129", + "role": "quickLook", + "subtype": "49mm" + }, + { + "filename": "watch-panel-03-1024.png", + "idiom": "watch-marketing", + "scale": "1x", + "size": "1024x1024" + } + ], + "info": { + "author": "xcode", + "version": 1 + } +} diff --git a/design/brand/watchos/AppIcon.appiconset/watch-panel-03-100.png b/design/brand/watchos/AppIcon.appiconset/watch-panel-03-100.png new file mode 100644 index 0000000..8d72c1b Binary files /dev/null and b/design/brand/watchos/AppIcon.appiconset/watch-panel-03-100.png differ diff --git a/design/brand/watchos/AppIcon.appiconset/watch-panel-03-102.png b/design/brand/watchos/AppIcon.appiconset/watch-panel-03-102.png new file mode 100644 index 0000000..d5ac27c Binary files /dev/null and b/design/brand/watchos/AppIcon.appiconset/watch-panel-03-102.png differ diff --git a/design/brand/watchos/AppIcon.appiconset/watch-panel-03-1024.png b/design/brand/watchos/AppIcon.appiconset/watch-panel-03-1024.png new file mode 100644 index 0000000..6f40b0a Binary files /dev/null and b/design/brand/watchos/AppIcon.appiconset/watch-panel-03-1024.png differ diff --git a/design/brand/watchos/AppIcon.appiconset/watch-panel-03-108.png b/design/brand/watchos/AppIcon.appiconset/watch-panel-03-108.png new file mode 100644 index 0000000..c9613d1 Binary files /dev/null and b/design/brand/watchos/AppIcon.appiconset/watch-panel-03-108.png differ diff --git a/design/brand/watchos/AppIcon.appiconset/watch-panel-03-172.png b/design/brand/watchos/AppIcon.appiconset/watch-panel-03-172.png new file mode 100644 index 0000000..995ec8b Binary files /dev/null and b/design/brand/watchos/AppIcon.appiconset/watch-panel-03-172.png differ diff --git a/design/brand/watchos/AppIcon.appiconset/watch-panel-03-196.png b/design/brand/watchos/AppIcon.appiconset/watch-panel-03-196.png new file mode 100644 index 0000000..676a117 Binary files /dev/null and b/design/brand/watchos/AppIcon.appiconset/watch-panel-03-196.png differ diff --git a/design/brand/watchos/AppIcon.appiconset/watch-panel-03-216.png b/design/brand/watchos/AppIcon.appiconset/watch-panel-03-216.png new file mode 100644 index 0000000..90e53cb Binary files /dev/null and b/design/brand/watchos/AppIcon.appiconset/watch-panel-03-216.png differ diff --git a/design/brand/watchos/AppIcon.appiconset/watch-panel-03-234.png b/design/brand/watchos/AppIcon.appiconset/watch-panel-03-234.png new file mode 100644 index 0000000..9fb18c5 Binary files /dev/null and b/design/brand/watchos/AppIcon.appiconset/watch-panel-03-234.png differ diff --git a/design/brand/watchos/AppIcon.appiconset/watch-panel-03-258.png b/design/brand/watchos/AppIcon.appiconset/watch-panel-03-258.png new file mode 100644 index 0000000..9eca1be Binary files /dev/null and b/design/brand/watchos/AppIcon.appiconset/watch-panel-03-258.png differ diff --git a/design/brand/watchos/AppIcon.appiconset/watch-panel-03-48.png b/design/brand/watchos/AppIcon.appiconset/watch-panel-03-48.png new file mode 100644 index 0000000..6eb1304 Binary files /dev/null and b/design/brand/watchos/AppIcon.appiconset/watch-panel-03-48.png differ diff --git a/design/brand/watchos/AppIcon.appiconset/watch-panel-03-55.png b/design/brand/watchos/AppIcon.appiconset/watch-panel-03-55.png new file mode 100644 index 0000000..147f62c Binary files /dev/null and b/design/brand/watchos/AppIcon.appiconset/watch-panel-03-55.png differ diff --git a/design/brand/watchos/AppIcon.appiconset/watch-panel-03-58.png b/design/brand/watchos/AppIcon.appiconset/watch-panel-03-58.png new file mode 100644 index 0000000..1efe951 Binary files /dev/null and b/design/brand/watchos/AppIcon.appiconset/watch-panel-03-58.png differ diff --git a/design/brand/watchos/AppIcon.appiconset/watch-panel-03-66.png b/design/brand/watchos/AppIcon.appiconset/watch-panel-03-66.png new file mode 100644 index 0000000..32d7b01 Binary files /dev/null and b/design/brand/watchos/AppIcon.appiconset/watch-panel-03-66.png differ diff --git a/design/brand/watchos/AppIcon.appiconset/watch-panel-03-80.png b/design/brand/watchos/AppIcon.appiconset/watch-panel-03-80.png new file mode 100644 index 0000000..37337e7 Binary files /dev/null and b/design/brand/watchos/AppIcon.appiconset/watch-panel-03-80.png differ diff --git a/design/brand/watchos/AppIcon.appiconset/watch-panel-03-87.png b/design/brand/watchos/AppIcon.appiconset/watch-panel-03-87.png new file mode 100644 index 0000000..e37171c Binary files /dev/null and b/design/brand/watchos/AppIcon.appiconset/watch-panel-03-87.png differ diff --git a/design/brand/watchos/AppIcon.appiconset/watch-panel-03-88.png b/design/brand/watchos/AppIcon.appiconset/watch-panel-03-88.png new file mode 100644 index 0000000..5c8da72 Binary files /dev/null and b/design/brand/watchos/AppIcon.appiconset/watch-panel-03-88.png differ diff --git a/design/brand/watchos/AppIcon.appiconset/watch-panel-03-92.png b/design/brand/watchos/AppIcon.appiconset/watch-panel-03-92.png new file mode 100644 index 0000000..74b9a60 Binary files /dev/null and b/design/brand/watchos/AppIcon.appiconset/watch-panel-03-92.png differ diff --git a/evolution/proposals/BEP-0011-panel-icon-family-and-platform-assets.md b/evolution/proposals/BEP-0011-panel-icon-family-and-platform-assets.md new file mode 100644 index 0000000..a8ed094 --- /dev/null +++ b/evolution/proposals/BEP-0011-panel-icon-family-and-platform-assets.md @@ -0,0 +1,87 @@ +# `BEP-0011` - Panel Icon Family and Platform Assets + +```text +Status: Implemented +Proposal: BEP-0011 +Authors: gpt-5.4 +Coordinator: gpt-5.4 +Reviewers: Pending +Constitution Sections: II, V +Implementation PRs: Pending +Decision Date: 2026-06-07 +``` + +## Summary + +Burrow uses a locked six-panel burrowing owl icon family as the product icon +language. The supplied panel sheet and its six cropped PNG masters are the +canonical source; platform-specific PNGs are generated from those rasters. + +## Motivation + +- Burrow needs one recognizable icon language across iOS, macOS, watchOS, + Android, and Linux packaging. +- The iOS app should expose the six panel variants as local alternate app icons. +- Platform packages need exact launcher dimensions without hand-edited raster + drift. + +## Detailed Design + +- `Scripts/generate-brand-icons.py` owns the raster crop and platform exports. +- `design/brand/panel-variants/source-sheet.png` stores the locked panel sheet. +- The generator writes six 1024px PNG masters under + `design/brand/panel-variants/` when run with `--extract-from`. +- iOS uses `panel-01-guardian` as the primary icon and exposes the other five + panel variants through native alternate app icon asset sets. +- macOS uses `panel-05-stride` as the primary app icon. +- watchOS uses `panel-03-burrow` as the primary app icon; exact watch icon + sizes live in `design/brand/watchos/AppIcon.appiconset` until a watch target + owns them directly. +- Android launcher mipmaps and Linux hicolor PNGs are generated from the same + raster master as iOS primary. +- The Apple UI calls only `UIApplication.setAlternateIconName`; no daemon, + control-plane, or network path is added for icon selection. + +## Security and Operational Considerations + +- Icon selection is local presentation state and does not touch auth, routing, + daemon IPC, or account material. +- Generated rasters are deterministic from checked-in raster masters. +- The rollback path is to revert the generator and regenerate assets. + +## Contributor Playbook + +- Keep icon geometry in the raster panel masters; do not redraw it as SVG. +- Edit `Scripts/generate-brand-icons.py` only for crop boxes, package sizes, or + platform picks. +- Run `Scripts/generate-brand-icons.py`. +- Review `design/brand/panel-variants/preview-strip.png`. +- Review `design/brand/low-res/preview-strip.png` and + `design/brand/low-res/pixel-preview-strip.png`. +- Run `Scripts/check-brand-icon-lowres.sh`. +- Build the Apple app and Android app after asset changes. + +## Alternatives Considered + +- Keep a single app icon. Rejected because the six panel variants are all valid + product directions and iOS has a native alternate icon API. +- Redraw the sheet as SVG. Rejected because the supplied raster panel already + carries the desired style, texture, and proportions. +- Let the daemon choose app icons. Rejected because icon selection is local + presentation behavior and should not cross the daemon boundary. + +## Impact on Other Work + +- Store metadata and packaging jobs should use generated platform assets. +- Future design changes should preserve the raster panel source and generated + package outputs. + +## Decision + +Implemented on 2026-06-07. + +## References + +- `Scripts/generate-brand-icons.py` +- `design/brand/panel-variants/` +- `Apple/UI/BurrowView.swift` diff --git a/store-metadata/android/icon.png b/store-metadata/android/icon.png new file mode 100644 index 0000000..c5997ae Binary files /dev/null and b/store-metadata/android/icon.png differ