Repository navigation
v1.0.0 β the machine gun
leadhound is now working as it was meant to work: the gig drops, your phone buzzes, you fire. 1.0 because the missing pieces were speed and survival, not features.
π‘ Freelancer webhook β seconds, not polls
Register the receiver URL + signing secret in the developer portal and new projects flow straight into the pipeline: scored, drafted, pushed, per user. HMAC-SHA256 verified against the raw body (constant-time, all common header variants), guid dedupe so the poller never double-pushes. One-click secret rotation β the old secret dies instantly, the new one is shown exactly once. Live event counters on the π‘ card and in /api/radar.
β° Downtime catch-up
Sleep 8 hours and the hound wakes up and catches up: if the last sweep is over an hour old at boot, the first sweep backfills the blackout and flags everything you missed with an amber β° late chip. Timezone-aware comparison β no format lies.
π Radar heartbeat + π watchdog
The poller lands a heartbeat after every sweep; thread_alive checks the actual thread, and stalled fires when the heartbeat goes quiet for 3x the interval. /api/health is real vitals now (db, uptime, poller, listeners β aggregate only). A watchdog supervisor relaunches dead poller threads with exponential backoff (15-min cap), respawns dead pocket bots from the db arm-state, and respects shutdown above all.
β‘ Polite fast lane
RemoteOK / Remotive / WWR / HN / custom RSS now poll on a 2-minute floor, paying their way with ETag + Last-Modified conditional GET β an unchanged feed costs a 304 and nothing else. Keys/cookie/search connectors keep their 5-minute floor (Connector.min_poll is the per-source truth), and Β±20% jitter keeps a fleet of hounds from stamping a source in unison.
π€« /ping heartbeat board
One command, all of ops: β healthy sources with cadence + tick age, π‘ overdue or never swept, β erroring with the reason, the radar thread's own pulse, and the webhook armed state with rejected-signature warnings.
Install: pipx install leadhound or docker compose up β then leadhound web, connect sources, arm the pocket sniper.
5 assets: wheel, sdist, Windows / macOS / Linux binaries. 380+ tests, ruff clean, CI green on every commit.