CodeNomad/docs/help/es/index.md
Pascal André 4b163382bc
feat(remote-control): serve web previews to paired devices (#1131)
Remote Control blocked `/previews/*`, so a phone or browser paired through
the tunnel had no web preview at all: the entry was hidden and the agent's
dev server stayed out of reach. Previews now work there, behind a host
setting that is on by default.

A preview's sandboxed document sends neither the device cookie nor a usable
`Origin`, so the Remote Control gate admits a live `/previews/<token>/…`
capability on its token alone, as local listeners already do, while the
host's Web previews switch is on. The ingress, which refused every
WebSocket, now admits preview upgrades only: `admitRemoteUpgrade()` parses
the target exactly as the preview proxy does and the manager hands the
socket to the application's path-preview upgrade handler, never to the
shared upgrade event (so `/previews/<token>/../../sidecars/…` cannot reach
another handler). Every other upgrade still gets 404.

The switch lives in Settings → Remote Access → Remote Control. Only the
host can change it (`PUT /api/remote-control/previews`); the registry
stores only the opt-out. Turning it off refuses later preview requests,
including the Referer-based root-relative asset fallback, and closes live
preview WebSockets; remote `/api/meta` then reports `previewsUnavailable`,
which hides Open web preview on paired devices.

Exposing previews through a public tunnel makes their address a bearer
credential, so path-proxied preview responses now carry
`Content-Security-Policy: sandbox` with the iframe's own flags (one shared
constant, `previews/sandbox.ts`) and `Referrer-Policy: same-origin`, on
every content type. A preview document opened outside its iframe stays an
opaque origin instead of running with CodeNomad's origin and device cookie,
and the capability path stays out of Referer headers to other sites. Such a
standalone document then behaves like the preview iframe: its root-relative
resources rely on the runtime bridge's path rewriting, without the Referer
fallback. The per-token preview.localhost host keeps its own origin and
headers.

Help (Remote Control, mobile and client overview pages, all ten locales),
dev-docs/REMOTE_CONTROL.md, architecture.md and UI_SHELL.md describe the
behavior; the switch label and caption are translated in all locales.

Validation: a Remote Control surface test drives the real application
through the ingress: a preview page and an `Origin: null` form post work
without a device cookie and carry the sandbox and referrer headers, unknown
tokens and non-preview or dot-segment upgrades get 404, a preview WebSocket
upgrades, a paired device cannot change the switch, and turning it off
closes the live WebSocket, refuses the preview and its Referer asset
fallback, and flags the metadata.
Registry, metadata and proxy tests cover persistence of the opt-out, the
flag and the headers per entry point; browser tests cover the switch and
the conversation header with previews on and off.
2026-10-24 20:25:25 +02:00

8.1 KiB

Ayuda de CodeNomad

Usa esta guía para trabajar en el espacio de trabajo actual de CodeNomad, en escritorio o navegador, con tu servicio OpenCode. Se centra en los controles de CodeNomad, los límites de ejecución y la recuperación, no en tutoriales de configuración de OpenCode ni en un archivo de versiones.

Lee esto primero

CodeNomad conecta tu espacio de trabajo a un servicio compartido de OpenCode en segundo plano. Las sesiones y los mensajes pertenecen a OpenCode; las pestañas, los borradores del editor de mensajes y la disposición pertenecen al cliente CodeNomad. Cerrar una pestaña de proyecto cierra el proyecto en CodeNomad; las sesiones siguen ejecutándose en OpenCode y vuelven a aparecer al reabrir el proyecto. Cerrar CodeNomad no detiene OpenCode.

  1. Comprueba los requisitos del equipo anfitrión y la configuración de OpenCode.
  2. Abre un proyecto y elige los controles Agente, Modelo y Razonamiento de la conversación.
  3. Comprueba el ámbito afectado antes de cambiar credenciales, reiniciar un servicio o eliminar el historial. Otros clientes pueden usar el mismo servicio nativo.

El sitio público de ayuda funciona sin CodeNomad, sin su backend y sin iniciar sesión. Ayuda → Ayuda de CodeNomad en escritorio y Abrir ayuda en la paleta de comandos lo abren por separado en el idioma actual de la interfaz. Los cambios de idioma no traducen las conversaciones almacenadas.

Configuración abre la ventana nativa de Preferencias en un cliente de escritorio local; los clientes de navegador y remotos usan la configuración integrada. Las rutas como Configuración → Proveedores identifican la misma sección de configuración en ambas superficies.

Para un espacio de trabajo de navegador independiente en un equipo preparado, la guía del servidor explica este inicio y sus requisitos de autenticación/TLS:

npx @neuralnomads/codenomad --generate-token --launch

Elige tu cliente

Función Escritorio local Navegador directo o ventana de servidor remoto Dispositivo emparejado con Control remoto
Proyectos, conversaciones, archivos e historial Carpetas del backend y sesiones nativas Carpetas y sesiones del servidor conectado Superficies autorizadas del espacio de trabajo anfitrión
Preferencias nativas y ventanas de escritorio Disponibles La configuración del navegador/remota permanece en el cliente Los controles exclusivos del escritorio anfitrión no están disponibles
Vista previa de navegador de la sesión Nativa en Electron y Tauri para Windows; iframe en otras plataformas Tauri Iframe donde esté disponible Iframe mientras el anfitrión permita las vistas previas web (valor predeterminado)
Automatización nativa de escritorio/navegador Ventanas/vistas previas locales propias No sustituye la automatización nativa de escritorio Los endpoints de automatización exclusivos del anfitrión no están disponibles
Autenticación Inicialización local o sesión con contraseña Sesión con contraseña del servidor Credencial del dispositivo emparejado
Instalación como PWA Usa la aplicación nativa o un navegador Depende del navegador; requiere un contexto seguro Depende del navegador; sigue siendo necesario emparejarse

Para conocer los límites exactos, consulta vistas previas de navegador y SideCars, Control remoto y móvil/PWA. Una ventana remota no convierte el sistema de archivos de tu dispositivo en el espacio de trabajo del servidor.

Comprende quién conserva cada estado

Término Significado en CodeNomad
Pestaña de proyecto / espacio de trabajo / instancia Una conexión de CodeNomad a una carpeta abierta explícitamente; varias pestañas pueden usar el servicio compartido.
Conversación / sesión Historial y ejecución nativos de OpenCode asociados a su directorio.
Familia Una conversación y sus subsesiones recursivas; relevante para movimientos, actividad, Yolo y controles de Misiones.
Worktree Una copia de trabajo propia del repositorio seleccionada para explorar o ubicar sesiones. Explorarla no mueve una conversación.
Location Contexto de ejecución nativo de OpenCode con ámbito de directorio; cerrar una pestaña de proyecto solo cierra el proyecto en CodeNomad, sin descargar la Location nativa.
Backend de CodeNomad El servidor que proporciona el espacio de trabajo, Git, la autenticación y la conectividad de los clientes. Su cuenta y su entorno determinan el acceso del backend al sistema de archivos.
Configuración Ajustes de CodeNomad en el directorio de configuración del servidor; los ajustes Global/Proyecto de OpenCode tienen su propio ámbito nativo.
Ventana Sus propias pestañas, navegación, borradores y vista restaurada. El historial nativo se comparte, no se copia para cada ventana.
Perfil de datos de escritorio Almacenamiento nativo/del cliente elegido en Configuración; no aísla automáticamente las sesiones de OpenCode ni toda la configuración compartida.

La raíz del espacio de trabajo limita qué carpetas abre CodeNomad; no es un entorno aislado para el agente. Revisa la seguridad antes de exponer un equipo o permitir acceso amplio a las herramientas.

Explora por tarea

Tarea Guía
Instalar o servir el espacio de trabajo Instalación, Referencia del servidor, Red y TLS
Trabajar con varias copias de trabajo y conversaciones Proyectos, Conversaciones, Archivos
Buscar en el historial o limpiarlo de forma segura Historial
Responder preguntas y permisos nativos Permisos
Coordinar trabajo acotado o diario Misiones
Configurar la ejecución y las integraciones OpenCode, Proveedores, Integraciones
Conectar otro dispositivo Control remoto, Seguridad, Móvil
Adaptar el espacio de trabajo Configuración, Atajos, Voz, Extensiones
Gestionar la aplicación nativa Escritorio, Vistas previas de navegador y SideCars, Actualizaciones
Diagnosticar o contribuir Solución de problemas, Soporte y compilaciones desde el código fuente

Supervisa el trabajo sin modificarlo

El panel Estado muestra el uso del proveedor de la sesión activa y los Shells nativos en segundo plano. El estado de las conversaciones y la actividad de sus descendientes identifican sesiones que están trabajando, compactándose o esperando entrada. Supervisar un Shell en segundo plano es distinto de enviar una solicitud Shell desde el editor de mensajes o usar un SideCar de terminal alojado por separado.

  1. Abre Estado → Shells en segundo plano para la Location de la conversación seleccionada (o el espacio de trabajo abierto si no hay una conversación seleccionada).
  2. Inspecciona el comando, el shell, el directorio, el estado, el PID y el código de salida cuando se proporcionen; elige Ver salida para consultar la salida nativa disponible.
  3. Para eliminar uno, usa Detener y eliminar mientras esté en ejecución, o Eliminar después de terminar, y confirma el objetivo.

Eliminar un Shell en ejecución detiene ese proceso; cerrar su ventana de salida no lo detiene. Actualizar/reconectar lee el estado nativo actual en lugar de reconstruir los eventos de salida perdidos.

Las instantáneas de visualización se actualizan tras cambios nativos, al reconectar y cuando una vista visible las necesita. No son registros con reproducción garantizada. Si un resultado es incierto, actualiza el estado autoritativo antes de reintentar una modificación; no vuelvas a enviarla solo porque se haya perdido una notificación o un evento.