Borrowed code. Honest receipts.

All 15 files in src/ninjam/ match drawmeanelephant/ninjam, agent/zclient, at merged commit ae9a4d4325addd42d844047c080b9e1c0d6080d4 (upstream PR #38). Downstream PR #61 completed the reconciliation.

The Ogg/Vorbis trees, generated Ogg type header, miniaudio/stb sources and shims, and null-audio ABI test also match. The test's location differs (src/audio_shim_test.c here, zclient/tests/audio_shim_test.c upstream), not its contents.

What stays local

The shared engine provides source-fill, interval-selection, raw-chat, and stop callbacks. It owns transport framing, encoding, monotonic identity, clock discipline, reconnect behavior, and drop accounting.

The app owns synthesis, phrase banks, patterns, modes, chat vocabulary, configuration, and stop wiring. App-specific integration tests live outside the vendored directory.

Send shared changes upstream first. Do not quietly fix a vendored file and leave the provenance claiming it is identical.

Dependency versions

Dependency Version / purpose
libogg 1.3.6, Ogg container
libvorbis 1.3.7, encode
stb_vorbis Pinned source, decode
miniaudio 0.11.25, playback-only audition

The source trees retain their license notices. Native audio frameworks are system dependencies; “no npm” does not mean “no dependencies.”

The exact subset comparison and third-party provenance live in vendor/README.md.

Docs compiler is a separate pin

This site uses Boris commit 2eb2c915b37ff0eecd7ea0778d6e481a8aea60c7, with its own content-hashed dependencies. It is a build-time tool, not a new dependency of the fart app executables.

The local theme adapts Boris's documentation shell and first-party inline search. Its MIT notice ships with the static theme assets.