Files

2.0 KiB
Raw Permalink Blame History

Brand assets

Home Assistant serves these. Since 2026.3 a custom integration ships its own brand images in a brand/ folder inside the integration, and HA exposes them at /api/brands/integration/cafe/, taking priority over the brands CDN. The central home-assistant/brands repository no longer accepts custom integrations, so there is nothing to submit anywhere — the files here are the whole story. See the Brands Proxy API announcement.

On Home Assistant older than 2026.3 the integration shows the generic puzzle-piece icon. Nothing breaks.

File Size Used for
icon.png 256×256 The integration tile, the device page, the "add integration" list
icon@2x.png 512×512 The same, on a retina display
logo.png ≤256 tall The wordmark, shown in the config flow header
logo@2x.png ≤512 tall The same, on a retina display
dark_logo.png / dark_logo@2x.png as above The logo on a dark theme

The icon's tile is self-contained — a roast-brown squircle with the bean on it — so it reads the same on light and dark themes and there is no dark_icon.png to keep in sync. The logo is a bare glyph and a wordmark with no background of their own, which is exactly why the dark variant exists.

The wordmark is drawn by the generator rather than set in a typeface, so there are no glyph outlines in here that someone else owns and no font to install before regenerating.

Regenerating

Every SVG in here is generated, not hand-edited. Change tools/make_icon.py and re-run it; it writes all three, renders the PNGs beside them, and copies the icon to packages/frontend/public/icon.svg, which is the panel's favicon.

python3 tools/make_icon.py

Needs rsvg-convert (brew install librsvg). Use it rather than Chromium or Inkscape — librsvg is what Home Assistant's own tooling uses, and the three disagree about filters.