# Contributing Thanks for improving Ehwrj. ## Ground Rules - Keep the project limited to the benign War Thunder local map companion scope. - Do not add clipboard listeners, startup persistence, PE/ZIP mutation, credential collection, or external network reporting. - Keep local API traffic restricted to loopback addresses. - Put reusable parsing, projection, and tracking logic in `Ehwrj.Core`. - Keep Avalonia UI, overlay windows, and platform interop in `Ehwrj.App`. - Add or update tests when parser, coordinate, or tracking behavior changes. ## Local Workflow On Ubuntu, bootstrap dependencies and run the full verification/publish pipeline: ```bash scripts/bootstrap-ubuntu.sh ``` For an already prepared environment: ```bash dotnet restore Ehwrj.sln dotnet format Ehwrj.sln --no-restore --verify-no-changes --verbosity minimal dotnet build Ehwrj.sln -c Release dotnet run --project tests/Ehwrj.Tests/Ehwrj.Tests.csproj -c Release --no-build scripts/verify-safety.sh ``` To develop the UI without War Thunder: ```bash scripts/run-local-api-stub.sh ``` To capture and replay a real local API session: ```bash scripts/capture-local-api.sh captures/my-session scripts/validate-capture.sh captures/my-session scripts/run-local-api-stub.sh 8111 captures/my-session ``` To publish a Windows x64 build from Linux: ```bash scripts/publish-win-x64.sh ``` ## Review Checklist - Build succeeds with zero warnings. - Tests pass. - New network code is justified and loopback-only unless explicitly documented. - UI controls remain dense, readable, and focused on operating the map/overlay. - Security boundaries in `SECURITY.md` are preserved.