site: a lit hero, new slogans, the wallpapers, and a better reader

Home:
- The hero stands on a light from the upper left and a pool of the
  accent, mixed from Niveus tokens so it follows the theme. The mark sits
  in an .nv-tile key under a slogan: "Every layer its own -- from the
  first instruction to the last pixel."
- New section headings: "A teaching kernel that outgrew its lessons",
  "Measured, not marketed", "One ISO. One stick. Your disks untouched."
- A Wallpapers section with the four new ones, each downloadable as a
  4K JPEG or as SVG. The four-card grids are two across, so none is left
  alone on its row.

Docs reader:
- An index filter, a breadcrumb with reading time and source path,
  code blocks framed with a language strip and a Copy key, previous and
  next keys at the foot, a reading-progress hairline, and the contents
  entry lit for the section on screen.
- The index lists the documents it was missing: scheduler, FAT, audio,
  LDLS, debugging and the hardware report.
- On a phone the page is no longer wider than the screen (a pre block
  was sizing the grid's auto column), and the index folds away.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S1giNvrHTrPMPw7V6x1kQ4
This commit is contained in:
Nexoniarz 2026-10-23 15:56:43 +02:00
commit 7af579a20d
4 changed files with 421 additions and 19 deletions

View file

@ -3,7 +3,7 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>SchOS — a 64-bit operating system written from scratch</title>
<title>SchOS — every layer its own</title>
<meta name="description" content="SchOS is a from-scratch x86-64 operating system: the SchIFT kernel, the SchFS copy-on-write filesystem, a UEFI loader, and a userland that runs unmodified musl and toybox.">
<link rel="icon" href="Assets/shift.svg" type="image/svg+xml">
@ -47,6 +47,7 @@
<li><a class="nv-nav__item" href="#what">What it has</a></li>
<li><a class="nv-nav__item" href="#hybrid">Hybrid</a></li>
<li><a class="nv-nav__item" href="#numbers">Numbers</a></li>
<li><a class="nv-nav__item" href="#wallpapers">Wallpapers</a></li>
</ul>
<span class="nv-nav__spacer"></span>
@ -69,7 +70,9 @@
<main id="top">
<!-- ====================================================================== -->
<header class="shell hero">
<!-- The one full-bleed band on the page, lit like the Graphite wallpaper. -->
<header class="heroband">
<div class="shell hero">
<div class="hero__copy">
<span class="nv-badge nv-badge--accent">
<span class="nv-badge__dot"></span>
@ -77,9 +80,11 @@
</span>
<h1 class="nv-display hero__title">
<img class="hero__mark" src="Assets/shift.svg" alt="">SchOS
<span class="nv-tile nv-tile--xl hero__tile"><img src="Assets/shift.svg" alt=""></span>SchOS
</h1>
<p class="nv-heading hero__slogan">Every layer its own — from the first instruction to the last pixel.</p>
<p class="nv-prose">
A 64-bit operating system written from scratch — its own kernel, its own
filesystem, its own bootloader. It boots on UEFI, drives real hardware,
@ -109,13 +114,14 @@
</div>
<pre class="nv-window__body nv-code console__log" id="bootlog" aria-live="polite"></pre>
</div>
</div>
</header>
<!-- ====================================================================== -->
<section id="origin" class="shell section" data-reveal>
<div class="section__head">
<p class="nv-overline nv-text-accent">Origin</p>
<h2 class="nv-heading">It started as a teaching kernel and stopped being one</h2>
<h2 class="nv-heading">A teaching kernel that outgrew its lessons</h2>
<p class="nv-prose nv-text-secondary">
SchOS began as <a href="https://github.com/mit-pdos/xv6-public">xv6</a>, MIT's
teaching operating system: 32-bit, single core, one filesystem, a few dozen
@ -195,7 +201,7 @@
<section id="stack" class="shell section" data-reveal>
<div class="section__head">
<p class="nv-overline nv-text-accent">Architecture</p>
<h2 class="nv-heading">Three seams hold the whole thing together</h2>
<h2 class="nv-heading">Three seams, and everything else is arrangement</h2>
<p class="nv-prose nv-text-secondary">
Above the syscall table, software is ordinary and portable. Below the device
model, a driver never names its consumer and a consumer never names a driver.
@ -261,7 +267,7 @@
<section id="what" class="shell section" data-reveal>
<div class="section__head">
<p class="nv-overline nv-text-accent">What it has</p>
<h2 class="nv-heading">Built and running, and honest about the rest</h2>
<h2 class="nv-heading">Running today, and honest about the rest</h2>
<p class="nv-prose nv-text-secondary">
Every card marked <b>runs</b> is in the tree and works today. The tags are
not aspirational; the things that are not finished say so.
@ -536,7 +542,7 @@
<section id="numbers" class="shell section" data-reveal>
<div class="section__head">
<p class="nv-overline nv-text-accent">Numbers</p>
<h2 class="nv-heading">The size of it</h2>
<h2 class="nv-heading">Measured, not marketed</h2>
</div>
<dl class="nv-stat-group">
@ -583,6 +589,66 @@
</div>
</section>
<!-- ====================================================================== -->
<section id="wallpapers" class="shell section" data-reveal>
<div class="section__head">
<p class="nv-overline nv-text-accent">Wallpapers</p>
<h2 class="nv-heading">Four surfaces to sit on</h2>
<p class="nv-prose nv-text-secondary">
Every one is the Shift mark under a different light, generated from the
same geometry the loader draws — so they change when the mark does.
3840×2160, free to use under the same licence as the rest of the tree.
</p>
</div>
<div class="walls">
<figure class="nv-card wall">
<img class="wall__img" src="../branding/wallpapers/graphite.jpg" alt="Graphite: Shift on warm graphite, throwing a pool of violet on the surface. The default." loading="lazy" width="3840" height="2160">
<figcaption class="wall__caption">
<span class="nv-title">Graphite</span>
<span class="nv-body nv-text-secondary">Shift on warm graphite, throwing a pool of violet on the surface. The default.</span>
<span class="nv-cluster">
<a class="nv-button nv-button--sm" href="../branding/wallpapers/graphite.jpg" download>4K JPEG</a>
<a class="nv-button nv-button--ghost nv-button--sm" href="../branding/wallpapers/graphite.svg" download>SVG</a>
</span>
</figcaption>
</figure>
<figure class="nv-card wall">
<img class="wall__img" src="../branding/wallpapers/strata.jpg" alt="Strata: The slabs repeated into a cascade that recedes into indigo." loading="lazy" width="3840" height="2160">
<figcaption class="wall__caption">
<span class="nv-title">Strata</span>
<span class="nv-body nv-text-secondary">The slabs repeated into a cascade that recedes into indigo.</span>
<span class="nv-cluster">
<a class="nv-button nv-button--sm" href="../branding/wallpapers/strata.jpg" download>4K JPEG</a>
<a class="nv-button nv-button--ghost nv-button--sm" href="../branding/wallpapers/strata.svg" download>SVG</a>
</span>
</figcaption>
</figure>
<figure class="nv-card wall">
<img class="wall__img" src="../branding/wallpapers/porcelain.jpg" alt="Porcelain: The light one: glazed porcelain on paper, the top slab in the accent." loading="lazy" width="3840" height="2160">
<figcaption class="wall__caption">
<span class="nv-title">Porcelain</span>
<span class="nv-body nv-text-secondary">The light one: glazed porcelain on paper, the top slab in the accent.</span>
<span class="nv-cluster">
<a class="nv-button nv-button--sm" href="../branding/wallpapers/porcelain.jpg" download>4K JPEG</a>
<a class="nv-button nv-button--ghost nv-button--sm" href="../branding/wallpapers/porcelain.svg" download>SVG</a>
</span>
</figcaption>
</figure>
<figure class="nv-card wall">
<img class="wall__img" src="../branding/wallpapers/dial.jpg" alt="Dial: The SchFS uberblock ring as hardware — the newest slot and the root lit." loading="lazy" width="3840" height="2160">
<figcaption class="wall__caption">
<span class="nv-title">Dial</span>
<span class="nv-body nv-text-secondary">The SchFS uberblock ring as hardware — the newest slot and the root lit.</span>
<span class="nv-cluster">
<a class="nv-button nv-button--sm" href="../branding/wallpapers/dial.jpg" download>4K JPEG</a>
<a class="nv-button nv-button--ghost nv-button--sm" href="../branding/wallpapers/dial.svg" download>SVG</a>
</span>
</figcaption>
</figure>
</div>
</section>
<!-- ====================================================================== -->
<section id="docs" class="shell section" data-reveal>
<div class="section__head">
@ -648,7 +714,7 @@
<img class="getband__mark" src="Assets/usb.svg" alt="">
<div class="getband__copy">
<p class="nv-overline nv-text-accent">Try it</p>
<h2 class="nv-heading">One ISO, one stick, nothing written to your disks</h2>
<h2 class="nv-heading">One ISO. One stick. Your disks untouched.</h2>
<p class="nv-prose nv-text-secondary">
It runs from RAM and leaves the machine as it found it. Or skip the
stick entirely — <code class="nv-code">make qemu</code> is the same
@ -667,7 +733,7 @@
<footer class="shell site-footer">
<div class="nv-divider"></div>
<div class="site-footer__row">
<span class="nv-body">SchOS — kernel <b>SchIFT</b>, filesystem <b>SchFS</b>.</span>
<span class="nv-body">SchOS — built from the metal up. Kernel <b>SchIFT</b>, filesystem <b>SchFS</b>.</span>
<span class="nv-code nv-text-tertiary">GPL-2.0-or-later, with the xv6-derived core under MIT.</span>
</div>