feat(faq): chemistry glossary — 'Brush up on your chemistry while managing your game server'
All checks were successful
CI / backend-types (push) Successful in 9s
CI / frontend-build (push) Successful in 15s
CI / agent-tests (push) Successful in 44s
CI / integration (push) Successful in 22s

Public-facing brand asset (Oracle + Commander): a glossary section on the FAQ
page mapping each chemistry term to its real role in Corrosion, plus the
chemistry-true pipeline as a flow strip.

- 8-term table (Term / Chemistry meaning / In Corrosion): Catalyst, re-Agent,
  Substrate, Formulae, Reaction, Compound, Lab Notes, The Exchange.
- Substrate is the host/bare-metal SURFACE servers run on — NOT the 'automation
  layer' (corrected the drift the Commander rejected; re-Agent installs on it,
  Reactions execute against it).
- Flow strip + closer: Formula defines -> Catalyst kicks off -> re-Agent runs it
  on the Substrate as a Reaction -> Lab Notes record the result.

Verified live via Playwright on the dev server (marketing host): table, flow
strip, and closer all render correctly; no errors from the page.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Vantz Stockwell
2026-06-12 09:14:49 -04:00
parent cef95540fc
commit 04e664045b

View File

@@ -152,6 +152,58 @@ const groups: FaqGroup[] = [
}, },
] ]
interface ChemTerm {
term: string
science: string
role: string
}
const chemistry: ChemTerm[] = [
{
term: 'Catalyst',
science: 'Speeds up a reaction without being consumed',
role: 'The control panel — the operator console where you manage servers, players, plugins, files, wipes, and automation.',
},
{
term: 're-Agent',
science: 'A reagent causes or takes part in a chemical reaction',
role: 'The host connector you install on the Substrate — it links your machine securely to Catalyst and runs its commands.',
},
{
term: 'Substrate',
science: 'The material or surface on which a reaction takes place',
role: 'The host / bare-metal surface where your game servers actually run — native processes on your own Windows or Linux box.',
},
{
term: 'Formulae',
science: 'A formula describes the ingredients and structure of a compound or reaction',
role: 'Deployment recipes — one per game (Rust, Dune, Conan, Soulmask, and more) that define what a server should be.',
},
{
term: 'Reaction',
science: 'A process where substances transform',
role: 'A job executing against the Substrate — a wipe, restart, update, deploy, or backup.',
},
{
term: 'Compound',
science: 'A combination of elements bonded together',
role: 'A grouped set of runtime services that run together as one stack (a Dune battlegroup is a Compound).',
},
{
term: 'Lab Notes',
science: 'Recorded observations and results from an experiment',
role: 'Logs, audit history, and job results — what happened, when, and to what.',
},
{
term: 'The Exchange',
science: 'Ion exchange transfers ions between materials',
role: 'The Corrosion-native marketplace — items, VIP packages, and automated in-game delivery.',
},
]
// The chemistry-true pipeline, rendered as a flow strip under the table.
const flow = ['Formulae', 'Catalyst', 're-Agent', 'Substrate', 'Reaction', 'Lab Notes']
const openKey = ref<string | null>(null) const openKey = ref<string | null>(null)
function toggle(key: string): void { function toggle(key: string): void {
@@ -254,6 +306,55 @@ onUnmounted(() => { io?.disconnect() })
</div> </div>
</section> </section>
<!-- CHEMISTRY GLOSSARY -->
<section class="sec" id="chemistry">
<div class="wrap">
<div class="sec__head reveal">
<span class="eyebrow">Glossary</span>
<h2 class="title">Brush up on your chemistry while managing your game server</h2>
<p class="lead">
Corrosion uses a chemistry-inspired naming system because managing game servers is all
about controlled reactions deploying, updating, wiping, automating, and recovering
complex systems without letting them melt down.
</p>
</div>
<div class="glossary reveal">
<div class="glossary__row glossary__row--head">
<span>Term</span>
<span>Chemistry meaning</span>
<span>In Corrosion</span>
</div>
<div v-for="t in chemistry" :key="t.term" class="glossary__row">
<span class="glossary__term">{{ t.term }}</span>
<span class="glossary__sci">{{ t.science }}</span>
<span class="glossary__role">{{ t.role }}</span>
</div>
</div>
<div class="glossary__foot reveal">
<p class="glossary__note">
You don't need a chemistry degree to use Corrosion. The names are here to make the
platform memorable — and to give each part of the system a clear job.
</p>
<div class="flow" aria-hidden="true">
<template v-for="(step, i) in flow" :key="step">
<span class="flow__step">{{ step }}</span>
<span v-if="i < flow.length - 1" class="flow__arr">→</span>
</template>
</div>
<p class="glossary__plain">
<strong>How it fits together:</strong> a <strong>Formula</strong> defines what should
happen, <strong>Catalyst</strong> kicks it off, <strong>re-Agent</strong> carries it out
on the <strong>Substrate</strong> as a <strong>Reaction</strong>, and
<strong>Lab Notes</strong> record the result.
</p>
</div>
</div>
</section>
<!-- SUPPORT CTA --> <!-- SUPPORT CTA -->
<section class="sec" id="support-cta" style="border-bottom:none"> <section class="sec" id="support-cta" style="border-bottom:none">
<div class="wrap"> <div class="wrap">
@@ -350,4 +451,80 @@ onUnmounted(() => { io?.disconnect() })
color: var(--text-tertiary); color: var(--text-tertiary);
line-height: 1.65; line-height: 1.65;
} }
/* Chemistry glossary */
.glossary {
max-width: 920px;
margin: 0 auto;
background: var(--surface-base);
border-radius: var(--radius-lg);
box-shadow: var(--ring-default);
overflow: hidden;
}
.glossary__row {
display: grid;
grid-template-columns: 150px 1.05fr 1.6fr;
gap: 18px;
padding: 15px 20px;
border-top: 1px solid var(--border-subtle);
align-items: start;
}
.glossary__row:first-child { border-top: none; }
.glossary__row--head {
font-size: var(--text-xs);
text-transform: uppercase;
letter-spacing: 0.06em;
font-weight: 600;
color: var(--text-muted);
background: var(--surface-raised-2);
}
.glossary__term { font-weight: 700; color: var(--accent-text); font-size: var(--text-sm); }
.glossary__sci { font-size: var(--text-sm); color: var(--text-tertiary); font-style: italic; line-height: 1.55; }
.glossary__role { font-size: var(--text-sm); color: var(--text-secondary); line-height: 1.6; }
.glossary__foot {
max-width: 920px;
margin: 22px auto 0;
display: flex;
flex-direction: column;
gap: 12px;
}
.glossary__note { font-size: var(--text-sm); color: var(--text-tertiary); line-height: 1.65; margin: 0; }
.flow {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: center;
gap: 8px;
padding: 4px 0;
}
.flow__step {
font-size: var(--text-xs);
font-weight: 600;
color: var(--accent-text);
background: var(--accent-soft);
box-shadow: inset 0 0 0 1px var(--accent-border);
padding: 6px 12px;
border-radius: var(--radius-md);
white-space: nowrap;
}
.flow__arr { color: var(--text-muted); font-size: var(--text-sm); }
.glossary__plain {
font-size: var(--text-sm);
color: var(--text-primary);
line-height: 1.65;
margin: 0;
padding: 14px 16px;
background: var(--accent-soft);
border-radius: var(--radius-md);
box-shadow: inset 0 0 0 1px var(--accent-border);
}
.glossary__plain strong { color: var(--accent-text); }
@media (max-width: 720px) {
.glossary__row { grid-template-columns: 1fr; gap: 5px; padding: 16px; }
.glossary__row--head { display: none; }
.glossary__sci::before { content: 'Chemistry '; color: var(--text-muted); font-style: normal; }
.glossary__role::before { content: 'In Corrosion '; color: var(--text-muted); }
}
</style> </style>