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
| Carpeta | Contiene |
|---|---|
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.