From 0e48a8c85b2a8c3dcf3109d7facef98302fe23be Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 29 Jul 2026 13:58:10 +0000 Subject: [PATCH] feat: brand push-notification icons with the Amethyst gem MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Every per-category status-bar icon now carries the Amethyst crystal so a notification reads as an *Amethyst* reply/zap/mention at a glance, not a generic Material glyph. Android renders small icons as a flat alpha-only silhouette, so the gem is composed as a spatially distinct mark rather than layered behind the glyph: - Direct message, mention, repost, reaction, code and badge: gem sits in the natural cavity of the glyph (bubble, @ ring, repeat loop, heart, brackets, medal center). - Media: gem is the sun rising over the hills. - Article: gem is the drop-cap starting the first line. - Chess: switched to the outlined knight from the app's icon set (MaterialSymbols.ChessKnight) with a small brand gem. - Reply and zap: open glyphs that can't hold a centered gem keep a small gem corner mark. Action buttons stay unbranded — a gem on a "Reply"/"Mark read" button is noise, not identity — so those now use dedicated plain glyphs (ic_action_reply, ic_action_mark_read). Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01GXfHYcViokBQRtqCW9vLQi --- .../service/notifications/NotificationUtils.kt | 4 ++-- .../src/main/res/drawable/ic_action_mark_read.xml | 8 ++++++++ .../src/main/res/drawable/ic_action_reply.xml | 8 ++++++++ .../src/main/res/drawable/ic_notif_article.xml | 14 +++++++++++++- amethyst/src/main/res/drawable/ic_notif_badge.xml | 11 ++++++++++- amethyst/src/main/res/drawable/ic_notif_chess.xml | 15 ++++++++++++++- amethyst/src/main/res/drawable/ic_notif_code.xml | 7 +++++++ amethyst/src/main/res/drawable/ic_notif_media.xml | 10 +++++++++- .../src/main/res/drawable/ic_notif_mention.xml | 10 +++++++++- .../src/main/res/drawable/ic_notif_message.xml | 10 +++++++++- .../src/main/res/drawable/ic_notif_reaction.xml | 9 ++++++++- amethyst/src/main/res/drawable/ic_notif_reply.xml | 15 ++++++++++++++- .../src/main/res/drawable/ic_notif_repost.xml | 7 +++++++ amethyst/src/main/res/drawable/ic_notif_zap.xml | 15 ++++++++++++++- 14 files changed, 132 insertions(+), 11 deletions(-) create mode 100644 amethyst/src/main/res/drawable/ic_action_mark_read.xml create mode 100644 amethyst/src/main/res/drawable/ic_action_reply.xml diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/notifications/NotificationUtils.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/notifications/NotificationUtils.kt index 67fed14b67..a1879a70f4 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/notifications/NotificationUtils.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/notifications/NotificationUtils.kt @@ -389,7 +389,7 @@ object NotificationUtils { PendingIntent.FLAG_MUTABLE or PendingIntent.FLAG_UPDATE_CURRENT, ) return NotificationCompat.Action - .Builder(R.drawable.ic_notif_reply, stringRes(applicationContext, R.string.app_notification_reply_label), replyPendingIntent) + .Builder(R.drawable.ic_action_reply, stringRes(applicationContext, R.string.app_notification_reply_label), replyPendingIntent) .addRemoteInput(replyRemoteInput(applicationContext)) .setAllowGeneratedReplies(true) .setSemanticAction(NotificationCompat.Action.SEMANTIC_ACTION_REPLY) @@ -460,7 +460,7 @@ object NotificationUtils { PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT, ) return NotificationCompat.Action - .Builder(R.drawable.ic_notif_message, stringRes(applicationContext, R.string.app_notification_mark_read_label), markReadPendingIntent) + .Builder(R.drawable.ic_action_mark_read, stringRes(applicationContext, R.string.app_notification_mark_read_label), markReadPendingIntent) .setSemanticAction(NotificationCompat.Action.SEMANTIC_ACTION_MARK_AS_READ) .build() } diff --git a/amethyst/src/main/res/drawable/ic_action_mark_read.xml b/amethyst/src/main/res/drawable/ic_action_mark_read.xml new file mode 100644 index 0000000000..4c833fa3d9 --- /dev/null +++ b/amethyst/src/main/res/drawable/ic_action_mark_read.xml @@ -0,0 +1,8 @@ + + + diff --git a/amethyst/src/main/res/drawable/ic_action_reply.xml b/amethyst/src/main/res/drawable/ic_action_reply.xml new file mode 100644 index 0000000000..cba9670de1 --- /dev/null +++ b/amethyst/src/main/res/drawable/ic_action_reply.xml @@ -0,0 +1,8 @@ + + + diff --git a/amethyst/src/main/res/drawable/ic_notif_article.xml b/amethyst/src/main/res/drawable/ic_notif_article.xml index 33edc24b2b..ff0e41b68f 100644 --- a/amethyst/src/main/res/drawable/ic_notif_article.xml +++ b/amethyst/src/main/res/drawable/ic_notif_article.xml @@ -4,5 +4,17 @@ android:viewportWidth="24" android:viewportHeight="24" android:tint="#000000"> - + + + + + + + + + diff --git a/amethyst/src/main/res/drawable/ic_notif_badge.xml b/amethyst/src/main/res/drawable/ic_notif_badge.xml index 2fee256783..0754175f14 100644 --- a/amethyst/src/main/res/drawable/ic_notif_badge.xml +++ b/amethyst/src/main/res/drawable/ic_notif_badge.xml @@ -4,5 +4,14 @@ android:viewportWidth="24" android:viewportHeight="24" android:tint="#000000"> - + + + + + + diff --git a/amethyst/src/main/res/drawable/ic_notif_chess.xml b/amethyst/src/main/res/drawable/ic_notif_chess.xml index e20882a854..049d70f1b0 100644 --- a/amethyst/src/main/res/drawable/ic_notif_chess.xml +++ b/amethyst/src/main/res/drawable/ic_notif_chess.xml @@ -4,5 +4,18 @@ android:viewportWidth="24" android:viewportHeight="24" android:tint="#000000"> - + + + + + + diff --git a/amethyst/src/main/res/drawable/ic_notif_code.xml b/amethyst/src/main/res/drawable/ic_notif_code.xml index d54a09f8ab..f87226c26e 100644 --- a/amethyst/src/main/res/drawable/ic_notif_code.xml +++ b/amethyst/src/main/res/drawable/ic_notif_code.xml @@ -5,4 +5,11 @@ android:viewportHeight="24" android:tint="#000000"> + + + diff --git a/amethyst/src/main/res/drawable/ic_notif_media.xml b/amethyst/src/main/res/drawable/ic_notif_media.xml index 575a58dd8b..267e8fc2e0 100644 --- a/amethyst/src/main/res/drawable/ic_notif_media.xml +++ b/amethyst/src/main/res/drawable/ic_notif_media.xml @@ -4,5 +4,13 @@ android:viewportWidth="24" android:viewportHeight="24" android:tint="#000000"> - + + + + + diff --git a/amethyst/src/main/res/drawable/ic_notif_mention.xml b/amethyst/src/main/res/drawable/ic_notif_mention.xml index afb7e1bebd..067717f696 100644 --- a/amethyst/src/main/res/drawable/ic_notif_mention.xml +++ b/amethyst/src/main/res/drawable/ic_notif_mention.xml @@ -4,5 +4,13 @@ android:viewportWidth="24" android:viewportHeight="24" android:tint="#000000"> - + + + + + diff --git a/amethyst/src/main/res/drawable/ic_notif_message.xml b/amethyst/src/main/res/drawable/ic_notif_message.xml index 4c833fa3d9..a4be19aa3e 100644 --- a/amethyst/src/main/res/drawable/ic_notif_message.xml +++ b/amethyst/src/main/res/drawable/ic_notif_message.xml @@ -4,5 +4,13 @@ android:viewportWidth="24" android:viewportHeight="24" android:tint="#000000"> - + + + + + diff --git a/amethyst/src/main/res/drawable/ic_notif_reaction.xml b/amethyst/src/main/res/drawable/ic_notif_reaction.xml index 9521a89868..033141faa5 100644 --- a/amethyst/src/main/res/drawable/ic_notif_reaction.xml +++ b/amethyst/src/main/res/drawable/ic_notif_reaction.xml @@ -4,5 +4,12 @@ android:viewportWidth="24" android:viewportHeight="24" android:tint="#000000"> - + + + + diff --git a/amethyst/src/main/res/drawable/ic_notif_reply.xml b/amethyst/src/main/res/drawable/ic_notif_reply.xml index cba9670de1..787006bd9b 100644 --- a/amethyst/src/main/res/drawable/ic_notif_reply.xml +++ b/amethyst/src/main/res/drawable/ic_notif_reply.xml @@ -4,5 +4,18 @@ android:viewportWidth="24" android:viewportHeight="24" android:tint="#000000"> - + + + + + + diff --git a/amethyst/src/main/res/drawable/ic_notif_repost.xml b/amethyst/src/main/res/drawable/ic_notif_repost.xml index 845f99423c..4a7f55febc 100644 --- a/amethyst/src/main/res/drawable/ic_notif_repost.xml +++ b/amethyst/src/main/res/drawable/ic_notif_repost.xml @@ -5,4 +5,11 @@ android:viewportHeight="24" android:tint="#000000"> + + + diff --git a/amethyst/src/main/res/drawable/ic_notif_zap.xml b/amethyst/src/main/res/drawable/ic_notif_zap.xml index 77f822994d..5c470f14a3 100644 --- a/amethyst/src/main/res/drawable/ic_notif_zap.xml +++ b/amethyst/src/main/res/drawable/ic_notif_zap.xml @@ -4,5 +4,18 @@ android:viewportWidth="24" android:viewportHeight="24" android:tint="#000000"> - + + + + + +