The tab has said "Runway" next to a blank page-shaped placeholder since M1. Two files, both generated from the 1254px source: a multi-resolution `.ico` at 48, 32 and 16, and a 180px apple-touch-icon. The source has about 114px of transparent margin on each side, which at 16px is a pixel and a half of nothing on every edge -- so it is trimmed before being resized, and re-centred on a square canvas first, because the trimmed artwork is 1026x1036 and every downsample from it otherwise comes out a pixel narrower than it is tall. At 32px the plane, the swoosh and the calendar grid all still read. At 16px the grid flattens to a pale block; that is the artwork's level of detail rather than the resampling, and 32 is the one most displays ask for. They are copied rather than hashed. Trunk renames an icon asset the way it renames the stylesheet, and these two are the only files in the bundle whose URL is not ours to choose: Caddy serves the frontend with an `index.html` fallback, so anything that guesses at `/favicon.ico` rather than reading the tag -- a bookmark, a feed reader, a browser with no page loaded -- would get the page's HTML with a 200. That renders nothing while looking like it worked, which is the failure mode this repository keeps finding in other places and is no more welcome here. The apple-touch-icon is the one that is flattened onto the icon's own blue. iOS composites a home-screen icon onto black and then applies its own corner mask, so a rounded square that still has an alpha channel arrives with black sitting in the corners it had already rounded off. `assets` joins the `[watch]` list for the reason written above `[watch]` already: Trunk rebuilds on what it is told to watch, and without it changing an icon in development changes nothing and the browser keeps serving the previous one.