The swipe pad is a floating thumb-zone puck for working without a hardware keyboard: flick it to fire per-app macros, double-tap to dictate. It’s experimental and off by default — enable it in settings → experimental → swipe pad.
Three discrete gestures:
Radial petals come from profiles matched against the foreground process of
the active pane (via tmux’s pane_current_command, or ps snapshots on plain
ssh). Profiles are evaluated top to bottom; the first match wins.
Built-in profiles:
| profile | right | left | up |
|---|---|---|---|
| claude code | 1↵ approve |
2↵ deny |
3↵ always |
| codex cli | y |
esc |
p |
| fallback (always on) | — | — | — |
The fallback matches everything and binds nothing — dictation still works.
Custom profiles get a process matcher (literal text or a regex: pattern) and
can declare agent detection rules — blocking/idle prompt regexes, a
menu-option regex, and response templates with {index} / {shortcut}
placeholders — which also feed the agent center. A profile
with invalid rules degrades to “status unavailable”.
Petal labels follow the agent-prompt roles — right = approve, left = deny, up = always, down = down; unbound petals are hidden.
Macros are written in a small spec:
↵ for Enter,esc, \e, or \x1b for Escape,\t (or tab), \r, \n,\xNN for an arbitrary byte in hex.Double-tap the puck to dictate into the terminal. Recognition happens on-device (SFSpeechRecognizer) — no audio leaves the iPad. It uses your device language, falling back to en-US when on-device recognition isn’t available for it, and requires microphone and speech-recognition permissions. While dictating, the puck morphs into a mic pill with a live waveform and an elapsed timer; tap to commit, ✕ to cancel.
Options (settings → experimental):