Herramientas del editor
Once herramientas se abren sobre el editor de código: un depurador de JavaScript, un lanzador de tests, paneles de Docker y de monitorización, un catálogo de librerías, generadores de backend y de IA, acciones de código con IA, colaboración en vivo en tu red local y las vistas Problemas y Esquema. Todas son gratis. Esta página cuenta qué hace de verdad cada una en un móvil hoy, incluidas las partes que solo funcionan a medias.
Cómo se abren las herramientas
Estas herramientas solo existen dentro del editor de código; no son páginas del pager principal. Abre antes un fichero o un proyecto y usa el botón de la llave inglesa de la parte superior del editor.
- 1Toca el botón de la llave inglesa (Más opciones) en la barra superior del editor. Se abre una hoja con un campo de búsqueda, Buscar acción….
- 2Elige una sección: Editar, Ver, Ir a, Git, IA o Herramientas, o escribe en el buscador para filtrar todas las acciones a la vez.
- 3En Herramientas las acciones se agrupan en Ejecutar, Proyecto, Colaborar, Utilidades y Ayuda y ajustes. Depurar, Explorador de tests y Dependencias están en Ejecutar; Herramientas de Docker, Monitorización y Generadores de backend en Proyecto; Colaboración en directo en Colaborar.
- 4Problemas y Esquema están en Ir a. Los Generadores de IA y las acciones de código con IA están en IA.
- 5La paleta de comandos (
Ctrl+Shift+Pcon teclado físico) lista exactamente las mismas acciones: el menú y la paleta comparten un único registro.
Dónde está cada herramienta
| Herramienta | Dónde | Cómo aparece |
|---|---|---|
| Depurar | Herramientas › Ejecutar › Depurar archivo, o el botón Depurar del panel de ejecución | Panel acoplado bajo el editor, junto al panel de ejecución |
| Tests | Herramientas › Ejecutar › Explorador de tests | Hoja |
| Librerías | Herramientas › Ejecutar › Dependencias (solo con un proyecto abierto en disco), o el botón de dependencias del panel de ejecución | Hoja titulada Librerías |
| Docker | Herramientas › Proyecto › Herramientas de Docker | Hoja |
| Monitorización | Herramientas › Proyecto › Monitorización | Hoja |
| Generadores de backend | Herramientas › Proyecto › Generadores de backend | Hoja |
| Generadores de IA | IA › Generadores de IA | Hoja |
| Acciones de código con IA | Sección IA: IA: explicar selección, IA: generar tests, IA: refactorizar código, Corregir errores y el resto | Panel acoplado bajo el editor, hoja de refactorización u hoja inferior, según la acción |
| Colaboración en vivo | Herramientas › Colaborar › Colaboración en directo | Hoja |
| Problemas | Ir a › Problemas, o el contador de problemas de la barra de estado | Diálogo a pantalla completa |
| Esquema | Ir a › Esquema | Columna a la derecha del editor |
Hoja, panel acoplado, diálogo o columna
Hoja
Tests, Docker, Monitorización, Librerías, los dos generadores y la Colaboración en vivo se abren como una hoja que ocupa el 87 % del alto de la ventana, con el tema de tu app. No tiene botón de cerrar: se baja con el gesto, con Atrás o tocando fuera.
Panel acoplado
Depurar y el panel de ejecución se acoplan bajo el editor (entre 150 y 300 dp de alto). Depurar solo se abre al lanzar Depurar archivo y se cierra con Atrás. Los resultados de las acciones de código con IA se acoplan igual.
Diálogo
Problemas es un diálogo que ocupa el 95 % del ancho, hasta 760 dp, y el 85 % del alto, con su propia cabecera.
Columna lateral
Esquema es una columna de 200 dp a la derecha del editor. Solo aparece cuando el editor ha encontrado regiones en el fichero.
Atajos
| Teclas | Qué hacen |
|---|---|
Shift+F5 | Depurar archivo |
F9 | Alternar breakpoint en la línea del cursor (no en ficheros abiertos desde fuera del proyecto ni en una vista de diferencias) |
F5 · F10 · F11 | Con una sesión de depuración en pausa: Depurar: continuar, Depurar: step over, Depurar: step into. Sin sesión en pausa F5 ejecuta el fichero y F11 es el modo Zen |
Ctrl+Shift+M | Problemas |
F8 · Shift+F8 | Siguiente problema · Problema anterior |
Ctrl+I | Preguntar a la IA sobre la selección |
Mapa de pantallas
Todas las pantallas de las herramientas, con cómo llegas y qué puedes hacer en ellas.
| Pantalla | Cómo llegas | Qué puedes hacer |
|---|---|---|
| Menú Más opciones | Botón de la llave inglesa en la barra superior del editor | Buscar y ejecutar cualquier acción del editor; secciones Editar, Ver, Ir a, Git, IA, Herramientas. |
| Panel de depuración | Herramientas › Ejecutar › Depurar archivo; Shift+F5 | Pestañas Console, Variables, Call Stack y Breakpoints; continuar, avanzar paso a paso, reiniciar, detener. Real solo para JavaScript. |
| Editar breakpoint | Lápiz de una fila de la pestaña Breakpoints | Poner una Condición o un Mensaje de log (logpoint). |
| Explorador de tests | Herramientas › Ejecutar › Explorador de tests | Pestañas Explorador, Salida, Cobertura, Snapshots; Ejecutar todos, Solo fallidos, modo watch. |
| Herramientas de Docker | Herramientas › Proyecto › Herramientas de Docker | Pestañas Contenedores, Imágenes, Compose, Build, Dockerfile, Registro. Editar funciona sin Docker; ejecutar necesita un comando docker en el dispositivo. |
| Logs del contenedor | Icono de logs de un contenedor | Últimas 200 líneas y un docker logs -f en directo. |
| Panel de monitorización | Herramientas › Proyecto › Monitorización | Pestañas Panel, Métricas, Alertas, Logs, Servidor. |
| Regla de alerta | Nueva regla o editar, en Alertas | Crear o editar una regla sobre una métrica, con condición, umbral y severidad. |
| Librerías | Herramientas › Ejecutar › Dependencias | Pestañas Declaradas y Catálogo; añadir, actualizar y quitar las cuatro librerías Kotlin incluidas. |
| Generadores de backend | Herramientas › Proyecto › Generadores de backend | Pestañas Plantilla de API, Generador CRUD, Migraciones, OpenAPI / Swagger, Servidor simulado; Guardar en el proyecto. |
| Generadores de IA | IA › Generadores de IA | Pestañas API, Esquema (plantillas sin conexión), Traducir, Seguridad, Rendimiento (IA). |
| Panel de resultados de IA | IA: explicar selección, IA: generar tests, IA: generar documentación, IA: generar desde comentarios | Leer la respuesta; Insertar o Aplicar el resultado. |
| Refactorización asistida por IA | IA: refactorizar código | Elegir uno de los nueve tipos de refactorización o escribir Instrucciones personalizadas. |
| Hoja de resultado de IA | Corregir errores, Optimizar, Simplificar, Modernizar, Generar | Leer la respuesta y pulsar Aplicar tras una vista previa de diferencias. |
| Colaboración en vivo | Herramientas › Colaborar › Colaboración en directo | Hostear o unirte en la misma Wi-Fi; pestañas Sesión, Gente, Chat. |
| Alguien quiere unirse | Aparece en la pantalla del anfitrión | Dejar entrar o Rechazar. |
| Problemas | Ir a › Problemas; Ctrl+Shift+M; contador de la barra de estado; Analizar estilo (lint) | Filtrar por origen y severidad, saltar a una línea, Arreglos rápidos. |
| Esquema | Ir a › Esquema | Filtrar y saltar a clases, funciones, imports y regiones // region. |
Depurar
Depurar ejecuta el fichero abierto con un depurador conectado y muestra lo que hace el programa en un panel acoplado bajo el editor. El depurador es real solo para JavaScript (.js, .mjs, .cjs, .jsx, ejecutados en el Node.js integrado). Para cualquier otro lenguaje, Depurar archivo simplemente ejecuta el fichero.
Shift+F5), o el botón Depurar del panel de ejecución. Abre a la vez el panel de ejecución y el de depuración. El panel de depuración no tiene un botón propio para abrirlo ni cerrarlo: Atrás lo cierra. Depurar archivo solo aparece si PocketCode tiene un ejecutor para el fichero abierto.Breakpoints
- Toca un número de línea del editor para añadir o quitar un breakpoint, o pulsa
F9en la línea del cursor (Alternar breakpoint). Puedes ponerlos antes de iniciar la sesión. - Los breakpoints viven solo en memoria: al cerrar la app se olvidan.
- La pestaña Breakpoints lista cada breakpoint con una casilla de activado. Toca una fila para saltar a su línea en el fichero actual, usa el lápiz para editarlo, ✕ para quitarlo o Limpiar todo. Lista vacía: «Sin breakpoints. Toca un número de línea en el editor para añadir uno.»
Arrancar y avanzar
Node arranca en pausa en su primera línea (--inspect-brk), el panel se conecta («Debugger attached on port N» aparece en la salida de ejecución) y lo libera; el programa corre hasta un breakpoint o hasta una excepción no capturada, que también lo pausa.
- Con una sesión activa la barra ofrece Continuar (o Pausar mientras corre), Paso por encima, Paso hacia dentro, Paso hacia fuera, Reiniciar y Detener. Los botones de paso solo están activos con el programa en pausa.
- Detener desconecta el depurador. El proceso en sí se detiene desde el panel de ejecución.
- El interruptor de la llama, Hot Reload: reiniciar la sesión al guardar un fichero del proyecto, viene apagado.
Las cuatro pestañas
Los nombres de las pestañas están siempre en inglés: la app no los traduce.
| Pestaña | Qué muestra |
|---|---|
| Console | La salida del programa (console.* y errores) con seis niveles de color, un botón para borrarla y mensajes de la sesión como «Debug session started». |
| Variables | Las variables locales del frame superior de la pila de llamadas, en una lista plana. Estados vacíos: «Start debugging to inspect variables», «No variables in current scope». |
| Call Stack | Los frames del programa en pausa. Toca uno para saltar a su línea. |
| Breakpoints | Cada breakpoint, como se ha descrito arriba. |
Condiciones y logpoints
El lápiz de un breakpoint abre Editar breakpoint. Condición («Parar solo cuando esta expresión JavaScript sea verdadera») hace que solo pare entonces. Mensaje de log («Registra en vez de parar. Usa {expresión} para insertar valores») lo convierte en un logpoint que escribe el mensaje y no pausa. Con los dos, escribe solo cuando la condición se cumple. Estos dos campos se ponen aquí, no desde el margen del editor.
Puedes
- Depurar un fichero JavaScript en el Node.js integrado con breakpoints de línea, condiciones y logpoints.
- Avanzar con paso por encima, hacia dentro y hacia fuera, continuar, pausar, reiniciar y detener; ver la pila de llamadas y las variables locales del frame superior.
- Pausar automáticamente ante una excepción no capturada.
- Reiniciar la sesión cada vez que guardas un fichero del proyecto, si activas Hot Reload.
- Saltar a la línea de un frame o de un breakpoint.
No puedes, y por qué
- Depurar TypeScript, Python, Java, Go ni ningún lenguaje que no sea JavaScript. Depurar archivo ejecuta el fichero sin depurador y escribe «⚠ <runner> has no debugger support — running without it.»; los breakpoints no hacen nada.Aún no
- Evaluar una expresión: el campo Evaluar expresión… de la pestaña Console responde siempre
undefinedy no ejecuta lo que escribes.Aún no - Inspeccionar objetos anidados ni las variables de otro frame: Variables lista solo las locales del frame superior, sin expandir; elegir otro frame solo mueve el cursor a su línea.Aún no
- Añadir breakpoints de excepción: la única pausa ante errores es la automática de las excepciones no capturadas.Aún no
- Conservar tus breakpoints al cerrar la app.Aún no
Tests
El Explorador de tests encuentra los tests de tu proyecto, los ejecuta con el comando propio del framework y lista los resultados. No trae ningún lanzador de tests: ejecuta el comando con el shell del dispositivo (sh -c) en la carpeta del proyecto, así que las herramientas del framework tienen que existir en el dispositivo.
Frameworks y detección
Se admiten doce frameworks: Jest, Mocha, Vitest, pytest, unittest, JUnit, Go Test, Cargo Test, PHPUnit, RSpec, Dart Test y Swift XCTest. PocketCode elige uno por proyecto: el primero que encuentra por su fichero de configuración (por ejemplo jest.config.js, pytest.ini, build.gradle, go.mod, Cargo.toml, pubspec.yaml); si ninguno coincide, lee package.json para Jest, Vitest o Mocha. unittest no tiene fichero de configuración, así que nunca se elige solo. El subtítulo dice entonces «<framework> · N tests en M ficheros».
Las cuatro pestañas
| Pestaña | Qué hace |
|---|---|
| Explorador | Una fila por fichero de test con su recuento de aprobados. Buscar pruebas…, filtros ✓ Pasadas, ✕ Fallidas, ○ Omitidas, y ▶ para ejecutar una suite o un test. Un test fallido muestra Esperado y Recibido si el runner los escribió, y Ir a la línea N. |
| Salida | La salida cruda del comando, coloreada, con Limpiar. Vacía: No hay salida de las pruebas. |
| Cobertura | Muestra No hay datos de cobertura (mira más abajo). |
| Snapshots | Solo para Jest y Vitest. Lista lo que encuentra en los ficheros .snap, con Actualizar todos y Borrar obsoletos (antes pregunta ¿Borrar los snapshots obsoletos?). |
Ejecutar
- El pie tiene Ejecutar todos, Solo fallidos y, mientras corre una ejecución, Detener.
- La cabecera tiene iconos para Refrescar, Alternar modo watch y Ejecutar con cobertura.
- El árbol de tests sale de leer tus ficheros con patrones de nombre (
*.test.*,test_*.py,*_test.go,*Test.kt…), hasta 200 ficheros, saltándosenode_modules,.git,build,dist,target,.gradle,__pycache__yvenv. - El modo watch existe solo para Jest, Mocha y Vitest, y únicamente vuelca la salida del comando en Salida.
Puedes
- Detectar el framework del proyecto y listar sus ficheros de test y sus tests.
- Ejecutar todos los tests, solo los que fallaron, una suite o un test; detener una ejecución.
- Leer la salida del comando en directo; ver Esperado y Recibido y saltar a la línea que falla cuando el runner los informa.
- Arrancar el modo watch con Jest, Mocha o Vitest.
No puedes, y por qué
- Estar seguro de que los tests pueden correr. Cada ejecución es
sh -ccon un comando comonpx jest --json,python -m pytest,go test,cargo test,./gradlew test,vendor/bin/phpunit,bundle exec rspec,dart testoswift test. El panel no instala ninguna de esas herramientas ni toca el PATH; si falta una, el error sale en Salida.Dispositivo - Ver un informe de cobertura. Ejecutar con cobertura lanza el comando de cobertura del framework y escribe su salida, pero la pestaña Cobertura nunca recibe datos y el margen del editor no pinta cobertura. unittest, RSpec y Swift no tienen comando de cobertura (Coverage no disponible para <framework>).Aún no
- Obtener resultados exactos por test. Aprobado o fallido se deduce del texto de la salida (una línea con ✓, PASS u ok, o con ✗, FAIL o ✕, que contenga el nombre del test); un test sin ninguna queda sin ejecutar. Los ficheros JSON y JUnit que piden los comandos no se leen.Aún no
- Sacar partido a los snapshots. La pestaña lista entradas
.snap, todas marcadas como aprobadas, así que Actualizar todos y Borrar obsoletos no tienen nada útil sobre lo que actuar.Aún no - Usar el modo watch con pytest, Go, Cargo, JUnit y el resto: muestran Watch mode no disponible para <framework>.Aún no
- Listar más de 200 ficheros de test, un tope puesto por rendimiento en el móvil.A propósito
- Depurar tests. El menú describe el Explorador de tests como capaz de «depurar tests con cobertura»; el panel no depura.Aún no
Herramientas de Docker
Las Herramientas de Docker son una interfaz para la herramienta de línea de comandos docker que ya esté en tu dispositivo. PocketCode no incluye Docker ni un demonio de Docker, y el panel no tiene campo para un host remoto. Por eso, en un móvil típico las pestañas que necesitan Docker muestran Docker no está disponible, mientras que los editores de Dockerfile y de Compose siguen funcionando.
Cuando no hay Docker
Al abrirse, el panel ejecuta docker --version. Si falla, Contenedores, Imágenes, Build y Registro muestran Docker no está disponible: «PocketCode ejecuta el comando docker en este dispositivo y no lo encuentra. Puedes seguir editando el Dockerfile y el fichero Compose.» Añade la causa real del fallo y dos botones, Reintentar y Editar Dockerfile. El subtítulo dice Docker no disponible.
Dockerfile y .dockerignore
Esta pestaña funciona sin Docker. Parte de una de 14 plantillas (Node.js App, Python App, Java App, Go App, Rust App, Static Site, React App, Next.js, FastAPI, Spring Boot, Django, Ruby on Rails, Laravel, Custom Multi-stage), edita el texto y pulsa Guardar para dejar el Dockerfile en el proyecto. Para .dockerignore puedes Generar un fichero y guardarlo.
Compose
Nueve plantillas: Full-stack Node.js, Full-stack Python, Full-stack Java, LAMP Stack, MEAN Stack, Monitoring Stack, ELK Stack, WordPress y Dev Tools. Edita el fichero y pulsa Guardar; siempre se guarda como docker-compose.yml, aunque el panel lee docker-compose.yml, docker-compose.yaml, compose.yml o compose.yaml. Con Docker presente, Compose up, Compose down, Compose build y Compose logs ejecutan docker compose up -d, down, build y logs --tail=100; siguen desactivados hasta que el proyecto tenga un fichero Compose.
Con Docker disponible
| Pestaña | Qué hace |
|---|---|
| Contenedores | Lista docker ps -a --size en En marcha y Parados. Por contenedor: logs (las últimas 200 líneas y luego un docker logs -f en directo marcado En directo), arrancar o parar, y un menú con Reiniciar y Eliminar (pregunta ¿Eliminar el contenedor?). Los tres primeros contenedores que terminaron con un error enseñan además sus últimas 20 líneas de log. |
| Imágenes | Lista imágenes; Descargar una imagen por nombre (por ejemplo nginx:alpine); eliminar una (pregunta ¿Eliminar la imagen?). |
| Build | Pon la Etiqueta de la imagen (por defecto my-app:latest) y pulsa Compilar imagen: ejecuta docker build -t <etiqueta> . en el proyecto con salida en directo y Cancelar build. Necesita un Dockerfile («Primero escribe o elige un Dockerfile.»). |
| Registro | Elige Docker Hub, GitHub CR o Google GCR y pulsa Subir para enviar un nombre:etiqueta (ejecuta docker tag y docker push). |
Límites de los comandos
Cada comando puede tardar 300 segundos como máximo. Los nombres y etiquetas se validan antes de llegar a Docker: letras, dígitos y _ : . / @ -, hasta 255 caracteres, sin empezar por -.
Puedes
- Escribir y guardar un Dockerfile (14 plantillas), un
.dockerignorey un fichero Compose (9 plantillas), con o sin Docker. - Repetir la comprobación de Docker con Reintentar.
- Con un
dockerlocal que funcione: listar, arrancar, parar, reiniciar y eliminar contenedores; leer sus logs en directo; descargar, listar y eliminar imágenes; compilar una imagen; ejecutar Compose up, down, build y logs; subir a Docker Hub, GitHub CR o Google GCR.
No puedes, y por qué
- Usar Docker en un dispositivo sin comando
docker. PocketCode no trae binario ni demonio de Docker; el panel solo ejecuta la CLI que encuentra en el dispositivo.Dispositivo - Conectar con un demonio de Docker remoto por SSH, con
DOCKER_HOSTo con un contexto: el panel no tiene campo de host y cada comando se ejecuta en este dispositivo.Aún no - Iniciar sesión en un registro: no hay paso de login, así que Subir usa lo que la CLI de Docker local ya tenga configurado. Solo se ofrecen tres registros.Aún no
Monitorización
La monitorización mide la app en la que estás y el dispositivo donde corre, no un servidor. Toma muestras cada 2 segundos mientras el panel está abierto y se detiene al cerrarlo. Para ver tu propio servidor hay una pestaña aparte, Servidor.
Las cinco pestañas
| Pestaña | Qué muestra |
|---|---|
| Panel | Una sección Estado del sistema con cuatro tarjetas: CPU app, Memoria (el uso de memoria del dispositivo en %, no el de la app), Batería y almacenamiento Libre en MB. Después el Estado térmico (Android 10 y posteriores) y las cinco últimas alertas, o Sin alertas activas. |
| Métricas | Una serie de las últimas 60 muestras (dos minutos) con mínimo, media y máximo para ocho métricas: CPU de la app, Heap de la app, Memoria del dispositivo, Memoria total (PSS), Batería, Red entrante, Red saliente y Almacenamiento libre. Una métrica que el dispositivo no puede informar sale como «—» y «Este dispositivo no ha informado de esta métrica todavía.» |
| Alertas | Vienen cuatro reglas de serie: CPU alta (CPU por encima del 80 %), Memoria del dispositivo crítica (por encima del 90 %), Almacenamiento bajo (por debajo de 200 MB) y Batería baja (por debajo del 15 %). Nueva regla crea las tuyas; puedes editar, desactivar, borrar (pregunta ¿Borrar esta regla de alerta?) y aceptar eventos. Las reglas sobreviven a un reinicio. |
| Logs | El log de la propia app (logcat filtrado a este proceso) en un búfer de 500 líneas que se refresca hasta cuatro veces por segundo. Un chip Logs del sistema (apagado por defecto), chips de nivel, Buscar en los logs…, Limpiar, un contador de entradas y En vivo. |
| Servidor | Apunta el panel a tu propio servidor compatible con Prometheus. Mira más abajo. |
Reglas de alerta
El formulario de la regla tiene Métrica, Condición (Mayor que o Menor que), Umbral (validado contra el rango de la métrica), Sostenido durante (segundos) y Severidad (Crítica, Aviso, Info). Los eventos de alerta se evalúan y se muestran solo mientras el panel está abierto; se conservan los últimos 100, como máximo uno por minuto y regla.
Servidor: tu propio Prometheus
Servidor funciona con Prometheus, VictoriaMetrics, Thanos, Mimir, Cortex o un proxy de Grafana. Escribe la Dirección, elige Autenticación (Ninguna, Usuario y contraseña o Token bearer), pon el refresco (de 5 a 300 segundos, 15 por defecto) y añade hasta 12 consultas; cada una es una consulta PromQL instantánea que debe devolver un solo valor. Probar conexión comprueba la configuración. Mientras no la configures, la pestaña dice «No hay servidor configurado. Hasta que configures uno no sale nada de este dispositivo.»
Puedes
- Ver la CPU, el heap y la memoria total de la app, la batería, el tráfico de red de la app y el almacenamiento libre, además de la memoria y el estado térmico del dispositivo.
- Leer el log de la propia app, buscar en él, filtrarlo por nivel y borrarlo.
- Crear, editar, desactivar y borrar reglas de alerta, y ver cuándo saltan mientras el panel está abierto.
- Mostrar hasta 12 números de tu propio servidor compatible con Prometheus.
No puedes, y por qué
- Ver errores, disponibilidad, APM ni trazas. Esas pestañas se retiraron porque un móvil no puede medirlas del servicio de otra persona. La descripción de Monitorización en el menú todavía dice «errores y disponibilidad».A propósito
- Monitorizar otro proceso u otra máquina con las cuatro primeras pestañas: miden solo esta app y este dispositivo. Usa Servidor para el tuyo.A propósito
- Recibir una notificación push, por correo o por Slack de una alerta: los eventos aparecen solo en el panel, y solo mientras está abierto.Aún no
- Hacer que Sostenido durante (segundos) cuente: se guarda y se muestra, pero una regla salta en cuanto el valor actual cruza su umbral.Aún no
- Consultar un servidor por HTTP sin cifrar salvo que sea
localhost,127.0.0.1o10.0.2.2. Android bloquea el tráfico sin cifrar, así que una dirección comohttp://192.168.1.50:9090se rechaza: usahttps://o un túnel o un proxy con TLS.Dispositivo - Usar consultas de rango, consultas que devuelvan varias series ni Sentry. Solo se admite la API de consultas instantáneas de Prometheus.Terceros
Librerías
Librerías (el menú la llama Dependencias) no es un gestor de paquetes. Lista las librerías Kotlin/JVM que un proyecto declara en .pocketcode/dependencies.json y te deja elegir de un catálogo cerrado de cuatro librerías que viajan dentro de la app de PocketCode. Solo las usa el runner completo de Kotlin.
.pocketcode/dependencies.json · N declaradas.Catálogo
La pestaña Catálogo lista las cuatro librerías que PocketCode incluye: kotlinx.coroutines 1.10.2, kotlinx.serialization · JSON 1.7.3, kotlinx.serialization · core 1.7.3 y Okio 3.9.1. El icono + de una fila (Añadir más el nombre de la librería) la añade al proyecto.
Declaradas
La pestaña Declaradas lista lo que declara el JSON del proyecto, con los filtros Todas, Actualizables y No incluidas. Cada fila muestra grupo:artefacto y si PocketCode la incluye («Incluida en PocketCode.», o «a → b» cuando el proyecto pide otra versión), con un icono de actualizar y otro de quitar. Actualizar las N al pie actualiza todas las actualizables, es decir, las deja en la versión que PocketCode incluye. El icono de refrescar de la cabecera (Resolver ahora) vuelve a preparar las librerías, con los estados «Preparando las librerías…» y «Listo: las librerías de este proyecto están preparadas.» Sin declaraciones dice Sin dependencias.
Una librería que no está incluida
Si el JSON nombra algo fuera del catálogo, la fila avisa de que no viene incluida en PocketCode, «así que este proyecto se ejecuta en modo sencillo. Quítala o usa una de las de arriba.»
Puedes
- Ver qué librerías declara un proyecto y si cada una está incluida.
- Añadir cualquiera de las cuatro librerías incluidas, quitar una o actualizarla a la versión incluida.
- Preparar las librerías sin red: el jar se saca de la app y se comprueba contra su SHA-256.
No puedes, y por qué
- Instalar librerías desde internet, npm, pip, Maven, Gradle o cargo. Google Play no permite que una app descargue código ejecutable (jar, dex) de fuera de Play, así que el catálogo es cerrado, va empaquetado en la app y no usa red.Google Play
- Añadir una coordenada cualquiera ni elegir versión: PocketCode usa la versión que incluye, y el campo
repositoriesdel JSON se lee y se ignora.Google Play - Usar estas librerías desde otros lenguajes: la lista sirve solo al runner completo de Kotlin.A propósito
Generadores de backend
Los generadores de backend escriben código de servidor a partir de plantillas guardadas en la app. No es IA: los mismos ajustes dan siempre los mismos ficheros (los botones Generar solo esperan un momento antes). Lees el resultado en la hoja y, con un proyecto abierto, lo guardas bajo backend/.
Las pestañas
| Pestaña | Qué hace |
|---|---|
| Plantilla de API | Elige un Framework (Express.js, FastAPI, Spring Boot, Django REST, Gin, Actix Web, NestJS, Fiber), una Base de datos (PostgreSQL, MySQL, SQLite, MongoDB, Redis), la Autenticación (None, JWT, OAuth2, API Key, Session-based), las Opciones (Docker, CORS, Límite de peticiones, Swagger / OpenAPI, Tests, CI/CD), un Nombre del proyecto, el Puerto y la URL base, y pulsa Generar plantilla. CI/CD añade .github/workflows/ci.yml con el paso de preparación del lenguaje del framework. |
| Generador CRUD | Nombra un modelo y su tabla, añade Campos (String, Integer, Float, Boolean, Date, DateTime, UUID, JSON, Text, Enum, Array, Binary, cada uno obligatorio o único), marca Validación, Paginación, Búsqueda, Borrado lógico, Campos de auditoría o Tests, y pulsa Generar CRUD. Express y NestJS dan varios ficheros TypeScript, FastAPI y Django REST varios ficheros Python; Spring Boot, Gin, Actix Web y Fiber dan un único fichero src/<modelo>.ts. |
| Migraciones | Once tipos: Create Table, Alter Table, Drop Table, Add Column, Drop Column, Add Index, Drop Index, Add Foreign Key, Rename Table, Rename Column y Seed Data. Añade Columnas, pulsa Generar migración y lee el SQL de Migración de subida y Migración de bajada, además del Historial. |
| OpenAPI / Swagger | Rellena el Título, la Versión, los endpoints y la Seguridad (Bearer (JWT), Clave de API, Básica), elige YAML o JSON y pulsa Generar especificación OpenAPI. |
Guardar en el proyecto
Guardar en el proyecto escribe los ficheros generados bajo backend/ en el proyecto; las migraciones pasan a backend/up.sql y backend/down.sql, y la especificación a backend/openapi.yaml o backend/openapi.json. Las rutas no pueden salir de la carpeta del proyecto. Si ya existen ficheros pregunta ¿Sobrescribir ficheros? («N ficheros ya existen en el proyecto y se sobrescribirán.»). Si todo va bien dice «Guardados N ficheros en backend/ del proyecto», y si la escritura falla «No se pudieron guardar los ficheros generados». Necesita un proyecto abierto.
Puedes
- Generar plantillas de API para ocho frameworks, ficheros CRUD, migraciones SQL (de subida y de bajada) y una especificación OpenAPI en YAML o JSON, en el dispositivo y sin red.
- Leer el código generado en una vista previa y seleccionar su texto.
- Guardarlo todo bajo
backend/en el proyecto, con confirmación antes de sobrescribir.
No puedes, y por qué
- Tener un servidor simulado que funcione. En la pestaña Servidor simulado, Arrancar solo cambia el estado a En marcha tras un segundo y luego añade peticiones inventadas (una ruta y una latencia aleatorias cada pocos segundos) al Registro de peticiones. No abre ningún puerto.Aún no
- Obtener código distinto con NestJS o Fiber: reutilizan las plantillas de Express y Gin.Aún no
- Obtener un CRUD completo para Spring Boot, Gin, Actix Web o Fiber: solo el fichero TypeScript de reserva.Aún no
- Obtener migraciones específicas de MongoDB o Redis: las migraciones son SQL, y solo PostgreSQL tiene tipos de columna propios.Aún no
Generadores de IA
Generadores IA tiene cinco pestañas, pero solo tres usan IA. API y Esquema son plantillas sin conexión que corren en el dispositivo; Traducir, Seguridad y Rendimiento envían el código que pegas a tu proveedor de IA conectado.
Las cinco pestañas
| Pestaña | Qué hace |
|---|---|
| API · sin conexión | Describe la API, elige uno de 12 frameworks y pulsa Generar API. Solo se usa la primera palabra con sentido de tu descripción, como nombre del recurso; siempre obtienes cinco endpoints CRUD y el código. Los 12 frameworks comparten siete plantillas: NestJS y Hono usan la de Express, Flask y Django REST la de FastAPI, Fiber la de Gin. |
| Esquema · sin conexión | Elige un motor (PostgreSQL, MySQL, SQLite, MongoDB, Redis, Firestore) y un formato de salida, y pulsa Generar esquema. Siempre obtienes una tabla con el nombre de la primera palabra de tu descripción, con id, name, email, status, created_at y updated_at. SQL, Prisma, TypeORM, Django y Mongoose tienen generador propio; Sequelize, SQLAlchemy, Drizzle y Knex devuelven SQL DDL sin más. |
| Traducir · IA | Pega código, elige Origen y Destino entre 16 lenguajes (JavaScript, TypeScript, Python, Java, Kotlin, Swift, Go, Rust, C++, C#, Ruby, PHP, Dart, Scala, Lua, R), intercámbialos con Intercambiar lenguajes y pulsa Traducir código. Si coinciden sale «El idioma de origen y el de destino son el mismo». La respuesta trae el código traducido, notas y avisos. |
| Seguridad · IA | Pega código y pulsa Buscar vulnerabilidades. La petición pide una revisión OWASP Top 10 con CWE. Obtienes una puntuación de Riesgo y hallazgos con severidad (Critical, High, Medium, Low, Info), categoría, referencias CWE y OWASP, línea, recomendación y código de arreglo. |
| Rendimiento · IA | Pega código y pulsa Analizar el rendimiento. Obtienes una puntuación de 0 a 100, complejidad en tiempo y en espacio, incidencias y Recomendaciones. |
Qué necesitan las pestañas con IA
Un proveedor de IA conectado y acceso a internet. La primera vez, un aviso pregunta ¿Enviar a <proveedor>?; Enviar comparte el código que pegaste, Cancelar no comparte nada. API y Esquema no necesitan proveedor ni red. Antes de generar, la zona de resultado dice «El resultado aparecerá aquí en cuanto se genere.»
Puedes
- Generar sin conexión un esqueleto de API REST y un esquema de partida.
- Traducir código entre 16 lenguajes, buscarle vulnerabilidades y analizar su rendimiento, con tu proveedor de IA.
- Leer el resultado en la hoja y seleccionar su texto.
No puedes, y por qué
- Usar la selección del editor: pegas el código en el panel; no hay botón de «usar selección».Aún no
- Insertar o aplicar el resultado en tu fichero: el panel solo lo muestra.Aún no
- Obtener una API o un esquema a medida desde tu descripción: API y Esquema usan solo su primera palabra, y el resto no cambia el resultado.Aún no
- Obtener código de Sequelize, SQLAlchemy, Drizzle o Knex: esos cuatro formatos devuelven SQL DDL.Aún no
- Usar Traducir, Seguridad o Rendimiento sin un proveedor conectado o sin internet.Requiere red
Acciones de código con IA
La sección IA del menú tiene acciones que trabajan sobre tu código: explicar, tests, documentación, código desde comentarios, refactorizar y cinco acciones rápidas. Envían el código a tu proveedor de IA conectado, tras un aviso que aceptas, y muestran la respuesta.
Las acciones
| Acción | Qué pasa |
|---|---|
| IA: explicar selección | Explica el código seleccionado. La respuesta aparece en el panel acoplado como Explicación. |
| IA: generar tests | Escribe tests para la función del cursor (Tests generados). Insertar los pone en el cursor. |
| IA: generar documentación | Escribe la documentación de la función del cursor (Documentación). Aplicar pone la respuesta en lugar de esa función. |
| IA: generar desde comentarios | Busca comentarios como // TODO: …, // FIXME: …, // GENERATE: …, // AI: …, // IMPLEMENT: …, // STUB: …, # TODO: … o /* TODO: … */ de al menos 10 caracteres y muestra hasta cinco en una barra («N comentario(s) con código generable»). Toca uno para obtener Código generado, con Insertar. |
| IA: refactorizar código | Abre Refactorización asistida por IA: elige uno de nueve tipos y pulsa Refactorizar. Sin selección refactoriza el fichero entero. La respuesta es Código refactorizado con Aplicar, que sustituye el código que se envió (la selección, o el fichero entero si no había nada seleccionado). Los nueve nombres de tipo están siempre en español: Extraer y Simplificar, Mejorar Nomenclatura, Añadir Type Safety, Convertir Patrón, Optimizar Rendimiento, Revisión Seguridad, Mejorar Accesibilidad, Manejo de Errores y Personalizado (con Instrucciones personalizadas). |
| Corregir errores, Optimizar, Simplificar, Modernizar | Trabajan sobre la selección. La respuesta se abre en una hoja inferior («Fixed Code», «Optimized Code», «Simplified Code», «Modernized Code»). Aplicar muestra antes una vista previa de diferencias en rojo y verde, y luego reemplaza la selección (o inserta en el cursor si la selección ya no existe). |
| Generar | Toma la selección como la descripción de lo que quieres, por ejemplo un comentario (// función que devuelva la suma de una lista) o una frase, y le pide el código a tu proveedor de IA. Una hoja inferior titulada «Generated Code» muestra La IA está pensando… y después el código; si el proveedor no puede responder, la hoja enseña el error y deja de cargar, y la ✕ la cierra. Aplicar muestra antes la vista previa de diferencias en rojo y verde y luego inserta el código en una línea nueva bajo la selección, así que tu descripción se conserva. Copiar lo copia. La primera vez, un aviso pregunta ¿Enviar a <proveedor>?. |
Preguntar a la IA sobre la selección (Ctrl+I) | Cierra el editor y abre el chat de IA con la selección como contexto. |
Aplicar e Insertar en el panel acoplado
El panel acoplado mide como mucho 300 dp de alto y tiene una ✕ para cerrarlo. Insertar pone la respuesta en el cursor. Aplicar sustituye solo el trozo de código que se envió a la IA (la función en Generar documentación; la selección en Refactorizar, o el fichero entero si no había nada seleccionado) por la respuesta, sin vista previa y en un solo paso de deshacer. Si cambiaste ese código mientras la IA respondía y ya no se encuentra, no se toca nada y el panel dice «El código cambió mientras la IA respondía, así que no se aplicó el resultado. Cópialo en su lugar.» Copiar, junto al código generado, lo copia al portapapeles («Copiado al portapapeles»); la hoja inferior tiene su propio Copiar para toda la respuesta.
Puedes
- Explicar, escribir tests, documentar, refactorizar, corregir, optimizar, simplificar o modernizar código con tu proveedor de IA.
- Convertir un comentario
TODOoGENERATEen código. - Describir lo que quieres en un comentario o una frase, seleccionarlo y ejecutar Generar para que el código se inserte justo debajo.
- Aplicar la documentación generada o una refactorización solo sobre la función o la selección que se envió, y deshacerlo en un paso.
- Copiar el código generado al portapapeles con Copiar, en el panel acoplado y en la hoja inferior.
- Revisar unas diferencias antes de aplicar una acción rápida.
- Pasar una selección al chat de IA con Preguntar a la IA sobre la selección.
No puedes, y por qué
- Ejecutar IA: explicar selección, Corregir errores, Optimizar, Simplificar, Modernizar o Generar sin nada seleccionado: no hacen nada.A propósito
- Ver los tipos de refactorización en tu idioma: sus nombres están fijos en español.Aún no
Colaboración en vivo
La colaboración en vivo permite que dos o más dispositivos editen un mismo fichero a la vez en la misma red Wi-Fi. Es gratis, no pide cuenta y no tiene servidor: el móvil anfitrión escucha en tu red local, los invitados lo encuentran, escriben un código de seis dígitos y el anfitrión los deja entrar. Nada va por internet.
Hostear una sesión
- 1En Hostear en este dispositivo escribe un nombre de sesión y toca Comenzar a hostear. La sesión comparte el texto del fichero que tienes abierto.
- 2Da el Código de emparejamiento de seis dígitos a quien se una («Dile este código a quien se una»).
- 3Cuando alguien escribe el código correcto, tu dispositivo pregunta Alguien quiere unirse: «<nombre> ha escrito el código correcto. Si le dejas entrar, compartes el fichero con su dispositivo.» Elige Dejar entrar o Rechazar. Tienes hasta 90 segundos.
- 4Termínala con Finalizar sesión en la cabecera.
Unirte a una sesión
- 1Abre el panel en la misma Wi-Fi. Pares en tu red escanea la LAN (Escaneando la LAN…) y dice Sin pares encontrados si nadie hostea.
- 2Escribe los seis dígitos del anfitrión en Código del anfitrión («Sin él nadie puede entrar. La sesión no sale de tu red.»).
- 3Toca al anfitrión y espera a que te deje entrar (hasta 120 segundos). El contenido del fichero que tenías abierto se sustituye por el texto del anfitrión.
- 4Sal con Salir en la cabecera.
Dentro de una sesión
| Pestaña | Qué muestra |
|---|---|
| Sesión | El Código de emparejamiento (solo el anfitrión), el ID de sesión, el Host (el modelo del dispositivo), el Puerto, los Participantes como «n / 10», el Chat, la lista de Conectados y la Actividad. |
| Gente | Cada participante con una etiqueta HOST o (tú), En línea o Sin conexión y la «Línea l:c» de su cursor. El anfitrión tiene un botón Quitar para cada uno de los demás. |
| Chat | Mensajes de texto (Escribe un mensaje…); un mensaje que empieza por tres acentos graves se muestra como fragmento de código. |
Qué se comparte
- El texto del fichero activo del anfitrión en el momento de empezar la sesión. Una sesión comparte un único búfer: ni el árbol del proyecto ni otros ficheros.
- Después, las ediciones de todos se fusionan (CRDT) y los cursores remotos aparecen en el editor con nombre y color.
- El anfitrión retransmite todo: los invitados hablan con el anfitrión, no entre sí.
- Todo invitado al que el anfitrión deja entrar puede editar el texto compartido.
- Si se cae la conexión de un invitado, la app reintenta hasta seis veces (de 1 s a 15 s) y reconcilia lo escrito mientras tanto.
Red y permiso
Desde Android 13, hostear y unirse necesitan el permiso de dispositivos cercanos de Android (en las versiones más nuevas es un permiso de red local). Cuando empiezas a hostear, buscas o te unes y falta, se abre el diálogo de permisos de Android: permítelo y toca otra vez. Si lo rechazas, hostear y unirse siguen rechazados (el siguiente intento vuelve a mostrar la explicación) hasta que lo permitas en los ajustes de Android para la app. La explicación del permiso y los errores de conexión salen en el idioma de la app.
Puedes
- Hostear una sesión que comparte el fichero abierto; aprobar o rechazar a cada invitado; terminar la sesión.
- Dejar que todo invitado que aceptes edite el texto compartido.
- Responder al diálogo de permisos de Android desde el propio panel, cuando hace falta, y leer su explicación en el idioma de la app.
- Echar a un invitado con Quitar: se cierra su conexión y, si intenta unirse otra vez, el anfitrión lo rechaza sin preguntar.
- Unirte a un anfitrión de la misma Wi-Fi con el código de seis dígitos.
- Editar el mismo texto a la vez, ver el cursor de cada persona y chatear.
- Reconectar solo tras una caída breve.
No puedes, y por qué
- Colaborar entre redes distintas ni por internet: no hay relé ni nube.A propósito
- Elegir tu nombre: todos los participantes, tú incluido, aparecen como You, también en el diálogo de aprobación del anfitrión.Aún no
- Fiarte del límite «n / 10»: solo se muestra, y el anfitrión no limita el número de invitados.Aún no
- Compartir la terminal ni la depuración con un invitado: se retiró a propósito, porque equivaldría a darle un shell a otro dispositivo.A propósito
- Compartir varios ficheros ni el proyecto: una sesión comparte un único búfer.A propósito
Problemas
Problemas es una sola lista de todo lo que el editor ha encontrado mal en cada pestaña abierta, agrupado por fichero. Es un diálogo a pantalla completa, no una hoja.
Ctrl+Shift+M), el contador de problemas de la barra de estado del editor, o Ir a › Analizar estilo (lint), que abre el mismo diálogo con Estilo activado.Filtros
Filtra por origen (Compilador/LSP, Marcadores y Estilo, cada uno con su recuento) y por severidad (Errores, Avisos, Info y Sugerencias). Compilador/LSP y Marcadores vienen activados. Estilo (las reglas del linter) se calcula solo cuando lo activas, con «Analizando el estilo…», y no se calcula nada mientras el diálogo está cerrado.
Filas
Los problemas se deduplican y se ordenan por severidad y luego por línea. Toca una fila para ir a «Línea N, Col M». El grupo del fichero activo tiene Arreglos rápidos, que abre el panel de correcciones. F8 y Shift+F8 saltan al siguiente o al anterior error, aviso o marcador TODO sin abrir el diálogo. Sin nada que mostrar dice Sin problemas.
Puedes
- Ver en una sola lista los errores, avisos, información y sugerencias del servidor de lenguaje, de los marcadores y de las reglas de estilo de todas las pestañas abiertas.
- Filtrar por origen y por severidad, y saltar a una línea.
- Abrir Arreglos rápidos para los problemas del fichero activo.
No puedes, y por qué
- Ver problemas de ficheros que no están abiertos en una pestaña: solo se leen las pestañas abiertas.A propósito
- Tener Estilo siempre activo mientras escribes: se calcula bajo demanda cada vez que lo activas.A propósito
Esquema
El Esquema es una columna a la derecha del editor que lista las clases, interfaces, funciones, bloques de imports y secciones // region del fichero y salta a ellas. Lo construye un analizador sencillo; no usa el servidor de lenguaje.
Qué reconoce
- Líneas que empiezan por
class,interface,object,enum class,funosuspend funy abren una{: declaraciones al estilo de Kotlin. - Bloques de tres o más líneas seguidas que empiezan por
import. - Regiones escritas como
// region Nombrey cerradas con// endregion. - Se refresca 0,8 segundos después de dejar de escribir.
Cómo usarlo
Escribe en Filtrar símbolos… (coincide con parte del texto, no es difuso) y toca una entrada para ir a su línea. Sin símbolos aparece cuando el filtro no coincide con nada.
Puedes
- Ver la estructura de un fichero Kotlin y saltar a cualquier clase, función, bloque de imports o región.
- Filtrar la lista escribiendo.
No puedes, y por qué
- Listar declaraciones escritas como en otros lenguajes: un
functionde JavaScript, undefde Python o unpublic classde Java no coinciden. En esos ficheros sobre todo obtienes bloques de imports y marcadores// region.Aún no - Usar el servidor de lenguaje para los símbolos: el Esquema no lo usa.Aún no
Gratis y Pro
Todas las herramientas de esta página son gratis. Ninguna tiene límite de plan ni paywall.
| Herramienta | Gratis | Pro |
|---|---|---|
| Depurar, Explorador de tests, Herramientas de Docker, Monitorización, Librerías, Generadores de backend | Incluido | Incluido |
| Generadores de IA y acciones de código con IA | Incluido; usan el proveedor de IA que conectes | Incluido; igual |
| Colaboración en vivo | Incluido | Incluido |
| Problemas y Esquema | Incluido | Incluido |
Privacidad y seguridad
Qué sale del dispositivo, herramienta por herramienta.
- Depurar, Explorador de tests, Herramientas de Docker, Librerías, Generadores de backend, Problemas y Esquema no envían tu código a ninguna parte. Los comandos que ejecutan (
npx,docker pull,docker push…) se comportan como en cualquier shell, con su propio uso de red. - Las acciones de IA y las pestañas Traducir, Seguridad y Rendimiento de los Generadores de IA envían el código que seleccionas o pegas, con instrucciones, a tu proveedor de IA por internet. Antes un aviso pregunta ¿Enviar a <proveedor>?; Cancelar no envía nada. API y Esquema no usan IA y no envían nada. Preguntar a la IA sobre la selección abre el chat de IA, que sigue sus propias reglas.
- La monitorización mide en el dispositivo y no envía nada. La pestaña Servidor consulta solo la dirección que escribes, con las credenciales que pones; una contraseña o un token se guarda cifrado con el Keystore de Android. Mientras no la configures, «no sale nada de este dispositivo».
- La colaboración en vivo se queda en tu red local: sin servidor, relé ni cuenta. El tráfico va cifrado (intercambio de claves ECDH P-256 y después AES-128-GCM) y un invitado necesita el código de seis dígitos y la aprobación del anfitrión. El anfitrión es visible para los demás dispositivos de la misma Wi-Fi por diseño, para que puedan encontrarlo.
- Ese cifrado no te protege de alguien que descubra los seis dígitos y a quien dejes entrar: el código es corto a propósito para que se pueda teclear. Tras cinco intentos fallidos el anfitrión cierra la sesión.
Limitaciones
Lo que las herramientas no hacen hoy, y por qué.
- La depuración es real solo para JavaScript; Evaluar expresión… responde
undefined.Aún no - El Explorador de tests y las Herramientas de Docker ejecutan comandos a través del dispositivo y no traen consigo Node, Python, Go, Cargo, Gradle ni Docker.Dispositivo
- La pestaña Cobertura nunca muestra datos, y las herramientas de snapshots no tienen sobre qué actuar.Aún no
- Librerías es un catálogo cerrado de cuatro librerías Kotlin: Google Play no permite descargar código ejecutable.Google Play
- La pestaña Servidor simulado es una maqueta con peticiones inventadas; NestJS y Fiber reutilizan las plantillas de Express y Gin.Aún no
- En los Generadores de IA, API y Esquema son plantillas sin conexión, no IA.Aún no
- Las pestañas y acciones de IA necesitan un proveedor conectado e internet.Requiere red
- La colaboración en vivo funciona solo en una red local, sin relé ni nube.A propósito
- La monitorización no tiene alertas por push, correo ni Slack y no llega a un servidor por HTTP sin cifrar salvo que sea local.Dispositivo
- El Esquema entiende solo declaraciones al estilo de Kotlin.Aún no
- Algunos textos no están traducidos: los nombres de las pestañas de depuración están en inglés, los nueve tipos de refactorización en español y algunos mensajes de error en español (Explorador de tests) o en inglés (generadores).Aún no
Resolución de problemas
Docker no está disponible
El dispositivo no tiene un comando docker que PocketCode pueda ejecutar. Instala uno donde puedas, o sigue usando las pestañas Dockerfile y Compose, que funcionan sin él, y ejecuta los comandos en un sitio con Docker. Reintentar repite la comprobación.
No hay ningún proyecto abierto
Las Herramientas de Docker trabajan sobre la carpeta de un proyecto. Abre un proyecto y vuelve a abrir la herramienta.
No se detectó framework de testing
El proyecto no tiene ningún fichero de configuración que PocketCode reconozca (jest.config.js, pytest.ini, go.mod, Cargo.toml, phpunit.xml, pubspec.yaml, Package.swift…), y package.json no menciona Jest, Vitest ni Mocha. unittest nunca se elige solo.
Error ejecutando tests: …
El comando de tests no pudo arrancar o lo cortó un error; el texto tras los dos puntos es la causa. Si falta la herramienta que necesita el comando (npx, python, go, cargo, ./gradlew…), el shell lo dice en Salida y los tests quedan sin ejecutar.
Coverage no disponible para <framework>
unittest, RSpec y Swift XCTest no tienen comando de cobertura. En los demás el comando se ejecuta, pero la pestaña Cobertura sigue vacía.
Watch mode no disponible para <framework>
El modo watch existe solo para Jest, Mocha y Vitest.
⚠ <runner> has no debugger support — running without it.
Solo se depuran los ficheros JavaScript (.js, .mjs, .cjs, .jsx). Todo lo demás, TypeScript incluido, simplemente se ejecuta.
⚠ Could not attach the debugger on port N — the process stays paused.
El panel no pudo conectar con el inspector de Node. Detén la ejecución desde el panel de ejecución y vuelve a lanzar Depurar archivo.
Breakpoint not set at <fichero>:<línea> — <causa>
El depurador rechazó ese breakpoint; aparece como aviso en la pestaña Console y la causa va después del guion. Prueba con una línea ejecutable del fichero que se está ejecutando.
Android bloquea HTTP sin cifrar hacia <host>…
Monitorización › Servidor rechaza HTTP sin cifrar salvo que el host sea localhost, 127.0.0.1 o 10.0.2.2. Usa una dirección https://, o pon un túnel o un proxy con TLS delante del servidor.
No se pudo empezar a leer el log de la app. Puede que el sistema no lo permita en este dispositivo.
Monitorización › Logs lee el logcat de esta app; algunos dispositivos no dejan que una app lo haga. Las demás pestañas no se ven afectadas.
No hay ningún servicio de IA conectado. Conecta un proveedor en Ajustes para usar las funciones de IA.
Las acciones de IA y las tres pestañas de IA necesitan un proveedor. Añade una clave o inicia sesión en Ajustes y vuelve a intentarlo. Mira Proveedores de IA, modelos y claves.
Translation failed: … · Scan failed: … · Analysis failed: …
El proveedor respondió con un error o no se pudo alcanzar; el texto tras los dos puntos es su causa. Los mensajes propios de los generadores están en inglés.
PocketCode necesita permiso para usar la red local y encontrar dispositivos cercanos… · Falta el permiso de red local…
La colaboración en vivo necesita el permiso de dispositivos cercanos (red local) de Android. El panel lo pide con el diálogo de Android cuando hosteas, buscas o te unes; si lo rechazaste, permítelo en los ajustes de Android para PocketCode y vuelve a intentarlo. Hasta entonces hostear y unirse se rechazan, con este aviso en el idioma de la app.
No hubo respuesta. Puede que el anfitrión ya no esté, que estéis en redes distintas, o que Android esté bloqueando la red local.
Comprueba que el anfitrión sigue con su sesión abierta, que los dos dispositivos están en la misma Wi-Fi (un router que aísla unos dispositivos de otros lo impedirá) y que el permiso anterior está concedido.
Sin pares encontrados
Nadie está hosteando en tu red ahora mismo, o los dispositivos no están en la misma Wi-Fi. Pide al anfitrión que abra Colaboración en vivo y toque Comenzar a hostear.
No se pudo unir a <anfitrión>: … · No se pudo empezar a hostear: …
El texto tras los dos puntos dice el motivo, en el idioma de la app: No se pudo unir a la sesión. (código erróneo o el anfitrión te rechazó; la app lo dice igual para cualquier causa a propósito, para que un código erróneo no se distinga de un rechazo), No hubo respuesta… (arriba), El otro dispositivo no respondió como PocketCode, o usa una versión incompatible. Comprueba que has elegido la sesión correcta y vuelve a intentarlo. o, para todo lo demás, No se pudo conectar con el anfitrión.
Demasiados intentos fallidos de unirse. La sesión se ha cerrado; crea una nueva para obtener otro código.
Tras cinco intentos fallidos (código erróneo, rechazo o conexión fallida) el anfitrión cierra la sesión. Vuelve a hostear para obtener un código nuevo.
Escribe el código de 6 dígitos que muestra el anfitrión.
Escribe los seis dígitos que aparecen en Código de emparejamiento en la pantalla del anfitrión antes de tocar al anfitrión.
El anfitrión cerró la sesión. Tu fichero sigue abierto tal y como está.
El anfitrión terminó la sesión, o la reconexión falló tras seis intentos («No se pudo volver a conectar con el anfitrión…»). Tu fichero sigue abierto con todo lo que escribiste, incluido lo de después de la caída.
Sin símbolos
El filtro del Esquema no coincide con nada. Vacía el campo. En ficheros JavaScript, Python o Java el Esquema suele listar solo bloques de imports y marcadores // region.