Skip to content
AbloAblo
Esc
navigateopen⌘Jpreview
On this page

v0.27.0

Minor Changes

  • Claims can now be held for long-running work by heartbeating — on both transports. A claim’s TTL is crash cleanup, not a work estimate; work that outlives it (a 30-minute report, a long agent run) keeps its lease by beating. claim({ heartbeat: true }) beats automatically until release; held.heartbeat() beats by hand. A lapsed lease answers the next beat with AbloClaimedError (claim_lost) — for a socketless worker, the failed beat is the loss notification, and any write attempted under the old lease is independently rejected by its readAt guard.

  • Beats carry progress and pressure. heartbeat({ details }) stores lightweight progress as the claim’s peer-visible meta.progress (last beat wins, via claim.state); every beat’s answer reports queueDepth — how many participants wait in line behind the lease — observable per auto-beat with the new onHeartbeat claim option.

  • ablo.claims.heartbeatAll({ ttl }) extends every lease the credential holds in one request (POST /api/v1/claims/heartbeat) — the stateless twin of the WebSocket keepalive, for workers holding many rows.

  • Keepalive renewals extend but never shorten a lease, so an explicit work-duration ttl now survives pings and brief reconnects instead of collapsing to the liveness window.

  • README. The quick start leads with a runnable example, and a new Background workers section shows the enqueue-on-your-own-queue / heartbeat-the-claim pattern end to end.

Was this page helpful?