# Contributing to zig-chime Pull requests and issues go to the Tangled mirror, . ## Before you change anything - Read `GLOSSARY.md` and use its words. A Sound is not a clip and a Player is not a device; if a change needs a new term, add it there. - Read `docs/adr/`. A decision recorded there is deliberate; a change that reverses one should add an ADR saying why. ## What a change needs Everything runs through the Nix flake, so the toolchain is the one CI uses: ```console $ nix develop -c zig fmt --exclude zig-pkg --check . $ nix develop -c reuse lint $ nix develop -c zig build test --summary all $ nix develop -c zig build check --summary all $ nix develop -c zig build test -Dtarget=x86_64-windows -fwine ``` Wine wants a 64-bit prefix; if `~/.wine` is a 32-bit one, point `WINEPREFIX` at an empty directory. - **A change to `build.zig.zon` regenerates `build.zig.zon.nix`**, which is what CI fetches the dependencies from: ```console $ nix develop -c zon2nix --17 --nix=build.zig.zon.nix build.zig.zon ``` - **Tests must not need a sound device.** CI has neither PipeWire nor a Windows audio endpoint, so behavior is tested against the null backend, which records what it was asked to play. - **Every file carries an SPDX header**, or is covered in `REUSE.toml` if it cannot hold one. New code is MIT.