Repository navigation
Pantry Host 0.4.1
The community feed at feed.pantryhost.app had been silently stale since June 22: the firehose websocket would die without an error and nothing restarted it, while /health kept reporting ok. Three weeks of exchange.recipe.* publishes never entered the feed. 0.4.1 makes the indexer self-healing and recovers what was missed.
🔧 Feed indexer reliability (#34)
- Watchdog reconnect — a healthy relay tail never goes quiet, so 90 seconds without an event now triggers a cursor save + reconnect, retried on a 30-second tick forever.
- Honest
/health— reportssecondsSinceLastEventand returns 500stalledwhen the stream is quiet, so Fly's health check surfaces a wedge instead of masking it. - Cursor actually persisted on shutdown — both signal handlers claimed to save the cursor but never did; the last seen
seqis now saved on SIGINT/SIGTERM and before every watchdog reconnect. POST /api/backfill?did=…— on-demand recovery: pulls a publisher'sexchange.recipe.*records straight from their PDS and indexes them, for records published while the firehose was down. Per-DID 60s cooldown; can only index records that already exist on the DID's own PDS.- Fixes a latent
ReferenceErrorin the identity-event handler that rejected on every handle-change event on the network.
Deployed to production; records published during the outage have been backfilled.
📣 Also in this release
- Marketing: refined Raspberry Pi self-hosting copy; fixed a stale Postgres reference in the Nutrition section; AT Protocol publish milestone re-targeted to v0.5.
Follow-up queued: bump @atproto/sync (0.1.0 logs parse errors on some newer relay frames — skipped, non-fatal).
🤖 Generated with Claude Code