Products
A Product is the unit Infrared builds, releases and manages change for. It owns one or more repos in your org: a single app has one; an app with separate services, a chart and docs has several. Products are the first entry in the Infrared navigation.
Create a Product from Products → Create product: give it a name (a DNS label), a display name, a description and its repos, each with a role (app, chart, umbrella, library or docs).
The product image
Every Product has an image, shown on its card and at the top of its page. The image lives in the Product's repo, so the repo stays the source of truth and the same image shows up on GitHub, in docs and in Infrared.
Found in the repo. Infrared looks in the Product's first repo (or the repo you pin in spec.logo.repo) and uses the first of these it finds:
logo.svg,logo.png,logo.jpg,logo.jpeg,logo.webpin the repo root.github/logo.svg,.github/logo.pngdocs/logo.svg,docs/logo.pngassets/logo.svg,assets/logo.pngstatic/img/logo.svg,static/img/logo.pngpublic/logo.svg,public/logo.pngicon.svg,icon.png
To use another file, set spec.logo.path on the Product. Infrared checks the repo again every 30 minutes, so a new logo committed to the repo shows up on its own.
Uploaded in Infrared. On the Product's page, choose Upload image. Infrared commits the image to the repo as infrared[bot]: it replaces the logo it found if the file type matches, or adds logo.<ext> in the repo root. The page shows Syncing image to <repo>/<path> until the commit lands, usually within seconds.
| Rule | Why |
|---|---|
| SVG, PNG, JPEG or WebP | Formats every browser shows |
| At most 512 KiB | Logos are small; big files slow every page that lists Products |
| No scripts in SVG | An SVG with <script>, javascript: URLs, event handlers or <foreignObject> is refused. Infrared also serves logos with a Content-Security-Policy that blocks scripts, and shows them only as images. |
A Product without an image shows its initials.