chore(client): maskable PWA icon audit + safe-zone sign-off #224

Open
opened 2026-06-21 18:15:40 +00:00 by james · 0 comments
Owner

Context

#208 (PR #223) declared the existing apps/client/public/icon-{192,512}.png assets as purpose: "any maskable" in apps/client/public/manifest.webmanifest. The C-on-blue-square mark survives a 40% safe-zone trim by eye, but it was a visual judgement, not a designer review.

PWA installers (Chrome on Android, Edge desktop, etc.) crop maskable icons aggressively. If the safe zone is wrong, the install lands with a chopped-off logo on someone's home screen — a quietly bad first impression.

Source

Follow-up flagged in #223.

Scope

  • Run the existing 192px and 512px PNGs through the Maskable.app editor or equivalent.
  • Confirm the mark sits within the W3C maskable safe zone (40% radius from center).
  • If it doesn't, produce a maskable variant (icon-maskable-192.png, icon-maskable-512.png) with proper padding and update the manifest to advertise both purpose: "any" and purpose: "maskable" entries instead of a single combined "any maskable" entry.
  • Capture the install screenshot from at least Chrome on Android in the PR for sign-off.

Acceptance criteria

  • A designer has signed off (or the maintainer has confirmed by eye in Chrome on Android) that the installed icon renders without clipping the C.
  • If the existing assets failed, dedicated maskable variants exist and the manifest separates purpose: "any" from purpose: "maskable".
  • No change to the in-app or favicon icon — this only affects the PWA install surface.

Out of scope

  • A new Carol mark / brand refresh.
  • Adaptive icons for Android (#187's APK pipeline handles those separately).

Composes with

  • #208 — PWA install + offline shell.

Part of

#176

## Context [#208](https://forge.wynning.tech/james/carol/issues/208) (PR [#223](https://forge.wynning.tech/james/carol/pulls/223)) declared the existing `apps/client/public/icon-{192,512}.png` assets as `purpose: "any maskable"` in `apps/client/public/manifest.webmanifest`. The C-on-blue-square mark survives a 40% safe-zone trim by eye, but it was a visual judgement, not a designer review. PWA installers (Chrome on Android, Edge desktop, etc.) crop maskable icons aggressively. If the safe zone is wrong, the install lands with a chopped-off logo on someone's home screen — a quietly bad first impression. ## Source Follow-up flagged in [#223](https://forge.wynning.tech/james/carol/pulls/223). ## Scope - Run the existing 192px and 512px PNGs through the [Maskable.app editor](https://maskable.app) or equivalent. - Confirm the mark sits within the [W3C maskable safe zone](https://www.w3.org/TR/appmanifest/#icon-masks) (40% radius from center). - If it doesn't, produce a maskable variant (`icon-maskable-192.png`, `icon-maskable-512.png`) with proper padding and update the manifest to advertise both `purpose: "any"` and `purpose: "maskable"` entries instead of a single combined `"any maskable"` entry. - Capture the install screenshot from at least Chrome on Android in the PR for sign-off. ## Acceptance criteria - [ ] A designer has signed off (or the maintainer has confirmed by eye in Chrome on Android) that the installed icon renders without clipping the C. - [ ] If the existing assets failed, dedicated maskable variants exist and the manifest separates `purpose: "any"` from `purpose: "maskable"`. - [ ] No change to the in-app or favicon icon — this only affects the PWA install surface. ## Out of scope - A new Carol mark / brand refresh. - Adaptive icons for Android (#187's APK pipeline handles those separately). ## Composes with - [#208](https://forge.wynning.tech/james/carol/issues/208) — PWA install + offline shell. ## Part of [#176](https://forge.wynning.tech/james/carol/issues/176)
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
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
james/carol#224
No description provided.