Skip to content

chore: release v0.90.13#4301

Merged
gregfurman merged 3 commits into
hatchet-dev:mainfrom
gregfurman:release-0-90-13
Jun 29, 2026
Merged

chore: release v0.90.13#4301
gregfurman merged 3 commits into
hatchet-dev:mainfrom
gregfurman:release-0-90-13

Conversation

@gregfurman

Copy link
Copy Markdown
Collaborator

Description

Updates the CHANGELOG.md to reflect all changes between v0.89.0 and upcoming v0.90.13 release.

Type of change

  • Chore (changes which are not directly related to any business logic)

What's Changed

  • Updates CHANGELOG.md and removed incorrect append mode for goreleaser to instead use replace
🤖 AI Disclosure
  • I acknowledge that an LLM was used in the creation of this Pull Request, in accordance with Hatchet's AI_POLICY.md.
  • Details: Used Claude Code (effort high) to help filter user-facing changes from generated What's Changed? diff generated by git cliff

@vercel

vercel Bot commented Jun 29, 2026

Copy link
Copy Markdown

@gregfurman is attempting to deploy a commit to the Hatchet Team on Vercel.

A member of the Team first needs to authorize it.

@gregfurman

gregfurman commented Jun 29, 2026

Copy link
Copy Markdown
Collaborator Author

Release Notes Body

Hatchet v0.90.13 is a stability-focused release. It keeps long-running deployments healthy by bounding session-table growth, reduces scheduling latency under load, fixes a duration-parsing bug that could silently shorten your timeouts, and ships a batch of dashboard fixes.

### Highlights

- The `UserSession` table no longer grows unbounded: an hourly cleanup job now removes expired and orphaned sessions automatically. See [Upgrade Notes](#usersession-bulk-cleanup) for an optional one-time bulk cleanup to run before upgrading.
- Multi-unit duration strings such as `42m30s` are now parsed correctly and enforce their full value, rather than silently truncating to a shorter duration. See [Upgrade Notes](#stricter-duration-validation) for the related behavior and validation changes.
- Reduced engine cold-start latency when moving runs from `QUEUED` to `ASSIGNED_TO_WORKER` under load, and stale concurrency state is now cleaned up automatically so it can no longer build up and slow scheduling.
- Fixed a dashboard race that could return a 500 when triggering a run, alongside several quality-of-life improvements: a system theme option in account settings, a scrollable workflow settings page, persisted sidebar scroll position across navigation, a tooltip for long tenant names, and CodeEditor theming and border fixes in light mode.
- The Go SDK now retries bodyless `GET` and `HEAD` reads with backoff on transient failures, which can be disabled via the `HATCHET_CLIENT_NO_RETRY` environment variable.
- Durable execution is sturdier: dead-lettered callback messages are now handled gracefully instead of erroring, and a failing child task correctly raises an error in its durable parent, matching the behavior of regular tasks.
- Hatchet Cloud adds the foundations for tenant-scoped Prometheus metrics and audit logs.

### Upgrade Notes

#### Stricter duration validation

Registration now rejects duration strings that were previously accepted and silently coerced: signed values, bare numbers, sub-millisecond units (`ns`/`us`), and mixed forms using `d`/`w`/`y`. If you register durations in any of these forms, they'll now fail at registration — check your workflow definitions before upgrading.

#### `UserSession` bulk cleanup

This update includes an additional cleanup job for the `UserSession` table to correctly remove expired/invalid user sessions from the table -- addressing unbounded growth. However, you can optionally run the following query as many times as needed against your Postgres instance to ensure a bulk-cleanup prior to upgrade:

```sql
DELETE FROM "UserSession"
WHERE ctid IN (
    SELECT ctid
    FROM "UserSession"
    WHERE NOT (
        ("userId" IS NOT NULL AND "expiresAt" >= NOW())
        OR
        ("userId" IS NULL AND "createdAt" >= NOW() - INTERVAL '24 hours')
    )
    LIMIT 10000
);
```

Note: the `10000` limit can be adjusted as needed.

## What's Changed

### Added
- **sdks/go:** Add retry foundation for REST reads `v0.90.5` by @igor-kupczynski in [#4240](https://github.com/hatchet-dev/hatchet/pull/4240)
- **cloud:** Tenant scoped prometheus and audit logs `v0.90.0` by @grutt in [#4215](https://github.com/hatchet-dev/hatchet/pull/4215)
- **engine:** Cron to run stale concurrency cleanup `v0.89.7` by @mrkaye97 in [#4202](https://github.com/hatchet-dev/hatchet/pull/4202)
- **dashboard:** Add system theme option to account theme settings `v0.89.7` by @BittuBarnwal7479 in [#4170](https://github.com/hatchet-dev/hatchet/pull/4170)

### Changed
- **engine:** Expand `listutils` to include `Uniq`, `UniqBy` `v0.90.9` by @mrkaye97 in [#4283](https://github.com/hatchet-dev/hatchet/pull/4283)
- **cli:** Accept fs.FS for quickstart templates `v0.89.7` by @BloggerBust in [#4174](https://github.com/hatchet-dev/hatchet/pull/4174)
- **dispatcher:** Unify dispatcher and dispatcher/v1 packages `v0.89.3` by @abelanger5 in [#4148](https://github.com/hatchet-dev/hatchet/pull/4148)

### Fixed
- **api:** Add cron job to clean up UserSession `v0.90.13` by @NirajNair in [#4105](https://github.com/hatchet-dev/hatchet/pull/4105)
- On-demand lease manager for cold start concurrency queue `v0.90.12` by @mnafees in [#4281](https://github.com/hatchet-dev/hatchet/pull/4281)
- Parse multi-unit duration strings in convert_duration_to_interval `v0.90.11` by @juanuicich in [#3895](https://github.com/hatchet-dev/hatchet/pull/3895)
- **dashboard:** Short-circuit run lookup on dashboard trigger `v0.90.10` by @mrkaye97 in [#4289](https://github.com/hatchet-dev/hatchet/pull/4289)
- **engine:** Check nil uuid before creating event resource hint `v0.90.9` by @mrkaye97 in [#4282](https://github.com/hatchet-dev/hatchet/pull/4282)
- **dashboard:** Make sure workflow settings page is scrollable `v0.90.9` by @mnafees in [#4267](https://github.com/hatchet-dev/hatchet/pull/4267)
- Rm another instance of `seenAt` being in the wrong place `v0.90.8` by @mrkaye97 in [#4278](https://github.com/hatchet-dev/hatchet/pull/4278)
- Disable deactivateStaleStepConcurrency operation for now `v0.90.7` by @mnafees in [#4279](https://github.com/hatchet-dev/hatchet/pull/4279)
- Concurrency strategy cold starts `v0.90.5` by @grutt in [#4275](https://github.com/hatchet-dev/hatchet/pull/4275)
- Make sure we use partial index when creating scheduled and cron refs `v0.90.3` by @mnafees in [#4260](https://github.com/hatchet-dev/hatchet/pull/4260)
- Tenant switcher tool tip for long tenant names `v0.90.2` by @grutt in [#4234](https://github.com/hatchet-dev/hatchet/pull/4234)
- **engine:** Handle dead lettered durable callback messages `v0.90.2` by @mrkaye97 in [#4231](https://github.com/hatchet-dev/hatchet/pull/4231)
- Disable hover preloading for sidebar navigation links `v0.90.2` by @BittuBarnwal7479 in [#4225](https://github.com/hatchet-dev/hatchet/pull/4225)
- **engine:** Set the `eventSeenAt` on the ingest side of the mq `v0.90.1` by @mrkaye97 in [#4226](https://github.com/hatchet-dev/hatchet/pull/4226)
- **dashboard:** Persist sidebar scroll position across navigation `v0.90.0` by @chandan-1427 in [#4163](https://github.com/hatchet-dev/hatchet/pull/4163)
- **dashboard:** Fix CodeEditor theme and border visibility in light mode `v0.89.6` by @chandan-1427 in [#4150](https://github.com/hatchet-dev/hatchet/pull/4150)
- Extend lock timeouts significantly `v0.89.5` by @mrkaye97 in [#4175](https://github.com/hatchet-dev/hatchet/pull/4175)
- Wait however long we need to acquire the lock to run `FINALIZE` `v0.89.4` by @mrkaye97 in [#4173](https://github.com/hatchet-dev/hatchet/pull/4173)
- **olap:** Don't lose status updates when replaying completed tasks `v0.89.3` by @igor-kupczynski in [#4165](https://github.com/hatchet-dev/hatchet/pull/4165)
- **engine:** Correctly raise error in durable parent when child fails `v0.89.3` by @mrkaye97 in [#4154](https://github.com/hatchet-dev/hatchet/pull/4154)
- Change default max death count to 1000 `v0.89.3` by @grutt in [#4167](https://github.com/hatchet-dev/hatchet/pull/4167)
- Gate loadtest emission on registration `v0.89.3` by @igor-kupczynski in [#4156](https://github.com/hatchet-dev/hatchet/pull/4156)
- **docs:** Update Resources link to point to docs site `v0.89.3` by @BittuBarnwal7479 in [#4141](https://github.com/hatchet-dev/hatchet/pull/4141)
- Use new connection from ddlPool to set timeout on task partition creation `v0.89.3` by @juliusgeo in [#4147](https://github.com/hatchet-dev/hatchet/pull/4147)
- Reduce default buffer size for RabbitMQ sub and pub buffers, flush when full, reduce default QoS to 100 `v0.89.3` by @juliusgeo in [#4073](https://github.com/hatchet-dev/hatchet/pull/4073)
- **engine:** Drain grpc streams and bound graceful shutdown `v0.89.2` by @igor-kupczynski in [#4139](https://github.com/hatchet-dev/hatchet/pull/4139)
- **engine:** Exclude evicted runtimes from timeouts `v0.89.2` by @BloggerBust in [#4132](https://github.com/hatchet-dev/hatchet/pull/4132)
- **repository:** Key failureOpts by taskId in failTasksTx to fix wrong error message after dedup `v0.89.2` by @burnerlee in [#4137](https://github.com/hatchet-dev/hatchet/pull/4137)

## New Contributors
* @NirajNair made their first contribution in [#4105](https://github.com/hatchet-dev/hatchet/pull/4105)
* @juanuicich made their first contribution in [#3895](https://github.com/hatchet-dev/hatchet/pull/3895)
* @juanluisdb made their first contribution in [#4232](https://github.com/hatchet-dev/hatchet/pull/4232)
* @adem-loghmari made their first contribution in [#4194](https://github.com/hatchet-dev/hatchet/pull/4194)
* @chandan-1427 made their first contribution in [#4150](https://github.com/hatchet-dev/hatchet/pull/4150)
* @burnerlee made their first contribution in [#4137](https://github.com/hatchet-dev/hatchet/pull/4137)

@github-actions github-actions Bot added the documentation Improvements or additions to documentation label Jun 29, 2026
Comment thread frontend/docs/pages/reference/changelog/platform.mdx Outdated
@gregfurman gregfurman merged commit 6b176e1 into hatchet-dev:main Jun 29, 2026
42 of 44 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants