chore(brand): real Carol icon mark across PWA, Tauri/Flatpak, and Android assets #230

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

Context

Every Carol artifact today carries a placeholder mark — the ImageMagick-generated "C on a blue square" used to satisfy the Flatpak manifest's icon requirement on #188 (PR #222) and reused by #208 (PR #223) for the PWA install assets.

The placeholder is acceptable while Carol is self-hoster-distributed and pre-public. It's blocking for:

  • Flathub submission (#229 — file alongside this one if not yet).
  • Quality maskable-icon coverage (#224 — the existing audit is on borrowed time).
  • Anyone screenshotting Carol publicly — the mark sets first-impression tone.

Source

Follow-up flagged in #222.

Scope

A real Carol mark designed for the full asset matrix:

  • Design. Either commission from a designer or use the existing visual language (blue accent, sentence-case Carol voice) to inform an in-house mark. Final deliverable is an SVG master.
  • Asset matrix derived from the SVG master:
    • apps/client/public/icon.svg (favicon + manifest reference).
    • apps/client/public/icon-192.png, icon-512.png (PWA manifest).
    • apps/client/public/icon-maskable-192.png, icon-maskable-512.png (PWA maskable variant if #224 lands separate maskable assets — coordinate).
    • apps/client/src-tauri/icons/* (Tauri bundle — 32 / 128 / 128@2x / square + ico + icns variants).
    • flatpak/icons/{16x16,32x32,48x48,64x64,128x128,256x256,512x512}/tech.wynning.carol.png (Flatpak desktop icons).
    • apps/client/android/app/src/main/res/mipmap-*/ic_launcher.png (Android adaptive icon — foreground + background layers).
    • apps/api/public/icon.svg, icon-192.png, icon-512.png (legacy API copies — keep in sync or document the dedupe story).
  • Generate adaptive Android icon following the Android Studio asset wizard format (foreground + background XML + PNGs).
  • Update ADR-0014 with the icon-refresh process (what gets bumped, how to roll a new design without churning every artifact).

Acceptance criteria

  • SVG master committed to the repo (somewhere clearly authoritative — apps/client/assets/branding/carol-mark.svg or similar).
  • Every consumer (PWA, Tauri/Flatpak, Android) ships the new mark; no copy of the C-on-blue placeholder remains in the repo.
  • Maskable variant survives the 40% safe-zone trim (closing #224 as part of this work, or by separate sign-off).
  • appstreamcli validate and the Tauri / Android icon validators all pass against the new assets.

Out of scope

  • A full brand identity refresh (typography, color system, voice). The mark is the load-bearing artifact today.
  • Animated marquee / splash variants.

Composes with

  • #188 — Linux Flatpak.
  • #208 — PWA install + offline shell.
  • #187 — Android APK.
  • #224 — maskable icon audit (may close as part of this work).
  • Flathub submission (filed alongside this one).

Part of

#176

## Context Every Carol artifact today carries a placeholder mark — the ImageMagick-generated "C on a blue square" used to satisfy the Flatpak manifest's icon requirement on [#188](https://forge.wynning.tech/james/carol/issues/188) (PR [#222](https://forge.wynning.tech/james/carol/pulls/222)) and reused by [#208](https://forge.wynning.tech/james/carol/issues/208) (PR [#223](https://forge.wynning.tech/james/carol/pulls/223)) for the PWA install assets. The placeholder is acceptable while Carol is self-hoster-distributed and pre-public. It's blocking for: - Flathub submission ([#229](https://forge.wynning.tech/james/carol/issues/229) — file alongside this one if not yet). - Quality maskable-icon coverage ([#224](https://forge.wynning.tech/james/carol/issues/224) — the existing audit is on borrowed time). - Anyone screenshotting Carol publicly — the mark sets first-impression tone. ## Source Follow-up flagged in [#222](https://forge.wynning.tech/james/carol/pulls/222). ## Scope A real Carol mark designed for the full asset matrix: - **Design.** Either commission from a designer or use the existing visual language (blue accent, sentence-case Carol voice) to inform an in-house mark. Final deliverable is an SVG master. - **Asset matrix derived from the SVG master:** - `apps/client/public/icon.svg` (favicon + manifest reference). - `apps/client/public/icon-192.png`, `icon-512.png` (PWA manifest). - `apps/client/public/icon-maskable-192.png`, `icon-maskable-512.png` (PWA maskable variant if [#224](https://forge.wynning.tech/james/carol/issues/224) lands separate maskable assets — coordinate). - `apps/client/src-tauri/icons/*` (Tauri bundle — 32 / 128 / 128@2x / square + ico + icns variants). - `flatpak/icons/{16x16,32x32,48x48,64x64,128x128,256x256,512x512}/tech.wynning.carol.png` (Flatpak desktop icons). - `apps/client/android/app/src/main/res/mipmap-*/ic_launcher.png` (Android adaptive icon — foreground + background layers). - `apps/api/public/icon.svg`, `icon-192.png`, `icon-512.png` (legacy API copies — keep in sync or document the dedupe story). - **Generate adaptive Android icon** following the Android Studio asset wizard format (foreground + background XML + PNGs). - **Update [ADR-0014](docs/adr/0014-release-pipeline.md)** with the icon-refresh process (what gets bumped, how to roll a new design without churning every artifact). ## Acceptance criteria - [ ] SVG master committed to the repo (somewhere clearly authoritative — `apps/client/assets/branding/carol-mark.svg` or similar). - [ ] Every consumer (PWA, Tauri/Flatpak, Android) ships the new mark; no copy of the C-on-blue placeholder remains in the repo. - [ ] Maskable variant survives the 40% safe-zone trim (closing [#224](https://forge.wynning.tech/james/carol/issues/224) as part of this work, or by separate sign-off). - [ ] `appstreamcli validate` and the Tauri / Android icon validators all pass against the new assets. ## Out of scope - A full brand identity refresh (typography, color system, voice). The mark is the load-bearing artifact today. - Animated marquee / splash variants. ## Composes with - [#188](https://forge.wynning.tech/james/carol/issues/188) — Linux Flatpak. - [#208](https://forge.wynning.tech/james/carol/issues/208) — PWA install + offline shell. - [#187](https://forge.wynning.tech/james/carol/issues/187) — Android APK. - [#224](https://forge.wynning.tech/james/carol/issues/224) — maskable icon audit (may close as part of this work). - Flathub submission (filed alongside this one). ## 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#230
No description provided.