XCY.CX ▏auth.01

DOCS

manual — how the site actually works
8 sections/ search · esc clear

01reading the site#

Every page is a route inside one shell — the .crt wrapper owns the topology field, the topbar owns navigation, and content lives in a single centered column. The rail on the left edge of every card is a live status stream, not decoration: mint means the thing it marks is actually running.

Counters and readouts are real samples. If a number is decorative it says so or doesn't exist — honest telemetry is the one rule the whole surface obeys.

02moving around#

The topbar icon rail is the whole sitemap — canvas, projects, devblog, blog, docs, wiki, about, stats, contact. Each glyph prefetches on pointer-enter, so clicks land instantly. The mint tick under a glyph marks the active route.

Inside pages: the wiki has a query box and anchor permalinks, docs has the scrollspy rail you're probably reading this in, blog posts live at stable slugs. Every heading on a doc section carries a # permalink.

03render engine#

The background is a topology stream rendered on a ladder of paths — worker + WebGL2 at the top, CPU cell computation below, a main-thread Canvas2D painter as the floor. The engine picks a rung, shows you which, and moves rungs when the device can't hold cadence.

Queue latency is not GPU utilization — the stats page samples draw cost, RAF cadence, and fence age every 240ms and shows the raw numbers.

// the ladder, top to bottom
rung  gpu-worker    webgl2 field, pooled compute
rung  gpu-main      webgl2 field, main raster
rung  cpu-worker    cell compute off-thread
rung  cpu-main      2d painter — always available

04motion & reduced-motion#

Every animated primitive checks prefers-reduced-motion live — mid-cascade, not just at mount. Decode cascades resolve instantly, the field renders a single static frame, spinners hold their idle glyph. Nothing is removed; everything is settled.

Low-power devices tick at half cadence with index advances compensating — lowPower() gates that per frame budget.

05card language#

The anchor component is translucent glass: rgba(.22) fill, backdrop blur, hairline border, corner brackets, edge rail — over a 16px +-lattice terrain on every card. Locked projects add a dashed badge and a ⊘ watermark — closed source is a visual state, not a footnote.

Hover fires the diagonal light sweep and, on v2 surfaces, a cursor-tracking mint wash via --mx/--my vars. The wash is a background layer — content stays crisp.

related ▸wiki ▸ card

06decode & type#

Decode is the type primitive — text resolves out of a scramble of its own characters with per-section delays from one choreography map (T in lib/site.ts). Measured-width cells mean a cascade never rewraps a line.

ReDecode is the v2 addition — same engine, but re-fires on hover/focus. Page titles use it: touch a heading and it decodes again.

import { Decode, ReDecode } from "./components/type";
 
<Decode   text="one-shot cascade"   delay={0.15} duration={0.5} />
<ReDecode text="re-fires on hover"  delay={0.15} duration={0.5} />

07stack#

Next.js app router + TypeScript, css partials with no ui kit, ui-monospace everywhere. The field engine is canvas2d/webgl2/workers by hand. Deploys are Vercel under *.xcy.cx — each project its own deployment.

next dev        # local
tsc --noEmit    # type gate
next build      # ship gate

08contributing#

The repos are personal infrastructure — most are closed or source-available-but-not-accepting-PRs. Bug reports and protocol ideas land best through contact channels with a reproduction or a trace. Commit style is area: change — why.