bambouville

Panel de gestos

El panel de gestos es un disco flotante al alcance del pulgar para trabajar sin teclado físico: deslízalo para lanzar macros por app — o, cuando un agente de código está esperando, las opciones reales de su pregunta — y toca dos veces para dictar. En el iPhone es entrada principal y está activado por omisión; en el iPad hay que activarlo, en ajustes → experimental → panel de gestos.

El disco

  • esquina por omisión — dónde se sitúa el disco al arrancar en frío, hasta que lo muevas; se recuerda la última posición y se reajusta cuando cambian la orientación o el tamaño de la pantalla.
  • tamaño del disco — compacto (44 pt), estándar (52 pt) o grande (64 pt).
  • pulsación larga levanta el disco; se queda donde lo sueltes (siempre completamente en pantalla).

En el iPhone el radial se dibuja como un abanico en la esquina — los mismos pétalos en un arco de un cuarto, dentro del alcance del pulgar — y se oculta en horizontal mientras el teclado está visible. El tamaño de disco grande es solo para iPad.

Gestos

Tres gestos diferenciados:

  • tocar, mantener y arrastrar — abre el menú radial alrededor del disco. Suelta en una dirección para lanzar esa macro; suelta en la zona muerta para cancelar.
  • doble toque — inicia el dictado.
  • pulsación larga — mueve el disco.

Perfiles

Los pétalos del radial salen de los perfiles, que se comparan con el proceso en primer plano del panel activo (mediante pane_current_command de tmux, o instantáneas de ps en ssh simple). Los perfiles se evalúan de arriba abajo; gana la primera coincidencia.

Perfiles integrados:

perfil derecha izquierda arriba
claude code 1↵ aprobar 3↵ denegar 2↵ siempre
codex cli y esc p
fallback (siempre activo)

El perfil fallback coincide con todo y no asigna nada — el dictado sigue funcionando.

Los perfiles personalizados llevan un comparador de proceso (texto literal o un patrón regex:) y pueden declarar reglas de detección de agentes — regexes de prompts bloqueantes o inactivos, una regex de las opciones de menú y plantillas de respuesta con los marcadores {index} / {shortcut} — que también alimentan el centro de agentes. Un perfil con reglas no válidas se degrada a «estado no disponible».

Las etiquetas de los pétalos siguen los roles de la pregunta del agente: derecha = aprobar, izquierda = denegar, arriba = siempre, abajo = abajo; los pétalos sin asignar se ocultan.

Opciones de agente en vivo

Con el centro de agentes activado y su hook de estado instalado en el host, el panel deja de adivinar: mientras un agente de Claude Code o Codex está esperando entrada en el panel enfocado, los pétalos muestran las opciones reales de la pregunta — etiquetas tomadas del propio menú, teñidas según su significado (verde aprobar, rojo denegar, ámbar siempre) — y el disco palpita en ámbar. Mientras el agente está trabajando, el panel ofrece un pétalo rojo de interrupción (esc) y un pétalo neutro de cambio de modo (shift-tab).

Cuando una pregunta tiene más opciones que direcciones tiene el panel, un pétalo más abre la pregunta completa en el centro de agentes — y cualquier opción que hayas entrenado en una dirección conserva esa dirección, así que los deslizamientos a ciegas que ya dominas siguen significando lo mismo de siempre. Sin la prueba del hook, el panel vuelve a los perfiles estáticos de arriba.

El lenguaje de las macros

Las macros se escriben con una pequeña definición:

  • los caracteres literales se envían tal cual,
  • para Intro,
  • esc, \e o \x1b para Escape,
  • shift-tab para Mayúsculas-Tabulador,
  • \t (o tab), \r, \n,
  • \xNN para un byte arbitrario en hexadecimal.

Dictado

Toca dos veces el disco para dictar en el terminal. El reconocimiento ocurre en el dispositivo (SFSpeechRecognizer) — ningún audio sale del dispositivo. Usa el idioma de tu dispositivo y recurre a en-US cuando el reconocimiento en el dispositivo no está disponible para él, y requiere los permisos de micrófono y de reconocimiento de voz. Mientras dictas, el disco se transforma en una píldora de micrófono con una onda en vivo y un contador de tiempo; toca para confirmar, ✕ para cancelar.

Opciones (ajustes → experimental):

  • confirmar tras el silencio — envío automático tras 1,2 s de silencio,
  • añadir un retorno — terminar con Intro,
  • onda en directo en el disco.