| author | |
| committer | |
| log | 348367dcc6e1ac8b11baf94a31c47f33d46313cd |
| tree | 3be067d2d10ba014bcbb27bdd411df6cd9d4a410 |
| parent | f6f2be32d8bc072e87753e41ad77c7c67e8b0b95 |
| signature | Signed by PGP key B5690EEEBB952194 |
Co-authored-by: Yash Singh <saiansh2525@gmail.com>4 files changed, 28 insertions(+), 3 deletions(-)
apps/mobile/app.config.ts+6-3| ... | ... | @@ -15,6 +15,9 @@ const personalTeamBundleIdentifier = repoEnv.T3CODE_IOS_PERSONAL_TEAM_BUNDLE_ID? |
| 15 | 15 | const IOS_BUNDLE_IDENTIFIER_PATTERN = /^[A-Za-z0-9-]+(?:\.[A-Za-z0-9-]+)+$/; |
| 16 | 16 | |
| 17 | 17 | const fromRepoRoot = (relativePath: string) => `../../${relativePath}`; |
| 18 | // Universal exports already contain their own rounded-square silhouette. Using one as an adaptive | |
| 19 | // foreground makes Android draw an icon shape inside the launcher's mask. | |
| 20 | const androidAdaptiveForeground = "./assets/android-icon-foreground.png"; | |
| 18 | 21 | |
| 19 | 22 | if ( |
| 20 | 23 | isIosPersonalTeamBuild && |
| ... | ... | @@ -30,7 +33,7 @@ const DEVELOPMENT_ASSETS = { |
| 30 | 33 | appIcon: fromRepoRoot(BRAND_ASSET_PATHS.developmentIosIconPng), |
| 31 | 34 | iosIcon: fromRepoRoot(BRAND_ASSET_PATHS.developmentIconComposerProject), |
| 32 | 35 | splashIcon: fromRepoRoot(BRAND_ASSET_PATHS.developmentIosIconPng), |
| 33 | androidAdaptiveForeground: fromRepoRoot(BRAND_ASSET_PATHS.developmentUniversalIconPng), | |
| 36 | androidAdaptiveForeground, | |
| 34 | 37 | androidAdaptiveBackgroundColor: "#00639B", |
| 35 | 38 | androidMonochromeIcon: "./assets/android-icon-mark.png", |
| 36 | 39 | androidNotificationIcon: "./assets/android-notification-icon.png", |
| ... | ... | @@ -41,7 +44,7 @@ const PREVIEW_ASSETS = { |
| 41 | 44 | appIcon: fromRepoRoot(BRAND_ASSET_PATHS.nightlyIosIconPng), |
| 42 | 45 | iosIcon: fromRepoRoot(BRAND_ASSET_PATHS.nightlyIconComposerProject), |
| 43 | 46 | splashIcon: fromRepoRoot(BRAND_ASSET_PATHS.nightlyIosIconPng), |
| 44 | androidAdaptiveForeground: fromRepoRoot(BRAND_ASSET_PATHS.nightlyLinuxIconPng), | |
| 47 | androidAdaptiveForeground, | |
| 45 | 48 | androidAdaptiveBackgroundColor: "#111533", |
| 46 | 49 | androidMonochromeIcon: "./assets/android-icon-mark.png", |
| 47 | 50 | androidNotificationIcon: "./assets/android-notification-icon.png", |
| ... | ... | @@ -52,7 +55,7 @@ const RELEASE_ASSETS = { |
| 52 | 55 | appIcon: fromRepoRoot(BRAND_ASSET_PATHS.productionIosIconPng), |
| 53 | 56 | iosIcon: fromRepoRoot(BRAND_ASSET_PATHS.productionIconComposerProject), |
| 54 | 57 | splashIcon: fromRepoRoot(BRAND_ASSET_PATHS.productionIosIconPng), |
| 55 | androidAdaptiveForeground: "./assets/android-icon-mark.png", | |
| 58 | androidAdaptiveForeground, | |
| 56 | 59 | androidAdaptiveBackgroundColor: "#000000", |
| 57 | 60 | androidMonochromeIcon: "./assets/android-icon-mark.png", |
| 58 | 61 | androidNotificationIcon: "./assets/android-notification-icon.png", |
apps/mobile/assets/android-icon-foreground.png created| Binary files /dev/null and b/apps/mobile/assets/android-icon-foreground.png differ |
apps/mobile/assets/android-icon-foreground.svg created+8| ... | ... | @@ -0,0 +1,8 @@ |
| 1 | <svg width="432" height="432" viewBox="0 0 432 432" fill="none" xmlns="http://www.w3.org/2000/svg"> | |
| 2 | <g transform="translate(116.3 155.8) scale(2.6)"> | |
| 3 | <path | |
| 4 | d="M14.56 45.5V8.58H0V0H39.65V8.58H25.09V45.5H14.56ZM57.8454 46.28C54.6821 46.28 51.5404 45.8683 48.4204 45.045C45.3004 44.1783 42.6571 42.965 40.4904 41.405L44.5854 33.345C46.3188 34.6017 48.3338 35.5983 50.6304 36.335C52.9271 37.0717 55.2454 37.44 57.5854 37.44C60.2288 37.44 62.3088 36.92 63.8254 35.88C65.3421 34.84 66.1004 33.41 66.1004 31.59C66.1004 29.8567 65.4288 28.4917 64.0854 27.495C62.7421 26.4983 60.5754 26 57.5854 26H52.7754V19.045L65.4504 4.68L66.6204 8.45H42.7654V0H74.6154V6.825L62.0054 21.19L56.6754 18.135H59.7304C65.3204 18.135 69.5454 19.3917 72.4054 21.905C75.2654 24.4183 76.6954 27.6467 76.6954 31.59C76.6954 34.1467 76.0238 36.5517 74.6804 38.805C73.3371 41.015 71.2788 42.8133 68.5054 44.2C65.7321 45.5867 62.1788 46.28 57.8454 46.28Z" | |
| 5 | fill="#FFFFFF" | |
| 6 | /> | |
| 7 | </g> | |
| 8 | </svg> |
assets/README.md+14| ... | ... | @@ -48,3 +48,17 @@ Verify every result is 1024×1024 and has the classic macOS safe area: an 824×8 |
| 48 | 48 | ``` |
| 49 | 49 | |
| 50 | 50 | Do not edit the generated PNG or ICO files directly. |
| 51 | ||
| 52 | ## Android adaptive foreground | |
| 53 | ||
| 54 | `apps/mobile/assets/android-icon-foreground.svg` is the source of truth for the foreground used by | |
| 55 | the normal Android adaptive launcher icon. Export its paired PNG after changing it: | |
| 56 | ||
| 57 | ```sh | |
| 58 | rsvg-convert -w 432 -h 432 \ | |
| 59 | -o apps/mobile/assets/android-icon-foreground.png \ | |
| 60 | apps/mobile/assets/android-icon-foreground.svg | |
| 61 | ``` | |
| 62 | ||
| 63 | The foreground must remain transparent and keep the T3 mark inside Android's adaptive-icon safe | |
| 64 | zone. `android-icon-mark.png` remains a flat silhouette for Android's monochrome themed icon. |