Grazie per il tuo interesse nel contribuire a diffwatch! Ecco le linee guida per contribuire al progetto.
git clone https://github.com/auriti/diffwatch.git
cd diffwatch
npm install
npm run build
npm test- Node.js >= 20
- npm >= 10
- Fork il repository
- Crea un branch dal
main:git checkout -b feat/mia-feature - Fai le tue modifiche
- Esegui i test:
npm test - Esegui la build:
npm run build - Esegui il type-check:
npm run typecheck - Crea un commit seguendo le convenzioni (vedi sotto)
- Apri una Pull Request verso
main
Usiamo Conventional Commits in italiano:
<tipo>(<scope>): <descrizione imperativa>
Tipi: feat, fix, refactor, docs, perf, security, test, chore
Esempi:
feat(ui): aggiungi filtro per data nella FileList
fix(hooks): correggi timeout review gate su Windows
test(e2e): aggiungi test WebSocket riconnessione
docs: aggiorna README con nuovi provider
src/
cli/ # Entry point CLI
diff/ # Diff engine e rollback
hooks/ # Hook PreToolUse/PostToolUse
installer/ # Registrazione hook in settings.json
providers/ # Abstraction layer multi-tool
server/ # Express + WebSocket + store
ui/ # React SPA (componenti, hooks, stili)
types.ts # Tipi condivisi
scripts/
build.js # Build script esbuild
tests/ # Test vitest
docs/ # Documentazione tecnica
Il flusso dati principale:
AI Tool → Hook (stdin JSON) → HTTP POST → Server → WebSocket → React UI
Ogni provider (claude-code, cursor, aider) implementa l'interfaccia HookProvider definita in src/providers/types.ts.
npm test # Esegui tutti i test
npm run test:watch # Test in modalità watch
npx vitest run tests/e2e.test.ts # Solo test E2EI test sono organizzati per area:
store.test.ts— SnapshotStore in-memoriasqlite-store.test.ts— Persistenza SQLitehooks.test.ts— Hook pre/post tool useapi-routes.test.ts— Logica API routesreview-gate.test.ts— Review gateproviders.test.ts— Sistema providere2e.test.ts— Server reale HTTP + WebSocketdiff-engine.test.ts— Motore diffrate-limiter.test.ts— Rate limiting
Vedi la guida completa in docs/providers.md.
In breve:
- Crea
src/providers/nome-tool.tsimplementandoHookProvider - Registralo in
src/providers/index.ts - Aggiungi test in
tests/providers.test.ts
- Cerca issue con label
good first issueper iniziare - Descrivi chiaramente il problema o la feature nella PR
- Includi test per le modifiche
- Assicurati che
npm testenpm run buildpassino
Contribuendo a questo progetto, accetti che i tuoi contributi siano rilasciati sotto la Licenza MIT.