Launcher icon is still the placeholder vector, not the supplied emblem #30

Closed
opened 2026-08-18 18:52:54 -05:00 by null · 1 comment
Owner

The app on a home screen does not yet look like the brand the owner supplied.

What is true now

app/src/main/res/drawable/ic_launcher_foreground.xml is a hand-written abstract ring with one offset dot, drawn to §42's concept and using BRAND_GUIDE.md §18 colours. Its own comment says it is a stand-in. It is referenced by app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml and ic_launcher_round.xml.

The real emblem exists and is committed: docs/design/brand/emblem-source.png (the owner's source) and docs/data/img/icon.webp (the exported mark privacyllc.dev renders).

What it costs

The launcher icon is the most-seen piece of brand and the only one visible when the app is closed. It is also the icon a user sees on a shared home screen, so it is part of the privacy surface rather than only the brand surface.

What to do

Fit the supplied emblem into the adaptive-icon safe zone as a VectorDrawable, and check it at every launcher mask — circle, squircle, rounded square — plus the themed/monochrome variant if one is added.

Traps

  • The supplied artwork has content close to its edges, and an adaptive icon masks roughly a quarter of the 108dp canvas away. Dropping the emblem in unmodified crops the shield. This is already recorded in the drawable's comment and is the reason it was not done in Batch 05 when the brand arrived.
  • Keep it a vector. §42's asset preference is explicit, and a raster launcher icon means a density ladder to maintain.
  • Both mipmap aliases point at the same foreground — changing one and not the other leaves the round-mask launchers on the old art.

Why filed and not fixed

Refitting a supplied mark inside a safe zone is redrawing, which needs an artist rather than a transcoder. Faking it by scaling the emblem down until it fits produces a small mark floating in space, which is worse than the honest placeholder.

Verify: The launcher icon on a device shows the supplied emblem, uncropped under circle, squircle and rounded-square masks, and app/src/main/res/drawable/ic_launcher_foreground.xml no longer describes itself as a stand-in.

The app on a home screen does not yet look like the brand the owner supplied. ## What is true now `app/src/main/res/drawable/ic_launcher_foreground.xml` is a hand-written abstract ring with one offset dot, drawn to §42's concept and using `BRAND_GUIDE.md` §18 colours. Its own comment says it is a stand-in. It is referenced by `app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml` and `ic_launcher_round.xml`. The real emblem exists and is committed: `docs/design/brand/emblem-source.png` (the owner's source) and `docs/data/img/icon.webp` (the exported mark privacyllc.dev renders). ## What it costs The launcher icon is the most-seen piece of brand and the only one visible when the app is closed. It is also the icon a user sees on a shared home screen, so it is part of the privacy surface rather than only the brand surface. ## What to do Fit the supplied emblem into the adaptive-icon safe zone as a `VectorDrawable`, and check it at every launcher mask — circle, squircle, rounded square — plus the themed/monochrome variant if one is added. ## Traps - **The supplied artwork has content close to its edges, and an adaptive icon masks roughly a quarter of the 108dp canvas away.** Dropping the emblem in unmodified crops the shield. This is already recorded in the drawable's comment and is the reason it was not done in Batch 05 when the brand arrived. - **Keep it a vector.** §42's asset preference is explicit, and a raster launcher icon means a density ladder to maintain. - **Both mipmap aliases point at the same foreground** — changing one and not the other leaves the round-mask launchers on the old art. ## Why filed and not fixed Refitting a supplied mark inside a safe zone is redrawing, which needs an artist rather than a transcoder. Faking it by scaling the emblem down until it fits produces a small mark floating in space, which is worse than the honest placeholder. Verify: The launcher icon on a device shows the supplied emblem, uncropped under circle, squircle and rounded-square masks, and `app/src/main/res/drawable/ic_launcher_foreground.xml` no longer describes itself as a stand-in.
null added this to the Batch 08 — Polish milestone 2026-08-18 18:52:54 -05:00
null added the
P2
label 2026-08-18 18:52:54 -05:00
null closed this issue 2026-08-18 21:37:15 -05:00
Author
Owner

Shipped in addd6c1. The supplied docs/design/brand/icon.webp is now the adaptive foreground, scaled into the 66dp safe circle on §18's Deep Plum, shipped as a density ladder mdpi..xxxhdpi (44 KB total, release APK 2.03 to 2.08 MB). Verified twice: by rendering the circular and rounded-square masks (full-bleed placement still slices the ring and cuts the crescent; safe-zone placement survives both whole), and by installing on PeriodMinSdk26 and looking at the launcher — nothing cropped. The simplified vector is retained as ic_launcher_monochrome.xml because a themed icon is a silhouette and the emblem would flatten into a blob. ./gradlew check clean.

Shipped in addd6c1. The supplied docs/design/brand/icon.webp is now the adaptive foreground, scaled into the 66dp safe circle on §18's Deep Plum, shipped as a density ladder mdpi..xxxhdpi (44 KB total, release APK 2.03 to 2.08 MB). Verified twice: by rendering the circular and rounded-square masks (full-bleed placement still slices the ring and cuts the crescent; safe-zone placement survives both whole), and by installing on PeriodMinSdk26 and looking at the launcher — nothing cropped. The simplified vector is retained as ic_launcher_monochrome.xml because a themed icon is a silhouette and the emblem would flatten into a blob. ./gradlew check clean.
Sign in to join this conversation.
No Label
P0
P1
P2
release-blocker
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: null/Privacy-Period-Tracker#30
No description provided.