Drag to rotate · click the front stone to open
Arrow keys to step · Esc to go back
Every page of IISAW is a standing stone on a ring. Spin the ring, open the stone facing you. Hubs open a new ring; pages open in place. The eye in the centre watches whatever you are looking at.
What two fingers do depends on what is under them, decided when the second finger lands and held for the rest of the gesture. Squeezing always means the same thing: let go of whatever you are inside.
Press V or hit Voice in the corner and give the browser the microphone. It keeps listening until you switch it off, and prints back what it heard. Nothing is sent anywhere by us — the recognition is the browser's own.
The microphone stops being a remote control and becomes a keyboard. You are looking at a text field, so everything you say is typed into it and the results follow along as you speak — reading it as a page name would jump the ring behind the sheet you are staring at. Only these stay commands, because none of them can be something you meant to type:
Needs Chrome, Edge or Safari — the Web Speech API is not in Firefox, and the button says so when it is missing.
Not this page, and not your microphone. Chrome and Edge do not transcribe on your machine: they stream the audio to the browser vendor's own speech service and the words come back over the wire. That message means the browser could not reach it. Usually one of four things — no connection at that moment, a VPN or proxy in the way, a school or office network that blocks it, or, on Windows, Speech switched off under Settings → Privacy & security → Speech. The site stands the microphone down after three failed attempts rather than leaving the indicator lit over an engine that is not listening; turn it back on with V once the connection is back.
The camera can drive the ring, and it reads the shape of your hand as well as its movement. Wave and the eye follows you, so you can see it has found you before you try anything — and the readout in the corner names what it thinks your hand is.
The video never leaves this machine. There is no upload and no network request — the frames go straight from the camera into a 64×48 grid in the page, are read for one moving shape, and are thrown away. The site makes no network request of any kind, and this does not change that. A dot prints in the corner whenever the camera is running, on top of the browser's own indicator, and the choice is remembered so it will not open itself on a later visit unless you left it on.
Debug mode is the one exception to “thrown away”, and only while it is ticked. It keeps the last few minutes of frames in the page so they can be looked at beside the numbers the site read off them — which is how a gesture that is not landing gets diagnosed rather than guessed at. They stay in this tab, they are lost when it closes, and they go nowhere at all unless you press save on the panel, which writes one file to your own computer. Still no upload. A panel prints in the corner for as long as it is on, because a mode that records the camera should not be possible to leave running by accident.
The blue is the default and always will be. The other five are the same palette in a different key — every shade keeps its own brightness and its distance from the rest, so the interface does not become a different design, it just stops being blue. All of them on black.
The whole interface is driveable from code — window.IISAW_HENGE
exposes rotateTo, step, open,
back, goto, setPointerRay,
setZoom and listen, so a gesture rig or a
headset can take over without touching the renderer.
say('go to pricing') runs a phrase through the voice
grammar with no microphone at all — the same door, for anything that
can produce words. on(name, fn) answers back:
nav when the ring changes level, page when an
article opens or closes, front when a different stone comes
round. The gesture control above is written against that surface and
nothing else, which is why it can be removed from the build without the
interface noticing.
Every arrival gets an introduction: the eye rises out of the surface,
speaks, and the ring assembles around it. Any key, click or scroll
hurries it along. To stop it happening, tick the box in the bottom-left
corner — it is there until you first turn the ring. This button brings
the introduction back whether or not you did, and
#intro plays it at any time.
IISAW
Initialising spatial interface