Trabalhar no Draggy
Compilação e arquitetura
Correr a partir do código, como está organizado, e as duas fronteiras.
Correr a partir do código
npm install
npm run electron:dev
Vite e Electron juntos com recarregamento a quente, na porta 5173. Um processo Vite que ficou vivo prende essa porta e o arranque seguinte falha: mata-o primeiro.
npm run check
Tipos, lint e cerca de 1900 testes em poucos segundos. A CI corre o mesmo
comando. npm run electron:build escreve um instalador em
dist-electron/.
Como está organizado
| Pasta | Contém |
|---|---|
electron/ | Processo principal: janelas, IPC, SQLite, a proteção de ficheiros, git, o navegador, os servidores MCP, as atualizações |
src/agent/ | O ciclo de chamadas a ferramentas em streaming, as permissões, a compactação |
src/chat/ | A lista de mensagens, os diffs, as aprovações, a roda de contexto |
src/tools/ | As definições das ferramentas e o registo onde vivem |
src/voice/ | Captura, deteção, vez de falar, síntese |
As duas fronteiras
electron/preload.cjs é a da segurança. O renderizador não tem acesso
ao Node e só chega ao sistema de ficheiros, à rede e à base de dados pelo que
está exposto ali. Acrescentar-lhe uma função é um ato deliberado.
A separação de sessões é a outra. A janela do Draggy corre sob uma CSP rigorosa; cada página externa corre numa partição separada sem nenhuma regra nossa. Juntá-las aplica as nossas regras aos sites dos outros e só desenha escombros.
Convenções
- Os comentários explicam o porquê, nunca o quê, e têm no máximo duas linhas
- Os doze idiomas mantêm-se a par, garantido por um teste
- Cada processo filho passa pelos ajudantes que arrancam sem janela
- As mensagens de commit são de uma linha
O CONTRIBUTING.md tem o resto, e o SECURITY.md cobre como comunicar uma vulnerabilidade.