feat: the real emblem is the launcher icon

closes #30

The last placeholder. It was blocked on a real constraint rather than taste: an
adaptive icon masks roughly a quarter of the canvas away, and the first emblem
had content hard against its edges, so dropping it in would have cropped the
shield.

THE NEW EMBLEM DID NOT NEED REDRAWING, IT NEEDED PLACING

It puts the meaning in the middle — calendar, shield, padlock — with the ring and
botanicals as outer decoration. Dropped in full-bleed it still crops: simulating
the circular and rounded-square masks slices the ring apart and cuts the crescent
in half. Scaled into the 66dp safe circle on §18's Deep Plum it survives both
masks whole.

Both were checked by rendering the masks, and then by installing and looking at
the launcher rather than trusting the simulation.

Foreground ships as a density ladder, mdpi through xxxhdpi, 44 KB for all five.
Release APK 2.03 -> 2.08 MB.

THE MONOCHROME LAYER STAYS THE SIMPLIFIED VECTOR

Renamed to ic_launcher_monochrome.xml, which is now what it is. A themed icon is
a silhouette — Android discards colour and tints the alpha — so the emblem's
overlapping calendar, shield, padlock, crescent and leaves would flatten into an
unreadable blob. A ring with one dot still reads at 48dp in a single colour,
which is the whole job of that layer.

Source kept at docs/design/brand/icon.webp: same 1254px, 128 KB instead of 896.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
null 2026-08-18 21:37:11 -05:00
parent 8807951553
commit addd6c14cb
10 changed files with 29 additions and 13 deletions

View File

@ -2,11 +2,14 @@
<!--
Abstract cycle: an open ring with one offset dot marking progression.
Colours from docs/design/BRAND_GUIDE.md §18. Still the simplified vector
rather than the real emblem: the supplied artwork has content close to its
edges, and an adaptive icon masks about a quarter of the canvas away, so
dropping it in unmodified would crop the shield. Fitting the real emblem to
the adaptive safe zone is Batch 08's final-artwork work.
THE MONOCHROME LAYER, not the foreground any more. The real emblem now fills
that role as a bitmap in mipmap-*/ic_launcher_foreground.webp.
This stays because a themed icon is a silhouette: Android throws away the
colour and tints the alpha, so the emblem — a calendar, a shield, a padlock,
a crescent and botanicals, overlapping — would flatten into an unreadable
blob. A ring with one dot still reads at 48dp in a single colour, which is
the only thing this layer has to do.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"

View File

@ -8,6 +8,6 @@
-->
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
<monochrome android:drawable="@drawable/ic_launcher_foreground" />
<foreground android:drawable="@mipmap/ic_launcher_foreground" />
<monochrome android:drawable="@drawable/ic_launcher_monochrome" />
</adaptive-icon>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
<monochrome android:drawable="@drawable/ic_launcher_foreground" />
<foreground android:drawable="@mipmap/ic_launcher_foreground" />
<monochrome android:drawable="@drawable/ic_launcher_monochrome" />
</adaptive-icon>

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View File

@ -183,10 +183,23 @@ theme change with no code of ours involved. The cost is that a missing night
asset is invisible in light mode, which is why the preview pair in
`OnboardingPreviews.kt` has one entry per illustration.
Still placeholder: **the launcher icon**, which keeps its simplified vector
because the supplied emblem has content close to its edges and an adaptive icon
masks about a quarter of the canvas away, so dropping it in unmodified would crop
the shield. Fitting it to the safe zone is issue #30.
**The launcher icon is the real emblem now too.** It was the last placeholder,
and it was blocked on a real constraint: an adaptive icon masks roughly a
quarter of the canvas away, and the first emblem had content hard against its
edges, so dropping it in would have cropped the shield.
The emblem supplied for it solves that by putting the meaning in the middle —
calendar, shield, padlock — with the ring and botanicals as the outer decoration.
So it did not need redrawing, it needed *placing*: scaled into the 66dp safe
circle on the Deep Plum background from `BRAND_GUIDE.md` §18, it survives the
circular and rounded-square masks whole. Checked by simulating both masks, and
then by looking at the launcher.
**The monochrome layer is still the simplified vector**, deliberately. A themed
icon is a silhouette — Android discards the colour and tints the alpha — so the
emblem's overlapping calendar, shield, padlock, crescent and leaves would flatten
into an unreadable blob. A ring with one dot still reads at 48dp in one colour,
which is all that layer has to do.
### What the artwork has to do

BIN
docs/design/brand/icon.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 KiB