Message487 connects selected Android notifications and incoming SMS to your n8n workflows.
diff --git a/app/src/main/java/life/andre/message487/UpdateNotifications.kt b/app/src/main/java/life/andre/message487/UpdateNotifications.kt
index de6e77e..9abc72d 100644
--- a/app/src/main/java/life/andre/message487/UpdateNotifications.kt
+++ b/app/src/main/java/life/andre/message487/UpdateNotifications.kt
@@ -130,7 +130,7 @@ internal object UpdateNotifications {
.putExtra("version_key", UpdatePreferences.key(update)), flags)
val source = context.getString(if (update.source == UpdateSource.FDROID) R.string.update_fdroid else R.string.update_github)
val notification = NotificationCompat.Builder(context, UPDATE_NOTIFICATION_CHANNEL)
- .setSmallIcon(R.drawable.ic_update)
+ .setSmallIcon(R.drawable.ic_notification)
.setContentTitle(context.getString(R.string.update_available, update.version))
.setContentText(context.getString(R.string.update_notification_text, source))
.setStyle(NotificationCompat.BigTextStyle().bigText(context.getString(R.string.update_notification_text, source)))
diff --git a/app/src/main/res/drawable-hdpi/ic_notification.png b/app/src/main/res/drawable-hdpi/ic_notification.png
deleted file mode 100644
index 63edba0..0000000
Binary files a/app/src/main/res/drawable-hdpi/ic_notification.png and /dev/null differ
diff --git a/app/src/main/res/drawable-mdpi/ic_notification.png b/app/src/main/res/drawable-mdpi/ic_notification.png
deleted file mode 100644
index 4ac1d3d..0000000
Binary files a/app/src/main/res/drawable-mdpi/ic_notification.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_notification.png b/app/src/main/res/drawable-xhdpi/ic_notification.png
deleted file mode 100644
index 21a02a8..0000000
Binary files a/app/src/main/res/drawable-xhdpi/ic_notification.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_notification.png b/app/src/main/res/drawable-xxhdpi/ic_notification.png
deleted file mode 100644
index 5082b6a..0000000
Binary files a/app/src/main/res/drawable-xxhdpi/ic_notification.png and /dev/null differ
diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 0000000..6388020
--- /dev/null
+++ b/app/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_launcher_foreground.xml b/app/src/main/res/drawable/ic_launcher_foreground.xml
index d4ef0cc..c76a7a1 100644
--- a/app/src/main/res/drawable/ic_launcher_foreground.xml
+++ b/app/src/main/res/drawable/ic_launcher_foreground.xml
@@ -1,13 +1,16 @@
-
-
-
+ android:width="108dp" android:height="108dp"
+ android:viewportWidth="1254" android:viewportHeight="1254">
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_launcher_monochrome.xml b/app/src/main/res/drawable/ic_launcher_monochrome.xml
new file mode 100644
index 0000000..ad08b0c
--- /dev/null
+++ b/app/src/main/res/drawable/ic_launcher_monochrome.xml
@@ -0,0 +1,4 @@
+
diff --git a/app/src/main/res/drawable/ic_notification.xml b/app/src/main/res/drawable/ic_notification.xml
new file mode 100644
index 0000000..e890330
--- /dev/null
+++ b/app/src/main/res/drawable/ic_notification.xml
@@ -0,0 +1,6 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_update.xml b/app/src/main/res/drawable/ic_update.xml
deleted file mode 100644
index 72a7654..0000000
--- a/app/src/main/res/drawable/ic_update.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
index 3c0ab76..31100d8 100644
--- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
+++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -1,5 +1,5 @@
-
+
-
+
diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
index 3c0ab76..31100d8 100644
--- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
+++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -1,5 +1,5 @@
-
+
-
+
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png
index cd3c0b3..0b0f1ab 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_round.png b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
index 08ef3d6..f42194b 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 f58aa23..317738f 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_round.png b/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
index 82ba040..dcb7214 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 6dfd531..d95ec0f 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_round.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
index 0bb4d52..3fc05a6 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 e27a241..15f9f7a 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_round.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
index 06235e2..399d84a 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 ee6fa15..ddf9a89 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_round.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
index 46a687c..81f75d1 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/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
deleted file mode 100644
index 8d45ecf..0000000
--- a/app/src/main/res/values/colors.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
- #3F51B5
-
diff --git a/assets/branding/README.md b/assets/branding/README.md
index fade43a..7678ec5 100644
--- a/assets/branding/README.md
+++ b/assets/branding/README.md
@@ -2,26 +2,52 @@
| Asset | Use |
| --- | --- |
-| [`icon.png`](../../fastlane/metadata/android/en-US/images/icon.png) | Google Play app icon, 512×512 RGBA PNG; also used in README |
-| [`featureGraphic.png`](../../fastlane/metadata/android/en-US/images/featureGraphic.png) | Google Play feature graphic, 1024×500 RGB PNG without alpha; shared by both locales |
-| `message487-feature-master.png` | Original generated banner, retained for future exports |
+| [icon.svg](icon.svg) · [PNG](icon.png) | Canonical square artwork for web and PNG exports |
+| [icon-round.svg](icon-round.svg) · [PNG](icon-round.png) | Circular artwork used in the project README and round launcher PNGs |
+| [status-icon.svg](status-icon.svg) · [PNG](status-icon.png) | Simplified monochrome monitor/phone mark for small sizes |
+| [feature.svg](feature.svg) · [PNG](feature.png) | Canonical store banner artwork, 1024×500 |
+| [icon.png](../../fastlane/metadata/android/en-US/images/icon.png) | Store app icon, 512×512 RGB PNG |
+| [featureGraphic.png](../../fastlane/metadata/android/en-US/images/featureGraphic.png) | Store feature graphic, 1024×500 opaque RGB PNG; shared by both locales |
| `fastlane/metadata/android/{en-US,ru-RU}/images/phoneScreenshots/` | Actual phone screenshots in English and Russian, 1080×1920 |
-Launcher PNGs and the adaptive foreground are copied from
-[andre487/sms487](https://github.com/andre487/sms487/tree/d4aca0724c4d8c8cfcfe128c6df6cc93f64625f2/client/app/src/main).
-The monitor, star, phone and indigo background preserve the original app identity.
-The existing vector foreground also supplies the Android themed-icon mask; round launcher
-resources and legacy notification icons are included. The app UI retains its purple Material theme.
-The original artwork is distributed under the [sms487 MIT license](sms487-LICENSE).
+The selected design shows an open envelope on a monitor and a closed envelope on a phone,
+with a cyan/blue/violet/magenta gradient inspired by AndroidMegaProxy. The initial concepts
+were created with the built-in `image_gen` tool, then reconstructed as native vectors.
+The final design prompt was: “Monitor with a small open envelope and phone with a small closed
+envelope on a cyan/blue/violet/magenta gradient; preserve generous margins in a circular crop.”
+Each SVG has a matching PNG beside it for sharing where SVG is unsupported.
+Sizes: square/round icon 512×512, status icon 24×24, feature graphic 1024×500.
+The round and status PNGs retain transparency; the white status mark needs a contrasting background.
-The feature illustration was produced with the built-in `image_gen` tool using the old
-Play Store icon as its reference, then exported with `sips -z 500 1024` as an opaque PNG.
-The generation prompt is recorded in [feature-prompt.txt](feature-prompt.txt).
-It extends the icon's device imagery with notification cards and workflow nodes and uses
-no localized text or third-party service marks. It is promotional artwork, not an app screenshot.
+Android adaptive layers live in `app/src/main/res/drawable/ic_launcher_{background,foreground}.xml`.
+The foreground uses scale `0.73` about the center of its 1254-unit viewport; the SVGs use the
+same paths, transform and gradient, cropped to Android's central 836×836 viewport.
+Keep these sources synchronized when changing the artwork.
+The themed launcher and notification small icon share `ic_notification.xml`, the simplified
+white monitor/phone silhouette without envelopes or gradient. Update notifications use this
+small icon. The app UI retains its purple Material theme and standard Material icons.
-Current store assets and localized descriptions have one canonical location under
-[`fastlane/metadata/android`](../../fastlane/metadata/android), shared by F-Droid and Google Play.
+Export PNGs with the installed `rsvg-convert` utility:
+
+```sh
+for name in icon icon-round status-icon feature; do
+ rsvg-convert "assets/branding/$name.svg" -o "assets/branding/$name.png"
+done
+rsvg-convert assets/branding/icon.svg -o fastlane/metadata/android/en-US/images/icon.png
+rsvg-convert assets/branding/feature.svg -o /tmp/message487-feature.png
+magick /tmp/message487-feature.png -background white -alpha remove -alpha off -type TrueColor fastlane/metadata/android/en-US/images/featureGraphic.png
+```
+
+For launcher PNGs use `rsvg-convert -w SIZE -h SIZE` with `icon.svg` or `icon-round.svg`.
+Sizes by density: mdpi 48, hdpi 72, xhdpi 96, xxhdpi 144, xxxhdpi 192.
+SVGs are self-contained: no external images, fonts, scripts or raster embeddings.
+The feature graphic is promotional artwork, not an app screenshot.
+
+Earlier artwork originated from
+[andre487/sms487](https://github.com/andre487/sms487/tree/d4aca0724c4d8c8cfcfe128c6df6cc93f64625f2/client/app/src/main)
+under the [sms487 MIT license](sms487-LICENSE); the original license is retained.
+Store graphics and localized descriptions have one canonical location under
+[fastlane/metadata/android](../../fastlane/metadata/android), shared by F-Droid and Google Play.
## Google Play store settings
@@ -34,8 +60,9 @@ These settings are maintained manually in Google Play Console:
| Tags | Home automation (Автоматизация дома), Tools (Инструменты) |
| Phone screenshot order, both locales | `1.png`, `2.png`, `3.png` |
-For a Play listing, upload [`icon.png`](../../fastlane/metadata/android/en-US/images/icon.png) as the app icon and [`featureGraphic.png`](../../fastlane/metadata/android/en-US/images/featureGraphic.png)
-as the feature graphic. The screenshots were captured from the debug app on the API 35 emulator with synthetic
+For a Play listing, upload [icon.png](../../fastlane/metadata/android/en-US/images/icon.png)
+and [featureGraphic.png](../../fastlane/metadata/android/en-US/images/featureGraphic.png).
+The screenshots were captured from the debug app on the API 35 emulator with synthetic
local data, using Android app locales and a 1080×1920 display. Refresh them from the release
-being submitted whenever its UI changes; do not use generated illustrations as screenshots. Follow the current
-[Google Play asset requirements](https://support.google.com/googleplay/android-developer/answer/9866151?hl=en).
+being submitted whenever its UI changes; do not use generated illustrations as screenshots.
+Follow the current [Google Play asset requirements](https://support.google.com/googleplay/android-developer/answer/9866151?hl=en).
diff --git a/assets/branding/feature-prompt.txt b/assets/branding/feature-prompt.txt
deleted file mode 100644
index ff7f801..0000000
--- a/assets/branding/feature-prompt.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-Tool: built-in image_gen
-Reference: message487-icon.png (original sms487 Play Store icon)
-
-Use case: ads-marketing. Create a finished Google Play feature graphic for the Android application Message487, precisely 1024 x 500 pixels, opaque RGB PNG. Reference image is the old sms487 icon: indigo background and a white outlined desktop monitor with a five-point star, next to a smartphone. Extend this visual language into a polished restrained flat Material Design editorial illustration about forwarding phone notifications and SMS to workflows. Do not simply enlarge or repeat the app icon: use a smaller smartphone with two abstract notification cards connected by graceful simple lines to a desktop monitor and three small workflow nodes. Keep the distinctive star on the monitor. Deep indigo and violet with soft lavender fields, white outlines, very subtle depth, clean geometry, ample empty margins. No text, letters, numbers, badges, logos of other services, people, photos, or fake screenshots. Keep all meaningful content within the central 75 percent width and central 70 percent height so nothing is cropped in store previews. Crisp professional composition, visually balanced, not crowded. This is final promotional illustration, not a mockup of a store page.
diff --git a/assets/branding/feature.png b/assets/branding/feature.png
new file mode 100644
index 0000000..321a65c
Binary files /dev/null and b/assets/branding/feature.png differ
diff --git a/assets/branding/feature.svg b/assets/branding/feature.svg
new file mode 100644
index 0000000..15b6949
--- /dev/null
+++ b/assets/branding/feature.svg
@@ -0,0 +1,28 @@
+
diff --git a/assets/branding/icon-round.png b/assets/branding/icon-round.png
new file mode 100644
index 0000000..09685f7
Binary files /dev/null and b/assets/branding/icon-round.png differ
diff --git a/assets/branding/icon-round.svg b/assets/branding/icon-round.svg
new file mode 100644
index 0000000..026e00b
--- /dev/null
+++ b/assets/branding/icon-round.svg
@@ -0,0 +1,20 @@
+
diff --git a/assets/branding/icon.png b/assets/branding/icon.png
new file mode 100644
index 0000000..7fc0b0b
Binary files /dev/null and b/assets/branding/icon.png differ
diff --git a/assets/branding/icon.svg b/assets/branding/icon.svg
new file mode 100644
index 0000000..bb6a00d
--- /dev/null
+++ b/assets/branding/icon.svg
@@ -0,0 +1,17 @@
+
diff --git a/assets/branding/message487-feature-master.png b/assets/branding/message487-feature-master.png
deleted file mode 100644
index fba0087..0000000
Binary files a/assets/branding/message487-feature-master.png and /dev/null differ
diff --git a/assets/branding/status-icon.png b/assets/branding/status-icon.png
new file mode 100644
index 0000000..3e885ec
Binary files /dev/null and b/assets/branding/status-icon.png differ
diff --git a/assets/branding/status-icon.svg b/assets/branding/status-icon.svg
new file mode 100644
index 0000000..7b6e403
--- /dev/null
+++ b/assets/branding/status-icon.svg
@@ -0,0 +1,3 @@
+
diff --git a/fastlane/metadata/android/en-US/images/featureGraphic.png b/fastlane/metadata/android/en-US/images/featureGraphic.png
index 14be112..d68e97d 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 1288b9a..7fc0b0b 100644
Binary files a/fastlane/metadata/android/en-US/images/icon.png and b/fastlane/metadata/android/en-US/images/icon.png differ