Lab
An interface you can only operate with a mouse is one you haven’t finished.
Interaction proofs. Every one works without a pointer, and each names the rule it obeys.
The laws
Every control is reachable without a pointer.
Not "has a tabindex". Reachable in an order a person would predict, from wherever they are, with no way to get stuck.
Focus is never invisible and never a surprise.
Visible on every stop. Returned to where it came from when a layer closes. Never moved without being asked.
A shortcut announces itself, and never steals.
Discoverable without documentation. Never overrides a browser or screen-reader binding. Chords time out and say so.
- Proof 01What the keyboard actually sendskey vs code vs keyCode, live, at the depth a terminal emulator reads them.
- Proof 02A chord that announces itself, and gives the keyboard backA tmux-style prefix: visible pending state, a timeout that says so, an escape hatch.
Motion is feedback, or it is noise.
Under 150ms for a response. An easing curve picked for a reason that can be said out loud. Reduced motion gets a composed state, not an amputated one.
State is never claimed before it is true.
Pending looks pending. Optimistic is labelled optimistic. Nothing reports a success it did not observe.
It holds frame rate when the data stops cooperating.
Measured, shown on screen, and degradable. A number you can read beats a claim you cannot check.
- Proof 03A hundred thousand lines that still scroll at frame rateVirtualized scrollback with the worst frame on screen — and a switch that turns the virtualization off.
Proof 01 · obeys law 03
What the keyboard actually sends
key is what the layout produced. code is which physical switch closed. On a French keyboard the key labelled A reports key: "q" and code: "KeyA", so a shortcut bound to one of them moves when someone changes layout and the other one stays put. Terminal emulators care about this at protocol depth. There is nothing here to click.
Tab to this panel, then press any key. Tap here, or the button below, to bring up your keyboard.
Tab and Escape are never intercepted; they are how you leave. The arrows, Space, Home, End and PageUp/Down are intercepted while this panel has focus, because otherwise the page scrolls out from under you.
The other proofs are on a chord that announces itself, and gives the keyboard back and a hundred thousand lines that still scroll at frame rate. More are being built, one at a time, against the laws above.
The Museo
Or: things explained by letting you break them.
Exhibits with dials rather than diagrams — why consensus breaks at exactly one third, and why most Sui transactions never wait in line. The Lab is how I build; this is how I explain.
Enter the Museo