site: search and share metadata on every page, with the logo
Titles, descriptions, canonical URLs, Open Graph and Twitter cards on index, litepaper, live and bench (bench through page() in build.mjs). og.png 1200x630 from the brand wordmark and tagline, PNG icons, apple-touch-icon, favicon.ico, site.webmanifest, robots.txt and sitemap.xml. Organization JSON-LD on the homepage only. Rebuilt bench.html. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
parent
fcff6d56a6
commit
37bfd8faf7
14 changed files with 165 additions and 25 deletions
BIN
site/apple-touch-icon.png
Normal file
BIN
site/apple-touch-icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.4 KiB |
File diff suppressed because one or more lines are too long
|
|
@ -43,17 +43,44 @@ function md(src) {
|
|||
}
|
||||
|
||||
const mark = `<svg viewBox="0 0 100 100" width="26" height="26" aria-hidden="true"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></svg>`;
|
||||
function page(title, desc, bodyHtml, toc, note) {
|
||||
const ORIGIN = 'https://igneum.network';
|
||||
const svgIcon = "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%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/svg%3E";
|
||||
// Search and share metadata. Same set as the hand-written pages (index, litepaper, live); keep them in step.
|
||||
function meta(title, desc, path) {
|
||||
const url = ORIGIN + path; const t = esc(title); const d = esc(desc);
|
||||
return `<title>${t}</title>
|
||||
<meta name="description" content="${d}">
|
||||
<link rel="canonical" href="${url}">
|
||||
<meta name="theme-color" content="#0C0C0E">
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:site_name" content="Igneum">
|
||||
<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="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_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: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">
|
||||
<link rel="icon" href="/icon-192.png" type="image/png" sizes="192x192">
|
||||
<link rel="icon" href="/icon-512.png" type="image/png" sizes="512x512">
|
||||
<link rel="apple-touch-icon" href="/apple-touch-icon.png" sizes="180x180">
|
||||
<link rel="manifest" href="/site.webmanifest">`;
|
||||
}
|
||||
function page(title, desc, bodyHtml, toc, note, { path = '/bench', heading = title } = {}) {
|
||||
const nav = toc.filter(t => t.lvl === 2).map(t => `<li><a href="#${t.id}">${esc(t.t)}</a></li>`).join('');
|
||||
return `<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
|
||||
<title>${esc(title)}</title>
|
||||
<meta name="description" content="${esc(desc)}">
|
||||
<meta name="theme-color" content="#0C0C0E">
|
||||
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Cpolygon points='50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34' fill='%23F2541B'/%3E%3C/svg%3E">
|
||||
${meta(title, desc, path)}
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Unbounded:wght@500;700;900&family=IBM+Plex+Sans:wght@400;500;600&family=IBM+Plex+Mono:wght@400;500&display=swap">
|
||||
<style>
|
||||
:root{--obsidian:#0C0C0E;--graphite:#16161A;--line:#2A2A30;--ember:#F2541B;--molten:#FFB35C;--bone:#F4F1EC;--ash:#9A9A9E;--ink-2:#C9C7C2}
|
||||
|
|
@ -85,7 +112,7 @@ footer{border-top:1px solid var(--line);padding-block:24px 48px;font-size:13px;c
|
|||
<body>
|
||||
<div class="wrap">
|
||||
<header><a class="brand" href="/">${mark}<b>IGNEUM</b></a><nav><a href="/">Home</a><a href="/litepaper">Litepaper</a><a href="/bench">Engineering log</a><a href="https://github.com/igneum-network/igneum" rel="noopener">GitHub</a></nav></header>
|
||||
<h1>${esc(title)}</h1>
|
||||
<h1>${esc(heading)}</h1>
|
||||
<p class="note">${note}</p>
|
||||
<div class="layout">
|
||||
<nav class="toc" aria-label="Contents"><ol>${nav}</ol></nav>
|
||||
|
|
@ -101,8 +128,9 @@ let built = [];
|
|||
if (existsSync(join(docs, 'bench-log.md'))) {
|
||||
const src = readFileSync(join(docs, 'bench-log.md'), 'utf8');
|
||||
const { html, toc } = md(src);
|
||||
writeFileSync(join(here, 'bench.html'), page('Engineering log', 'Every Igneum benchmark and test, with the commands that produced it.', html, toc,
|
||||
'Every measurement the project has made, newest at the bottom, written by the people and agents who ran it, with the commands and hardware. Prototype numbers are not mining numbers and say so.'));
|
||||
writeFileSync(join(here, 'bench.html'), page('Igneum engineering log', 'Every Igneum benchmark and test, with the hardware and the commands that produced it. Prototype numbers are labelled as such.', html, toc,
|
||||
'Every measurement the project has made, newest at the bottom, written by the people and agents who ran it, with the commands and hardware. Prototype numbers are not mining numbers and say so.',
|
||||
{ path: '/bench', heading: 'Engineering log' }));
|
||||
built.push('bench.html');
|
||||
// journey feed: dated headings become log entries
|
||||
const entries = [];
|
||||
|
|
|
|||
BIN
site/favicon.ico
Normal file
BIN
site/favicon.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.5 KiB |
BIN
site/icon-192.png
Normal file
BIN
site/icon-192.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 5.1 KiB |
BIN
site/icon-512.png
Normal file
BIN
site/icon-512.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 11 KiB |
|
|
@ -3,12 +3,33 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
|
||||
<title>Igneum</title>
|
||||
<meta name="description" content="Igneum is a GPU-mined layer 1 whose miners prove every block. Mined by GPUs. Proven by fire.">
|
||||
<meta property="og:title" content="Igneum">
|
||||
<meta property="og:description" content="Mined by GPUs. Proven by fire. The first chain built so no chip can ever take your place.">
|
||||
<title>Igneum, the GPU-mined layer 1</title>
|
||||
<meta name="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.">
|
||||
<link rel="canonical" href="https://igneum.network/">
|
||||
<meta name="theme-color" content="#0C0C0E">
|
||||
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%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/svg%3E">
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:site_name" content="Igneum">
|
||||
<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.png">
|
||||
<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_large_image">
|
||||
<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.png">
|
||||
<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 100 100'%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/svg%3E" type="image/svg+xml">
|
||||
<link rel="icon" href="/favicon.ico" sizes="48x48">
|
||||
<link rel="icon" href="/icon-192.png" type="image/png" sizes="192x192">
|
||||
<link rel="icon" href="/icon-512.png" type="image/png" sizes="512x512">
|
||||
<link rel="apple-touch-icon" href="/apple-touch-icon.png" sizes="180x180">
|
||||
<link rel="manifest" href="/site.webmanifest">
|
||||
<script type="application/ld+json">
|
||||
{"@context":"https://schema.org","@type":"Organization","name":"Igneum","url":"https://igneum.network/","logo":"https://igneum.network/icon-512.png","sameAs":["https://github.com/igneum-network"]}
|
||||
</script>
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Unbounded:wght@500;700;900&family=IBM+Plex+Sans:wght@400;500;600&family=IBM+Plex+Mono:wght@400;500&display=swap">
|
||||
|
|
|
|||
|
|
@ -50,6 +50,10 @@
|
|||
}
|
||||
],
|
||||
"log": [
|
||||
{
|
||||
"date": "2026-10-03",
|
||||
"text": "First devnet blocks on the real lottery hash: CPU, then Metal GPU, three worker implementations"
|
||||
},
|
||||
{
|
||||
"date": "2026-10-03",
|
||||
"text": "Igneum-node devnet v0: 3-node igneum-devnet at 1 BPS with the 80/20 coinbase and vote_key_hash"
|
||||
|
|
|
|||
|
|
@ -3,8 +3,30 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
|
||||
<meta name="description" content="The Igneum litepaper: a GPU-mined chain whose miners prove every block.">
|
||||
<title>Igneum Litepaper</title>
|
||||
<title>Igneum Litepaper: how the chain works</title>
|
||||
<meta name="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.">
|
||||
<link rel="canonical" href="https://igneum.network/litepaper">
|
||||
<meta name="theme-color" content="#0C0C0E">
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:site_name" content="Igneum">
|
||||
<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.png">
|
||||
<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_large_image">
|
||||
<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.png">
|
||||
<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 100 100'%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/svg%3E" type="image/svg+xml">
|
||||
<link rel="icon" href="/favicon.ico" sizes="48x48">
|
||||
<link rel="icon" href="/icon-192.png" type="image/png" sizes="192x192">
|
||||
<link rel="icon" href="/icon-512.png" type="image/png" sizes="512x512">
|
||||
<link rel="apple-touch-icon" href="/apple-touch-icon.png" sizes="180x180">
|
||||
<link rel="manifest" href="/site.webmanifest">
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Unbounded:wght@500;700;900&family=IBM+Plex+Sans:wght@400;500;600&family=IBM+Plex+Mono:wght@400;500&display=swap">
|
||||
<style>
|
||||
:root{
|
||||
|
|
@ -105,7 +127,6 @@ body.all .pager{display:none}
|
|||
}
|
||||
@media (prefers-reduced-motion:no-preference){.pull{transition:transform .2s}}
|
||||
</style>
|
||||
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Cpolygon points='50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34' fill='%23F2541B'/%3E%3C/svg%3E">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
|
|
|
|||
|
|
@ -3,12 +3,30 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
|
||||
<title>Live devnet</title>
|
||||
<title>Igneum live devnet</title>
|
||||
<meta name="description" content="The Igneum devnet as it runs: blocks, miners, difficulty and peers, read from a node every two seconds.">
|
||||
<meta property="og:title" content="Igneum live devnet">
|
||||
<meta property="og:description" content="Watch the Igneum devnet mine. Real blocks, real parents, real miners.">
|
||||
<link rel="canonical" href="https://igneum.network/live">
|
||||
<meta name="theme-color" content="#0C0C0E">
|
||||
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%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/svg%3E">
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:site_name" content="Igneum">
|
||||
<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.png">
|
||||
<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_large_image">
|
||||
<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.png">
|
||||
<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 100 100'%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/svg%3E" type="image/svg+xml">
|
||||
<link rel="icon" href="/favicon.ico" sizes="48x48">
|
||||
<link rel="icon" href="/icon-192.png" type="image/png" sizes="192x192">
|
||||
<link rel="icon" href="/icon-512.png" type="image/png" sizes="512x512">
|
||||
<link rel="apple-touch-icon" href="/apple-touch-icon.png" sizes="180x180">
|
||||
<link rel="manifest" href="/site.webmanifest">
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Unbounded:wght@500;700;900&family=IBM+Plex+Sans:wght@400;500;600&family=IBM+Plex+Mono:wght@400;500&display=swap">
|
||||
|
|
|
|||
BIN
site/og.png
Normal file
BIN
site/og.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 38 KiB |
6
site/robots.txt
Normal file
6
site/robots.txt
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
User-agent: *
|
||||
Allow: /
|
||||
Disallow: /dl/
|
||||
Disallow: /api/
|
||||
|
||||
Sitemap: https://igneum.network/sitemap.xml
|
||||
13
site/site.webmanifest
Normal file
13
site/site.webmanifest
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"name": "Igneum",
|
||||
"short_name": "Igneum",
|
||||
"description": "The GPU-mined layer 1. Miners also prove the blocks. No premine, no stake, no fee to any team.",
|
||||
"start_url": "/",
|
||||
"display": "standalone",
|
||||
"theme_color": "#0C0C0E",
|
||||
"background_color": "#0C0C0E",
|
||||
"icons": [
|
||||
{ "src": "/icon-192.png", "sizes": "192x192", "type": "image/png" },
|
||||
{ "src": "/icon-512.png", "sizes": "512x512", "type": "image/png", "purpose": "any" }
|
||||
]
|
||||
}
|
||||
7
site/sitemap.xml
Normal file
7
site/sitemap.xml
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
<url><loc>https://igneum.network/</loc><lastmod>2026-10-03</lastmod><changefreq>weekly</changefreq><priority>1.0</priority></url>
|
||||
<url><loc>https://igneum.network/litepaper</loc><lastmod>2026-10-03</lastmod><changefreq>monthly</changefreq><priority>0.9</priority></url>
|
||||
<url><loc>https://igneum.network/live</loc><lastmod>2026-10-03</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
||||
<url><loc>https://igneum.network/bench</loc><lastmod>2026-10-03</lastmod><changefreq>weekly</changefreq><priority>0.6</priority></url>
|
||||
</urlset>
|
||||
Loading…
Reference in a new issue