Files
mudmouth/docs/development.md
T
pleb 266483f3cf
CI / macos-latest (push) Has been cancelled
CI / ubuntu-latest (push) Has been cancelled
CI / windows-latest (push) Has been cancelled
Prepare v0.0.2 pre-release
2026-07-21 10:27:02 -07:00

2.1 KiB

Development and build notes

Local development

Mudmouth requires Rust stable. On NixOS, the included shell also provides the ALSA development metadata used by the Linux audio backend:

nix-shell

Run the normal validation suite before submitting a change:

cargo fmt --check
cargo clippy --all-targets -- -D warnings
cargo test
cargo build --release

The parser tests cover the observed log formats, including NPC dialogue, channel-chat exclusion, zone events, normalization, persistent/random speaker voice policies, log truncation, and first-run log discovery.

Running locally

Start the local Kokoro FastAPI service when necessary, then pass an EverQuest log directly:

doas systemctl start podman-kokoro-fastapi.service
cargo run --release -- --log "$HOME/Games/EverQuestLegends/Logs/eqlog_Pleb_oggok.txt"

Starting without a log path opens first-time setup. Mudmouth scans common Steam and Daybreak install folders for eqlog_*.txt files and lets you choose a character; if it finds none, enter the EverQuest game directory. Use [r] to rescan after enabling /log on in EverQuest. You can also change the log path and Kokoro endpoint from Settings:

cargo run --release
cargo run --release -- --kokoro-url http://127.0.0.1:8880

Release builds

Build Linux and Windows from an x86_64 Linux builder with release.nix. Build macOS on a native x86_64 macOS runner, where Apple's SDK is available. The CI workflow performs these native builds on every push and retains their binaries as build artifacts. Package the three binaries with:

nix-build release.nix -A linux -o result-linux
nix-build release.nix -A windows -o result-windows
# On x86_64 macOS:
nix-build release.nix -A macos -o result-macos
./scripts/package-release.sh \
  --linux result-linux/bin/mudmouth \
  --macos result-macos/bin/mudmouth \
  --windows result-windows/bin/mudmouth.exe

The packager writes platform-qualified archives and SHA256SUMS.txt to dist/. scripts/publish-release.sh uploads those exact assets as a Gitea pre-release after the worktree is committed and clean.