.PHONY: build test fmt install package-release publish-release bench-report bench-local bench-local-json bench-docker-ssh bench-docker-mosh fuzz-smoke fuzz-deep soak-local tui-harness

build:
	cargo build --release

test:
	cargo test

fmt:
	cargo fmt

install:
	sh install.sh --from-current

package-release:
	sh scripts/package-release.sh

publish-release:
	sh scripts/publish-gitea-release.sh

bench-report:
	sh scripts/bench-report.sh

# Safe, self-contained local benchmark matrix (native cold auth, cached attach
# ticket, local-auth) on a throwaway server bound to 127.0.0.1 on a free port in
# a temp HOME. Never touches the production server or UDP port 50000.
bench-local:
	sh scripts/bench-local.sh

# Same matrix, machine-readable JSON output (one object per metric with raw
# samples). Useful for publishing or regression tracking.
bench-local-json:
	DOSH_BENCH_JSON=1 sh scripts/bench-local.sh

bench-docker-ssh:
	sh scripts/ci-docker-ssh-bench.sh

bench-docker-mosh:
	DOSH_BENCH_INCLUDE_MOSH=1 sh scripts/ci-docker-ssh-bench.sh

fuzz-smoke:
	sh scripts/fuzz-run.sh 20

# Longer pre-launch fuzz pass. Override with DOSH_FUZZ_SECONDS=NN.
fuzz-deep:
	DOSH_FUZZ_SECONDS=$${DOSH_FUZZ_SECONDS:-300} sh scripts/fuzz-run.sh

tui-harness:
	sh scripts/tui-harness.sh

# 30-minute launch soak by default. Override with DOSH_SOAK_SECONDS=NN.
soak-local:
	DOSH_SOAK_SECONDS=$${DOSH_SOAK_SECONDS:-1800} cargo test --test integration_smoke sleep_roaming_soak_30m -- --ignored --nocapture
