Skip to content

v0.8.0

Latest

Choose a tag to compare

@KyleTryon KyleTryon released this 20 Sep 02:07
e0e4cc5

Highlights

  • Fix stale feeds caused by failing sources monopolizing fetch batches. Batches now advance every minute, with refresh intervals and retry backoff applied per source.
  • Add concurrent-fetch leases, accurate ingestion failure reporting, bounded feed responses, and Sentry ingestion-health alerts.
  • Show last successful fetch, failure details, and retry timing in feed cards.
  • Use stable article pagination and improve loading, retry, filtering, and read/saved behavior.
  • Harden authentication, session revocation, outbound requests, and telemetry. Update dependencies and consolidate shared logic.

Breaking changes

  • Node.js 24+ and pnpm 12.4.2 are required for source installations.
  • Article pagination uses object cursors instead of numeric cursors. Deploy matching API/frontend versions and reload existing browser tabs after deployment.
  • Feed destinations must be public HTTP(S) addresses; responses over 5 MiB are rejected.
  • Node ignores forwarded client IP headers unless TRUST_PROXY_HEADERS=true. Enable only behind a trusted proxy that overwrites those headers.

Migration and deployment

Back up the production database before rollout. Apply all pending migrations, including 0012 (authentication rate limits), 0013 (feed attempt timestamps/index), and 0014 (feed leases/retries/health). These migrations are additive; existing articles and subscriptions are preserved.

Publishing this release triggers Cloudflare deployment: migrations, then API, then frontend. Node/Docker startup applies migrations automatically. Docker images are published separately; self-hosted installations must pull and deploy matching images.

Verify login, article pagination, and feed backlog recovery after deployment. Upstream articles already removed from publisher feeds cannot be recovered by the scheduling fix.

See the release checklist for backup, rollout, verification, and rollback instructions.

Validation

1,585 tests passed with five existing skips. Clean-source lint, formatting, type checking, and production builds passed. PR CI and post-merge Docker/Tricorder checks passed.

Includes #142. Release target: e0e4cc5ae6bcd0d61d32ed774350b7810ede138d.