One artwork, one generator: Scripts/make-brand-assets.py writes the site favicons and og image, the iPhone AppIcon.png, and five Android density buckets. The outputs are generated — an icon edited in place is an icon that silently stops matching the next time the script runs, which is the same shape as the generated doc-page mistake this repo already made once.
Two things about the source
A leftover matte. The export carried RGB (33,33,33) at alpha 38 across the background — invisible on a dark page, a grey haze on a light one. The script strips anything below alpha 48.
The wordmark is interlocked with the emblem. "FlameNet" is drawn on the globe, and the speech bubbles hang down into the letter tops, so no rectangular crop takes the whole mark without catching text. The crop used, (280,0,1040,548), is the one that gets both bubbles and the flame arc and leaves the wordmark behind. Four candidate crops were rendered at 180/96/48px before this one was picked — the wordmark is unreadable at icon sizes, so the emblem is the half worth keeping.
Platform rules that cost a rejected build
iOS: no alpha channel. App Store Connect rejects an icon that has one, and the rejection arrives after the upload. The generator flattens onto the panel navy #121A2E.
Android: the safe zone. Content sits at 72% of the 108dp canvas, checked against both a circular and a squircle mask before landing rather than assumed.
assetVersion now hashes the brand images
Without it, a logo change alone leaves the hash where it was, so every browser that has ever loaded the site keeps serving the old mark out of cache — which looks exactly like the deploy not having happened.
Also here
The site had no favicon and no og:image at all, so a shared link rendered as a bare URL with a blank tab icon. Both now exist, plus apple-touch-icon and a 1200x630 social card. The nav and footer carried a purple gradient square — a placeholder that outlived its excuse.
Companion MRs
iPhone: feat/new-brand-icon on flamenet-messenger-ios
Android: feat/new-brand-icon on flamenet-messenger-android
Not changed, worth a separate decision
The site accent is purple; the logo is blue with an orange flame. They do not clash badly at 30px, but they are not one palette either.
## The mark, everywhere
One artwork, one generator: `Scripts/make-brand-assets.py` writes the site favicons and og image, the iPhone `AppIcon.png`, and five Android density buckets. **The outputs are generated** — an icon edited in place is an icon that silently stops matching the next time the script runs, which is the same shape as the generated doc-page mistake this repo already made once.
## Two things about the source
**A leftover matte.** The export carried RGB `(33,33,33)` at alpha 38 across the background — invisible on a dark page, a grey haze on a light one. The script strips anything below alpha 48.
**The wordmark is interlocked with the emblem.** "FlameNet" is drawn *on* the globe, and the speech bubbles hang down into the letter tops, so no rectangular crop takes the whole mark without catching text. The crop used, `(280,0,1040,548)`, is the one that gets both bubbles and the flame arc and leaves the wordmark behind. Four candidate crops were rendered at 180/96/48px before this one was picked — the wordmark is unreadable at icon sizes, so the emblem is the half worth keeping.
## Platform rules that cost a rejected build
- **iOS: no alpha channel.** App Store Connect rejects an icon that has one, and the rejection arrives *after* the upload. The generator flattens onto the panel navy `#121A2E`.
- **Android: the safe zone.** Content sits at 72% of the 108dp canvas, checked against both a circular and a squircle mask before landing rather than assumed.
## `assetVersion` now hashes the brand images
Without it, a logo change alone leaves the hash where it was, so every browser that has ever loaded the site keeps serving the old mark out of cache — which looks exactly like the deploy not having happened.
## Also here
The site had **no favicon and no `og:image` at all**, so a shared link rendered as a bare URL with a blank tab icon. Both now exist, plus `apple-touch-icon` and a 1200x630 social card. The nav and footer carried a purple gradient square — a placeholder that outlived its excuse.
## Companion MRs
- iPhone: `feat/new-brand-icon` on flamenet-messenger-ios
- Android: `feat/new-brand-icon` on flamenet-messenger-android
## Not changed, worth a separate decision
The site accent is purple; the logo is blue with an orange flame. They do not clash badly at 30px, but they are not one palette either.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
The mark, everywhere
One artwork, one generator:
Scripts/make-brand-assets.pywrites the site favicons and og image, the iPhoneAppIcon.png, and five Android density buckets. The outputs are generated — an icon edited in place is an icon that silently stops matching the next time the script runs, which is the same shape as the generated doc-page mistake this repo already made once.Two things about the source
A leftover matte. The export carried RGB
(33,33,33)at alpha 38 across the background — invisible on a dark page, a grey haze on a light one. The script strips anything below alpha 48.The wordmark is interlocked with the emblem. "FlameNet" is drawn on the globe, and the speech bubbles hang down into the letter tops, so no rectangular crop takes the whole mark without catching text. The crop used,
(280,0,1040,548), is the one that gets both bubbles and the flame arc and leaves the wordmark behind. Four candidate crops were rendered at 180/96/48px before this one was picked — the wordmark is unreadable at icon sizes, so the emblem is the half worth keeping.Platform rules that cost a rejected build
#121A2E.assetVersionnow hashes the brand imagesWithout it, a logo change alone leaves the hash where it was, so every browser that has ever loaded the site keeps serving the old mark out of cache — which looks exactly like the deploy not having happened.
Also here
The site had no favicon and no
og:imageat all, so a shared link rendered as a bare URL with a blank tab icon. Both now exist, plusapple-touch-iconand a 1200x630 social card. The nav and footer carried a purple gradient square — a placeholder that outlived its excuse.Companion MRs
feat/new-brand-iconon flamenet-messenger-iosfeat/new-brand-iconon flamenet-messenger-androidNot changed, worth a separate decision
The site accent is purple; the logo is blue with an orange flame. They do not clash badly at 30px, but they are not one palette either.
mentioned in commit
7a9cbd1f32changed the description