From 8b2b43d3c44084d4a83878f85df34466bb9840c4 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 26 Jun 2026 01:19:16 +0000 Subject: [PATCH 1/7] feat: redesign always-on service notification icon as a circular badge The persistent relay-service notification previously reused a hollow gem outline, which looked unpolished. Replace it with a full, solid disc that has the brand gem punched out of its centre as negative space (slightly smaller, with a comfortable surrounding ring). The enclosing circle gives the always-running service its own distinct, continuous "badge" feel while keeping the recognisable Amethyst gem shape. Built from the real gem path so it stays on-brand; a single evenOdd path turns the gem into a hole and restores its facet dot as a solid island. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01Kvjst6qVHuQ8rKD3LtvTzi --- .../main/res/drawable/amethyst_service.xml | 36 ++++++++----------- 1 file changed, 15 insertions(+), 21 deletions(-) diff --git a/amethyst/src/main/res/drawable/amethyst_service.xml b/amethyst/src/main/res/drawable/amethyst_service.xml index 2413c3894e..96de785da2 100644 --- a/amethyst/src/main/res/drawable/amethyst_service.xml +++ b/amethyst/src/main/res/drawable/amethyst_service.xml @@ -3,31 +3,25 @@ ~ ~ Notification small icons are rendered by the system as flat, alpha-only ~ silhouettes, so the regular `amethyst` gem becomes an identical solid gem - ~ for both real notifications and this persistent service. To stop the - ~ service from reading as a new notification, this variant draws the gem as - ~ a hollow outline — same brand shape, clearly different at a glance. + ~ for both real notifications and this persistent service. To set the + ~ always-on service apart, this variant draws a full, solid disc with the + ~ brand gem punched out of its centre (slightly smaller, as negative space). + ~ The enclosing circle reads as a continuous, always-running badge — clearly + ~ different at a glance while keeping the recognisable gem shape. + ~ + ~ The single path combines the disc (outer subpath) with the gem body and its + ~ facet dot (inner subpaths); `fillType="evenOdd"` turns the gem into a hole, + ~ and the small facet dot back into a solid island within that hole, echoing + ~ the highlight on the regular gem. The gem is centred on the disc and scaled + ~ to ~52% of its diameter so a comfortable ring surrounds it on every side. --> - - - - + From 27191c3a36b309af2871b18d9fa93f14113a8146 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 26 Jun 2026 02:06:49 +0000 Subject: [PATCH 2/7] fix: enlarge gem in service notification icon by 10% The punched-out gem now spans ~57% of the disc diameter (was ~52%), giving it slightly more presence within the circular badge. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01Kvjst6qVHuQ8rKD3LtvTzi --- amethyst/src/main/res/drawable/amethyst_service.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/amethyst/src/main/res/drawable/amethyst_service.xml b/amethyst/src/main/res/drawable/amethyst_service.xml index 96de785da2..1840d24a7e 100644 --- a/amethyst/src/main/res/drawable/amethyst_service.xml +++ b/amethyst/src/main/res/drawable/amethyst_service.xml @@ -13,7 +13,7 @@ ~ facet dot (inner subpaths); `fillType="evenOdd"` turns the gem into a hole, ~ and the small facet dot back into a solid island within that hole, echoing ~ the highlight on the regular gem. The gem is centred on the disc and scaled - ~ to ~52% of its diameter so a comfortable ring surrounds it on every side. + ~ to ~57% of its diameter so a comfortable ring surrounds it on every side. --> + android:pathData="M256,16A240,240 0,1,1 256,496A240,240 0,1,1 256,16ZM381.672,328.981C381.376,328.082,312.47,164.009,293.518,118.5c-23.075,0,-71.802,0,-106.174,0c-10.087,24.948,-36.127,88.536,-57.016,139.761c11.448,27.311,21.729,51.844,29.657,70.768l43.232,0a2.955,2.955 0,0,0,2.761,-3.472c-0.371,-8.73,-24.135,-40.46,-17.046,-74.784c1.889,-7.385,3.337,-14.888,5.404,-22.246a259.628,259.628 135,0,1,19.85,-51.402c1.313,-2.497,1.922,-3.617,4.946,-1.728c6.454,4.015,13.661,3.784,20.841,3.262c6.19,-1.346,9.204,-4.311,20.545,-1.297c2.244,0,4.43,0,6.723,0.205c5.452,0.431,10.56,1.728,13.838,6.663c3.574,5.393,4.15,11.492,3.574,17.724c-0.872,9.322,-0.253,18.004,7.638,24.576a84.962,84.962 0,0,0,8.865,5.91c3.913,2.514,8.639,3.606,11.992,7.089c1.981,2.051,3.149,4.241,2.288,7.164c-0.856,2.923,-3.149,4.301,-6.158,4.624c-7.622,0.829,-15.065,-0.721,-22.552,-1.625c-0.974,-0.118,-1.932,-0.194,-2.955,-0.253a16.944,16.944 0,0,1,-5.63,0.194l-1.76,0a39.437,39.437 0,0,0,-8.714,2.083c-7.062,2.573,-13.488,5.404,-21.815,5.259a6.384,6.384 0,0,0,-3.03,1.313c-6.529,5.802,-10.458,13.133,-7.191,23.839c8.951,25.007,31.918,85.333,41.789,111.374c-0.28,-17.638,-0.355,-49.217,-0.414,-64.546c39.41,0.059,99.834,0.027,104.651,0.027ZM248.823,202.886a8.332,8.477 90,1,0,16.955,0a8.332,8.477 90,1,0,-16.955,0Z" /> From bacb8a57ad8cedd26762d41ed12c2d3c5241c5ef Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 26 Jun 2026 14:57:22 +0000 Subject: [PATCH 3/7] feat: add circular-badge service icon as amethyst_service2 option Keep the original hollow-outline amethyst_service icon and add the new circular badge (solid disc with the gem punched out of its centre) as a separate amethyst_service2 drawable, so the always-on notification icon can be switched between the two without losing either design. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01Kvjst6qVHuQ8rKD3LtvTzi --- .../main/res/drawable/amethyst_service.xml | 36 +++++++++++-------- .../main/res/drawable/amethyst_service2.xml | 27 ++++++++++++++ 2 files changed, 48 insertions(+), 15 deletions(-) create mode 100644 amethyst/src/main/res/drawable/amethyst_service2.xml diff --git a/amethyst/src/main/res/drawable/amethyst_service.xml b/amethyst/src/main/res/drawable/amethyst_service.xml index 1840d24a7e..2413c3894e 100644 --- a/amethyst/src/main/res/drawable/amethyst_service.xml +++ b/amethyst/src/main/res/drawable/amethyst_service.xml @@ -3,25 +3,31 @@ ~ ~ Notification small icons are rendered by the system as flat, alpha-only ~ silhouettes, so the regular `amethyst` gem becomes an identical solid gem - ~ for both real notifications and this persistent service. To set the - ~ always-on service apart, this variant draws a full, solid disc with the - ~ brand gem punched out of its centre (slightly smaller, as negative space). - ~ The enclosing circle reads as a continuous, always-running badge — clearly - ~ different at a glance while keeping the recognisable gem shape. - ~ - ~ The single path combines the disc (outer subpath) with the gem body and its - ~ facet dot (inner subpaths); `fillType="evenOdd"` turns the gem into a hole, - ~ and the small facet dot back into a solid island within that hole, echoing - ~ the highlight on the regular gem. The gem is centred on the disc and scaled - ~ to ~57% of its diameter so a comfortable ring surrounds it on every side. + ~ for both real notifications and this persistent service. To stop the + ~ service from reading as a new notification, this variant draws the gem as + ~ a hollow outline — same brand shape, clearly different at a glance. --> - + + + + diff --git a/amethyst/src/main/res/drawable/amethyst_service2.xml b/amethyst/src/main/res/drawable/amethyst_service2.xml new file mode 100644 index 0000000000..1840d24a7e --- /dev/null +++ b/amethyst/src/main/res/drawable/amethyst_service2.xml @@ -0,0 +1,27 @@ + + + + From e1c152ada87f6be25427e1a83d90fda7fc527942 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 26 Jun 2026 15:33:15 +0000 Subject: [PATCH 4/7] feat: add four more service-icon options + on-device preview harness Add four additional always-on service notification icon candidates, each keeping the centred brand gem with a "background service / connected to servers" motif around it: - amethyst_service3: orbit ring with three server nodes - amethyst_service4: two looping sync arrows (running) - amethyst_service5: hub & spoke to five nodes (connected to relays) - amethyst_service6: concentric broadcast waves To compare all candidates on a real device, add a DEBUG-only helper (ServiceIconPreviewNotifications) that posts one always-on-style ongoing notification per icon (same channel style, ongoing/silent/low priority), triggered from MainActivity.onCreate under BuildConfig.DEBUG. NOTE: the preview harness (ServiceIconPreviewNotifications + the MainActivity hook) is temporary scaffolding for the icon bake-off and is meant to be removed once a design is chosen. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01Kvjst6qVHuQ8rKD3LtvTzi --- .../ServiceIconPreviewNotifications.kt | 108 ++++++++++++++++++ .../vitorpamplona/amethyst/ui/MainActivity.kt | 9 ++ .../main/res/drawable/amethyst_service3.xml | 30 +++++ .../main/res/drawable/amethyst_service4.xml | 35 ++++++ .../main/res/drawable/amethyst_service5.xml | 65 +++++++++++ .../main/res/drawable/amethyst_service6.xml | 57 +++++++++ 6 files changed, 304 insertions(+) create mode 100644 amethyst/src/main/java/com/vitorpamplona/amethyst/service/notifications/ServiceIconPreviewNotifications.kt create mode 100644 amethyst/src/main/res/drawable/amethyst_service3.xml create mode 100644 amethyst/src/main/res/drawable/amethyst_service4.xml create mode 100644 amethyst/src/main/res/drawable/amethyst_service5.xml create mode 100644 amethyst/src/main/res/drawable/amethyst_service6.xml diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/notifications/ServiceIconPreviewNotifications.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/notifications/ServiceIconPreviewNotifications.kt new file mode 100644 index 0000000000..a1398ce5a0 --- /dev/null +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/notifications/ServiceIconPreviewNotifications.kt @@ -0,0 +1,108 @@ +/* + * Copyright (c) 2025 Vitor Pamplona + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the + * Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +package com.vitorpamplona.amethyst.service.notifications + +// ===================================================================================== +// TEMPORARY / DEBUG-ONLY — REMOVE BEFORE MERGE. +// +// Posts one always-on-style notification per candidate small-icon so the different +// "service icon" designs can be compared side by side in the status bar / shade on a +// real device. These mimic the real NotificationRelayService notification (same +// channel, ongoing, silent, low priority) but each uses a different drawable and a +// label naming the design. +// +// To remove the whole experiment later: delete this file, the four extra drawables +// (amethyst_service2..6), and the single ServiceIconPreviewNotifications.postAll(...) +// call in MainActivity.onCreate. +// ===================================================================================== + +import android.app.NotificationChannel +import android.app.NotificationManager +import android.content.Context +import android.os.Build +import androidx.annotation.DrawableRes +import androidx.core.app.NotificationCompat +import androidx.core.app.NotificationManagerCompat +import com.vitorpamplona.amethyst.R + +object ServiceIconPreviewNotifications { + private const val CHANNEL_ID = "service_icon_preview" + private const val BASE_ID = 920_000 + + private data class Candidate( + @DrawableRes val icon: Int, + val label: String, + ) + + private val candidates = + listOf( + Candidate(R.drawable.amethyst_service, "1 · Hollow gem outline (current)"), + Candidate(R.drawable.amethyst_service2, "2 · Solid circle, gem cut-out"), + Candidate(R.drawable.amethyst_service3, "3 · Orbit + server nodes"), + Candidate(R.drawable.amethyst_service4, "4 · Sync arrows (running)"), + Candidate(R.drawable.amethyst_service5, "5 · Hub & spoke (connected)"), + Candidate(R.drawable.amethyst_service6, "6 · Broadcast waves"), + ) + + fun postAll(context: Context) { + val manager = NotificationManagerCompat.from(context) + if (!manager.areNotificationsEnabled()) return + + ensureChannel(context) + + candidates.forEachIndexed { index, candidate -> + val notification = + NotificationCompat + .Builder(context, CHANNEL_ID) + .setContentTitle("Service icon ${index + 1}") + .setContentText(candidate.label) + .setSmallIcon(candidate.icon) + .setOngoing(true) + .setSilent(true) + .setPriority(NotificationCompat.PRIORITY_LOW) + .setCategory(NotificationCompat.CATEGORY_SERVICE) + .build() + + manager.notify(BASE_ID + index, notification) + } + } + + fun clearAll(context: Context) { + val manager = NotificationManagerCompat.from(context) + candidates.indices.forEach { manager.cancel(BASE_ID + it) } + } + + private fun ensureChannel(context: Context) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) return + val channel = + NotificationChannel( + CHANNEL_ID, + "Service icon preview (debug)", + NotificationManager.IMPORTANCE_LOW, + ).apply { + description = "Temporary side-by-side preview of always-on service icons" + setShowBadge(false) + } + val notificationManager = + context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager + notificationManager.createNotificationChannel(channel) + } +} diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/MainActivity.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/MainActivity.kt index edf9d17fbf..9a594cfa42 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/MainActivity.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/MainActivity.kt @@ -27,11 +27,13 @@ import androidx.activity.enableEdgeToEdge import androidx.annotation.RequiresApi import androidx.appcompat.app.AppCompatActivity import com.vitorpamplona.amethyst.Amethyst +import com.vitorpamplona.amethyst.BuildConfig import com.vitorpamplona.amethyst.debugState import com.vitorpamplona.amethyst.model.Account import com.vitorpamplona.amethyst.model.LocalCache import com.vitorpamplona.amethyst.service.lang.LanguageTranslatorService import com.vitorpamplona.amethyst.service.notifications.NotificationRelayService +import com.vitorpamplona.amethyst.service.notifications.ServiceIconPreviewNotifications import com.vitorpamplona.amethyst.service.playback.composable.DEFAULT_MUTED_SETTING import com.vitorpamplona.amethyst.service.playback.pip.BackgroundMedia import com.vitorpamplona.amethyst.ui.navigation.findParameterValue @@ -78,6 +80,13 @@ class MainActivity : AppCompatActivity() { Log.d("ActivityLifecycle") { "MainActivity.onCreate $this" } + // TEMPORARY / DEBUG-ONLY — REMOVE BEFORE MERGE. + // Posts side-by-side preview notifications for the candidate always-on + // service icons so they can be compared on a real device. + if (BuildConfig.DEBUG) { + ServiceIconPreviewNotifications.postAll(this) + } + setContent { StringResSetup() AmethystTheme { diff --git a/amethyst/src/main/res/drawable/amethyst_service3.xml b/amethyst/src/main/res/drawable/amethyst_service3.xml new file mode 100644 index 0000000000..4eeb6cf4fa --- /dev/null +++ b/amethyst/src/main/res/drawable/amethyst_service3.xml @@ -0,0 +1,30 @@ + + + + + + + + diff --git a/amethyst/src/main/res/drawable/amethyst_service4.xml b/amethyst/src/main/res/drawable/amethyst_service4.xml new file mode 100644 index 0000000000..6ebb841d09 --- /dev/null +++ b/amethyst/src/main/res/drawable/amethyst_service4.xml @@ -0,0 +1,35 @@ + + + + + + + + diff --git a/amethyst/src/main/res/drawable/amethyst_service5.xml b/amethyst/src/main/res/drawable/amethyst_service5.xml new file mode 100644 index 0000000000..54bde2c604 --- /dev/null +++ b/amethyst/src/main/res/drawable/amethyst_service5.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + diff --git a/amethyst/src/main/res/drawable/amethyst_service6.xml b/amethyst/src/main/res/drawable/amethyst_service6.xml new file mode 100644 index 0000000000..be905d5e97 --- /dev/null +++ b/amethyst/src/main/res/drawable/amethyst_service6.xml @@ -0,0 +1,57 @@ + + + + + + + + + + From 002c8b6d30b76ff2e04a7ad9b71ad9ee4cc85582 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 26 Jun 2026 15:53:11 +0000 Subject: [PATCH 5/7] style: enlarge service-icon options to fill the icon frame Scale up the orbit/sync/hub/waves motifs and their centred gems so each drawing occupies as much of the 512 viewport as possible (rings and nodes pushed near the edge, larger central gem), keeping a small margin so strokes don't clip. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01Kvjst6qVHuQ8rKD3LtvTzi --- .../main/res/drawable/amethyst_service3.xml | 15 ++++---- .../main/res/drawable/amethyst_service4.xml | 17 ++++----- .../main/res/drawable/amethyst_service5.xml | 35 ++++++++++--------- .../main/res/drawable/amethyst_service6.xml | 17 ++++----- 4 files changed, 44 insertions(+), 40 deletions(-) diff --git a/amethyst/src/main/res/drawable/amethyst_service3.xml b/amethyst/src/main/res/drawable/amethyst_service3.xml index 4eeb6cf4fa..2c28c2e25a 100644 --- a/amethyst/src/main/res/drawable/amethyst_service3.xml +++ b/amethyst/src/main/res/drawable/amethyst_service3.xml @@ -1,7 +1,8 @@ + android:pathData="M351.968,311.731C351.742,311.044,299.123,185.752,284.65,151c-17.621,0,-54.831,0,-81.078,0c-7.703,19.051,-27.588,67.609,-43.54,106.726c8.742,20.855,16.593,39.59,22.647,54.041l33.013,0a2.257,2.257 0,0,0,2.109,-2.651c-0.284,-6.667,-18.43,-30.897,-13.017,-57.108c1.443,-5.639,2.548,-11.369,4.127,-16.988a198.261,198.261 135,0,1,15.159,-39.253c1.003,-1.907,1.467,-2.762,3.777,-1.319c4.928,3.066,10.432,2.889,15.915,2.491c4.727,-1.028,7.028,-3.292,15.689,-0.991c1.714,0,3.383,0,5.134,0.156c4.164,0.329,8.064,1.319,10.567,5.088c2.729,4.118,3.169,8.775,2.729,13.535c-0.666,7.119,-0.193,13.749,5.832,18.767a64.88,64.88 0,0,0,6.77,4.513c2.988,1.919,6.597,2.754,9.158,5.413c1.513,1.566,2.404,3.239,1.747,5.471c-0.654,2.232,-2.404,3.284,-4.702,3.531c-5.82,0.633,-11.505,-0.551,-17.222,-1.241c-0.744,-0.09,-1.476,-0.148,-2.257,-0.193a12.939,12.939 0,0,1,-4.299,0.148l-1.344,0a30.116,30.116 0,0,0,-6.654,1.591c-5.393,1.965,-10.3,4.127,-16.659,4.016a4.875,4.875 0,0,0,-2.314,1.003c-4.986,4.431,-7.986,10.029,-5.491,18.204c6.835,19.096,24.374,65.164,31.912,85.049c-0.214,-13.469,-0.271,-37.584,-0.316,-49.29c30.095,0.045,76.237,0.021,79.915,0.021ZM250.519,215.44a6.363,6.474 90,1,0,12.947,0a6.363,6.474 90,1,0,-12.947,0Z" /> + android:pathData="M256,46A210,210 0,1,1 256,466A210,210 0,1,1 256,46Z" /> + android:pathData="M256,10A36,36 0,1,1 256,82A36,36 0,1,1 256,10Z" /> + android:pathData="M74.13,325A36,36 0,1,1 74.13,397A36,36 0,1,1 74.13,325Z" /> + android:pathData="M437.87,325A36,36 0,1,1 437.87,397A36,36 0,1,1 437.87,325Z" /> diff --git a/amethyst/src/main/res/drawable/amethyst_service4.xml b/amethyst/src/main/res/drawable/amethyst_service4.xml index 6ebb841d09..f61d10eb86 100644 --- a/amethyst/src/main/res/drawable/amethyst_service4.xml +++ b/amethyst/src/main/res/drawable/amethyst_service4.xml @@ -1,7 +1,8 @@ + android:pathData="M351.968,311.731C351.742,311.044,299.123,185.752,284.65,151c-17.621,0,-54.831,0,-81.078,0c-7.703,19.051,-27.588,67.609,-43.54,106.726c8.742,20.855,16.593,39.59,22.647,54.041l33.013,0a2.257,2.257 0,0,0,2.109,-2.651c-0.284,-6.667,-18.43,-30.897,-13.017,-57.108c1.443,-5.639,2.548,-11.369,4.127,-16.988a198.261,198.261 135,0,1,15.159,-39.253c1.003,-1.907,1.467,-2.762,3.777,-1.319c4.928,3.066,10.432,2.889,15.915,2.491c4.727,-1.028,7.028,-3.292,15.689,-0.991c1.714,0,3.383,0,5.134,0.156c4.164,0.329,8.064,1.319,10.567,5.088c2.729,4.118,3.169,8.775,2.729,13.535c-0.666,7.119,-0.193,13.749,5.832,18.767a64.88,64.88 0,0,0,6.77,4.513c2.988,1.919,6.597,2.754,9.158,5.413c1.513,1.566,2.404,3.239,1.747,5.471c-0.654,2.232,-2.404,3.284,-4.702,3.531c-5.82,0.633,-11.505,-0.551,-17.222,-1.241c-0.744,-0.09,-1.476,-0.148,-2.257,-0.193a12.939,12.939 0,0,1,-4.299,0.148l-1.344,0a30.116,30.116 0,0,0,-6.654,1.591c-5.393,1.965,-10.3,4.127,-16.659,4.016a4.875,4.875 0,0,0,-2.314,1.003c-4.986,4.431,-7.986,10.029,-5.491,18.204c6.835,19.096,24.374,65.164,31.912,85.049c-0.214,-13.469,-0.271,-37.584,-0.316,-49.29c30.095,0.045,76.237,0.021,79.915,0.021ZM250.519,215.44a6.363,6.474 90,1,0,12.947,0a6.363,6.474 90,1,0,-12.947,0Z" /> + android:pathData="M301.74,40.81A220,220 0,0,1,301.74,471.19" /> + android:pathData="M210.26,471.19A220,220 0,0,1,210.26,40.81" /> + android:pathData="M271.96,474.85L322.2,449.25L326.9,487.53Z" /> + android:pathData="M240.04,37.15L189.8,62.75L185.1,24.47Z" /> diff --git a/amethyst/src/main/res/drawable/amethyst_service5.xml b/amethyst/src/main/res/drawable/amethyst_service5.xml index 54bde2c604..d8785cf09a 100644 --- a/amethyst/src/main/res/drawable/amethyst_service5.xml +++ b/amethyst/src/main/res/drawable/amethyst_service5.xml @@ -1,7 +1,8 @@ + android:pathData="M341.914,305.892C341.712,305.278,294.605,193.111,281.649,162c-15.775,0,-49.086,0,-72.585,0c-6.896,17.055,-24.698,60.526,-38.978,95.545c7.827,18.67,14.855,35.442,20.275,48.38l29.555,0a2.02,2.02 0,0,0,1.888,-2.373c-0.254,-5.968,-16.499,-27.66,-11.653,-51.125c1.292,-5.048,2.281,-10.178,3.694,-15.208a177.491,177.491 135,0,1,13.571,-35.141c0.898,-1.707,1.314,-2.473,3.382,-1.181c4.412,2.745,9.339,2.587,14.248,2.23c4.232,-0.92,6.292,-2.947,14.045,-0.887c1.534,0,3.028,0,4.596,0.14c3.727,0.294,7.219,1.181,9.46,4.555c2.443,3.687,2.837,7.856,2.443,12.117c-0.596,6.373,-0.173,12.308,5.221,16.801a58.083,58.083 0,0,0,6.06,4.04c2.675,1.718,5.906,2.465,8.198,4.846c1.354,1.402,2.153,2.9,1.564,4.898c-0.585,1.998,-2.153,2.94,-4.21,3.161c-5.21,0.567,-10.299,-0.493,-15.418,-1.111c-0.666,-0.081,-1.321,-0.132,-2.02,-0.173a11.583,11.583 0,0,1,-3.849,0.132l-1.203,0a26.961,26.961 0,0,0,-5.957,1.424c-4.828,1.759,-9.221,3.694,-14.914,3.595a4.364,4.364 0,0,0,-2.072,0.898c-4.463,3.967,-7.15,8.978,-4.916,16.297c6.119,17.096,21.82,58.337,28.569,76.139c-0.191,-12.058,-0.243,-33.647,-0.283,-44.126c26.942,0.04,68.25,0.018,71.543,0.018ZM251.093,219.689a5.696,5.795 90,1,0,11.591,0a5.696,5.795 90,1,0,-11.591,0Z" /> + android:pathData="M256,130L256,34" /> + android:pathData="M375.83,217.06L467.13,187.4" /> + android:pathData="M330.06,357.94L386.49,435.6" /> + android:pathData="M181.94,357.94L125.51,435.6" /> + android:pathData="M136.17,217.06L44.87,187.4" /> + android:pathData="M256,6A28,28 0,1,1 256,62A28,28 0,1,1 256,6Z" /> + android:pathData="M467.13,159.4A28,28 0,1,1 467.13,215.4A28,28 0,1,1 467.13,159.4Z" /> + android:pathData="M386.49,407.6A28,28 0,1,1 386.49,463.6A28,28 0,1,1 386.49,407.6Z" /> + android:pathData="M125.51,407.6A28,28 0,1,1 125.51,463.6A28,28 0,1,1 125.51,407.6Z" /> + android:pathData="M44.87,159.4A28,28 0,1,1 44.87,215.4A28,28 0,1,1 44.87,159.4Z" /> diff --git a/amethyst/src/main/res/drawable/amethyst_service6.xml b/amethyst/src/main/res/drawable/amethyst_service6.xml index be905d5e97..ae5b988830 100644 --- a/amethyst/src/main/res/drawable/amethyst_service6.xml +++ b/amethyst/src/main/res/drawable/amethyst_service6.xml @@ -1,7 +1,8 @@ + android:pathData="M341.914,305.892C341.712,305.278,294.605,193.111,281.649,162c-15.775,0,-49.086,0,-72.585,0c-6.896,17.055,-24.698,60.526,-38.978,95.545c7.827,18.67,14.855,35.442,20.275,48.38l29.555,0a2.02,2.02 0,0,0,1.888,-2.373c-0.254,-5.968,-16.499,-27.66,-11.653,-51.125c1.292,-5.048,2.281,-10.178,3.694,-15.208a177.491,177.491 135,0,1,13.571,-35.141c0.898,-1.707,1.314,-2.473,3.382,-1.181c4.412,2.745,9.339,2.587,14.248,2.23c4.232,-0.92,6.292,-2.947,14.045,-0.887c1.534,0,3.028,0,4.596,0.14c3.727,0.294,7.219,1.181,9.46,4.555c2.443,3.687,2.837,7.856,2.443,12.117c-0.596,6.373,-0.173,12.308,5.221,16.801a58.083,58.083 0,0,0,6.06,4.04c2.675,1.718,5.906,2.465,8.198,4.846c1.354,1.402,2.153,2.9,1.564,4.898c-0.585,1.998,-2.153,2.94,-4.21,3.161c-5.21,0.567,-10.299,-0.493,-15.418,-1.111c-0.666,-0.081,-1.321,-0.132,-2.02,-0.173a11.583,11.583 0,0,1,-3.849,0.132l-1.203,0a26.961,26.961 0,0,0,-5.957,1.424c-4.828,1.759,-9.221,3.694,-14.914,3.595a4.364,4.364 0,0,0,-2.072,0.898c-4.463,3.967,-7.15,8.978,-4.916,16.297c6.119,17.096,21.82,58.337,28.569,76.139c-0.191,-12.058,-0.243,-33.647,-0.283,-44.126c26.942,0.04,68.25,0.018,71.543,0.018ZM251.093,219.689a5.696,5.795 90,1,0,11.591,0a5.696,5.795 90,1,0,-11.591,0Z" /> + android:pathData="M123.56,185.58A150,150 0,0,1,388.44,185.58" /> + android:pathData="M388.44,326.42A150,150 0,0,1,123.56,326.42" /> + android:pathData="M82.94,163.98A196,196 0,0,1,429.06,163.98" /> + android:pathData="M429.06,348.02A196,196 0,0,1,82.94,348.02" /> + android:pathData="M42.33,142.39A242,242 0,0,1,469.67,142.39" /> + android:pathData="M469.67,369.61A242,242 0,0,1,42.33,369.61" /> From 6b6ee26a88bd21bf459c6f9bbe82b08e81ffc678 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 26 Jun 2026 17:57:31 +0000 Subject: [PATCH 6/7] style: maximize centred gem in the service-icon options Grow the central Amethyst gem in each motif (orbit/sync/hub/waves) to the largest size that still clears the surrounding elements. For the hub icon the spokes now start farther from the centre to give the gem room. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01Kvjst6qVHuQ8rKD3LtvTzi --- .../src/main/res/drawable/amethyst_service3.xml | 6 +++--- .../src/main/res/drawable/amethyst_service4.xml | 6 +++--- .../src/main/res/drawable/amethyst_service5.xml | 16 ++++++++-------- .../src/main/res/drawable/amethyst_service6.xml | 6 +++--- 4 files changed, 17 insertions(+), 17 deletions(-) diff --git a/amethyst/src/main/res/drawable/amethyst_service3.xml b/amethyst/src/main/res/drawable/amethyst_service3.xml index 2c28c2e25a..0937d18a76 100644 --- a/amethyst/src/main/res/drawable/amethyst_service3.xml +++ b/amethyst/src/main/res/drawable/amethyst_service3.xml @@ -1,8 +1,8 @@ + android:pathData="M384.871,330.838C384.567,329.917,313.907,161.667,294.473,115c-23.662,0,-73.63,0,-108.877,0c-10.343,25.583,-37.047,90.79,-58.468,143.318c11.74,28.006,22.282,53.163,30.412,72.57l44.332,0a3.03,3.03 0,0,0,2.831,-3.56c-0.381,-8.953,-24.749,-41.49,-17.48,-76.687c1.937,-7.573,3.422,-15.267,5.542,-22.812a266.236,266.236 135,0,1,20.356,-52.711c1.347,-2.561,1.97,-3.709,5.072,-1.772c6.618,4.118,14.008,3.88,21.371,3.345c6.347,-1.38,9.438,-4.421,21.068,-1.33c2.302,0,4.543,0,6.894,0.21c5.591,0.442,10.829,1.772,14.191,6.833c3.665,5.53,4.255,11.784,3.665,18.176c-0.894,9.56,-0.259,18.463,7.832,25.202a87.125,87.125 0,0,0,9.091,6.06c4.013,2.578,8.859,3.698,12.297,7.269c2.031,2.103,3.229,4.349,2.346,7.346c-0.878,2.997,-3.229,4.41,-6.314,4.741c-7.816,0.85,-15.449,-0.74,-23.127,-1.667c-0.999,-0.121,-1.981,-0.199,-3.03,-0.259a17.375,17.375 0,0,1,-5.773,0.199l-1.805,0a40.441,40.441 0,0,0,-8.936,2.136c-7.242,2.638,-13.832,5.542,-22.37,5.393a6.546,6.546 0,0,0,-3.107,1.347c-6.695,5.95,-10.724,13.467,-7.374,24.446c9.179,25.643,32.73,87.505,42.853,114.209c-0.287,-18.087,-0.364,-50.47,-0.425,-66.189c40.413,0.061,102.375,0.028,107.315,0.028ZM248.64,201.534a8.544,8.693 90,1,0,17.386,0a8.544,8.693 90,1,0,-17.386,0Z" /> + android:pathData="M393.097,335.615C392.774,334.635,317.604,155.646,296.929,106c-25.172,0,-78.329,0,-115.826,0c-11.004,27.216,-39.411,96.585,-62.2,152.466c12.489,29.793,23.704,56.557,32.353,77.202l47.162,0a3.224,3.224 0,0,0,3.012,-3.787c-0.405,-9.524,-26.329,-44.138,-18.596,-81.582c2.061,-8.056,3.64,-16.241,5.895,-24.268a283.23,283.23 135,0,1,21.655,-56.075c1.433,-2.724,2.096,-3.946,5.396,-1.885c7.04,4.38,14.903,4.128,22.735,3.558c6.753,-1.468,10.041,-4.703,22.413,-1.415c2.449,0,4.832,0,7.334,0.223c5.948,0.47,11.52,1.885,15.096,7.269c3.899,5.884,4.527,12.536,3.899,19.336c-0.951,10.17,-0.276,19.641,8.332,26.81a92.686,92.686 0,0,0,9.671,6.447c4.269,2.742,9.424,3.934,13.082,7.733c2.161,2.237,3.435,4.627,2.495,7.815c-0.934,3.188,-3.435,4.692,-6.717,5.044c-8.314,0.904,-16.435,-0.787,-24.603,-1.773c-1.063,-0.129,-2.108,-0.211,-3.224,-0.276a18.484,18.484 0,0,1,-6.142,0.211l-1.92,0a43.022,43.022 0,0,0,-9.506,2.272c-7.704,2.807,-14.715,5.895,-23.798,5.737a6.964,6.964 0,0,0,-3.306,1.433c-7.122,6.33,-11.409,14.327,-7.845,26.006c9.765,27.28,34.82,93.091,45.588,121.498c-0.305,-19.242,-0.388,-53.691,-0.452,-70.414c42.993,0.065,108.909,0.029,114.165,0.029ZM248.17,198.057a9.089,9.248 90,1,0,18.496,0a9.089,9.248 90,1,0,-18.496,0Z" /> + android:pathData="M363.849,318.631C363.595,317.859,304.461,177.055,288.198,138c-19.802,0,-61.619,0,-91.117,0c-8.656,21.41,-31.004,75.98,-48.93,119.94c9.825,23.437,18.647,44.491,25.451,60.732l37.101,0a2.536,2.536 0,0,0,2.37,-2.979c-0.319,-7.492,-20.712,-34.722,-14.629,-64.178c1.621,-6.337,2.864,-12.776,4.638,-19.091a222.808,222.808 135,0,1,17.035,-44.113c1.127,-2.143,1.649,-3.104,4.245,-1.483c5.538,3.446,11.723,3.247,17.885,2.799c5.312,-1.155,7.899,-3.7,17.631,-1.113c1.926,0,3.802,0,5.769,0.176c4.679,0.37,9.063,1.483,11.876,5.718c3.067,4.628,3.561,9.862,3.067,15.211c-0.748,8,-0.217,15.451,6.555,21.091a72.913,72.913 0,0,0,7.608,5.072c3.358,2.157,7.414,3.095,10.291,6.083c1.7,1.76,2.702,3.64,1.963,6.148c-0.734,2.508,-2.702,3.691,-5.284,3.968c-6.541,0.711,-12.929,-0.619,-19.354,-1.395c-0.836,-0.102,-1.658,-0.166,-2.536,-0.217a14.541,14.541 0,0,1,-4.832,0.166l-1.51,0a33.844,33.844 0,0,0,-7.478,1.788c-6.06,2.208,-11.576,4.638,-18.721,4.513a5.478,5.478 0,0,0,-2.601,1.127c-5.603,4.979,-8.975,11.271,-6.171,20.458c7.682,21.46,27.391,73.232,35.863,95.579c-0.24,-15.137,-0.305,-42.237,-0.356,-55.392c33.821,0.051,85.675,0.023,89.81,0.023ZM249.84,210.419a7.15,7.275 90,1,0,14.55,0a7.15,7.275 90,1,0,-14.55,0Z" /> + android:pathData="M256,100L256,34" /> + android:pathData="M404.36,207.79L467.13,187.4" /> + android:pathData="M347.69,382.21L386.49,435.6" /> + android:pathData="M164.31,382.21L125.51,435.6" /> + android:pathData="M107.64,207.79L44.87,187.4" /> diff --git a/amethyst/src/main/res/drawable/amethyst_service6.xml b/amethyst/src/main/res/drawable/amethyst_service6.xml index ae5b988830..7018689d70 100644 --- a/amethyst/src/main/res/drawable/amethyst_service6.xml +++ b/amethyst/src/main/res/drawable/amethyst_service6.xml @@ -1,8 +1,8 @@ + android:pathData="M366.591,320.223C366.331,319.432,305.694,175.048,289.016,135c-20.306,0,-63.186,0,-93.433,0c-8.876,21.954,-31.792,77.912,-50.174,122.989c10.075,24.033,19.121,45.622,26.098,62.276l38.044,0a2.6,2.6 0,0,0,2.43,-3.055c-0.327,-7.683,-21.239,-35.605,-15.001,-65.81c1.663,-6.499,2.937,-13.101,4.755,-19.576a228.472,228.472 135,0,1,17.468,-45.234c1.156,-2.198,1.691,-3.183,4.353,-1.52c5.679,3.533,12.021,3.33,18.34,2.87c5.447,-1.184,8.1,-3.794,18.079,-1.142c1.975,0,3.898,0,5.916,0.18c4.798,0.379,9.293,1.52,12.178,5.864c3.145,4.746,3.652,10.113,3.145,15.597c-0.767,8.204,-0.223,15.844,6.721,21.627a74.766,74.766 0,0,0,7.801,5.201c3.443,2.212,7.602,3.173,10.553,6.238c1.743,1.805,2.771,3.732,2.013,6.304c-0.753,2.572,-2.771,3.785,-5.419,4.069c-6.707,0.729,-13.258,-0.635,-19.846,-1.43c-0.857,-0.104,-1.7,-0.171,-2.6,-0.223a14.911,14.911 0,0,1,-4.954,0.171l-1.549,0a34.705,34.705 0,0,0,-7.668,1.833c-6.214,2.264,-11.87,4.755,-19.197,4.628a5.618,5.618 0,0,0,-2.667,1.156c-5.745,5.106,-9.203,11.557,-6.328,20.978c7.877,22.006,28.088,75.093,36.775,98.009c-0.246,-15.522,-0.313,-43.311,-0.365,-56.801c34.681,0.052,87.854,0.024,92.093,0.024ZM249.684,209.26a7.332,7.46 90,1,0,14.92,0a7.332,7.46 90,1,0,-14.92,0Z" /> Date: Fri, 26 Jun 2026 18:04:42 +0000 Subject: [PATCH 7/7] feat: adopt orbit-ring service notification icon; drop preview scaffolding Make the orbit design (centred gem ringed by three "server" nodes) the always-on relay-service notification icon by writing it into the existing amethyst_service drawable, so NotificationRelayService picks it up unchanged. Remove the icon bake-off scaffolding now that a design is chosen: - delete the alternative drawables (amethyst_service2..6) - delete the DEBUG-only ServiceIconPreviewNotifications helper - drop its trigger and now-unused imports from MainActivity Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01Kvjst6qVHuQ8rKD3LtvTzi --- .../ServiceIconPreviewNotifications.kt | 108 ------------------ .../vitorpamplona/amethyst/ui/MainActivity.kt | 9 -- .../main/res/drawable/amethyst_service.xml | 45 ++++---- .../main/res/drawable/amethyst_service2.xml | 27 ----- .../main/res/drawable/amethyst_service3.xml | 31 ----- .../main/res/drawable/amethyst_service4.xml | 36 ------ .../main/res/drawable/amethyst_service5.xml | 66 ----------- .../main/res/drawable/amethyst_service6.xml | 58 ---------- 8 files changed, 24 insertions(+), 356 deletions(-) delete mode 100644 amethyst/src/main/java/com/vitorpamplona/amethyst/service/notifications/ServiceIconPreviewNotifications.kt delete mode 100644 amethyst/src/main/res/drawable/amethyst_service2.xml delete mode 100644 amethyst/src/main/res/drawable/amethyst_service3.xml delete mode 100644 amethyst/src/main/res/drawable/amethyst_service4.xml delete mode 100644 amethyst/src/main/res/drawable/amethyst_service5.xml delete mode 100644 amethyst/src/main/res/drawable/amethyst_service6.xml diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/notifications/ServiceIconPreviewNotifications.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/notifications/ServiceIconPreviewNotifications.kt deleted file mode 100644 index a1398ce5a0..0000000000 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/notifications/ServiceIconPreviewNotifications.kt +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright (c) 2025 Vitor Pamplona - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the - * Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ -package com.vitorpamplona.amethyst.service.notifications - -// ===================================================================================== -// TEMPORARY / DEBUG-ONLY — REMOVE BEFORE MERGE. -// -// Posts one always-on-style notification per candidate small-icon so the different -// "service icon" designs can be compared side by side in the status bar / shade on a -// real device. These mimic the real NotificationRelayService notification (same -// channel, ongoing, silent, low priority) but each uses a different drawable and a -// label naming the design. -// -// To remove the whole experiment later: delete this file, the four extra drawables -// (amethyst_service2..6), and the single ServiceIconPreviewNotifications.postAll(...) -// call in MainActivity.onCreate. -// ===================================================================================== - -import android.app.NotificationChannel -import android.app.NotificationManager -import android.content.Context -import android.os.Build -import androidx.annotation.DrawableRes -import androidx.core.app.NotificationCompat -import androidx.core.app.NotificationManagerCompat -import com.vitorpamplona.amethyst.R - -object ServiceIconPreviewNotifications { - private const val CHANNEL_ID = "service_icon_preview" - private const val BASE_ID = 920_000 - - private data class Candidate( - @DrawableRes val icon: Int, - val label: String, - ) - - private val candidates = - listOf( - Candidate(R.drawable.amethyst_service, "1 · Hollow gem outline (current)"), - Candidate(R.drawable.amethyst_service2, "2 · Solid circle, gem cut-out"), - Candidate(R.drawable.amethyst_service3, "3 · Orbit + server nodes"), - Candidate(R.drawable.amethyst_service4, "4 · Sync arrows (running)"), - Candidate(R.drawable.amethyst_service5, "5 · Hub & spoke (connected)"), - Candidate(R.drawable.amethyst_service6, "6 · Broadcast waves"), - ) - - fun postAll(context: Context) { - val manager = NotificationManagerCompat.from(context) - if (!manager.areNotificationsEnabled()) return - - ensureChannel(context) - - candidates.forEachIndexed { index, candidate -> - val notification = - NotificationCompat - .Builder(context, CHANNEL_ID) - .setContentTitle("Service icon ${index + 1}") - .setContentText(candidate.label) - .setSmallIcon(candidate.icon) - .setOngoing(true) - .setSilent(true) - .setPriority(NotificationCompat.PRIORITY_LOW) - .setCategory(NotificationCompat.CATEGORY_SERVICE) - .build() - - manager.notify(BASE_ID + index, notification) - } - } - - fun clearAll(context: Context) { - val manager = NotificationManagerCompat.from(context) - candidates.indices.forEach { manager.cancel(BASE_ID + it) } - } - - private fun ensureChannel(context: Context) { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) return - val channel = - NotificationChannel( - CHANNEL_ID, - "Service icon preview (debug)", - NotificationManager.IMPORTANCE_LOW, - ).apply { - description = "Temporary side-by-side preview of always-on service icons" - setShowBadge(false) - } - val notificationManager = - context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager - notificationManager.createNotificationChannel(channel) - } -} diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/MainActivity.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/MainActivity.kt index 9a594cfa42..edf9d17fbf 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/MainActivity.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/MainActivity.kt @@ -27,13 +27,11 @@ import androidx.activity.enableEdgeToEdge import androidx.annotation.RequiresApi import androidx.appcompat.app.AppCompatActivity import com.vitorpamplona.amethyst.Amethyst -import com.vitorpamplona.amethyst.BuildConfig import com.vitorpamplona.amethyst.debugState import com.vitorpamplona.amethyst.model.Account import com.vitorpamplona.amethyst.model.LocalCache import com.vitorpamplona.amethyst.service.lang.LanguageTranslatorService import com.vitorpamplona.amethyst.service.notifications.NotificationRelayService -import com.vitorpamplona.amethyst.service.notifications.ServiceIconPreviewNotifications import com.vitorpamplona.amethyst.service.playback.composable.DEFAULT_MUTED_SETTING import com.vitorpamplona.amethyst.service.playback.pip.BackgroundMedia import com.vitorpamplona.amethyst.ui.navigation.findParameterValue @@ -80,13 +78,6 @@ class MainActivity : AppCompatActivity() { Log.d("ActivityLifecycle") { "MainActivity.onCreate $this" } - // TEMPORARY / DEBUG-ONLY — REMOVE BEFORE MERGE. - // Posts side-by-side preview notifications for the candidate always-on - // service icons so they can be compared on a real device. - if (BuildConfig.DEBUG) { - ServiceIconPreviewNotifications.postAll(this) - } - setContent { StringResSetup() AmethystTheme { diff --git a/amethyst/src/main/res/drawable/amethyst_service.xml b/amethyst/src/main/res/drawable/amethyst_service.xml index 2413c3894e..4bddc5b470 100644 --- a/amethyst/src/main/res/drawable/amethyst_service.xml +++ b/amethyst/src/main/res/drawable/amethyst_service.xml @@ -3,31 +3,34 @@ ~ ~ Notification small icons are rendered by the system as flat, alpha-only ~ silhouettes, so the regular `amethyst` gem becomes an identical solid gem - ~ for both real notifications and this persistent service. To stop the - ~ service from reading as a new notification, this variant draws the gem as - ~ a hollow outline — same brand shape, clearly different at a glance. + ~ for both real notifications and this persistent service. To set the + ~ always-on service apart, this variant centres the brand gem inside a ring + ~ of three "server" nodes — signalling a background service quietly connected + ~ to a network of relays, clearly different from a one-off notification at a + ~ glance. The gem is grown to the largest size that still clears the nodes. --> - - - - + + + + + diff --git a/amethyst/src/main/res/drawable/amethyst_service2.xml b/amethyst/src/main/res/drawable/amethyst_service2.xml deleted file mode 100644 index 1840d24a7e..0000000000 --- a/amethyst/src/main/res/drawable/amethyst_service2.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - diff --git a/amethyst/src/main/res/drawable/amethyst_service3.xml b/amethyst/src/main/res/drawable/amethyst_service3.xml deleted file mode 100644 index 0937d18a76..0000000000 --- a/amethyst/src/main/res/drawable/amethyst_service3.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - diff --git a/amethyst/src/main/res/drawable/amethyst_service4.xml b/amethyst/src/main/res/drawable/amethyst_service4.xml deleted file mode 100644 index 66f38611c7..0000000000 --- a/amethyst/src/main/res/drawable/amethyst_service4.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - diff --git a/amethyst/src/main/res/drawable/amethyst_service5.xml b/amethyst/src/main/res/drawable/amethyst_service5.xml deleted file mode 100644 index f8228fbe56..0000000000 --- a/amethyst/src/main/res/drawable/amethyst_service5.xml +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - - - - - diff --git a/amethyst/src/main/res/drawable/amethyst_service6.xml b/amethyst/src/main/res/drawable/amethyst_service6.xml deleted file mode 100644 index 7018689d70..0000000000 --- a/amethyst/src/main/res/drawable/amethyst_service6.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - -