Skip to content

2026-07-20 — Agent Lab: single-surface UI + the 169-color gridman avatar

The agent lab is now ONE surface. Every task — editing a draft, inspecting a version, reading a flagged-hand decision trace, running a replay, editing the machine's identity — happens in the Lab's center column at /agents; the standalone sub-pages are gone.

  • URL-driven selection?mode=…&build=…&hand=… (+ mode=profile): refresh and deep links restore the exact center-column view. The old routes (/agents/draft/[id], /agents/version/[id], /agents/hand/[t]/[n]) are thin redirects into that URL shape, so no saved link strands anyone on an old UI.
  • Draft editor in place (Brain mode) — the workbench re-homed as a component; + new build, fork, and publish all select in place. The read-only wiring view absorbed the version detail (status badge, versionHash, model, fork / re-deploy).
  • Decision trace in place (Decisions mode) — flag/note, OHH "what happened" context, the knew → prompt → response → decision stepper, and replay-a-decision, with an ← all hands back affordance.
  • Edit Profile — the machine's identity (name, subtitle, avatar) edited in the center column via the machine panel's ✎ button. Identity is unversioned and carries no seated-lock; the panel updates live on save.
  • The 169-color gridman palette (avatar format v2) — the picker is a 13×13 grid of all 169 colors (position-indexed: the palette's layout IS its encoding), containing the legacy 16 hexes exactly so old avatars upconvert losslessly in the editor. Legacy 169-char strings render via the frozen legacy palette forever (no migration); new saves are 338-char v2. Client + game-server validators updated as the kept-in-sync pair (avatar_invalid unchanged).
  • Image-to-avatar import — upload any image; it's cover-cropped, downscaled to 13×13, and quantized to the nearest palette colors, landing as a normal paintable avatar. Entirely client-side.

Phase 2 of the program — The Prompt as a composition of NaN (universal platform-controlled + user publish-frozen) — is the follow-up prompt-composition plan.

Post-ship hardening in the same day: crisper image import (dominant per-block sampling, photo auto-contrast, redmean distance — #64), a falsification pass on the fold-in's new hazard class (the topbar deploy can no longer publish stale fields, the seated-lock banner renders only where true, unsaved edits confirm before discard — #65), and a cleanup pass (Lab decomposed to one-component-per-file, avatar module split data/format/pipeline, dead CSS pruned, the editor widened to the mockup's wiring — #66).

Plan: agent-lab-redesign (workbench planning, archived). PRs #62–#66.