Libraries

A pick is choosing a value for a host: a color, a glyph, a tile. There are no pickers. Components render inline; nothing floats but toast and the ask confirm.

The pattern

The vocabulary apps each own a library: a persisted list of kept values, seeded with defaults for cold start.

{name}`.

current char), font.drop {char}, cap 24.

name}, tile.drop {id}, cap 12. Entries carry the same {v:1, tile, paint}` value hosts consume, plus a rendered thumb frame.

Each app's view ends in a library card; libraries ride the app's normal state()/save()/load(), so they persist and replay like any state.

Hosts

components/library.tsx renders a library inline wherever a host asks for a value: swatch grid for colors, glyph buttons for emoji/font, canvas thumbs for tiles. It reads real app state through peek (peeks.ts, installed at boot); a tap fires the host's own ${host}.set {key, value}, the only journaled call. Sleep and matrix palette slots cycle through the colors library in place. Timer needs no vocabulary: inline h/m steppers fire timer.set duration directly. Typed glyph fields stay; the kernel validates and bad input fails the verb.

Agent parity

Libraries are kernel state behind journaled verbs: an agent peeks the same library a finger sees, edits it with the same verbs, and its pick is the same host .set a tap fires.