No description
  • Rust 65.9%
  • HTML 25.1%
  • CSS 5.8%
  • Shell 3.2%
Find a file
Jonatas Oliveira 60983b15d7
All checks were successful
ci/woodpecker/push/pipelines Pipeline was successful
fix(mutação): remover o teto do battleship-client, que não media nada
O .cargo/mutants.toml exclui todo arquivo deste crate, e com razão: não há
lógica própria aqui. O lib.rs é bootstrap do Yew, o common.rs inteiro é um
`pub use battleship_common::*;`, e o resto é componente de interface e
transporte WebSocket.

Com tudo excluído o cargo-mutants reporta "Found 0 mutants", e o
.mutants-teto de 0 dizia "zero sobreviventes" quando o que houve foi zero
medições. O arquivo sai, e o porquê fica escrito nos dois mutants.toml
(o do crate e o do workspace) para que ninguém o recrie achando que
esqueceram.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PhdPjHUuVhXaitwT4mG53t
2026-09-08 07:14:16 +02:00
.cargo fix(mutação): remover o teto do battleship-client, que não media nada 2026-09-08 07:14:16 +02:00
.githooks fix(mutação): remover o teto do battleship-client, que não media nada 2026-09-08 07:14:16 +02:00
.woodpecker ci: tirar a mutação do pipeline e rodar o CI inteiro no pre-commit 2026-09-05 07:40:27 +02:00
src refactor: hold only this crate, and stand on its own 2026-09-03 13:28:26 +02:00
static refactor: hold only this crate, and stand on its own 2026-09-03 13:28:26 +02:00
tests refactor: hold only this crate, and stand on its own 2026-09-03 13:28:26 +02:00
.gitignore refactor: hold only this crate, and stand on its own 2026-09-03 13:28:26 +02:00
Cargo.toml refactor: hold only this crate, and stand on its own 2026-09-03 13:28:26 +02:00
IMPLEMENTATION_SUMMARY.md refactor: hold only this crate, and stand on its own 2026-09-03 13:28:26 +02:00
index.html refactor: hold only this crate, and stand on its own 2026-09-03 13:28:26 +02:00
LICENSE docs: add a README and the GPLv3 licence text 2026-09-01 22:20:42 +02:00
README.md ci: tirar a mutação do pipeline e rodar o CI inteiro no pre-commit 2026-09-05 07:40:27 +02:00
SERVER_CHANGES.md refactor: hold only this crate, and stand on its own 2026-09-03 13:28:26 +02:00

battleship-client

Cliente web do Batalha Naval: Yew compilado para WebAssembly.

trunk serve      # sobe o cliente
cargo test

As regras não moram aqui. Elas vêm de battleship-common, declarada como dependência git — é o que permite compilar este repositório sozinho, sem o diretório irmão por perto. src/common.rs é só um pub use dela: já houve uma cópia própria dos tipos aqui, ela divergiu do servidor e quebrou o jogo, e tests/spider existe para impedir que a cópia volte — ele compara byte a byte a serialização feita pelo caminho do cliente com a feita pela biblioteca.

Os componentes Yew e o WebSocketService só executam dentro de um navegador, então o pipeline não mede cobertura deste crate e a rodada de mutação os exclui. Para cobri-los de verdade:

wasm-pack test --headless --firefox

Onde ele se encaixa

Este repositório contém só o cliente. Ele também entra como submódulo no repositório battleship, que junta os três crates num workspace.

Verificações antes do commit

O .githooks/pre-commit roda aqui o que o Woodpecker roda no servidor. Ele é gerado a partir do .woodpecker/pipelines.yml deste repositório, então os comandos não podem divergir do CI. Ative uma vez por clone -- o hook é versionado, a configuração que aponta para ele não é:

git config core.hooksPath .githooks

Roda tudo a cada git commit, do mais barato ao mais caro, e para no primeiro que falhar: lint do pipeline, cargo fmt --check, clippy com -D warnings, build, testes, auditoria de dependências.

O teste de mutação só existe aqui. Ele saiu do pipeline: mutação recompila o crate uma vez por mutante, e no runner isso eram dezenas de minutos por push, num passo que ninguém acompanha enquanto espera. O teto continua em .mutants-teto, versionado -- a regra não afrouxou, mudou de lugar. É de longe a etapa mais lenta; para pular só ela:

PRE_COMMIT_SEM_MUTACAO=1 git commit ...

Para pular tudo, git commit --no-verify. Um hook que não se pode pular é um hook que todo mundo desativa.

Licença

GPL-3.0-or-later. Veja LICENSE.