Files
fn_registry/bash/functions/infra/launch_fleetclaude.md
T
egutierrez 7d100e7f3e feat(infra): auto-commit con 2 cambios
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-17 11:11:35 +02:00

6.3 KiB

name, kind, lang, domain, version, purity, signature, description, tags, params, output, uses_functions, uses_types, returns, returns_optional, error_type, imports, tested, tests, test_file_path, file_path
name kind lang domain version purity signature description tags params output uses_functions uses_types returns returns_optional error_type imports tested tests test_file_path file_path
launch_fleetclaude function bash infra 1.3.2 impure launch_fleetclaude [--cwd <dir>] [--bin <path>] [--session <name>] [--cols <n>] Entrypoint de FleetView: abre una ventana kitty con una sesion tmux (socket aislado -L fleet) de dos panes (TUI fleetview a la izquierda, claude --dangerously-skip-permissions a la derecha) para centralizar la flota de Claudes. Instala atajos alt+flechas/alt+enter/alt+n que controlan la TUI desde cualquier pane, y fija el ancho del sidebar con hooks.
claude-fleet
infra
kitty
tmux
claude
fleetview
launcher
name desc
--cwd Directorio de trabajo de ambos panes tmux. Opcional. Default: raiz del repo fn_registry, derivada dinamicamente via git rev-parse desde la ubicacion del script (sin hardcodear paths de usuario).
name desc
--bin Ruta al binario de la TUI fleetview que corre en el pane izquierdo. Opcional. Default: <repo>/apps/fleetview/fleetview. Si no es ejecutable, el pane izquierdo muestra un mensaje de como compilarla y deja una shell viva.
name desc
--session Nombre de la sesion tmux a crear o reutilizar. Opcional. Default: fleet. La funcion es idempotente sobre este nombre.
name desc
--cols Ancho en columnas del pane izquierdo (la TUI). Opcional. Default: 40.
Crea/reutiliza una sesion tmux detached con dos panes y lanza una ventana kitty 'FleetView' adjunta a ella, desacoplada del shell padre (setsid). Imprime el estado por stdout. Sin valor de retorno; exit 0 en exito.
false error_go_core
false
bash/functions/infra/launch_fleetclaude.sh

Ejemplo

# Via fn run (resuelve por nombre o ID):
fn run launch_fleetclaude

# Directo, con cwd explicito:
launch_fleetclaude --cwd ~/fn_registry

# Sesion y ancho de pane personalizados:
launch_fleetclaude --session fleet --cols 50

Tras invocarlo aparece una ventana kitty titulada FleetView con dos panes lado a lado: a la izquierda la TUI fleetview, a la derecha una sesion de claude --dangerously-skip-permissions. Volver a invocarlo NO duplica la sesion: reusa la existente y solo abre otra kitty adjunta.

Cuando usarla

Usala cuando quieras un unico punto de entrada a la flota de Claudes en vez de N ventanas kitty sueltas: lanzas fleetclaude y tienes la TUI de control y un Claude listo para trabajar en la misma ventana. Tipico al empezar la jornada o al retomar el trabajo en el repo fn_registry.

Gotchas

  • Idempotencia tmux: si la sesion <session> (default fleet) ya existe, NO se recrea el layout; solo se abre una kitty nueva adjunta a la misma sesion. Para empezar de cero: tmux kill-session -t fleet antes de invocar.
  • kitty detached (setsid): la ventana se lanza con setsid ... & para sobrevivir al cierre de la terminal que la invoco. No bloquea al shell padre.
  • exec en los panes: tanto la TUI como claude se lanzan con exec, asi que al terminar el proceso el pane se cierra en vez de dejar una shell zombie colgando. Excepcion: el fallback cuando fleetview no esta compilado deja una shell interactiva a proposito (para que veas el mensaje y puedas compilar).
  • Requiere fleetview compilado: el default --bin apunta a <repo>/apps/fleetview/fleetview. Si ese binario no existe, el pane izquierdo muestra cd apps/fleetview && go build -o fleetview . en lugar de fallar en silencio. Compila la TUI antes para el flujo completo.
  • Socket tmux aislado (-L fleet): toda la sesion vive en un server tmux propio, separado del tmux por defecto del usuario. Asi los atajos bind -n NO afectan otras sesiones (ej. una sesion mobile-1 del movil) y matar el server fleet no toca nada mas: tmux -L fleet kill-server.
  • Atajos en el socket, NO en kitty.conf: instala bind -n para alt+flechas (mover el cursor de la TUI), alt+enter (conmutar al Claude seleccionado) y alt+n (abrir Claude nuevo). Son bindings de tmux que redirigen la tecla al pane de la TUI (send-keys -t console.0), asi funcionan ESTES DONDE ESTES (incluido escribiendo en el pane de Claude). No modifican la configuracion de kitty ni los atajos globales del escritorio.
  • Ancho del sidebar via hooks: client-resized y window-layout-changed re-fijan el pane 0 (TUI) a --cols columnas, porque el attach de kitty y el conmutar de Claude redistribuyen el espacio.
  • tmux siempre, kitty solo sin TTY: tmux es obligatorio (aborta != 0 si falta). kitty solo se necesita en la ruta sin-TTY (atajo de escritorio, cron, script), donde abre una ventana nueva. Invocado desde una terminal interactiva (el caso normal del alias fleetclaude), reutiliza la terminal actual con exec tmux attach y NO necesita kitty — util en WSL u hosts sin kitty.

Capability growth log

  • v1.3.2 (2026-06-17) — targeting de panes por pane ID (%0/%1) en vez de por indice (console.0). Antes fallaba con can't find pane: 0 en hosts cuyo ~/.tmux.conf define base-index 1/pane-base-index 1 (el socket -L fleet hereda esa config). Los pane ID son inmunes al base-index. Bug latente que el fix de kitty (v1.3.1) destapo al dejar de abortar antes de montar la sesion.
  • v1.3.1 (2026-06-17) — el guard de kitty se movio a la rama sin-TTY. La ruta interactiva (exec tmux attach) ya no exige kitty, asi que fleetclaude funciona en hosts sin kitty (p.ej. WSL) reutilizando la terminal actual.
  • v1.3.0 (2026-06-17) — renombrada de launch_kittyclaude a launch_fleetclaude (comando fleetclaude). Atajos: alt+0 (= alt+n, abrir Claude nuevo), alt+k (kill con confirmacion), alt+r (picker de reanudar sesiones cerradas) y alt+flecha-izquierda (volver atras desde el picker). Cierra la window al salir el Claude (remain-on-exit off).
  • v1.2.0 (2026-06-16) — ancho del sidebar por defecto 47 columnas; ctrl+0 como atajo alterno para abrir Claude nuevo; mouse on (clic/rueda enrutados a la TUI) y extended-keys on (para que ctrl+0 llegue distinguible por el protocolo de teclado de kitty).
  • v1.1.0 (2026-06-16) — socket tmux aislado -L fleet; instala atajos alt+flechas / alt+enter / alt+n que controlan la TUI desde cualquier pane; hooks que mantienen fijo el ancho del sidebar tras attach/conmutar.