Files
sabia/CONTRIBUTING.md
T
Lucas RayanandClaude Opus 5.5 791538c9d9 v0.1.0: logo, i18n pt/en, CI com caches, testes e documentação
- Logo oficial (sabia.png) e conjunto de ícones do app desktop.
- Interface em português e inglês: tradutor por observação do DOM, seletor
  de idioma e checagem de cobertura de tradução no CI.
- CI/CD com caches (rust-cache, .deb do Tauri em cache) e pipeline de release
  multiplataforma (CLI em 5 alvos + app desktop via tauri-action), templates
  de issue/PR.
- Suíte de testes de integração do sabia-core (scan e2e, handshake/crack
  4-way e PMKID, pcap, trilha de auditoria) — 46 testes verdes.
- Documentação completa pt/en: README, ROADMAP, SECURITY, CONTRIBUTING,
  CHANGELOG e docs/ (cli, interface, arquitetura), com enquadramento de uso
  autorizado.
- Correções de clippy (-D warnings) e formatação em toda a árvore.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 12:46:19 -03:00

2.4 KiB

Contributing to Sabiá

English · Português

Thanks for helping! Golden rules:

  1. Authorized auditing only. Every new feature is for testing your own networks or networks you're authorized to test. Sensitive operations (deauthentication) require explicit confirmation and are recorded in the audit trail. PRs that hide activity from the trail or remove the confirmations are rejected.
  2. Test the parsers with real data. New readers (radiotap, 802.11, EAPOL, pcap) need tests against known frames — see crates/sabia-core/tests/ and the helpers in crates/sabia-core/src/testutil.rs. No parser without a test.
  3. Be honest about what works. If a feature is Linux-only, or only covers WPA2-PSK, say so in --help, in the README and in the test.

Workflow

cargo fmt --all
cargo clippy --workspace --all-targets   # as in CI (RUSTFLAGS=-D warnings)
cargo test --workspace
node scripts/check-ui-i18n.mjs            # UI translation coverage

CI runs on Linux, Windows and macOS; run these before pushing — almost everything that fails CI shows up here in seconds. Documentation-only changes (*.md, docs/) are light on CI.

Live capture exists only on Linux (AF_PACKET + netlink); on Windows and macOS those paths compile but aren't exercised. Parsing and cracking tests run on all three, because they're offline.

Where to work

Module map in docs/architecture.md. What's missing and welcome is in the ROADMAP.

  • Frame parsing: radiotap.rs, dot11.rs, eapol.rs.
  • Radio and system: iface.rs, netlink.rs, scan.rs, capture.rs, inject.rs.
  • Handshake and cracking: handshake.rs, crack.rs.
  • App and API: crates/sabia-cli/src/ and apps/gui/.

Interface and translation

The source text of the interface is Portuguese; English comes from apps/gui/ui/i18n-en.js, applied at runtime by i18n.js. When adding or changing visible text, run node scripts/check-ui-i18n.mjs and include the translation — CI rejects Portuguese without an English pair. Don't translate user data (SSID, BSSID, values) or technical terms (WPA, EAPOL, pcap…).

Documentation

Keep the pt/en pair: every *.md and docs/* file has a Portuguese version (*.pt-BR.md, docs/pt-BR/) and an English one.

License

By contributing, you agree to license under MIT or Apache-2.0, like the rest of the project.