From 7a8d0ce0e2b41948606a57686552db92479eb80f Mon Sep 17 00:00:00 2001 From: Jannis Braun <151788261+TheZwiss@users.noreply.github.com> Date: Mon, 27 Apr 2026 15:20:29 +0200 Subject: [PATCH] fix(brand): logo.png is bare mark on transparent, 75% padded MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The previous Element-1 (full badge) approach produced a visible warm-grey #1d1d1b square inside the cool-dark #1a1a23 sidebar — the two near-blacks differ enough in hue to read as a foreign rectangle in the slot. The right answer (third time lucky): the SpaceSidebar's 40×40 rounded-[20px] tile already IS the dark squircle frame. logo.png now composites the bare gradient mark at 75% on a transparent canvas: the sidebar's tile bg shows through, the 25% padding keeps the mark off the squircle edges and clear of the active-state ring, and there is no foreign-bg colour conflict. Refactored writeMaskablePng → writeCenteredMarkPng to share one code path between the maskable PWA (opaque #1d1d1b background, 60% mark) and the in-app logo (transparent background, 75% mark). Both use the same composition pipeline; only canvas / scale / bg differ. Only logo.png regenerated; other 21 outputs byte-identical (determinism gate verified twice). --- packages/web/public/icons/logo.png | Bin 12901 -> 10387 bytes scripts/gen-icons.README.md | 4 ++-- scripts/gen-icons.mjs | 31 ++++++++++++++++++----------- 3 files changed, 21 insertions(+), 14 deletions(-) diff --git a/packages/web/public/icons/logo.png b/packages/web/public/icons/logo.png index 4b9415ca30e25790727b83290b7133168b6923cb..cfeff7c2f4e82589177dab60d2c37f67ee51387e 100644 GIT binary patch literal 10387 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 AHvj+t literal 12901 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 {