From 6b71aecc2845b60f67f3d353318c770a1483c9c4 Mon Sep 17 00:00:00 2001 From: Jannis Braun <151788261+TheZwiss@users.noreply.github.com> Date: Mon, 27 Apr 2026 15:06:22 +0200 Subject: [PATCH] fix(brand): logo.png uses full badge, not bare mark MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The SpaceSidebar's home tile is a 40×40 rounded-[20px] squircle with object-cover. The original spec assumed the sidebar provides "the colour-circle frame," so logo.png shipped as the bare gradient B on transparent. In practice the tile is a transparent slot — the bare mark touched the squircle edges (no internal padding), conflicted with the active-state ring, and read as poorly-integrated. Switching to the full badge (Element 1 / app-icon.svg): the badge's own dark squircle bg fills the tile, its internal padding around the mark keeps the gradient off the edges, and the result reads as a clean Discord-style "home space" tile alongside the user's other spaces. Only logo.png regenerated; remaining 21 outputs byte-identical (determinism gate verified). Spec output matrix and generator README updated to reflect the corrected source mapping. --- packages/web/public/icons/logo.png | Bin 13137 -> 12901 bytes scripts/gen-icons.README.md | 4 ++-- scripts/gen-icons.mjs | 8 ++++++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/packages/web/public/icons/logo.png b/packages/web/public/icons/logo.png index 645c933cbdfb979182af880b015e2b13afdc5d8e..4b9415ca30e25790727b83290b7133168b6923cb 100644 GIT binary patch literal 12901 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 diff --git a/scripts/gen-icons.README.md b/scripts/gen-icons.README.md index 250e7be3..25ffc3b0 100644 --- a/scripts/gen-icons.README.md +++ b/scripts/gen-icons.README.md @@ -39,8 +39,8 @@ git history clean. | Brand source | Drives | |---------------------------------|-----------------------------------------------| -| `assets/brand/app-icon.svg` | Every full app icon, all favicons, PWA | -| `assets/brand/mark.svg` | Win/Linux tray, in-app logo, PWA maskable | +| `assets/brand/app-icon.svg` | Every full app icon, all favicons, PWA, in-app `logo.png` | +| `assets/brand/mark.svg` | Win/Linux tray, PWA maskable inner mark | | `assets/brand/mark-mono-dark.svg` | macOS menu-bar template (alpha + black) | `Artworks-Backspace/` is the design archive — never read by this script. diff --git a/scripts/gen-icons.mjs b/scripts/gen-icons.mjs index 0beee0d3..91231d36 100755 --- a/scripts/gen-icons.mjs +++ b/scripts/gen-icons.mjs @@ -200,8 +200,12 @@ async function main() { ); trace('pwa-maskable', join(WEB_ICONS, 'icon-maskable-512.png'), `512 (60% mark on ${MASKABLE_BG})`); - await writePng(join(WEB_ICONS, 'logo.png'), mark, 256); - trace('in-app-logo', join(WEB_ICONS, 'logo.png'), '256 (transparent)'); + // SpaceSidebar's 40×40 rounded-[20px] tile uses object-cover. The full + // badge (Element 1) integrates cleanly because its dark bg fills the tile + // and its internal padding keeps the mark off the tile edges. Bare mark + // on transparent touched the tile edges and conflicted with active rings. + await writePng(join(WEB_ICONS, 'logo.png'), appIcon, 256); + trace('in-app-logo', join(WEB_ICONS, 'logo.png'), '256 (full badge)'); // --- Summary --- const fmtBytes = (n) => {