Share images: the master mark replaces the ringed coin on every og image; og.png (was a 404) added; ?v=2 cache bust

make-icons.py make_social(): og-small.png (256 square, the compact card index/live/litepaper declare), og-square.png
(1024), og-coin.png and og.png (1200x630: mark left, IGNEUM wordmark, tagline, subline; same layout as before, no ring,
no glow). bench.html, evidence.html and build.mjs referenced /og.png, which did not exist; they now get the 1200x630 card
with width/height 1200x630 and twitter:card summary_large_image. Every og:image and twitter:image carries ?v=2 so
Slack, X and iMessage refetch. brand/profile: github-social-1280x640.png (repository social preview) and
vercel-avatar-512.png. bench.html edited by hand for the meta only (a build.mjs run would publish uncommitted log entries).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
igneum-labs 2026-10-04 17:39:05 +00:00
parent eec74a4a9f
commit 27cb12f43a
14 changed files with 53 additions and 22 deletions

View file

@ -41,13 +41,15 @@ polygons). The Windows `.ico` and the favicons render each size from the vector,
| `brand/profile/github-org-512.png` | organisation avatar | github.com/igneum-network (uploaded by hand from the Igneum Chrome profile) |
| `brand/profile/x-banner-1500x500.png` | X header | the mark centred on obsidian |
| `brand/igneum-icon-512.png`, `igneum-icon-1024.png` | the square at 512 and 1024 | the same as the profile files; kept for links that already point here |
| `site/og-small.png` (256 square), `og-square.png` (1024), `og-coin.png` and `og.png` (1200 x 630 card: mark left, IGNEUM wordmark, tagline) | share images, `?v=2` in every `og:image` and `twitter:image` | index, live, litepaper (`og-small`); bench, evidence, `build.mjs` (`og`) |
| `brand/profile/github-social-1280x640.png` | repository social preview | github.com/igneum-network/igneum settings (by hand) |
| `brand/profile/vercel-avatar-512.png` | Vercel team or project avatar | by hand |
Inline SVG favicons (the `data:` link in every page head) carry the same square and mark, so a page shows the right icon
before the `.ico` loads.
## Not regenerated
- `site/og-small.png`, `og-square.png`, `og-coin.png`: the social card design, left as it was by instruction (4 October 2026).
- `brand/igneum-coin-1024.png`: the old ringed coin. Retired as a source; nothing reads it now.
- `brand/igneum-mark-transparent-1024.png`, the wordmark PNGs and `Unbounded.ttf`: unchanged.

View file

@ -22,6 +22,8 @@ Outputs:
brand/profile/ profile-400.png, profile-512.png, profile-1024.png (X, Discord, Telegram, LinkedIn), github-org-512.png,
x-banner-1500x500.png (the mark centred on obsidian)
brand/igneum-icon-512.png and igneum-icon-1024.png are refreshed from the master as well.
site/og-small.png (256), og-square.png (1024), og-coin.png and og.png (1200x630 card), brand/profile/github-social-1280x640.png,
vercel-avatar-512.png: the share images (make_social), the mark on obsidian, never the old ringed coin.
Rendering: rsvg-convert when it is installed (brew install librsvg), else Pillow draws the master's rect and polygons
itself at 4x to 16x supersampling (the mark is two polygons, so this is exact). cairosvg is not used: the conda build on
@ -270,6 +272,32 @@ def make_profile():
out.append(save_png(render(1024).convert('RGB'), os.path.join(BRAND, 'igneum-icon-1024.png')))
return out
def card(w, h, tile, cx, cy, title_x):
"""The share-card layout: the mark on obsidian at (cx, cy), the IGNEUM wordmark, tagline and subline to the right.
Same layout as the old og-coin.png; the ringed coin and its glow are replaced by the master mark (the square merges
with the ground, so nothing but the mark shows: no ring, no edge)."""
im = Image.new('RGBA', (w, h), OBSIDIAN + (255,))
paste_centre(im, render(tile), cx, cy)
k = h / 630
im.alpha_composite(wordmark('IGNEUM', int(84 * k), BONE, 'Bold'), (title_x, int(cy - 92 * k)))
im.alpha_composite(wordmark('Mined by GPUs. Proven by fire.', int(31 * k), MOLTEN, 'SemiBold'), (title_x, int(cy + 20 * k)))
im.alpha_composite(wordmark('The GPU-mined layer 1 \u00b7 igneum.network', int(19 * k), (150, 148, 145), 'Regular'), (title_x, int(cy + 72 * k)))
return im.convert('RGB')
def make_social():
"""Share images. og-small.png stays a 256 square (the compact card chat apps show; its pages declare 256x256 and
twitter:card summary), og-square.png 1024 square, og-coin.png and og.png the 1200x630 card (og.png is what bench.html,
evidence.html and build.mjs reference), github-social-1280x640.png the repository social preview."""
out = []
out.append(save_png(render(256).convert('RGB'), os.path.join(SITE, 'og-small.png')))
out.append(save_png(render(1024).convert('RGB'), os.path.join(SITE, 'og-square.png')))
c = card(1200, 630, 300, 276, 315, 532)
out.append(save_png(c, os.path.join(SITE, 'og-coin.png')))
out.append(save_png(c, os.path.join(SITE, 'og.png')))
out.append(save_png(card(1280, 640, 306, 300, 320, 560), os.path.join(PROFILE, 'github-social-1280x640.png')))
out.append(save_png(render(512).convert('RGB'), os.path.join(PROFILE, 'vercel-avatar-512.png')))
return out
def main():
made = []
made.append(save_png(render(256), os.path.join(HERE, 'igneum-256.png')))
@ -284,6 +312,7 @@ def main():
made += make_site(SITE)
made += make_site(RELAY, full=False)
made += make_profile()
made += make_social()
for f in sorted(os.listdir(HERE)):
p = os.path.join(HERE, f)
if os.path.isfile(p) and not f.endswith('.py'):

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View file

@ -12,14 +12,14 @@
<meta property="og:title" content="Igneum engineering log">
<meta property="og:description" content="Every Igneum benchmark and test, with the hardware and the commands that produced it. Prototype numbers are labelled as such.">
<meta property="og:url" content="https://igneum.network/bench">
<meta property="og:image" content="https://igneum.network/og.png">
<meta property="og:image:width" content="256">
<meta property="og:image:height" content="256">
<meta property="og:image" content="https://igneum.network/og.png?v=2">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="og:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
<meta name="twitter:card" content="summary">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Igneum engineering log">
<meta name="twitter:description" content="Every Igneum benchmark and test, with the hardware and the commands that produced it. Prototype numbers are labelled as such.">
<meta name="twitter:image" content="https://igneum.network/og.png">
<meta name="twitter:image" content="https://igneum.network/og.png?v=2">
<meta name="twitter:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'%3E%3Crect width='1024' height='1024' fill='%230C0C0E'/%3E%3Cg transform='translate(166.95 166.95) scale(6.901)'%3E%3Cpolygon points='50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34' fill='%23F2541B'/%3E%3Cpolygon points='50,42 59,58 50,82 41,58' fill='%230C0C0E'/%3E%3C/g%3E%3C/svg%3E" type="image/svg+xml">
<link rel="icon" href="/favicon.ico" sizes="48x48">

View file

@ -58,14 +58,14 @@ function meta(title, desc, path) {
<meta property="og:title" content="${t}">
<meta property="og:description" content="${d}">
<meta property="og:url" content="${url}">
<meta property="og:image" content="${ORIGIN}/og.png">
<meta property="og:image:width" content="256">
<meta property="og:image:height" content="256">
<meta property="og:image" content="${ORIGIN}/og.png?v=2">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="og:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
<meta name="twitter:card" content="summary">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="${t}">
<meta name="twitter:description" content="${d}">
<meta name="twitter:image" content="${ORIGIN}/og.png">
<meta name="twitter:image" content="${ORIGIN}/og.png?v=2">
<meta name="twitter:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
<link rel="icon" href="${svgIcon}" type="image/svg+xml">
<link rel="icon" href="/favicon.ico" sizes="48x48">

View file

@ -12,14 +12,14 @@
<meta property="og:title" content="Igneum evidence">
<meta property="og:description" content="Every public Igneum claim with its status: designed, implemented, tested by the team, reproduced externally, reviewed independently. Nothing has been reproduced or reviewed yet.">
<meta property="og:url" content="https://igneum.network/evidence">
<meta property="og:image" content="https://igneum.network/og.png">
<meta property="og:image:width" content="256">
<meta property="og:image:height" content="256">
<meta property="og:image" content="https://igneum.network/og.png?v=2">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="og:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
<meta name="twitter:card" content="summary">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Igneum evidence">
<meta name="twitter:description" content="Every public Igneum claim with its status: designed, implemented, tested by the team, reproduced externally, reviewed independently. Nothing has been reproduced or reviewed yet.">
<meta name="twitter:image" content="https://igneum.network/og.png">
<meta name="twitter:image" content="https://igneum.network/og.png?v=2">
<meta name="twitter:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'%3E%3Crect width='1024' height='1024' fill='%230C0C0E'/%3E%3Cg transform='translate(166.95 166.95) scale(6.901)'%3E%3Cpolygon points='50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34' fill='%23F2541B'/%3E%3Cpolygon points='50,42 59,58 50,82 41,58' fill='%230C0C0E'/%3E%3C/g%3E%3C/svg%3E" type="image/svg+xml">
<link rel="icon" href="/favicon.ico" sizes="48x48">

View file

@ -12,14 +12,14 @@
<meta property="og:title" content="Igneum, the GPU-mined layer 1">
<meta property="og:description" content="A GPU-mined chain whose mining program rewrites itself every hour. Miners also prove the blocks. No premine, no stake, no fee to any team.">
<meta property="og:url" content="https://igneum.network/">
<meta property="og:image" content="https://igneum.network/og-small.png">
<meta property="og:image" content="https://igneum.network/og-small.png?v=2">
<meta property="og:image:width" content="256">
<meta property="og:image:height" content="256">
<meta property="og:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Igneum, the GPU-mined layer 1">
<meta name="twitter:description" content="A GPU-mined chain whose mining program rewrites itself every hour. Miners also prove the blocks. No premine, no stake, no fee to any team.">
<meta name="twitter:image" content="https://igneum.network/og-small.png">
<meta name="twitter:image" content="https://igneum.network/og-small.png?v=2">
<meta name="twitter:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'%3E%3Crect width='1024' height='1024' fill='%230C0C0E'/%3E%3Cg transform='translate(166.95 166.95) scale(6.901)'%3E%3Cpolygon points='50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34' fill='%23F2541B'/%3E%3Cpolygon points='50,42 59,58 50,82 41,58' fill='%230C0C0E'/%3E%3C/g%3E%3C/svg%3E" type="image/svg+xml">
<link rel="icon" href="/favicon.ico" sizes="48x48">

View file

@ -12,14 +12,14 @@
<meta property="og:title" content="Igneum Litepaper: how the chain works">
<meta property="og:description" content="The Igneum litepaper. The hourly GPU lottery, blocks proven by miners, GHOSTDAG ordering, miner-only finality, the 4 billion cap. No premine, no stake.">
<meta property="og:url" content="https://igneum.network/litepaper">
<meta property="og:image" content="https://igneum.network/og-small.png">
<meta property="og:image" content="https://igneum.network/og-small.png?v=2">
<meta property="og:image:width" content="256">
<meta property="og:image:height" content="256">
<meta property="og:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Igneum Litepaper: how the chain works">
<meta name="twitter:description" content="The Igneum litepaper. The hourly GPU lottery, blocks proven by miners, GHOSTDAG ordering, miner-only finality, the 4 billion cap. No premine, no stake.">
<meta name="twitter:image" content="https://igneum.network/og-small.png">
<meta name="twitter:image" content="https://igneum.network/og-small.png?v=2">
<meta name="twitter:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'%3E%3Crect width='1024' height='1024' fill='%230C0C0E'/%3E%3Cg transform='translate(166.95 166.95) scale(6.901)'%3E%3Cpolygon points='50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34' fill='%23F2541B'/%3E%3Cpolygon points='50,42 59,58 50,82 41,58' fill='%230C0C0E'/%3E%3C/g%3E%3C/svg%3E" type="image/svg+xml">
<link rel="icon" href="/favicon.ico" sizes="48x48">

View file

@ -12,14 +12,14 @@
<meta property="og:title" content="Igneum live devnet">
<meta property="og:description" content="The Igneum devnet as it runs: blocks, miners, difficulty and peers, read from a node every two seconds.">
<meta property="og:url" content="https://igneum.network/live">
<meta property="og:image" content="https://igneum.network/og-small.png">
<meta property="og:image" content="https://igneum.network/og-small.png?v=2">
<meta property="og:image:width" content="256">
<meta property="og:image:height" content="256">
<meta property="og:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Igneum live devnet">
<meta name="twitter:description" content="The Igneum devnet as it runs: blocks, miners, difficulty and peers, read from a node every two seconds.">
<meta name="twitter:image" content="https://igneum.network/og-small.png">
<meta name="twitter:image" content="https://igneum.network/og-small.png?v=2">
<meta name="twitter:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'%3E%3Crect width='1024' height='1024' fill='%230C0C0E'/%3E%3Cg transform='translate(166.95 166.95) scale(6.901)'%3E%3Cpolygon points='50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34' fill='%23F2541B'/%3E%3Cpolygon points='50,42 59,58 50,82 41,58' fill='%230C0C0E'/%3E%3C/g%3E%3C/svg%3E" type="image/svg+xml">
<link rel="icon" href="/favicon.ico" sizes="48x48">

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

After

Width:  |  Height:  |  Size: 26 KiB

BIN
site/og.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB