docs(plan): mark bonjour discovery gap completed

This commit is contained in:
William Valentin
2026-02-16 01:49:05 -08:00
parent 323bef0526
commit 113751ef1b
2 changed files with 64 additions and 2 deletions
@@ -0,0 +1,40 @@
# Bonjour/mDNS Discovery Checklist
Date: 2026-02-16
Status: completed
## Scope
- Add optional LAN service advertisement/discovery for the Flynn gateway.
- Keep discovery disabled by default and safe for production deployments.
## Completed
- Added `server.discovery` config schema in `src/config/schema.ts`:
- `enabled` (default `false`)
- `service_name` (default `flynn-gateway`)
- `service_type` (default `_flynn._tcp`)
- `txt` (default `{}`)
- Added gateway discovery runtime in `src/gateway/discovery.ts`:
- starts mDNS advertisement via `avahi-publish-service` (Linux) with fallback to `dns-sd` (macOS)
- supports graceful shutdown (`SIGTERM` with fallback `SIGKILL`)
- Wired discovery into gateway lifecycle in `src/gateway/server.ts`:
- starts advertisement after gateway listen
- stops advertisement during shutdown
- injects non-secret TXT metadata (`instance`, `version`) plus optional config `txt`
- skips advertisement when bound to loopback (`server.localhost: true`)
- Wired config into gateway construction in `src/daemon/services.ts`.
- Updated docs:
- `README.md` with Bonjour/mDNS configuration and behavior notes
- `config/default.yaml` with discovery defaults and LAN safety comment
- Added tests:
- `src/config/schema.test.ts` (discovery defaults + custom config)
- `src/gateway/discovery.test.ts` (spawn path, fallback path, hard failure path)
- `src/gateway/server.discovery.test.ts` (gateway lifecycle start/stop + loopback skip)
## Tests
## Verification
- `pnpm test:run src/config/schema.test.ts src/gateway/discovery.test.ts src/gateway/server.discovery.test.ts`
- `pnpm typecheck`