Commit Graph

736 Commits

Author SHA1 Message Date
abelanger5
46c4297b32 feat: add callback support for tenant and tenant member updates (#3201)
* feat: add callback support for tenant and tenant member updates

* add callbacks into tenant_invite.go
2026-03-07 17:31:44 -05:00
matt
46b3041eb1 Fix: Go unexported type (#3160)
* fix: internal types

* fix: rm unused helper
2026-03-04 17:40:13 -05:00
matt
6c29e48204 Feat: Dynamic worker label assign (#3137)
* feat: initial wiring work on desired labels

* feat: initial wiring

* chore: gen python

* fix: use the whole desired label thing instead

* fix: more wiring, improve types

* fix: sql type

* fix: len check

* chore: gen python

* fix: initial plural label work

* fix: store the labels properly on the task

* fix: skip cache on override

* fix: bug

* fix: scoping bug whoops

* chore: lint

* fix: send labels back over the api correctly

* feat: python test

* fix: lint

* fix: comment

* fix: override

* fix: namespaces, ugh

* fix: no need for error here

* chore: version

* feat: ruby, go, ts

* feat: versions

* fix: appease the rubocop

* chore: lint

* chore: bundle install

* fix: tests

* chore: lint

* chore: lint more

* fix: ts test

* fix: rb

* chore: gen

* chore: reset gemfile

* chore: reset changelog

* fix: pgroup

* fix: tests, part i

* Revert "chore: reset changelog"

This reverts commit b63bf7d3e5.

* Revert "chore: reset gemfile"

This reverts commit bb848bb6f0.

* fix: go -> golang mapping hack

* fix: go enums

* fix: appease the cop

* fix: namespace

* chore: gen
2026-03-04 11:03:58 -05:00
Gabe Ruttner
c8f762c12e chore: simplify ruby e2e ci scripts (#3152)
* chore: simplify start script

* chore: log

* fix: log paths

* fix: race?

* fix: deadlock?

---------

Co-authored-by: mrkaye97 <mrkaye97@gmail.com>
2026-03-03 15:16:11 -08:00
Mohammed Nafees
e72051877e Enable loadtest with PgBouncer (#3143)
* enable loadtest with pgbouncer

* use default_query_exec_mode=cache_describe for pgbouncer

* increase threshold

* make sure no regression
2026-03-03 15:24:30 +01:00
Julius Park
5e4bb9d151 Add seconds granularity to cron jobs (#3136) 2026-03-02 18:07:15 -05:00
abelanger5
e9eb65d9a8 feat: user callback additional methods (#3057)
* add more opts to create user callback

* add session callbacks

* add more options to authenticate

* add full route info to routes map

* small refactor to reduce deps on session helpers
2026-03-02 16:25:41 -05:00
matt
deee6e213c fix: external ids (#3111) 2026-02-26 12:57:33 -05:00
Mohammed Nafees
ef2c01a499 Add ctx.WasSkipped helper to the Go SDK (#3094)
* introduce ctx.WasSkipped just like Py SDK

* fix lint and example
2026-02-26 17:56:45 +01:00
Mohammed Nafees
fa695fc8ca non blocking ctx.Log with meaningful retries (#3106) 2026-02-25 18:55:17 +01:00
matt
5e672d0514 [Go] Feat: Details Getter (#3105)
* feat: add details getter

* fix: naming

* fix: structs
2026-02-25 12:11:19 -05:00
Mohammed Nafees
f3ec9597a6 Add env vars for max conn lifetime and idle time for pgx (#3096)
* add env vars for max conn lifetime and idele time for pgx

* add doc
2026-02-24 21:54:09 +01:00
Mohammed Nafees
444a335c18 Fix cross-strategy slot contamination in chained concurrency gates (#3089)
* filter properly based on strategy ids

* remove remnants

* add concurency integration test

* more tests
2026-02-24 12:54:04 +01:00
Mohammed Nafees
44069cef89 make sure to use 60 seconds timeout for PutWorkflowVersion (#3085) 2026-02-23 16:20:31 +01:00
matt
df9e86081a Fix: Move event log to a tab on the task run detail (#3067)
* fix: separate tab for activity on run detail

* fix: output payload bug

* fix: couple more uuid bugs

* fix: set var

* fix: add event type check
2026-02-22 19:02:22 -08:00
abelanger5
73ef4747e7 feat: new search bar component (#2909)
* fix: compute payload size correctly for pg_notify

* refactor: pull search bar into its own component

* just use tab for autocomplete

* fix: log line typing

* Refactor Search Bar (#2964)

* Add empty search state

* V1 table layout logviewer

* Add temp hatchet-worker for testing

* Fix log css grid when expanded

* undo search notfound logic, needs API logic

* Rework workflow example

* use correct info color

* better table headers

* Add back ansi formatting

* Allow enter along with tab to traverse chips

* remove tutorial

* Add syntax color to search chips

* styling progress

* styling progress

* constrain width

* Add rel time

* Readd flag conditional

* remove hatchet-worker, feature flag, and cypress test

* remove tenant hook

---------

Co-authored-by: Alexander Belanger <alexander@hatchet.run>

* fix: remove ansi-to-html, review feedback

---------

Co-authored-by: Sebastian Graz <graz@live.se>
2026-02-17 20:47:20 -08:00
Gabe Ruttner
2fdc47a6af feat: multiple slot types (#2927)
* feat: adds support for multiple slot types, primarily motivated by durable slots

---------

Co-authored-by: mrkaye97 <mrkaye97@gmail.com>
2026-02-17 05:43:47 -08:00
Mohammed Nafees
eefbcdc532 Return event ID after successful webhook trigger (#3039)
* return webhook event ID on successful receive

* fix pytest

* err handling for json unmarshal

* if clause
2026-02-16 18:36:51 +01:00
Gabe Ruttner
7875d78057 Feat: Official Ruby SDK (#3004)
* feat: initial ruby sdk

* fix: run listener

* fix: scope

* feat: rest feature clients

* fix: bugs

* fix: concurrent register

* fix: tests and ergonomics

* docs: all of them

* chore: lint

* feat: add RBS

* feat: add GitHub Actions workflow for Ruby SDK with linting, testing, and publishing steps

* chore: lint

* refactor: simplify load path setup for Hatchet REST client and remove symlink creation

* fix: cert path

* fix: test

* fix: blocking

* fix: ensure Hatchet client is only initialized once across examples

* fix: tests

* remove: unused example

* fix: bubble up errors

* test: skip flaky for now

* remove: lifespans

* fix: durable context bugs

* fix: bulk replay

* fix: tests

* cleanup: generate tooling

* fix: integration test

* chore: lint

* release: 0.1.0

* chore: remove python comments

* refactor: remove OpenTelemetry configuration and related unused options

* fix: default no healthcheck

* chore: lockfile

* feat: register as ruby

* chore: lint

* chore: update py/ts apis to include ruby

* chore: docs pass

* chore: lint

* chore: generate

* chore: cleanup

* chore: generate examples

* tests: add e2e tests

* tests: cache examples dependencies

* fix: namespace

* fix: namespace

* fix: namespaces

* chore:lint

* fix: improve cancellation workflow polling logic and add error handling

* revert: py/ts versions
2026-02-15 14:32:15 -08:00
Mohammed Nafees
ff15f00c94 [hotfix] Corrected custom value meter for resource limit (#3021)
* fix cvm deducation

* switch clause

* add FIXME
2026-02-13 21:20:33 +01:00
Jishnu
9e0182ec77 feat: add python and typescript webhook client (#2959)
* feat: add python webhook client

* refactor: python webhook client, webhook tests

* add: ts webhook client, example

* remove unwanted assert

* refactor: webhook update eventkey optional

* fix lint

* bump version

* fix: webhooks.create args, webhook example

* fix: infer auth_type from auth payload python

* fix: infer auth type from payload ts

* remove auth type magic strings
2026-02-13 14:04:08 -05:00
Mohammed Nafees
40a1044b44 New UpdateLimits method for TenantResourceLimit table (#2895)
* new UpdateLimits method to tenant limits

* WIP: clean resource limits repo

* fmt changes and cvm needs to remain

* remove unnecessary metering logic

* updated openapi

* last fixes

* PR comments

* fixes

* default limits

* fix generate test

* fix lint
2026-02-13 18:01:46 +01:00
Mohammed Nafees
22fd98e828 More deprecation messages for older Go SDKs (#3006)
* add more deprecation messages to older Go SDKs

* more comments
2026-02-12 15:40:47 +01:00
Mohammed Nafees
64a85498f5 Truncate to first 10k characters of log line in Go SDK (#2998)
* truncate to 10k chars for Go SDK log

* use runes for character length comparison
2026-02-11 23:32:45 +01:00
abelanger5
851fbaf214 feat: reduced cold starts for new workers and queues (#2969)
* feat: reduced cold starts for new workers and queues

* address changes from pr review

* fix: data race

* set logs to debug on the harness

* debug for queue level as well

* debug lines for queuer

* fix: add queue notifier to v0 workflow registration

* revert: lease manager interval

* revert log level changes

* add more debug, revert reverts

* more debug

* add debug to lease manager

* do it, try it

* fix: call upsertQueue as part of workflow version put

* change log level to error again

* pr review changes
2026-02-11 13:12:10 -08:00
Mohammed Nafees
4fd7b94751 Add support for Svix webhooks (#2996)
* support Svix webhooks

* add migration

* use http status codes

* comment fix

* custom svix verification logic

* copilot comments

* copilot comments
2026-02-11 16:41:36 +01:00
Gabe Ruttner
6aff6b6f1f feat: log on delayed heartbeat (#2994)
* feat: log on delayed heartbeat

* don't log on first heartbeat

* fix: 1s
2026-02-11 06:33:51 -08:00
Greg Furman
80dc9786fd chore: run go-fmt (#2984) 2026-02-10 17:34:36 -05:00
Mohammed Nafees
5db655e9aa Do not replay invalid tasks (#2976)
* filter valid tasks when replaying

* renamings

* query optim

* slice len

* fix method signature

* PR comments

* rename var

* PR comments
2026-02-10 13:08:38 -05:00
Mohammed Nafees
8755cd5e8e Mark old v0 and generics-based v1 Go SDK methods as deprecated (#2962)
* add deprecation message to old Go SDK v0 and generics-based v1

* link to migration guide
2026-02-09 16:48:16 +01:00
Gabe Ruttner
4054d170d8 chore: proto naming conventions (#2913)
* fix: add type override in sqlc.yaml

* chore: gen sqlc

* chore: big find and replace

* chore: more

* fix: clean up bunch of outdated `.Valid` refs

* refactor: remove `sqlchelpers.uuidFromStr()` in favor of `uuid.MustParse()`

* refactor: remove uuidToStr

* fix: lint

* fix: use pointers for null uuids

* chore: clean up more null pointers

* chore: clean up a bunch more

* fix: couple more

* fix: some types on the api

* fix: incorrectly non-null param

* fix: more nullable params

* fix: more refs

* refactor: start replacing tenant id strings with uuids

* refactor: more tenant id uuid casting

* refactor: fix a bunch more

* refactor: more

* refactor: more

* refactor: is that all of them?!

* fix: panic

* fix: rm scans

* fix: unwind some broken things

* chore: tests

* fix: rebase issues

* fix: more tests

* fix: nil checks

* Refactor: Make all UUIDs into `uuid.UUID` (#2897)

* refactor: remove a bunch more string uuids

* refactor: pointers and lists

* refactor: fix all the refs

* refactor: fix a few more

* fix: config loader

* fix: revert some changes

* fix: tests

* fix: test

* chore: proto

* fix: durable listener

* fix: some more string types

* fix: python health worker sleep

* fix: remove a bunch of `MustParse`s from the various gRPC servers

* fix: rm more uuid.MustParse calls

* fix: rm mustparse from api

* fix: test

* fix: merge issues

* fix: handle a bunch more uses of `MustParse` everywhere

* fix: nil id for worker label

* fix: more casting in the oss

* fix: more id parsing

* fix: stringify jwt opt

* fix: couple more bugs in untyped calls

* fix: more types

* fix: broken test

* refactor: implement `GetKeyUuid`

* cleanup

* gen

* missed name

* slot naming consistency

* snake_case

* lint

* regenerate python

* typescript sdk

* deprecated getters

* lint

* fix tests

* version bumps

* chore: regen sqlc

* chore: replace pgtype.UUID again

* fix: bunch more type errors

* no compat

* fix: remove isort

* note

* Update sdks/python/CHANGELOG.md

Co-authored-by: matt <mrkaye97@gmail.com>

* feedback

* fix: no isort in ci

* tui

* ts lint

* lint

* weird undefined

* fix test

* last changes

* lint

* fix: ts child spawning

* consistent naming

* map fields

---------

Co-authored-by: mrkaye97 <mrkaye97@gmail.com>
2026-02-05 10:35:13 -08:00
abelanger5
983c9e57d9 fix: wrapped types in the Go SDK (#2957) 2026-02-05 08:38:15 -08:00
matt
91c280295e Fix: Always generate UUID for OrGroup (#2955)
* fix: null uuid for or group

* fix: engine side

* fix: two more
2026-02-05 10:50:03 -05:00
matt
961682d704 Hotfix: More panics (#2945)
* fix: check if dispatcher id is nil

* explicit nil check

* proposal: extra return out of `GetDispatcherIdsForWorkers`
2026-02-04 19:08:17 -05:00
matt
811e0b7965 fix: make uuid optional for desired worker (#2946) 2026-02-04 17:12:07 -05:00
matt
a782d9fd01 Hotfix: UUID Panics (#2944)
* fix: panic

* fix: more panic risks

* fix: two more possible panics
2026-02-04 15:11:08 -05:00
Mohammed Nafees
45c291c192 Go SDK gRPC client reconnection improvements (#2934)
* go sdk fixes to concurrency listen chans

* use generation
2026-02-04 18:53:18 +01:00
Jishnu
ed43cae0a2 feat: Extend webhook support for scope_expression and payload (#2874)
* add: scope_expression and payload columns for v1_webhook

* refactor: insert or update sql cmds for v1_webhook

* feat: update api clients, openapi schema for new webhook body

* refactor: receiver and transformer for v1 webhook

* add: python sdk changes

* feat: ts sdk changes

* feat: add FE for webhook new params

* fix: scope expression empty payload

* add: support for scope and payload for go client

* fix: lint

* fix: error message UI on webhook

* fix: lint

* fix: migraiton conflict, build failure

* fix: error handling

* update docs, add tests

* fix: lint, test file name
2026-02-04 12:44:52 -05:00
abelanger5
2ddcbd2672 refactor: use typed maps (#2928)
* refactor: use typed maps

* self-review comments
2026-02-03 19:35:09 -05:00
abelanger5
051a930019 fix: explicit use of tx in olap readPayloads (#2925) 2026-02-03 16:19:36 -05:00
matt
058968c06b Refactor: Attempt II at removing pgtype.UUID everywhere + convert string UUIDs into uuid.UUID (#2894)
* fix: add type override in sqlc.yaml

* chore: gen sqlc

* chore: big find and replace

* chore: more

* fix: clean up bunch of outdated `.Valid` refs

* refactor: remove `sqlchelpers.uuidFromStr()` in favor of `uuid.MustParse()`

* refactor: remove uuidToStr

* fix: lint

* fix: use pointers for null uuids

* chore: clean up more null pointers

* chore: clean up a bunch more

* fix: couple more

* fix: some types on the api

* fix: incorrectly non-null param

* fix: more nullable params

* fix: more refs

* refactor: start replacing tenant id strings with uuids

* refactor: more tenant id uuid casting

* refactor: fix a bunch more

* refactor: more

* refactor: more

* refactor: is that all of them?!

* fix: panic

* fix: rm scans

* fix: unwind some broken things

* chore: tests

* fix: rebase issues

* fix: more tests

* fix: nil checks

* Refactor: Make all UUIDs into `uuid.UUID` (#2897)

* refactor: remove a bunch more string uuids

* refactor: pointers and lists

* refactor: fix all the refs

* refactor: fix a few more

* fix: config loader

* fix: revert some changes

* fix: tests

* fix: test

* chore: proto

* fix: durable listener

* fix: some more string types

* fix: python health worker sleep

* fix: remove a bunch of `MustParse`s from the various gRPC servers

* fix: rm more uuid.MustParse calls

* fix: rm mustparse from api

* fix: test

* fix: merge issues

* fix: handle a bunch more uses of `MustParse` everywhere

* fix: nil id for worker label

* fix: more casting in the oss

* fix: more id parsing

* fix: stringify jwt opt

* fix: couple more bugs in untyped calls

* fix: more types

* fix: broken test

* refactor: implement `GetKeyUuid`

* chore: regen sqlc

* chore: replace pgtype.UUID again

* fix: bunch more type errors

* fix: panic
2026-02-03 11:02:59 -05:00
abelanger5
d56dee4266 feat: durable user event log (#2861)
* placeholder

* feat: db tables for user events (#2862)

* feat: db tables for user events

* move event payloads to payloads table, fix env var loading

* fix: address pr review comments

* missed save

* feat: optimistic scheduling (#2867)

* feat: db tables for user events

* move event payloads to payloads table, fix env var loading

* refactor: small changes to prepare optimistic txs

* feat: optimistic scheduling

* address pr review comments

* rm comments

* fix: rampup test race condition

* fix: goleak

* feat: grpc-side triggers

* fix: config and sem logic

* fix: respect optimistic scheduling env var

* add optimistic to testing matrix, remove pg-only mode

* fix cleanup of pubbuffers

* merge migrations

* last testing fixes
2026-02-02 18:04:02 -05:00
abelanger5
029d434e6b fix: add back SendTemplateEmail methods, fix postmark emails (#2910) 2026-02-02 13:41:18 -05:00
Gabe Ruttner
4e59f301ec fix: dag update distinct locks (#2903)
* lock only distinct

* try to fix dag statuses as well

---------

Co-authored-by: Alexander Belanger <alexander@hatchet.run>
2026-02-02 05:53:19 -08:00
Greg Furman
fa0dbde84e add: email alert support via SMTP (#2868)
* add: email alert support via SMTP

* add: subject lines

* add: go build tags

* add: SMTP server guide

* feat: include rendering in tests, fix race with mock server, and register subject templates to tmpl registry

* split up SMTP and postmark config

* refactor: Remove generic methods from EmailService

* fix: make postmark the default email provider

* fix: frontend lint
2026-01-31 20:05:52 -05:00
Gabe Ruttner
8186db18a4 fix: only fetch finalized workflow runs (#2896)
* only fetch finalized

* further optimization

* configurable buffer
2026-01-31 16:32:47 -05:00
abelanger5
04953129a4 fix: compute payload size correctly for pg_notify (#2873) 2026-01-31 16:31:49 -05:00
Gabe Ruttner
e1fd78138b fix: orphaned inactive queues (#2893)
* fix

* fixme

* upsert at end

* unique and all strategies

* feedback

* string
2026-01-30 14:05:05 -08:00
matt
ffe9f5ce74 Log Search Frontend, Part II (#2886)
* fix: don't toggle selection if a user is dragging

* fix: command selection state

* fix: close search bar on enter

* fix: improve search bar styling a bit, make it more consistent with designs

* chore: tsc

* Feat: Logs Frontend, Part III (#2888)

* fix: propagate retry count through properly

* feat: attempt switcher

* fix: attempt numbers

* feat: add attempt param to log query

* feat: wiring

* feat: attempt filter

* chore: changelog

* fix: use the button component

* fix: only close on enter when in FTS mode

* fix: pass retry count and log level in Go

* fix: feedback

* chore: lint

* fix: rm cruft comment
2026-01-30 13:17:21 -05:00
matt
a3fe89ef03 Feat: Workflow input JSON schema in trigger preview (#2851)
* feat: add input json schema to workflow version

* feat: add json schema to putworkflow proto

* feat: wire up writes of the json schema

* chore: gen python

* feat: send json schema from the python code

* feat: wiring

* feat: pass json schema into code editor

* feat: pass prop

* fix: clean up validation stuff

* feat: allow zod `input` as optional ts field

* fix: try except logic hack

* fix: rename input -> inputValidator for consistency

* chore: gen api

* fix: improve hack slightly

* chore: changelogs, versions

* feat: zod example

* chore: rework api a bit

* fix: tsc, allow schema to update

* fix: improve loading state

* fix: api cleanup, sqlc cleanup

* fix: initial mount

* chore: lint

* chore: lint

* chore: tsc

* fix: lint

* fix: unwind unneeded change

* [Python] Feat: Default additional metadata (#2876)

* Add doc about autoscaling workers (#2864)

* add doc for autoscaling workers

* oldest also in running stats

* chore(deps): bump google.golang.org/api from 0.262.0 to 0.263.0 (#2869)

Bumps [google.golang.org/api](https://github.com/googleapis/google-api-go-client) from 0.262.0 to 0.263.0.
- [Release notes](https://github.com/googleapis/google-api-go-client/releases)
- [Changelog](https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md)
- [Commits](https://github.com/googleapis/google-api-go-client/compare/v0.262.0...v0.263.0)

---
updated-dependencies:
- dependency-name: google.golang.org/api
  dependency-version: 0.263.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump github.com/getsentry/sentry-go from 0.41.0 to 0.42.0 (#2870)

Bumps [github.com/getsentry/sentry-go](https://github.com/getsentry/sentry-go) from 0.41.0 to 0.42.0.
- [Release notes](https://github.com/getsentry/sentry-go/releases)
- [Changelog](https://github.com/getsentry/sentry-go/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-go/compare/v0.41.0...v0.42.0)

---
updated-dependencies:
- dependency-name: github.com/getsentry/sentry-go
  dependency-version: 0.42.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump hatchet-sdk in /examples/python/quickstart (#2871)

Bumps hatchet-sdk from 1.22.10 to 1.22.11.

---
updated-dependencies:
- dependency-name: hatchet-sdk
  dependency-version: 1.22.11
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* feat: default additional meta

* feat: wiring

* chore: changelog, version

* fix: copy

* feat: add default meta to stubs

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Mohammed Nafees <hello@mnafees.me>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore: migration ver

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Mohammed Nafees <hello@mnafees.me>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-29 11:38:25 -05:00