diff --git a/app/src/main/res/drawable-hdpi/ic_vpn_notification.png b/app/src/main/res/drawable-hdpi/ic_vpn_notification.png
index 4a52ae6..17517bc 100644
Binary files a/app/src/main/res/drawable-hdpi/ic_vpn_notification.png and b/app/src/main/res/drawable-hdpi/ic_vpn_notification.png differ
diff --git a/app/src/main/res/drawable-mdpi/ic_vpn_notification.png b/app/src/main/res/drawable-mdpi/ic_vpn_notification.png
index 9d1e509..264cd78 100644
Binary files a/app/src/main/res/drawable-mdpi/ic_vpn_notification.png and b/app/src/main/res/drawable-mdpi/ic_vpn_notification.png differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_vpn_notification.png b/app/src/main/res/drawable-xhdpi/ic_vpn_notification.png
index ec645d4..438b91c 100644
Binary files a/app/src/main/res/drawable-xhdpi/ic_vpn_notification.png and b/app/src/main/res/drawable-xhdpi/ic_vpn_notification.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_vpn_notification.png b/app/src/main/res/drawable-xxhdpi/ic_vpn_notification.png
index f69106c..5f5a6f1 100644
Binary files a/app/src/main/res/drawable-xxhdpi/ic_vpn_notification.png and b/app/src/main/res/drawable-xxhdpi/ic_vpn_notification.png differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_vpn_notification.png b/app/src/main/res/drawable-xxxhdpi/ic_vpn_notification.png
index bf01af3..4dbad0b 100644
Binary files a/app/src/main/res/drawable-xxxhdpi/ic_vpn_notification.png and b/app/src/main/res/drawable-xxxhdpi/ic_vpn_notification.png differ
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png
index bdba2f3..7c6dd5a 100644
Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher.png and b/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_background.png b/app/src/main/res/mipmap-hdpi/ic_launcher_background.png
index 6ad2f93..2e8f887 100644
Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher_background.png and b/app/src/main/res/mipmap-hdpi/ic_launcher_background.png differ
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
index 81a9d77..73914d0 100644
Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png and b/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png differ
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
index be2c10c..8c97c0b 100644
Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher_round.png and b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png
index 91ae7c2..af50fdd 100644
Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher.png and b/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_background.png b/app/src/main/res/mipmap-mdpi/ic_launcher_background.png
index b7c609c..d97bf16 100644
Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher_background.png and b/app/src/main/res/mipmap-mdpi/ic_launcher_background.png differ
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
index 1a1ccf4..e361e3c 100644
Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png and b/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png differ
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
index 8a02ac4..0a893ce 100644
Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher_round.png and b/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ
diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/src/main/res/mipmap-xhdpi/ic_launcher.png
index 5477e32..2d898d4 100644
Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher.png and b/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png
index c5d2f00..8316b69 100644
Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png and b/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png differ
diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
index 049ae0e..ae31c72 100644
Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png and b/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png differ
diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
index 5dd4469..b8e5d4e 100644
Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png and b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
index efe9a44..c54a02e 100644
Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png
index 0148bbb..e9e1aa2 100644
Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
index 945c2cc..fbca0e7 100644
Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
index bd1dcc3..713b9dd 100644
Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
index 8daabc3..05323b1 100644
Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png
index df20bf6..3b3b8c4 100644
Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
index 296fb78..3323e73 100644
Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
index 9283b7b..d2d2c01 100644
Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ
diff --git a/assets/branding/identity-lock.json b/assets/branding/identity-lock.json
index 3f833ad..ee2738d 100644
--- a/assets/branding/identity-lock.json
+++ b/assets/branding/identity-lock.json
@@ -1,54 +1,54 @@
{
"repository": "https://github.com/andre487/MegaProxyIdentity",
- "commit": "8958f0f6b74b03fcfc874e2ac4367ecfddeaace5",
- "renderer": "rsvg-convert version 2.62.3\n\nlibraries used:\n cairo 1.18.6\n pango 1.58.2\n harfbuzz 14.6.0\n fontconfig 2.18.3",
+ "commit": "65898348e43b94a8831180f8aa2b00cabd520fe4",
+ "renderer": "rsvg-convert version 2.62.4\n\nlibraries used:\n cairo 1.18.6\n pango 1.57.1\n harfbuzz 14.1.0\n fontconfig 2.17.0",
"sources": {
- "SVG/icon.svg": "18da427e78dd555a0b41d568b7f330512c924a226c4b20bdf7574de4359f6735",
- "SVG/icon-radius.svg": "a7b233505adddcc3f5814dbfa33f0e875ae26a5cdb6caae792395ef9dc3e2782",
- "SVG/icon-round.svg": "21709d03ca94deb643f27c28765419a88fde0ff93564b347b61879e306e50d81",
- "SVG/feature-graphic.svg": "cb76a52ba46da5e0ee63821325d5481731f17436059c9c026111d41c37a412a0",
- "SVG/social-preview.svg": "7edb6fa286e896cba12c8080fa4147f20fc3abd84713edf252520cdccce6e107",
- "SVG/icon-taskbar.svg": "790cc523b24d6e9256c63068f74552d156b1a099ac14b9890570f5b516b4f8ab",
+ "SVG/icon.svg": "cfa4002c330e462e1533fe9c045c33c5e374aa02d912d9c19874f254a35825f9",
+ "SVG/icon-radius.svg": "c1765e20535898b327d7f6f0153ac127dd949277c2fb377288fa418cf652516b",
+ "SVG/icon-round.svg": "3fa8361afeccde26f8aafb0588cd6d30ad0cd7448adc9f382f0f3e680b25a6f5",
+ "SVG/feature-graphic.svg": "ba7e6d86360a74350820a72e4ec958be7cd3e5062ebcf6e41c4f22a336dca534",
+ "SVG/social-preview.svg": "986f2bfab9b0c06bee6beeca7a2d51ee8adba471363af0633d7e49b1e329189d",
+ "SVG/icon-taskbar.svg": "3e14289c2a91ff125109ffa1cdc983b37201a2a6219359a6108b232045b5e71a",
"LICENSE": "a2010f343487d3f7618affe54f789f5487602331c0a8d03f49e9a7c547cf0499"
},
"local_sources": {
"docs/assets/get-it-on-github.svg": "a3463008b42db57aede368deb5cfb5d4b137c318f04d8fead00118bc64263693"
},
"outputs": {
- "app/src/main/res/drawable-hdpi/ic_vpn_notification.png": "7acdbd9e9ce1038c9ccc2a312868384bc93f8d3e84bb1c316e7bbe6880a7bee8",
- "app/src/main/res/drawable-mdpi/ic_vpn_notification.png": "25628dc8ec8f60a5931ad2e9cf90721ace1d322121abb6c2f3db2d2d624c920f",
- "app/src/main/res/drawable-xhdpi/ic_vpn_notification.png": "eb1e344686913d8dfe10342b1d109d826e082cd929b093c60d08ea4d58befce3",
- "app/src/main/res/drawable-xxhdpi/ic_vpn_notification.png": "7e33bbbdf9d292dd2751719937cbd40e180720da918b4abeec2e43164ed1e03b",
- "app/src/main/res/drawable-xxxhdpi/ic_vpn_notification.png": "79105f9bcf8b53a820249c6a466979871e6766b9d06ee8be410fe493a0104b20",
+ "app/src/main/res/drawable-hdpi/ic_vpn_notification.png": "68a85aaee7e25183e54dab83755d5bd502941bfd77b73c99ed866a32b93a9fb3",
+ "app/src/main/res/drawable-mdpi/ic_vpn_notification.png": "d404ea8ae1d7b733f5a3df2e72a3dfc426379a66673a84787174220573cf33b1",
+ "app/src/main/res/drawable-xhdpi/ic_vpn_notification.png": "00e085877db72eca7dab1e88144708d380566488eaa010a0f5035ff0ac8bc2a5",
+ "app/src/main/res/drawable-xxhdpi/ic_vpn_notification.png": "2d60ce2e78240057102fadbf32088eb0b8d50029b0862d43724d27c5fb8ad227",
+ "app/src/main/res/drawable-xxxhdpi/ic_vpn_notification.png": "9375d6ae2f05cb2c6ffcf4b7a55e8e7a17e253a587bc0d2eece53365121aa966",
"app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml": "c4fe288de664c1d03457499c5e5c060695265f705ee0ab3222668efd7044bbc1",
"app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml": "c4fe288de664c1d03457499c5e5c060695265f705ee0ab3222668efd7044bbc1",
- "app/src/main/res/mipmap-hdpi/ic_launcher.png": "5c43f767e395bcbf81a9757af9c7415721c78112ab0205b2023d96d91d63ab35",
- "app/src/main/res/mipmap-hdpi/ic_launcher_background.png": "b7bc17dbd5345a7b87c45ea6f1caae55a4dd7b5c283b420361b28b3ce604d2f9",
- "app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png": "397b4ada2959790f22525dc2d3096e7981dcae39e3a9dfa0def9012cf8b3f74b",
- "app/src/main/res/mipmap-hdpi/ic_launcher_round.png": "248599c82f2035734a16418794f73bc7399839cf2f5b9a1ffce7fa166128d416",
- "app/src/main/res/mipmap-mdpi/ic_launcher.png": "8d27ba9f7c0597955a63feb331b2e24c0115302cffc5723e4bb6f9b5ddad4d7a",
- "app/src/main/res/mipmap-mdpi/ic_launcher_background.png": "06beddd6cb61455d1f8e3003a018141c83683266e9a189900c81ceae3d43784f",
- "app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png": "d533928a889c31741a2688819c3644658bd953e31af09c7d19bb0dbaa90478c3",
- "app/src/main/res/mipmap-mdpi/ic_launcher_round.png": "f7636b8f2be5dc929d3ad8f5cc7b347757dc0054612aea9ae5f391cf69f40d54",
- "app/src/main/res/mipmap-xhdpi/ic_launcher.png": "874c40eda801a275abc52bd4f6819738a18730796c90ea980c5474e221f09686",
- "app/src/main/res/mipmap-xhdpi/ic_launcher_background.png": "33e9efa0c5ec99b33e1ed09cfb352f0f88d4a744556176fd60d3dcd8203de2d5",
- "app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png": "6c65f3a6c30062a33506f25fef78af602c34ac73979d5b803ecb58ccaefe8b1f",
- "app/src/main/res/mipmap-xhdpi/ic_launcher_round.png": "c35ce610605451931a91f8daed0f29ea0717a1dd3c6516e4093362512c8e5601",
- "app/src/main/res/mipmap-xxhdpi/ic_launcher.png": "b2025ac76bd882e251ef1c4ac0fa3005c592c21d334696a85e476fc08678124e",
- "app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png": "2087baf37a52a2bcb9eb7871f8e8cdd3f6c7ea5d0c6d960bdb177184628c4ebd",
- "app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png": "a9d96a7e692414a55a954eb684d669eb927711189622f9faf7ee5eba6912cc22",
- "app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png": "985db1ecd8cd245b3225b7eeda465ecc4dce2c2d736e3f2e11699f780c29574f",
- "app/src/main/res/mipmap-xxxhdpi/ic_launcher.png": "9f29f75f64b211c59062f72528acadfe7f61f5ebaec9b66f018a2a66671ae344",
- "app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png": "63885f095aa8a529a1d03e7219bcf5af6ff8b662e9ebf2bf8a8efdc03ff4eb54",
- "app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png": "fb47c5ce427b8c8cc0c8435a2f3f5ab6ba6864404986416280f554ad7f225242",
- "app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png": "ddfdbdd28730b37e127f6f20b46a505f8e63fc490298e1b5e8d2b592541c181a",
+ "app/src/main/res/mipmap-hdpi/ic_launcher.png": "5fdf89a0bbe6d3d2fb922285954c8a32bab73c69dff92156ea10e2114e92d343",
+ "app/src/main/res/mipmap-hdpi/ic_launcher_background.png": "2a6992aba64cdc5a51d5c0d8d5b17a676e2bd73a3907e211a1c3275f9e05058a",
+ "app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png": "47f627f03f55875661d7ec2ae32cec2d0c5db46424c7059b7079b65dfda2eb82",
+ "app/src/main/res/mipmap-hdpi/ic_launcher_round.png": "793fa51f0ce74aacee2feb7abd7c192203b4f47de862573122bb5829330908ed",
+ "app/src/main/res/mipmap-mdpi/ic_launcher.png": "7b9862db1aa308f1655ecc124c2d78a5223ff3e47b75e2e9a8a7a3ad3f454070",
+ "app/src/main/res/mipmap-mdpi/ic_launcher_background.png": "8750b54e82c019411ad65ce24dfa7c3b034fdfec66c13efe5473cf208d448c1a",
+ "app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png": "506b35f4cb79114e23ed384714467ef926860e171dded860e702f8515aca158f",
+ "app/src/main/res/mipmap-mdpi/ic_launcher_round.png": "f607788a4b7ff681e3176d89a5904a2528dfb6bba7b1322bdda300e02af27319",
+ "app/src/main/res/mipmap-xhdpi/ic_launcher.png": "5ac9398dcfabd633b9824b93b4da379b4a033b44eda3b5267f5598dab7f46731",
+ "app/src/main/res/mipmap-xhdpi/ic_launcher_background.png": "59069874f7283bfbf3d814e66f37b3deb815304b774e3215ac7261802ec7e137",
+ "app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png": "f892b6491bd0c3f045d8b3e8c72e630a63ff3679a31651f61b8d70d643ea904e",
+ "app/src/main/res/mipmap-xhdpi/ic_launcher_round.png": "0a46a1429a72a22149a8d9208719a8a4215e049ae1039b0b27cb1003360d1759",
+ "app/src/main/res/mipmap-xxhdpi/ic_launcher.png": "f7f51b478a06fa2bccad50beff18a10d7f6fad72ef55ef62e0ee35a0cb4e3517",
+ "app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png": "f60e5fe832fbe26ecf49d2353d279b67669eeec6c185d90fa412695f929c4946",
+ "app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png": "39467a45decf6412e1f6524aa3bf12d5e709c8d8990226f5a9a058c3956a74f7",
+ "app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png": "756272d7a8ae14fd34babd61f58bc8e75037ee51f9deb19adb68c3bf700f981c",
+ "app/src/main/res/mipmap-xxxhdpi/ic_launcher.png": "11471f03e6a389b255cf233f89b5de42a7a2bffca226148efd6ec165e79fca3b",
+ "app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png": "ba17328d6a5a0017c42ef3ab21ed62fa0e11066f11020fe2282e6ff494e11cc2",
+ "app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png": "a355200519dbf3e797167315e4f807aaff681f2630614472ad7857fbb720cd51",
+ "app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png": "e6214241110550527581028bfaff677706c70bd0663c2b3df33094caf4b9888a",
"assets/branding/IDENTITY-LICENSE": "a2010f343487d3f7618affe54f789f5487602331c0a8d03f49e9a7c547cf0499",
- "docs/assets/get-it-on-github.png": "6f5cca8d2a224beff6ef2310c406dbda776f6f02ce6deb8791b30675df9e1da6",
- "docs/assets/icon-radius.svg": "a7b233505adddcc3f5814dbfa33f0e875ae26a5cdb6caae792395ef9dc3e2782",
- "docs/assets/social-preview.png": "972e5faa58aded5e8033c550b9757de4c17ab3e318ce06f92cfa3b9b87ab074a",
- "fastlane/metadata/android/en-US/images/featureGraphic.png": "6651973cc2b3432d319c131742645d427874944e2b72b5aa9db9c939426fe9b6",
- "fastlane/metadata/android/en-US/images/icon.png": "7ad68cc3e416ef0b09901b0a1a5eab2d23360714365ee0c89bd85ec51a650d6c",
- "fastlane/metadata/android/ru-RU/images/featureGraphic.png": "6651973cc2b3432d319c131742645d427874944e2b72b5aa9db9c939426fe9b6",
- "fastlane/metadata/android/ru-RU/images/icon.png": "7ad68cc3e416ef0b09901b0a1a5eab2d23360714365ee0c89bd85ec51a650d6c"
+ "docs/assets/get-it-on-github.png": "e922fb688813eeaaaae2c4e908bb7f0c1fcf4f400208b6da7b6ea953d7bb08ed",
+ "docs/assets/icon-radius.svg": "c1765e20535898b327d7f6f0153ac127dd949277c2fb377288fa418cf652516b",
+ "docs/assets/social-preview.png": "5b9df7e3228cee2cd898cfdab9e2ecbf2cbe6086dbbf0d4775bfbbc47260c583",
+ "fastlane/metadata/android/en-US/images/featureGraphic.png": "951079c01b6e13849ad5a16be9cd3d9226acb5cee6f7d0368a97011262daf7a3",
+ "fastlane/metadata/android/en-US/images/icon.png": "48b74177dce8d5f6c2481850dd1440bff31c4e044a944070e106d015c61b9282",
+ "fastlane/metadata/android/ru-RU/images/featureGraphic.png": "951079c01b6e13849ad5a16be9cd3d9226acb5cee6f7d0368a97011262daf7a3",
+ "fastlane/metadata/android/ru-RU/images/icon.png": "48b74177dce8d5f6c2481850dd1440bff31c4e044a944070e106d015c61b9282"
}
}
diff --git a/docs/assets/get-it-on-github.png b/docs/assets/get-it-on-github.png
index 8388a28..2072ff7 100644
Binary files a/docs/assets/get-it-on-github.png and b/docs/assets/get-it-on-github.png differ
diff --git a/docs/assets/icon-radius.svg b/docs/assets/icon-radius.svg
index cd574a3..fc47476 100644
--- a/docs/assets/icon-radius.svg
+++ b/docs/assets/icon-radius.svg
@@ -1,148 +1,820 @@
-
-
\ No newline at end of file
+
+
diff --git a/docs/assets/social-preview.png b/docs/assets/social-preview.png
index 96156e6..1562c15 100644
Binary files a/docs/assets/social-preview.png and b/docs/assets/social-preview.png differ
diff --git a/docs/en/graphics.md b/docs/en/graphics.md
index 4ba4af0..f6e8f85 100644
--- a/docs/en/graphics.md
+++ b/docs/en/graphics.md
@@ -37,8 +37,10 @@ without downloading Identity or running a renderer.
| Local `docs/assets/get-it-on-github.svg` | 1292×500 GitHub download badge PNG; local notices are retained |
Adaptive layers retain the SVG's background/rings and keep the wordmark inside Android's safe
-circle by scaling it to 75% of the 108dp foreground canvas. The extraction uses the Identity
-`icon-2` and `Background` layer IDs; a changed SVG structure requires reviewing the recipe.
+circle by scaling it to 75% of the 108dp foreground canvas. Extraction selects groups by
+`data-name="background"` and `data-name="foreground"`, preserving definitions and parent transforms.
+Each group must occur exactly once and neither may contain the other. Internal IDs and group
+structure can change freely; Inkscape labels are preserved by Identity's exporter.
The social preview is rendered directly from its dedicated Identity SVG.
Identity-derived artwork retains the upstream license in `assets/branding/IDENTITY-LICENSE`;
the GitHub badge retains its separate notices.
diff --git a/docs/ru/graphics.md b/docs/ru/graphics.md
index f5acf19..6e15f32 100644
--- a/docs/ru/graphics.md
+++ b/docs/ru/graphics.md
@@ -38,9 +38,11 @@ Lane вызывает `scripts/update_graphics.py`. Скрипт определ
| Локальный `docs/assets/get-it-on-github.svg` | PNG кнопки GitHub 1292×500; локальные лицензии сохраняются |
Adaptive icon сохраняет фон и кольца SVG, а логотип уменьшается до 75% холста 108dp, чтобы
-вписаться в безопасную окружность Android. Извлечение использует ID слоёв `icon-2` и `Background`;
-изменение структуры SVG требует проверки рецепта. Social preview генерируется из отдельного
-SVG Identity. Лицензия Identity сохраняется в
+вписаться в безопасную окружность Android. Извлечение выбирает группы по
+`data-name="background"` и `data-name="foreground"`, сохраняя определения и родительские трансформации.
+Каждая группа должна встречаться ровно один раз; они не должны быть вложены друг в друга.
+Внутренние ID и структура групп могут меняться свободно; метки Inkscape сохраняет экспортёр Identity.
+Social preview генерируется из отдельного SVG Identity. Лицензия Identity сохраняется в
`assets/branding/IDENTITY-LICENSE`; у кнопки GitHub остаются отдельные лицензии.
`bundle exec fastlane android python_checks` проверяет хеши готовых файлов, размеры, закрепление
diff --git a/fastlane/metadata/android/en-US/images/featureGraphic.png b/fastlane/metadata/android/en-US/images/featureGraphic.png
index f49cfa1..1e2ce44 100644
Binary files a/fastlane/metadata/android/en-US/images/featureGraphic.png and b/fastlane/metadata/android/en-US/images/featureGraphic.png differ
diff --git a/fastlane/metadata/android/en-US/images/icon.png b/fastlane/metadata/android/en-US/images/icon.png
index 66bcb0e..c67b816 100644
Binary files a/fastlane/metadata/android/en-US/images/icon.png and b/fastlane/metadata/android/en-US/images/icon.png differ
diff --git a/fastlane/metadata/android/ru-RU/images/featureGraphic.png b/fastlane/metadata/android/ru-RU/images/featureGraphic.png
index f49cfa1..1e2ce44 100644
Binary files a/fastlane/metadata/android/ru-RU/images/featureGraphic.png and b/fastlane/metadata/android/ru-RU/images/featureGraphic.png differ
diff --git a/fastlane/metadata/android/ru-RU/images/icon.png b/fastlane/metadata/android/ru-RU/images/icon.png
index 66bcb0e..c67b816 100644
Binary files a/fastlane/metadata/android/ru-RU/images/icon.png and b/fastlane/metadata/android/ru-RU/images/icon.png differ
diff --git a/scripts/tests/test_update_graphics.py b/scripts/tests/test_update_graphics.py
index e515ab8..eb09b23 100644
--- a/scripts/tests/test_update_graphics.py
+++ b/scripts/tests/test_update_graphics.py
@@ -12,8 +12,11 @@
import update_graphics as m
ICON = b""""""
+
+
+
+
+"""
class UpdateGraphicsTest(unittest.TestCase):
@@ -104,12 +107,34 @@ def render(content, width, height, directory):
def test_adaptive_layers_preserve_center_and_reject_changed_structure(self):
background, foreground = map(m.svg, m.adaptive_layers(ICON))
+ self.assertIsNotNone(background.find(".//*[@id='Gradient']"))
+ self.assertIsNotNone(background.find(".//*[@data-name='Ring 3']"))
+ self.assertIsNone(foreground.find(".//*[@data-name='Ring 1']"))
+ self.assertEqual(
+ "scale(0.5)", foreground.find(f"{{{m.SVG}}}g").get("transform")
+ )
self.assertIsNone(background.find(f".//*[@id='logo']"))
- self.assertIsNone(foreground.find(f".//*[@id='Background']"))
+ self.assertIsNone(foreground.find(f".//*[@id='Gradient']"))
self.assertIsNotNone(foreground.find(f".//*[@id='logo']"))
self.assertEqual("-20 -20 160 160", foreground.get("viewBox"))
with self.assertRaises(ValueError):
- m.adaptive_layers(ICON.replace(b'id="Background"', b'id="renamed"'))
+ m.adaptive_layers(
+ ICON.replace(b'data-name="background"', b'data-name="renamed"')
+ )
+ # Internal IDs, group names and nesting may change independently of the contract.
+ changed = ICON.replace(b"Gradient", b"new-gradient").replace(
+ b"Ring 2", b"new-ring"
+ )
+ m.adaptive_layers(changed)
+ with self.assertRaises(ValueError):
+ m.adaptive_layers(
+ ICON.replace(b'data-name="MPX"', b'data-name="foreground"')
+ )
+ with self.assertRaises(ValueError):
+ m.adaptive_layers(
+ b''
+ )
with self.assertRaises(ValueError):
m.svg(
b''
diff --git a/scripts/update_graphics.py b/scripts/update_graphics.py
index 0fe60c5..7eb96ca 100644
--- a/scripts/update_graphics.py
+++ b/scripts/update_graphics.py
@@ -65,15 +65,25 @@ def svg(content):
def adaptive_layers(content):
background, foreground = svg(content), svg(content)
- for root, keep_background in ((background, True), (foreground, False)):
- artwork = root.find(f".//{{{SVG}}}g[@id='icon-2']")
- if artwork is None or artwork.find(f"{{{SVG}}}g[@id='Background']") is None:
- raise ValueError(
- "Identity icon layers changed; review the adaptive icon recipe"
+ for root, discard in ((background, "foreground"), (foreground, "background")):
+ layers = {}
+ for name in ("background", "foreground"):
+ matches = root.findall(f".//{{{SVG}}}g[@data-name='{name}']")
+ if len(matches) != 1:
+ raise ValueError(f"Expected exactly one Identity {name} group")
+ layers[name] = matches[0]
+ if any(
+ layers[other] in layers[name].iter()
+ for name, other in (
+ ("background", "foreground"),
+ ("foreground", "background"),
)
- for child in list(artwork):
- if (child.get("id") == "Background") != keep_background:
- artwork.remove(child)
+ ):
+ raise ValueError("Identity background and foreground groups must not nest")
+ for parent in root.iter():
+ if layers[discard] in list(parent):
+ parent.remove(layers[discard])
+ break
# Keep the complete wordmark inside Android's 66dp safe circle on the 108dp layer.
x, y, width, height = map(float, foreground.get("viewBox").split())
foreground.set(