Integrations wear their own logos
Explore this workspace.
Technical background
Every integration shipped with an empty icon, so cards and the Integrations list showed no logo at all. The four built-ins now carry real brand marks — and they carry the Windows Terminal fork's icon strings verbatim, with this host resolving the scheme to a PNG webpack inlines into the bundle. The JSON is identical on both sides again, so that key stops being a documented divergence.
The problem
Jira, Slack and stith all shipped "icon": "", and GitHub shipped a Segoe MDL2 code point — a glyph an <img> cannot load. The template guards the image with *ngIf, so every integration card and every row of the Integrations list simply had no logo at all.
How it works
The four built-in manifests now carry the Windows Terminal fork's icon strings verbatim: ms-appx:///IntegrationIcons/<file>.png. Nothing here resolves that scheme, so the host does — there it goes to WinUI's IconPathConverter, here integrationIcons.ts looks the file name up in a map of PNGs webpack inlines into the plugin bundle as data URIs. The JSON is byte-identical on both sides again, which is what the manifest format exists for.
Details
- Because the key converges,
github.iconleaves the documented divergence table rather than being joined by three more entries — it shrinks from four to three. - An icon this host cannot resolve yields an empty string and one log line naming the manifest, so a card draws no icon rather than a broken one. The old code put
manifest.iconstraight intosrc. - The asset rule is
asset/inline, notasset: this bundle istarget: 'node', soasset/resourceemits a filesystem path, and a path in an<img src>is a broken image with no error anywhere. Bareassetswitches between the two at 8 KB, so a larger fifth icon would silently fall off that cliff. - stith's mark is
aylith.png— the dashboard is stith, the brand is aylith's — so the asset map is keyed on file names rather than integration ids.
What this does not claim
- Every failure mode here builds green and shows no icon, so none of it is caught by the compiler. The checks are what stand in for that, and each was confirmed to fail before being relied on.
ms-appx:is a scheme only MSIX resolves. A manifest of your own should give anhttps:,data:orfile:URI instead; only the built-in names are bundled.