Trabajar en Draggy

Compilación y arquitectura

Ejecutar desde el código, cómo está organizado y las dos fronteras.

Ejecutar desde el código

npm install
npm run electron:dev

Vite y Electron juntos con recarga en caliente, en el puerto 5173. Un proceso de Vite que se quedó vivo retiene ese puerto y el siguiente arranque falla: mátalo primero.

npm run check

Tipos, lint y unas 1.900 pruebas en unos segundos. CI ejecuta el mismo comando. npm run electron:build escribe un instalador en dist-electron/.

Cómo está organizado

CarpetaContiene
electron/Proceso principal: ventanas, IPC, SQLite, la protección de archivos, git, el navegador, los servidores MCP, las actualizaciones
src/agent/El bucle de llamadas a herramientas en streaming, los permisos, el compactado
src/chat/La lista de mensajes, los diffs, las aprobaciones, la rueda de contexto
src/tools/Las definiciones de herramientas y el registro donde viven
src/voice/Captura, detección, turnos de palabra, voz

Las dos fronteras

electron/preload.cjs es la de seguridad. El renderizador no tiene acceso a Node y solo llega al sistema de archivos, a la red y a la base de datos por lo que se expone ahí. Añadir una función es un acto deliberado.

La separación de sesiones es la otra. La ventana de Draggy corre bajo una CSP estricta; cada página externa corre en una partición aparte sin ninguna política nuestra. Juntarlas aplica nuestra política a los sitios de otros y solo pinta ruinas.

Convenciones

  • Los comentarios explican el porqué, nunca el qué, y son de dos líneas como mucho
  • Los doce idiomas se mantienen a la par, comprobado por una prueba
  • Cada proceso hijo pasa por los ayudantes que lanzan sin ventana
  • Los mensajes de commit son de una línea

CONTRIBUTING.md tiene el resto, y SECURITY.md cubre cómo informar de una vulnerabilidad.