Skip to content

Pantry Host 0.4.1

Choose a tag to compare

@jpdevries jpdevries released this 12 Jul 18:57
· 38 commits to main since this release

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 — reports secondsSinceLastEvent and returns 500 stalled when 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 seq is now saved on SIGINT/SIGTERM and before every watchdog reconnect.
  • POST /api/backfill?did=… — on-demand recovery: pulls a publisher's exchange.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 ReferenceError in 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