git:20260930.084802d to git:20261001.79828d9

335 added, 388 removed. Audit A to A.

# Agent Toolkit Desktop Design Contract
**Status: CURRENT CONTRACT** — governing visual and interaction design
- direction for Agent Toolkit Desktop. Re-confirmed 2026-09-13 at `ecc4d67c`;
- **spatial home evolved 2026-09-30** ([ADR-034](../adrs/ADR-034-semantic-world.md),
- [SEMANTIC_WORLD.md](SEMANTIC_WORLD.md)).
+ direction for Agent Toolkit Desktop. **Visual reset adopted 2026-09-30**
+ ([ADR-035](../adrs/ADR-035-cozy-pixel-world.md)): the **Cozy Pixel World**
+ language is the single visual contract. The previous Paper Co. language is
+ deprecated and survives only in git history.
- This document defines how Agent Toolkit Desktop should look, feel, and present information. It complements [PRODUCT_VISION.md](PRODUCT_VISION.md), [UX_ARCHITECTURE.md](UX_ARCHITECTURE.md), [USER_JOURNEYS.md](USER_JOURNEYS.md), [WORKFLOW_COVERAGE.md](WORKFLOW_COVERAGE.md), [VISUAL_QA.md](VISUAL_QA.md), and [SEMANTIC_WORLD.md](SEMANTIC_WORLD.md). It is not an executable token file and it does not override Engine truth, accessibility, or platform constraints.
+ This document defines how Agent Toolkit Desktop should look, feel, and present
+ information. It complements [PRODUCT_VISION.md](PRODUCT_VISION.md),
+ [UX_ARCHITECTURE.md](UX_ARCHITECTURE.md), [USER_JOURNEYS.md](USER_JOURNEYS.md),
+ [WORKFLOW_COVERAGE.md](WORKFLOW_COVERAGE.md), [VISUAL_QA.md](VISUAL_QA.md), and
+ [SEMANTIC_WORLD.md](SEMANTIC_WORLD.md). It is not an executable token file and
+ it does not override Engine truth, accessibility, or platform constraints.
The goal is simple:
- > A serious workstation for coding agents: a warm **semantic pixel-art world**
- > that explains the product, with Paper Co. **inspectors** for professional work.
-
- ## 0. Visual convergence goal (product direction)
-
- ### 0.1 Semantic world is the primary spatial goal (2026-09-30)
-
- The **semantic spatial world** is the default home and the primary way the
- product explains itself. Paper Co. inspectors (Operations, Library, Terminal,
- Office attention, Workspace, Insights, Settings) stay professional, dense, and
- fast. Policy:
-
- - **World explains the product.** Places and objects are projections of real
- domain concepts (workspace, projects, knowledge, memory, tools, jobs).
- - **Inspectors do the work.** Clicking a place opens an existing destination
- via `href()` / command palette — not a parallel fake dashboard.
- - **No fake life.** Characters exist only for proven agents/runs/jobs. Ambient
- environment animation is allowed; system activity comes only from real state
- / SSE. Empty and calm are valid.
- - **Not game-before-tool.** Palette, keyboard, terminal dock, and direct open
- remain. Do not require walking to be productive.
- - Full vocabulary, theme keys, layout, and renderer decision:
- [SEMANTIC_WORLD.md](SEMANTIC_WORLD.md) and
- [ADR-034](../adrs/ADR-034-semantic-world.md).
-
- ### 0.2 Paper Co. × concept references (2026-09-07, still binding for inspectors)
-
- The visual direction in [`assets/design/`](assets/design/) — anchored by
- [`concept-board.jpg`](assets/design/concept-board.jpg) and
- [`office.jpg`](assets/design/office.jpg), and guiding
- [`library.jpg`](assets/design/library.jpg),
- [`operations.jpg`](assets/design/operations.jpg),
- [`onboarding.jpg`](assets/design/onboarding.jpg) — remains a **first-class
- aesthetic goal for inspector craft**: warm Paper Co. materials, editorial
- typography, dark terminal treatment, coherent pixel materials — not stickers
- on generic panels.
-
- **Semantic world art direction** (2026-09-30) lives alongside those boards:
-
- - [`asset-sheet-cozy-world.jpg`](assets/design/asset-sheet-cozy-world.jpg) —
- tilesets + building archetypes + UI chrome (slice before wiring sprites).
- - [`semantic-world-product-board.jpg`](assets/design/semantic-world-product-board.jpg)
- / [`semantic-world-ui-board.jpg`](assets/design/semantic-world-ui-board.jpg)
- — world-first IA (project houses + shared places + professional inspectors).
+ > A real developer workstation presented as a **beautiful, cozy top-down
+ > pixel world**. The world is the screen. The menus feel like the world.
+ > Nothing on screen lies.
- Character rows on the asset sheet are **not** a license to invent NPCs.
- See [`assets/design/README.md`](assets/design/README.md) and ADR-034.
+ ## 0. North Star
- The end state is not "a native GUI using warm colors". It is a serious
- coding-agent workstation whose **home** is a truthful cozy top-down world and
- whose **panels** feel like the rich Paper Co. references. Concept images stay
- directional: do not copy their fictional metrics, statuses, or IA.
+ Agent Toolkit Desktop should feel like opening a polished classic top-down
+ pixel game — and then discovering it is an extremely capable developer
+ workstation. Broad mood references: lush 16/32-bit top-down villages and
+ valleys (SNES/GBA era readability), cozy simulation-game warmth, classic JRPG
+ menu character. These are **mood references only**: never copy copyrighted
+ assets, maps, characters, or UI.
- For every visible GUI change, actively ask:
+ Target qualities: cozy, colorful, lush, playful, handcrafted, nostalgic, warm,
+ slightly magical, calm, alive, extremely readable.
- - Does this move the production app closer to the design references?
- - Does this screen feel like part of the same world?
- - Does it have enough craft and environmental richness?
- - Does it still look generic, empty, or dashboard-like?
- - Can we make it materially closer to the concept while preserving clarity and truth?
+ Reject: corporate chrome, editorial beige SaaS, glassmorphism, Material UI,
+ generic AI dashboards, modern rounded-card webapps, faux paper/ledger/filing
+ aesthetics, office-themed identity, pixel stickers on generic panels.
- Boundaries:
+ The **Cozy Pixel World** contract has three inseparable halves:
- - Product truth remains authoritative. The references' fictional features,
- metrics, statuses, layouts and mock data are **not** requirements — the
- aesthetic qualities are.
- - "Functionally correct" is not acceptance when the task includes meaningful
- visible UI; iterate toward visually delightful within the hierarchy in §1.
- - During #1130/#1127/#1128: preserve the direction in whatever UI is
- necessarily touched, capture discrepancies, record follow-ups — but do not
- convert those slices into visual-redesign PRs.
- - After the standalone-product sequence (#1129 → #1130 → #1127 → #1128), run
- an explicit **visual-convergence phase**: compare real production
- screenshots against the references destination-by-destination and
- deliberately close the remaining gap.
+ 1. **The world is the screen.** `/world` is the home and reads immediately as
+ a real top-down pixel world: terrain, paths, water, trees, lamps, and
+ project buildings composed like a game map — not a dashboard with pixel
+ decoration. Chrome is minimal; the world dominates the window.
+ 2. **The UI belongs to the world.** Menus, inspectors, dialogs, tables and
+ the shell use one classic game-menu system: deep framed panels, hard
+ borders, square pixel-cut corners, flat colors, hard shadows, compact
+ status chips, pixel display type for titles, readable sans for dense data.
+ 3. **Nothing lies.** Every place, object, and character is a projection of
+ real domain state. Ambient life (water, leaves, fireflies, birds,
+ butterflies, glowing windows) is environmental atmosphere and never
+ implies agent activity. See [SEMANTIC_WORLD.md](SEMANTIC_WORLD.md) and
+ [ADR-034](../adrs/ADR-034-semantic-world.md).
- Quality bar from here on: **truthful + usable + native + visually convergent
- with docs/desktop/assets/design/.**
+ Ask of any visible change:
- The product should feel unmistakably like Agent Toolkit: capable, local, crafted, calm, technical, and delightful without becoming a game or a generic SaaS dashboard.
+ - Would this look at home in an indie pixel-game showcase?
+ - Would a developer still find it efficient after eight hours?
+ - Is it coherent with the rest of the world (one art direction)?
+ - Does it still read like a generic dashboard? Then it is not done.
## 1. Design hierarchy
When design goals conflict, use this order:
> **Clarity → Control → Feedback → Discoverability → Personality → Decoration**
- Personality is important. It never outranks understanding, safety, input focus, or operational truth.
+ Personality is important. It never outranks understanding, safety, input
+ focus, or operational truth.
### Core principles
- - **Cozy productivity.** The app may feel warm and welcoming without becoming unserious.
- - **Conventional interaction, distinctive presentation.** Users operate a desktop tool, not a game controller.
- - **Pixel art is a material, not a sticker pack.** Use it as a coherent visual language rather than random decoration.
- - **Operational truth before animation.** Visual activity represents real catalog, configuration, runtime, or evidence state.
- - **Progressive richness.** Hierarchy and task clarity appear first; environmental detail rewards exploration later.
- - **Calm density.** Dense information is allowed; visual noise is not.
- - **Craft over novelty.** Reusable visual grammar beats one-off clever screens.
- - **Standalone identity.** The design may echo Hornero craftsmanship but must not depend on HorneroConfig or sibling repositories.
-
- ## 2. Identity: Paper Co. inspectors × semantic pixel world
-
- Paper Co. remains the base design language for chrome and inspectors: warm
- paper, ink, manila, brass, rust, sage, folders, receipts, ledgers, tabs,
- stamps, and editorial typography.
+ - **World first.** The map explains the product; menus and inspectors do the
+ work. Neither half ships without the other matching its quality bar.
+ - **Truth before animation.** Visual activity represents real catalog,
+ configuration, runtime, or evidence state. Empty and calm are valid.
+ - **Conventional interaction, distinctive presentation.** Direct navigation,
+ command palette, keyboard, and real terminal stay mandatory. No walking
+ required to be productive.
+ - **Handcrafted coherence.** One art direction, one light direction, one
+ pixel grid, one menu system. No stylistic soup.
+ - **Calm density.** Dense developer information inside compact, readable
+ game-menu panels. No giant rounded cards, no billboard whitespace.
+ - **Gentle magic.** Lanterns, glowing windows, fireflies, rune-like tech
+ accents are atmosphere. This is not a fantasy RPG; there is no invented
+ lore, no XP, no quests.
+ - **Standalone identity.** The design carries a subtle Hornero/nature
+ signature (a bird, warm South-American valley light) but never depends on
+ sibling repositories.
- The spatial evolution is a **semantic cozy top-down world** (default theme
- `cozy-topdown`): readable grounds and buildings that mean workspace/projects,
- knowledge annexes, terminal workstations, and characters only when runtime
- evidence exists. Inspectors stay Paper Co.; the world uses original/licensed
- pixel materials resolved through **semantic theme keys**, not hardcoded
- filenames in features.
+ ## 2. Identity: the valley
- These are references to a visual tradition, not assets to copy. Do not
- reproduce copyrighted game sprites, maps, characters, UI, or Munder Difflin /
- Agent Office / Stardew / Zelda artwork.
+ The home is a small valley settlement. Each real project is a building with a
+ readable silhouette; shared concepts are distinct landmarks (hall, library,
+ records house, workshop, terminal station, depot, notice post). Paths, a
+ creek, bridges, trees, flowers, lamps and signs compose the settlement like a
+ game map. At idle the world stays alive through harmless ambient life —
+ water, leaves, fireflies, a hornero bird — and stays honest: no idle world
+ ever invents workers.
### Hornero signature
- The Hornero motif connects Agent Toolkit with the maintainer's broader design language: deliberate building, a durable nest, warm craft, and a place designed around its inhabitants.
-
- Use sparingly:
-
- - a small hornero or nest mark;
- - tiny workshop/home motifs;
- - occasional builder-oriented editorial copy;
- - subtle environmental objects.
-
- Do not rename Agent Toolkit. Do not turn every empty state into a bird joke. The Hornero is a signature, not a mascot-first product strategy.
+ The hornero (the South-American ovenbird that builds clay houses) is the
+ quiet signature of the product: a small bird occasionally perched near the
+ hall, a nest motif on the workspace hall, warm valley light. It is a
+ signature, not a mascot crowd, and never an agent character. Do not rename
+ Agent Toolkit; do not plaster logos across the UI.
## 3. What the product must not become
- Reject these directions:
-
- - generic AI SaaS;
- - purple/indigo AI gradients;
- - glassmorphism;
- - card soup;
- - a VS Code clone;
- - a generic admin dashboard;
- - fake RPG mechanics, XP, levels, or achievement systems unrelated to real work;
+ - generic AI SaaS or purple/indigo AI gradients;
+ - glassmorphism, card soup, giant rounded cards, billboard whitespace;
+ - a VS Code clone or generic admin dashboard;
+ - the deprecated Paper Co. language (paper/manila/ledger/fraunces/editorial);
+ - a medieval fantasy RPG, wizard simulator, dungeon crawler, or MMORPG;
+ - fake gamification: XP, levels, achievements, quests, loot;
+ - decorative fake workers; "thinking"/"coding" states without runtime
+ evidence;
- arbitrary pixel-art stickers on otherwise generic UI;
- - meaningless ambient motion;
+ - meaningless ambient motion, or ambient motion that reads as agent activity;
- heavy skeuomorphism that hides basic actions;
- - forcing the Office Floor metaphor onto every workflow;
- - pixel fonts for normal body text or dense operational tables;
+ - pixel fonts for body text, dense tables, or terminal;
- status communicated only by color;
- - fabricated activity, progress, health, compatibility, cost, receipt, or provenance.
+ - fabricated activity, progress, health, compatibility, cost, receipt, or
+ provenance.
## 4. Visual truth model
- Beautiful lies are worse than boring truth.
-
- The UI distinguishes four kinds of truth:
+ Beautiful lies are worse than boring truth. The UI distinguishes four kinds of
+ truth:
1. **Catalog truth** — what Agent Toolkit actually provides or supports.
- 2. **Configuration truth** — what this user/workspace has actually enabled or installed.
+ 2. **Configuration truth** — what this user/workspace has actually enabled.
3. **Runtime truth** — what is happening right now.
- 4. **Evidence truth** — what receipts, provenance, hashes, verification, and measurements actually prove.
-
- A desk may represent a catalog agent while the agent is idle. A loop template may exist without a configured loop. A provider may be supported but not configured. Runtime emptiness never means the catalog is empty.
+ 4. **Evidence truth** — what receipts, provenance, and measurements prove.
- Concept images in this repository contain illustrative demo values. They are not product truth and must never be copied into production data paths.
+ A landmark may exist while its concept is empty; runtime emptiness never means
+ the catalog is empty; ambient environment motion never implies runtime
+ activity. The world truth rules in
+ [SEMANTIC_WORLD.md §9](SEMANTIC_WORLD.md) are binding.
## 5. Themes and color
- The executable theme/token implementation remains the value authority. This document defines intent and semantic use.
-
- ### Paper
-
- The canonical warm expression:
-
- - paper-cream canvas;
- - manila and warm neutral panels;
- - restrained wood/environment surfaces;
- - sage and dusty teal accents;
- - brass for emphasis;
- - rust for destructive/error-adjacent accents where semantically appropriate;
- - dark ink typography.
-
- ### Ink
-
- A deliberate dark expression, not a mechanical inversion:
-
- - charcoal/near-black chrome and canvas;
- - warm off-white text;
- - desaturated sage/teal and brass accents;
- - low-noise dark surfaces;
- - pixel assets framed or variant-rendered so they remain intentional.
-
- ### System
-
- System follows OS appearance and resolves to Paper- or Ink-compatible behavior. It is not a third unrelated visual language.
+ Executable tokens (`apps/desktop/src/design/tokens.css`) are the value
+ authority; this section defines intent. Two appearances, one world.
- ### Representative palette
+ - **Meadow** (`data-theme='meadow'`, default) — bright valley daylight:
+ lush greens, warm dirt, clear water, colorful roofs. Menus are deep
+ indigo-spruce with ivory text and gold/teal accents.
+ - **Dusk** (`data-theme='dusk'`) — deliberate dark evening: deeper grass,
+ navy creek, glowing windows and lanterns. Not a mechanical inversion.
+ - **System** — resolves to Meadow or Dusk from `prefers-color-scheme`.
- These values are visual-direction anchors only; semantic tokens in code remain canonical.
+ ### Palette (directional anchors; code tokens are canonical)
- | Role | Reference |
- |---|---|
- | Paper Cream | `#F6EBD7` |
- | Manila Tan | `#D4B483` |
- | Sage Green | `#7B9E7E` |
- | Dusty Teal | `#4E7C7B` |
- | Rust Red | `#B5523C` |
- | Brass Gold | `#D4A94B` |
- | Ink Charcoal | `#1F1F1F` |
- | Terminal Accent | `#39FF9B` |
+ | Group | Roles | Anchor hexes |
+ |---|---|---|
+ | Meadow grass | base / dark / light / tuft | `#5FB454` `#4E9C43` `#72C264` `#8AD478` |
+ | Foliage | tree / deep / highlight | `#3E7D3A` `#2F6230` `#58A34E` |
+ | Earth | dirt / edge / sand | `#C9A066` `#A87F4C` `#E7D7A8` |
+ | Stone | slab / dark / pebble | `#9AA0A8` `#767C85` `#C6CBCF` |
+ | Water | deep / mid / light / foam | `#2E7FA3` `#3FA7D6` `#7CD0EC` `#E3F6FC` |
+ | Wood | beam / plank / dark | `#8A5A32` `#B07B4A` `#5E3D22` |
+ | Plaster / brick | wall / brick | `#F2E6C9` `#B5654A` |
+ | Roofs | terracotta / slate / teal / rust / moss / straw | `#C65D3B` `#4E6E8E` `#3E8E8A` `#A63D2F` `#5E8C4A` `#D9A648` |
+ | Magic & tech glow | cyan / lavender / gold / emerald | `#5FE3D0` `#B7A6F0` `#FFD97A` `#4ED49A` |
+ | Flowers | poppy / daisy / lavender | `#E4574C` `#F2EFE3` `#B7A6F0` |
+ | Menu (Meadow) | panel / raised / sunken | `#262B45` `#2F3552` `#1D2136` |
+ | Menu (Dusk) | panel / raised / sunken | `#1B1E30` `#232742` `#141624` |
+ | Menu text | primary / muted | `#F3EDDA` `#B9B4CE` |
+ | Accents | gold / teal / rose | `#F0BD5E` `#5FD3C6` `#E46A5C` |
+ | Status | ok / warn / err / info / idle | `#58C98B` `#F2C14E` `#E4574C` `#5AB0F2` `#9A93A8` |
- Prefer semantic roles such as `surface.canvas`, `surface.panel`, `text.primary`, `border.focus`, `status.warning`, and `terminal.accent` over raw colors in feature code.
+ Status always pairs color with text and/or shape; see §11. The palette must
+ stay colorful — a washed-out beige world is a regression by definition.
## 6. Typography
- Audit bundled fonts before changing dependencies. The current intended roles are:
-
- - **Fraunces** — destination headings and rare editorial/brand moments;
- - **IBM Plex Sans** — navigation, labels, forms, tables, body copy, controls;
- - **IBM Plex Mono** — terminal, logs, commands, paths, IDs, hashes, code-like technical details.
+ Three roles, no more:
- Pixel fonts, if introduced, are restricted to environmental signage, floor-map labels, or decorative display moments. They never replace readable vector body text.
+ | Role | Family | Use |
+ |---|---|---|
+ | **Display** | Silkscreen (OFL, 400/700) — bundled via `@fontsource/silkscreen` | Destination titles, panel titles, buttons, HUD labels, world plaques, numeric chips. Integer pixel sizes (8–16px equivalents). |
+ | **UI body** | IBM Plex Sans (400/500/600) | Dense tables, forms, paragraphs, descriptions. Never pixelated. |
+ | **Mono** | IBM Plex Mono (400/500) | Terminal, logs, commands, paths, IDs, hashes. |
- New fonts require licensing, packaging, i18n, shaping, and runtime validation.
+ Fraunces and editorial serif hierarchy are retired with Paper Co. Pixel type
+ is a display voice: it never replaces readable body text, dense tables, or
+ terminal output.
## 7. Pixel-art grammar
- Pixel assets must share one craft system.
-
- ### Rendering
-
- - use a small logical sprite grid chosen from current renderer constraints;
- - render pixel art with nearest-neighbor sampling;
- - prefer integer positioning/scaling where the asset depends on crisp pixels;
- - avoid accidental bilinear blur;
- - test HiDPI at integer and non-integer UI scale combinations;
- - preserve one consistent light direction, outline philosophy, and palette density.
+ All world art shares one craft system. The generator
+ (`apps/desktop/scripts/gen-world-assets.mjs`) and the theme packs are the
+ executable form of these rules.
- Before canonizing 16×16, 24×24, or 32×32 assets, verify current `gg`/sokol behavior and actual UI density. Do not choose a grid from aesthetics alone.
+ ### Grid and rendering
- ### Asset classes
+ - **Source grid: 16×16 px per tile.** All terrain tiles, decor and entity
+ sprites are authored at integer multiples of 16 px source.
+ - **Integer display scaling only:** zoom steps 2×/3×/4× (32/48/64 CSS px per
+ tile). Fit-to-world picks the largest integer zoom that fits; never render
+ fractional zoom.
+ - `image-rendering: pixelated` everywhere; integer world-pixel coordinates;
+ no anti-aliased sprite scaling; no CSS gradients inside world assets; no
+ blurred shadows.
+ - Terrain renders to a single canvas (nearest-neighbor, no smoothing);
+ entities and ambient sprites are positioned DOM elements sharing the same
+ world-pixel geometry so hit-testing and drawing never diverge.
+ - The camera pans (drag / arrows) and zooms (buttons / wheel steps) in whole
+ pixels; Home resets to fit; focusing an entity centers it.
- **Agent avatars** — authoritative identity with visual variants for idle, active, waiting, attention, error, and selection. Runtime state controls runtime presentation.
+ ### Craft rules
- **Office furniture** — desks, chairs, shelves, cabinets, plants, terminals, meeting furniture, lamps, boards, couches, rugs, storage, doors.
+ - One light direction (top-left); contact shadows fall bottom-right as hard
+ offset pixels, never blurred.
+ - Consistent 1-px darker outline treatment on silhouettes; limited ramps
+ (≤5 steps per material); no stray hues outside the palette ramps.
+ - Consistent top-down projection: ground-plane objects sit on tile feet;
+ buildings are roof-first readable with visible doors on the south face.
+ - Animated sprites use 2-frame strips with `steps()` timing; water and glow
+ cycle slowly. Motion respects reduced motion (freeze, not remove) and
+ pauses when the document is hidden.
+ - Never mix asset resolutions, vector icons, or foreign sprite packs into
+ the world.
- **Operational objects** — inboxes, approval trays, receipts, documents, loop/calendar objects, connection devices, diagnostic tools, packages/crates.
+ ### Asset classes
- **Hornero elements** — bird, nest, workshop/home details used sparingly.
+ - **Terrain** — grass variants, dirt road, plaza stone, sand, water
+ (2-frame), shore foam, bridge planks.
+ - **Nature/decor** — trees (round, pine), bushes, flowers, rocks, reeds,
+ fences, lamps, signs, stumps, mushrooms, lily pads, garden plots, nest.
+ - **Buildings** — workspace hall, records house (memory), library, workshop
+ (operations), terminal station, depot (files), notice post (attention),
+ settings post; project houses in one family with 6 variants: cottage,
+ studio, workshop, tower, cabin, brick.
+ - **Furniture (interiors)** — plank floor, walls, door mat, rug, plant,
+ terminal desk (glowing screen), bookshelf, memory cabinet, tools bench,
+ map board, crates.
+ - **Characters** — small readable apprentice figures for proven runtime rows
+ only: working (2-frame tool bob), blocked (red marker bubble), idle (only
+ when a runtime row exists). Satchel/hat variants by stable hash.
+ - **Ambient life** — butterflies, fireflies (dusk), water shimmer, the
+ hornero bird. Always small, always clearly environmental, never clickable
+ as if they were agents.
### Asset licensing
- Production artwork must be original or appropriately licensed. Never import copyrighted assets from Zelda, Stardew Valley, Munder Difflin, or another product.
+ Production artwork is **original and generated in-repo**
+ (`apps/desktop/scripts/gen-world-assets.mjs`) or appropriately licensed with
+ recorded attribution. Never import copyrighted assets from Zelda, Pokémon,
+ Stardew Valley, Animal Crossing, Earthbound, Munder Difflin, Agent Office, or
+ Pixel Agents.
## 8. Application shell
- The shell remains conventional and fast:
-
- - primary navigation;
- - active workspace;
- - Search / Run;
- - content surface;
- - contextual inspector/drawer;
- - global activity affordance;
- - terminal/session dock.
-
- Pixel art decorates and contextualizes this shell. It does not replace standard affordances such as buttons, tabs, fields, tables, scrollbars, selection, focus, or resize handles.
+ The shell is a minimal game HUD, not a dashboard frame:
- Primary destinations (Electron shell):
+ - **Top HUD bar** (single slim row): hornero mark + product name; chunky
+ destination buttons (World first); live connection lamp; workspace chip;
+ command-palette affordance (Ctrl/Cmd+K).
+ - **Context strip**: session context (workspace / agent / run) as compact
+ fields — a real productivity rail, kept slim.
+ - **Terminal dock**: persistent xterm host below content; dark, crisp,
+ pixel-framed tabs; unchanged real PTY behavior.
+ - **Content surface**: `/world` fills it edge-to-edge (world is the screen);
+ inspectors compose it with game-menu panels.
- - **World** (default home — `/` → `/world`) — semantic spatial explanation
- - Office — attention inspector ("what needs me?")
- - Library
- - Operations
- - Workspace
- - Insights
- - Terminal
- - Settings
+ Pixel art decorates and contextualizes the shell but never replaces standard
+ affordances: buttons, tabs, fields, tables, scrollbars, selection, focus,
+ resize handles.
- World is the home. The others are inspectors / workstations opened from places
- or the nav/palette. Do not add destinations merely to mirror a concept image.
- See [SEMANTIC_WORLD.md](SEMANTIC_WORLD.md).
+ Primary destinations (unchanged; see
+ [UX_ARCHITECTURE.md](UX_ARCHITECTURE.md)): World (home), Office (attention),
+ Library, Operations, Workspace, Insights, Terminal, Settings.
## 9. World and Office
- **World** is the flagship spatial expression of product identity (ADR-034).
-
- It must answer at a glance, without forcing a walk:
-
- - which workspace/harness is active;
- - which projects exist (real `projects/` / project list);
- - whether shared knowledge/memory is present or honestly empty;
- - which jobs/runs have characters (proven only);
- - how to open terminal, workspace, library, or operations in one click / Cmd+K.
-
- **Office** remains the attention inspector: failures, blocked work, self-check
- problems, backend down — without inventing activity.
+ **World** is the flagship spatial surface and the home
+ ([ADR-034](../adrs/ADR-034-semantic-world.md)): it must answer at a glance,
+ without forcing a walk — which workspace is active, which projects exist,
+ whether shared memory/knowledge exists, which jobs have characters (proven
+ only), and how to reach terminal, workspace, library, or operations in one
+ click or via Ctrl/Cmd+K.
- A useful model is:
+ **Office** is the attention inspector: failures, blocked work, self-check
+ problems, backend down — a game-menu board, not a second home.
- > **Semantic world home + Paper Co. inspectors**
+ The composition contract for the world map:
- Places mean domain concepts. Catalog agents may appear as nameplates/desks
- while idle; only runtime evidence (jobs / swarm runs / sessions) creates
- characters. Do not create rooms merely to mirror every nav label or to preview
- unavailable APIs.
+ - deterministic layout from sorted real inputs (same input → same map);
+ - composed like a game world: plaza and hall, landmark ring or lane, winding
+ roads, a creek with bridges, forest edges, gardens, scattered flowers and
+ lamps;
+ - scales from 1 to 20+ projects without becoming an empty void or a parking
+ lot — map size buckets, district lanes, never random scatter;
+ - tooltips show name, concept, state, and the action; clicks open the
+ existing destination via `href()`; a structured list mirrors everything.
## 10. Screen-specific design intent
### Onboarding
- Warm reception/welcome-desk feeling. Explain the next choice before technical vocabulary. Pixel illustration builds confidence; it does not compete with setup decisions.
+ A warm welcome sign at the edge of the valley, in the same pixel menu
+ language. Explain the next choice before technical vocabulary. Ends naturally
+ in the world. No invented agents, no fake liveliness.
### World
- Most expressive visual surface. Semantic places/objects/characters only from
- real state; list fallback always present; clicks open inspectors.
+ The most expressive surface. Authored sprites, composed terrain, ambient
+ life, semantic labels. The structured list remains one gesture away.
### Office
- Attention inspector. Dense Paper Co. tables for needs-you and running work;
- not the default home.
+ Attention board in the game-menu system: failures first, each with a link to
+ the subject. Dense, calm, honest.
### Library
- Feels like an organized capability library rather than a generic app marketplace. Search, filtering, compatibility, provenance, and actions remain conventional. Shelves/catalog imagery may frame the experience. Install counts, ratings, "verified" badges, publisher metrics, or third-party marketplace metadata require a truthful source; the bundled catalog is not a marketplace, and absence of such data renders as honest absence rather than invented numbers.
+ A cozy catalog room: shelf-toned framing, search/filter/compatibility truth.
+ No invented install counts, ratings, or marketplace badges — absence stays
+ honest absence.
### Operations
- Workshop / inspector — a Paper Co. operations board the world opens, not a second home dashboard. Real job table (status, command, started, duration, exit). Manila for doctor. Brass marks the selected row. No decorative NPCs. Job progress is shown only when it is measured from real runtime sources; otherwise it is omitted — never estimated to fill a bar.
+ The workshop board: real job table (status, command, started, duration,
+ exit), loops, swarms, doctor. Selected row reads clearly; progress only when
+ measured — never decorative bars.
### Workspace
- Most technical destination. Files, project context, relevant Git state, memory/context, and external-tool actions dominate. Environmental detail decreases.
+ The most technical destination: files, project context, git state when
+ available, memory/context. Still inside the menu system; environmental detail
+ recedes.
### Insights
- Editorial/analytical. Charts remain conventional, labeled, accessible, and evidence-backed. Pixel motifs stay secondary.
+ Editorial-analytical in menu dress: conventional labeled charts, evidence-
+ backed numbers, honest emptiness.
### Settings
- Calm and utilitarian. Themes and appearance may show stronger visual previews; ordinary preferences should not become decorative scenes.
-
- ## 11. Components and material
-
- Establish shared behavior before stylistic variation. Components may include Button, IconButton, TextField, SearchField, Select, Toggle, Checkbox, SegmentedControl, Chip, StatusBadge, ListRow, Table, SectionHeader, PanelHeader, EmptyState, ErrorState, LoadingState, Tooltip, Popover, Modal, Drawer, Toast, Progress, ScrollArea, FocusRing, Splitter, and TerminalPaneChrome.
-
- Do not build a speculative widget framework. Extract primitives when repeated behavior proves the abstraction.
-
- For interactive components define consistent states where applicable:
+ Calm and utilitarian game-menu forms. Theme previews may show the world;
+ ordinary preferences stay plain.
- `default · hover · focused · pressed · selected · disabled · loading · success · warning · error`
+ ### Terminal
- Status must use more than color when ambiguity matters: combine text, icon/shape, border, or pattern.
+ Flagship surface; intentional contrast: dark screen, highly legible mono
+ text, restrained accent, obvious focus, real PTY behavior. No fake CRT, no
+ scanlines, no pixelated terminal text.
- ### Material hierarchy
+ ## 11. Components and material
- Use tactile cues without heavy skeuomorphism:
+ Shared primitives live in `apps/desktop/src/ui/` (see
+ [ELECTRON_DESIGN_SYSTEM.md](ELECTRON_DESIGN_SYSTEM.md)); do not build a
+ speculative widget framework. The game-menu material:
- - paper canvas;
- - manila/card surface;
- - wood/environment surface;
- - ink/terminal surface;
- - brass/high-value accent.
+ - **Panel** — deep menu surface, 2px solid border, pixel-cut corners
+ (2px notches), hard offset shadow (`3px 3px 0`), compact padding.
+ - **Section header** — Silkscreen title with a gold tick; short muted
+ description in body font.
+ - **Buttons** — chunky chips: 2px border, hard shadow, pressed-state offset;
+ `primary` (gold), `secondary`, `ghost`, `danger` (rose).
+ - **Chips / status** — compact square chips; status combines color, shape and
+ lowercase status text (the backend's words).
+ - **Tables** — dense rows, hairline rules, hover lift, selected row marker;
+ headers in small Silkscreen caps.
+ - **Fields** — flat sunken wells, visible focus ring (gold), mono variant
+ for commands/paths.
- Prefer thin borders, restrained rounding, subtle warm shadows, and occasional inset treatment. Avoid large blurry SaaS shadows and glass effects.
+ Component states remain: `default · hover · focused · pressed · selected ·
+ disabled · loading · success · warning · error`. Status is never color alone.
## 12. Spacing and geometry
- Use a small spacing system compatible with crisp pixel assets and readable vector UI. Prefer a 4px/8px rhythm where current renderer geometry supports it.
-
- Document and keep consistent:
-
- - page margins;
- - panel gaps;
- - row heights;
- - card padding;
- - icon/text gaps;
- - inspector width;
- - terminal chrome;
- - minimum interaction targets.
-
- One computed geometry must drive drawing, hover, hit testing, focus, and tooltip anchoring. Pixel alignment never justifies tiny interaction targets.
+ 4px rhythm (`--space-*`); `--target-min` ≥ 32px (WCAG 2.2 minimum is 24px).
+ One computed geometry drives drawing, hover, hit testing, focus, and tooltips
+ in both the world renderer and the menu system. Pixel alignment never
+ justifies tiny targets. Content max width for dense destinations
+ (`--page-max`); the world ignores it — the world is the screen.
## 13. Iconography
- Keep three classes distinct:
-
- 1. **Functional icons** — standard interaction meaning: search, add, close, trash, expand, filter.
- 2. **Product/domain pixel icons** — skills, agents, loops, MCP, packs, workspace concepts.
- 3. **Environmental sprites** — furniture, plants, office objects, Hornero details.
-
- Do not mix unrelated icon families. A destructive action must remain unmistakably destructive even inside the pixel-art theme.
-
- ## 14. Terminal
-
- The terminal is a flagship surface and intentionally contrasts with the warm office:
-
- - dark background;
- - highly legible vector/mono text;
- - restrained terminal accent;
- - obvious pane/session focus;
- - clear tab/split/close/recovery chrome.
-
- Do not pixelate terminal text or sacrifice VT correctness for theme. Terminal input focus always outranks decorative/global shortcuts according to [UX_ARCHITECTURE.md](UX_ARCHITECTURE.md).
-
- ## 15. Motion
-
- Motion must communicate something real:
-
- - state transition;
- - real runtime event;
- - progress;
- - attention;
- - navigation/context.
-
- Legitimate examples include an agent entering an actual active state, a real handoff arriving, a job completing, or a selected avatar using a restrained idle frame.
-
- Forbidden examples include random walking, fake envelopes, permanent pulsing, decorative activity unsupported by Engine state, or motion added only because an empty screen feels quiet.
-
- Reduced Motion removes non-essential animation.
-
- ## 16. Responsive behavior
-
- Pixel art cannot depend on one showcase resolution. Follow the matrix in [VISUAL_QA.md](VISUAL_QA.md).
-
- When space decreases, preserve task completion first:
-
- - collapse secondary environmental detail;
- - move inspector content to a drawer;
- - place Floor Map behind a tab when needed;
- - compact navigation;
- - reflow cards;
- - reduce terminal height;
- - preserve readable text and primary actions.
+ Three classes, kept distinct:
- Never shrink critical text simply to preserve a decorative scene.
+ 1. **Functional glyphs** — chevrons, close, search, filter: simple authored
+ pixel glyphs in the display voice; never emoji.
+ 2. **Product/domain sprites** — semantic theme keys via theme packs (world
+ places/objects/characters).
+ 3. **Environmental sprites** — nature, furniture, ambient life.
- ## 17. Accessibility and localization
+ A destructive action remains unmistakably destructive inside the pixel theme.
- Pixel art does not reduce accessibility requirements.
+ ## 14. Motion
- Design for:
+ Motion communicates or delights honestly:
- - visible focus;
- - keyboard-only operation;
- - contrast in Paper and Ink;
- - non-color status cues;
- - reduced motion;
- - usable scaling and interaction targets;
- - long translations;
- - RTL geometry;
- - Arabic shaping/bidi limitations honestly documented.
+ - **State motion** — real transitions: a job character appearing/working/
+ blocked, a lamp change, a receipt arriving.
+ - **Ambient motion** — water, glows, leaves, fireflies, butterflies, the
+ hornero. Slow, subtle, clearly environmental. Never implies work.
+ - **Interaction motion** — short panel/drawer transitions, pressed buttons,
+ focus ring. Fast (≤200ms) or none.
- Important information must not exist only inside non-localizable environmental signage. Decorative signage may remain decorative.
+ Forbidden: random walking agents, busy loops without matching backend state,
+ permanent pulsing, decorative motion because a screen feels quiet.
+ `prefers-reduced-motion` and Settings "Reduced" freeze non-essential motion;
+ state updates still apply instantly. Ambient animation pauses on
+ `document.hidden`.
- Do not claim unsupported OS accessibility-tree or WCAG conformance; follow [VISUAL_QA.md](VISUAL_QA.md).
+ ## 15. Responsive behavior
- ## 18. Content and voice
+ The world must feel right from 1024×640 to 2560×1440 (see
+ [VISUAL_QA.md](VISUAL_QA.md)):
- Voice is calm, capable, builder-oriented, warm, and concise.
+ - the camera fits or pans; HUD compresses to icons+labels; context strip
+ wraps;
+ - inspectors reflow to drawers/tabs; dense tables scroll; primary actions
+ never clip; text never shrinks to illegibility;
+ - integer zoom only — never fractional scaling that blurs pixel art;
+ - test 100/125/150/200% scaling; pixel assets stay crisp.
- Prefer:
+ ## 16. Accessibility and localization
- - direct action language;
- - explanations of consequences;
- - human task vocabulary before internal terms;
- - lightly playful editorial copy in appropriate low-risk spaces.
+ - visible gold focus ring; full keyboard operation (world included: list
+ fallback, focusable entities, Enter activates, arrows pan, Escape backs
+ out);
+ - contrast meets theVISUAL_QA gate in both Meadow and Dusk; status is
+ color + text/shape;
+ - reduced motion freezes ambient animation;
+ - long translations and RTL geometry-checked in the menu system;
+ - important information never exists only in environmental signage;
+ - do not claim unverified assistive-tech or WCAG conformance; follow
+ [VISUAL_QA.md](VISUAL_QA.md).
- Avoid corporate AI hype, fake enthusiasm, constant Hornero jokes, and RPG vocabulary. Errors and destructive actions remain direct and precise.
+ ## 17. Content and voice
- ## 19. Design references
+ Calm, capable, builder-oriented, warm, concise. Direct action language;
+ consequences before internals; human task vocabulary before CLI vocabulary;
+ lightly playful copy only in low-risk spaces. No corporate AI hype, no fake
+ enthusiasm, no RPG vocabulary, no constant bird jokes. Errors and destructive
+ actions stay direct and precise.
- The following generated concept images are **directional references only**. They intentionally contain illustrative state, invented names, demo metrics, and speculative information architecture. Do not treat their data as implementation requirements.
+ ## 18. Design references
- - [Concept board](assets/design/concept-board.jpg)
- - [Office flagship](assets/design/office.jpg)
- - [Library](assets/design/library.jpg)
- - [Operations](assets/design/operations.jpg)
- - [Onboarding](assets/design/onboarding.jpg)
+ The historical concept boards in `assets/design/` (Paper Co. era) are
+ **deprecated visual references** kept for provenance only; they hold no
+ authority. The current references are:
- The concept board and Office are the canonical visual anchors committed with this contract. The Library, Operations, and Onboarding references are exploratory screen concepts. Additional screen concepts may be added later through focused design PRs. Concept imagery is directional only and must not override current navigation, truth, accessibility, or workflow contracts.
+ - this document and [SEMANTIC_WORLD.md](SEMANTIC_WORLD.md);
+ - the executable system: `src/design/tokens.css`,
+ `src/features/world/theme/`, `public/world/` + its generator;
+ - reviewed screenshots in `assets/electron/foundations/` (Meadow/Dusk matrix).
- ## 20. Validation
+ ## 19. Validation
Major visual changes follow:
- > build → run → navigate → capture → **open the screenshot** → critique → fix → recapture
-
- Goldens answer **"did pixels change?"**. Design review answers **"are these the right pixels?"**. Both matter.
-
- Review changes against:
-
- - this document;
- - [PRODUCT_VISION.md](PRODUCT_VISION.md);
- - [UX_ARCHITECTURE.md](UX_ARCHITECTURE.md);
- - [VISUAL_QA.md](VISUAL_QA.md);
- - accessibility and i18n constraints;
- - executable theme tokens;
- - the actual running application.
-
- Do not update golden baselines to hide a regression.
-
- ## 21. Change policy
-
- Update this document when changing a durable visual rule, including:
+ > build → run → navigate → capture → **open the screenshot** → critique →
+ > fix → recapture
- - theme philosophy;
- - typography roles;
- - pixel-art scale/rendering rules;
- - shell presentation;
- - World / Office spatial philosophy (also update [SEMANTIC_WORLD.md](SEMANTIC_WORLD.md) / ADR-034);
- - major component grammar;
- - motion philosophy;
- - visual asset taxonomy.
+ Goldens answer "did pixels change?". Design review answers "are these the
+ right pixels?". Both matter; do not update goldens to hide a regression.
+ Review against this document, [PRODUCT_VISION.md](PRODUCT_VISION.md),
+ [UX_ARCHITECTURE.md](UX_ARCHITECTURE.md), [VISUAL_QA.md](VISUAL_QA.md), the
+ executable tokens, and the actual running app at multiple sizes.
- Do not update it for one bug fix, a local spacing correction, a single icon swap, or an implementation-only refactor that preserves design intent.
+ ## 20. Change policy
- Architecturally significant technical decisions still require ADRs.
+ Update this document when changing a durable visual rule: theme philosophy;
+ palette; typography roles; pixel-art grid/rendering rules; shell presentation;
+ world/interior spatial philosophy (also update
+ [SEMANTIC_WORLD.md](SEMANTIC_WORLD.md) / ADR-034/035); component grammar;
+ motion philosophy; asset taxonomy/licensing. Not for one bug fix or a local
+ spacing correction. Architecturally significant technical decisions still
+ require ADRs.