PackageTrack
Sign in Get early access

github.com/hatchet-dev/hatchet

v0.104.7 #518 most downloaded on Go modules hatchet-dev/hatchet

What this package is like to depend on

Last release 2 days ago

22 Aug 2026

Ships on a steady schedule

a new release about every 8 days

Some releases are documented

notes for 324 of 939 stable releases

Nothing withdrawn

no release was ever pulled

3 years old

2241 releases · first in 2023

1108 releases in the last 12 months

see the full history below

Release timeline

2241 releases · Jul 2025 to Aug 2026
2026
Release Pre-release 1041 older releases not drawn

Releases

latest 60 of 2241
  1. v0.104.8-0.20260822020104-e95fdde62099 22 Aug 2026 pre-release

    Nothing published for this version

  2. v0.104.7 21 Aug 2026
    Release notes
    • fix(engine): isolate durable user events by scope

    • ci: retrigger commitlint after PR title fix

    Co-authored-by: Cursor [email protected]

    • test: regression test

    • fix: improve test

    • refactor: simplify lookback query

    • chore: rm useless test

    • fix: simplify diff more

    • fix: unwind

    • fix: nil uuid issue

    • fix: improve query to use index + pk

    • chore: gen

    • refactor: simplify test

    • fix: remove another inlined query

    • fix: remove the rest of the raw sql

    • chore: lint


    Co-authored-by: Cursor [email protected]
    Co-authored-by: mrkaye97 [email protected]

    Open source →
  3. v0.104.6 21 Aug 2026
    Release notes
    • test: regression test

    • chore: add fixme

    • fix: dag spawn bug

    • test: add unit test for child keys

    • fix: fixme

    • fix: couple more small issues, adding more tests

    • ci: run with entitlement

    • chore: lint

    Open source →
  4. v0.104.5 21 Aug 2026
    Release notes
    • Scope consent defaults to the visitor's region on docs and the app

    Both properties asked every visitor for consent regardless of where they
    were, so anyone outside the EEA who never clicked the banner was counted
    cookielessly — a measurement loss rather than a privacy win, given that is
    most of the traffic.

    Defaults are now denied in the EEA, the UK and Switzerland and granted
    elsewhere, with an explicit choice always winning. The docs site resolves
    the country in proxy.ts from x-vercel-ip-country and publishes it as
    ht_region on .hatchet.run.

    cloud.hatchet.run cannot resolve a country of its own — it sits behind no
    edge that provides one — so it reads that cookie and falls back to
    "restricted" when it is absent, which is exactly how it behaved before
    regions existed. A miss is never a regression, only an unrealised gain.

    The stored choice moves to an ht_consent cookie on the same shared domain,
    so one decision now covers hatchet.run, docs.hatchet.run and
    cloud.hatchet.run instead of each origin asking separately. The docs banner
    previously wrote three overlapping stores — a cookieConsent cookie dated
    to the year 9999, a localStorage key, and React state — which is collapsed
    to the one cookie, with the old values migrated on first load.

    Tenant-level analyticsOptOut still wins over everything in the app.

    Co-Authored-By: Claude Opus 5 (1M context) [email protected]
    Claude-Session: https://claude.ai/code/session_01PybVM54Fq1MSsNCLeknoBk

    • Record the campaign that produced a visit, gated on consent

    The ad click that brings someone to Hatchet almost never lands on the page
    they sign up from: they arrive on docs.hatchet.run from an ad, read for a
    while, and create an account on cloud.hatchet.run days later. Without
    somewhere durable to keep it, that click is unattributable by the time it
    matters.

    ht_attr holds it in a first-party cookie on .hatchet.run, which the
    control plane reads back at signup. The docs site writes it at the edge in
    proxy.ts, where the landing query string is; the app writes it at startup
    for anyone who lands there directly.

    It is a marketing cookie with a 90-day life, so it follows consent rather
    than being written on arrival: nothing for an unaccepted visitor in a
    consent-required region, nothing for a visit carrying no campaign at all,
    and a decline deletes it. First touch wins.

    Every field is re-validated server-side when it is read, so nothing here is
    trusted; this end only decides what to offer.

    Co-Authored-By: Claude Opus 5 (1M context) [email protected]
    Claude-Session: https://claude.ai/code/session_01PybVM54Fq1MSsNCLeknoBk

    • Stop capturing attribution in the app; keep it honouring consent

    Two separate things were bundled here and only one earns its place.

    The attribution capture goes. Every ad lands on hatchet.run, so a visitor
    arriving directly at cloud.hatchet.run with a campaign on the URL is a case
    that barely exists, and when it does the marketing site and the docs have
    already written the shared cookie. The app was writing a cookie nobody was
    waiting for.

    Reading consent stays, because without it the shared decision is a fiction.
    Today the app calls opt_in_capturing() unconditionally once a tenant loads,
    so a user who clicks Decline on hatchet.run and then signs up is opted back
    in on cloud.hatchet.run. An ht_consent cookie on .hatchet.run is only
    worth having if the product actually reads it.

    That is not really about analytics on the login page, which is what the
    unauthenticated surface here amounts to. It is about product analytics for
    signed-in users respecting a choice made somewhere else.

    Co-Authored-By: Claude Opus 5 (1M context) [email protected]
    Claude-Session: https://claude.ai/code/session_01PybVM54Fq1MSsNCLeknoBk


    Co-authored-by: Claude Opus 5 (1M context) [email protected]

    Open source →
  5. v0.104.4 21 Aug 2026
    Release notes

    fix: create synthetic olap dags on both trigger paths (#4767)

    Open source →
  6. v0.104.3 20 Aug 2026
    Release notes
    • refactor: use cache for step lookup

    • fix: limit update churn on workers

    • feat: add cache for step match conditions

    • feat: report started async

    • fix: avoid race

    Open source →
  7. v0.104.2 20 Aug 2026
    Release notes

    fix(engine): duplicate event-to-run records, increase durable dag slo…

    Open source →
  8. v0.104.1 20 Aug 2026
    Release notes

    fix(engine): duplicate event-to-run records, increase durable dag slo…

    Open source →
  9. v0.104.1-0.20260820155532-d0738e9ada25 20 Aug 2026 pre-release

    Nothing published for this version

  10. v0.104.1-0.20260820152526-ba1c568e54ac 20 Aug 2026 pre-release

    Nothing published for this version

  11. v0.104.1-0.20260820142609-11785b4b31d6 20 Aug 2026 pre-release

    Nothing published for this version

  12. v0.104.0 20 Aug 2026
    Release notes
    • feat: sql, move some logic over from my old branch

    • feat: call ensureDAGOperator on PutWorkflow so we know the operator is created

    • chore: gen

    • feat: first pass at operator implementation

    • feat: task repo wiring

    • feat: more initial wiring, still very buggy

    • feat: it sort of works?

    • fix: handle panic and shutdown / cancel

    • fix: get rid of the need to flatten workflow tasks into standalones

    • feat: pass user message through to fe

    • feat: add TriggerDagStep method on the dispatcher

    • feat: triggerDagStep wrapper

    • chore: lint, internals

    • feat: start wiring up the olap side

    • feat: map dag tasks to their parents so we get proper nesting

    • fix: handle expansion in side panel

    • Revert "fix: handle expansion in side panel"

    This reverts commit abc0dc7.

    • fix: render minimap correctly

    • feat: task events on the dag view

    • chore: rm unused proto change

    • chore: gen

    • feat: pass IsSkipped and IsCancelled initial states through into trigger

    • feat: pass params through

    • feat: wire conditions through to triggerStep

    • feat: more wiring

    • feat: conditions

    • feat: add additional cancellation test

    • fix: naming

    • fix: return output as expected in current impl

    • feat: env var to control operator use

    • fix: check for operator enabled on workflow registration

    • fix: backwards compat logic

    • fix: some typing issues

    • refactor: clean up some cel logic and other internals, naming, etc.

    • refactor: more naming fixes

    • refactor: cel logic

    • refactor: clean up a bit more

    • feat: add isUsingDagOperator to WorkflowVersion

    • fix: checksum / version creation logic

    • fix: trigger path fix for recursive explosion caused by env var toggle

    • fix: handle outputs properly on the dispatcher

    • chore: gen

    • feat: filter orchestrator tasks out of workflow run id fetch

    • fix: simplify / correct fetch query

    • feat: lookup query for orchestrator tasks

    • feat: finish wiring up runs list api

    • fix: ordering

    • fix: count query

    • fix: workflow input bug

    • chore: migration version

    • feat: add a bunch of condition tests to cover additional cases

    • fix: update dag logic to match new tests

    • fix: bad merge

    • fix: output on skip

    • fix: make getdetails endpoint work properly

    • fix: additional meta propagation, failure handling

    • fix: concurrency (workflow level), desired label propagation

    • fix: propagate labels

    • fix: couple more issues

    • fix: migration version

    • fix: api for dag

    • fix: ignore spans for orchestrator tasks

    • feat: add orchestrator flag to task meta query

    • fix: allow or groups to contain parent conditions

    • chore: remove annoying cron

    • feat: add col to v1_task to track if task belongs to a durable dag

    • feat: use new col on olap side

    • fix: tie workflow run ids back to dag parent

    • fix: otel spans

    • fix: couple more bugs

    • fix: name

    • feat: parse dag shape to json graph so we can read it in other places

    • feat: wire up dag shape logic

    • fix: clean up some tests

    • fix: replays

    • feat: render dag even when empty

    • feat: more slice helpers

    • fix: improve error handling a bit

    • feat: fable one-shot rewire to spoof the OLAP DAGs

    • chore: gen

    • fix: propagate metadata

    • fix: parent propagation

    • fix: retry config, timeout config

    • fix: handle replay / failure bug

    • fix: clean up detail getter test

    • chore: rm comment

    • fix: conflicts

    • fix: bug in the disable path where durable task ends up hanging

    • chore: gen

    • chore: gen

    • chore: gen

    • chore: lint

    • feat: boolean cel helper

    • refactor: use bool evaluator

    • fix: memory improvements on the dag operator

    • fix: memory use

    • fix: skip if all parents are skipped

    • chore: migration ver

    • feat: use entitlements to check if operator is enabled or not

    • fix: replay children properly

    • fix: idempotency tests

    • chore: gen

    • fix: cancellation behavior

    • chore: fix migration ver

    • fix: broken tests, exports, eviction policy

    • fix: deprecation warnings

    • chore: gen a whole bunch

    • chore: lint

    • fix: test?

    • chore: migration

    • fix: deadlock on req/resp channels

    • fix: bunch more bugs / issues

    • fix: version

    • feat: whole bunch of unit tests for the operator

    • test: consolidate, add a bit of coverage

    • chore: lint

    • chore: remove some unused stuff

    • chore: cleanup

    • chore: go deps

    • fix: prop

    • fix: migration

    • fix

    • see if this fixes flake

    • fix for durable task request

    • generate


    Co-authored-by: Julius Park [email protected]

    Open source →
  13. v0.103.2 19 Aug 2026

    Nothing published for this version

  14. v0.103.1 19 Aug 2026

    Nothing published for this version

  15. v0.103.0 19 Aug 2026

    Nothing published for this version

  16. v0.102.5 19 Aug 2026

    Nothing published for this version

  17. v0.102.4 19 Aug 2026

    Nothing published for this version

  18. v0.102.3 19 Aug 2026

    Nothing published for this version

  19. v0.102.2 19 Aug 2026

    Nothing published for this version

  20. v0.102.1 18 Aug 2026

    Nothing published for this version

  21. v0.102.0 18 Aug 2026

    Nothing published for this version

  22. v0.101.33-0.20260818193536-933de4252c80 18 Aug 2026 pre-release

    Nothing published for this version

  23. v0.101.32 18 Aug 2026

    Nothing published for this version

  24. v0.101.31 18 Aug 2026

    Nothing published for this version

  25. v0.101.30 18 Aug 2026

    Nothing published for this version

  26. v0.101.29 18 Aug 2026

    Nothing published for this version

  27. v0.101.28 17 Aug 2026

    Nothing published for this version

  28. v0.101.28-alpha.1 18 Aug 2026 pre-release

    Nothing published for this version

  29. v0.101.28-alpha.0 18 Aug 2026 pre-release

    Nothing published for this version

  30. v0.101.28-0.20260817204501-ae56104610bd 17 Aug 2026 pre-release

    Nothing published for this version

  31. v0.101.27 17 Aug 2026
    Release notes

    Hatchet v0.101.27 launches idempotency keys and batch tasks. It is otherwise a performance and operations release, adding a read-only VIEWER role, allowing the dashboard to be served from a subpath, alongside substantial durable task performance work, and new queue depth metrics.

    Highlights

    • Launching Idempotency Keys and Batch Tasks. Batch tasks aggregate multiple tasks and spawn them as a single batch, reducing API calls and downstream resource usage. See documentation on Idempotency and Batch Tasks.
    • The dashboard can be served from a subpath rather than the domain root, via BASE_PATH on the static file server or LITE_FRONTEND_BASE_PATH on hatchet-lite.
    • A new read-only VIEWER tenant member role that cannot modify anything.
    • hatchet_tenant_queued_to_assigned and hatchet_tenant_queued_to_assigned_time_seconds are now also exported broken down by workflow name, and hatchet_tenant_queue_size carries a workflow_name label.
    • A new hatchet_tenant_additional_metadata_queue_size gauge reports queue depth per additional metadata key-value pair. Only keys prefixed with prom_ are exported, so opting a key in is explicit and cardinality stays bounded. An item counts towards every metadata key it carries, so series should not be summed across keys.
    • Per-tenant operation timers are now jittered across their full interval on startup, and persisted intervals are loaded lazily. This avoids query storms when controllers restart on deployments with many tenants. The idempotency lookup is also skipped when a task carries no keys.
    • /api/v1/stable/tasks/{task}/task-events endpoint no longer ignores its limit and offset parameters.
    • Tasks with equal worker label affinity are now round-robined across the tied workers instead of packing onto one worker until its slots fill.
    • The Go SDK warns when a child workflow result is still pending after its parent task context is cancelled.
    • Dashboard: onboarding use case selection, wider labels in the trace view, and a restored domain redirect modal.
    Open source →
  32. v0.101.27-alpha.1 18 Aug 2026 pre-release

    Nothing published for this version

  33. v0.101.27-alpha.0 17 Aug 2026 pre-release

    Nothing published for this version

  34. v0.101.27-0.20260818191821-9ed6022de006 18 Aug 2026 pre-release

    Nothing published for this version

  35. v0.101.27-0.20260817185856-724c24c058f1 17 Aug 2026 pre-release

    Nothing published for this version

  36. v0.101.27-0.20260817183258-cc32263939c4 17 Aug 2026 pre-release

    Nothing published for this version

  37. v0.101.27-0.20260817173121-3351a1883f1c 17 Aug 2026 pre-release

    Nothing published for this version

  38. v0.101.26 17 Aug 2026

    Nothing published for this version

  39. v0.101.26-0.20260817163745-01aa5d57d749 17 Aug 2026 pre-release

    Nothing published for this version

  40. v0.101.25 17 Aug 2026

    Nothing published for this version

  41. v0.101.24 17 Aug 2026

    Nothing published for this version

  42. v0.101.23 14 Aug 2026

    Nothing published for this version

  43. v0.101.22 14 Aug 2026

    Nothing published for this version

  44. v0.101.21 14 Aug 2026

    Nothing published for this version

  45. v0.101.20 13 Aug 2026

    Nothing published for this version

  46. v0.101.19 12 Aug 2026

    Nothing published for this version

  47. v0.101.19-0.20260812161602-0ebe680e5a9f 12 Aug 2026 pre-release

    Nothing published for this version

  48. v0.101.19-0.20260812145555-30349109f7e2 12 Aug 2026 pre-release

    Nothing published for this version

  49. v0.101.19-0.20260812131502-6605f6733208 12 Aug 2026 pre-release

    Nothing published for this version

  50. v0.101.19-0.20260811200937-67e03eac4472 11 Aug 2026 pre-release

    Nothing published for this version

  51. v0.101.19-0.20260811154259-9f70725206aa 11 Aug 2026 pre-release

    Nothing published for this version

  52. v0.101.18 11 Aug 2026

    Nothing published for this version

  53. v0.101.17 11 Aug 2026

    Nothing published for this version

  54. v0.101.16 10 Aug 2026

    Nothing published for this version

  55. v0.101.15 10 Aug 2026

    Nothing published for this version

  56. v0.101.14 10 Aug 2026

    Nothing published for this version

  57. v0.101.13 09 Aug 2026

    Nothing published for this version

  58. v0.101.12 09 Aug 2026

    Nothing published for this version

  59. v0.101.11 07 Aug 2026

    Nothing published for this version

  60. v0.101.10 07 Aug 2026

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive