The 184 ignored Rust E2E tests in sprout-test-client were never run in
CI — the relay only got exercised indirectly through Playwright. This
adds a dedicated relay-e2e job and shared infra script so relay protocol
correctness is tested directly.
Changes:
- scripts/start-relay-for-tests.sh: shared script that starts docker
compose services, waits for health, applies schema, builds and starts
the relay, and polls readiness. Used by both the new relay-e2e job and
the refactored desktop-e2e-integration job.
- .github/workflows/ci.yml: new relay-e2e job (triggers on crates/**
changes, ~5 min) that runs all ignored E2E tests against the relay.
desktop-e2e-integration refactored to use the shared script instead of
inline infra setup.
- crates/sprout-test-client/tests/e2e_persona.rs: 11 new E2E tests for
kind:30175 persona events covering publish+query, NIP-33 replacement
semantics, d-tag validation (empty, missing, too long, uppercase,
special chars, underscore start), valid slug acceptance, and multiple
personas per author.
Co-authored-by: Will Pfleger <pfleger.will@gmail.com>
Signed-off-by: Will Pfleger <pfleger.will@gmail.com>
## Summary
- Activate lefthook pre-commit and pre-push hooks that have existed in `lefthook.yml` since the initial desktop app but were never wired up.
- Add `just hooks` recipe: sets `core.hooksPath = .hooks` and runs `lefthook install --force` to generate hook scripts.
- Wire hook installation into `scripts/dev-setup.sh` so hooks activate automatically on `just setup`.
- Enable `parallel: true` for pre-commit hooks (pre-push already had it) — all 5 format/lint checks run simultaneously.
- Add `just mobile-fmt` recipe (`dart format .`) and `just fmt-all` recipe (Rust root + Tauri Rust + Dart) as one-shot formatters.
- `.hooks/` is gitignored since lefthook generates machine-specific scripts.
- Update `AGENTS.md`: document pre-commit/pre-push hooks in Quality Gates, add `just fmt-all` and `just hooks` usage, upgrade worktree fmt gotcha from CI note to commit blocker, add `just mobile-fmt` to mobile commands; also backfill CLI-first updates (`SPROUT_AUTH_TAG`, complete exit codes, `--format compact` flag position, two new gotchas).
All hook commands delegate to `just` recipes as the single source of truth.