FileMill v0.1.1
Hardening and observability release, on top of the working v0.1.0 email pipeline.
New
--version/-vflag — prints the build version (overridable at build time via-ldflags "-X main.version=..."). The version now also appears in the webhook startup line, so you can tell at a glance which binary is running.- Configurable send timeout —
send_timeout_secondsinemail.yaml(default 30s).
Reliability
- Outbound Mailgun send now uses a bounded HTTP client and a request
context, so a hung connection can't stall the delivery loop forever and shutdown can abort an in-flight send. - Mailgun's error-response body is included in send errors (the real reason a bare status code hides).
- The webhook server shuts down gracefully on exit (10s drain) instead of cutting in-flight requests; safe because intake is idempotent.
- Replies no longer emit a malformed
In-Reply-Toheader when inbound mail had noMessage-Id.
Internal
- Job-status strings replaced with
store.Status*constants across the store, delivery loop, and job runner.
Verified
go vet/go test ./...clean; live workerlist round-trip still passes; the running instance confirmed on real hardware.
Known gaps (tracked)
- Catch up on missed mail at startup — issue #2.
- Self-restart on crash, external heartbeat, error alerting to support@ — on the backlog.