Ironflow is pre-1.0: APIs can change between releases. Pin a version. What is ready →
- Releases
- Ironflow v0.49.0
Ironflow v0.49.0
Ironflow v0.49.0 gives every SDK and REST route the same lowercase Connect error codes, adds three Docker Compose sizes (Starter, Cluster, HA), and fixes the Helm chart so it starts again. Projects now keep their description, and pull dispatch stays fast as queues grow on both SQLite and PostgreSQL.
Breaking Changes
Section titled “Breaking Changes”- Generic error codes are the lowercase Connect code on every surface. File routes answer
invalid_argument,permission_denied,not_found,already_existsandinternal; WebSocket pub/sub answersinvalid_argumentandinternal. Domain codes (BUCKET_NOT_EMPTY,INVALID_PATTERN, …) do not change (#3054) - Go
IronflowError.Codeis the lowercase Connect code on every method, and REST methods no longer answerHTTP_<status>. Compare withie.Code == "not_found"(#3054) - Node
IronflowError.codeis the Connect code on every call (wasUNKNOWN_ERROR,HTTP_404,UNAUTHENTICATED, …). A response body that carriesretryablenow wins onrequest()calls (#3066) - Browser
IronflowError.codeis the Connect code, notHTTP_<status>or an invented*_FAILEDcode.@ironflow/coreexportsconnectCodeForStatus(#3054) - Python
IronflowError.codeis the Connect code of the HTTP status when the server sends none (was"") (#3054) - Go
RebuildJob.Progressis afloat64from 0 to 1, not anint - Go
UpdateProjectInput.Descriptionis a*string. ReplaceDescription: "text"withDescription: &text X-Ironflow-Environment: currentresolves to the caller’s own environment on a desktop session too. A session bound to a non-default environment got403before (#3067)- Every Helm release needs
blobs.url, ans3://bucket URL. The chart refuses to render without it - The Blackbox probe alerts (
NATSDown,PostgreSQLDown,ProbeFailure) render only withmonitoring.alerts.blackboxProbes=true - An existing
docker-compose.cluster.ymlstack refuses to start until.envhas five new keys - The upgrade drops
functions.recording_retention(#3013). The database is forward-only: v0.48.0 binaries refuse it. In a PostgreSQL cluster, stop every node and start them on the new version, not one by one. Take a backup first
Features
Section titled “Features”- Projects keep their
description.POSTandPUT /api/v1/projectsstore it, reads return it, and an update that omits it keeps the stored value. The limit is 1024 characters (#3057) - Docker Compose sizes in the release bundle: Starter (one node), Cluster (three nodes behind nginx, 3-node NATS) and HA (five-node NATS, Patroni PostgreSQL with automatic failover)
ready()in the Go, Node and browser SDKs readsGET /ready. A server that is not ready returnsNOT_READYwith the failing dependencies (#3003)- API-key
tool_scopesandenvironment_idin the Go, Node and browser types (#3003) - Go
WorkerInfo.Versionreturns the SDK and runtime each worker registered with (#3003) - Go
GetSnapshottakesGetSnapshotOpts{BeforeVersion}. Existing calls compile unchanged (#3003) - Public TypeScript types that were missing from every entry point are now importable from
@ironflow/core,@ironflow/browserand@ironflow/node(#3074)
- A pub/sub subscriber with
replayno longer loses events published during the replay (#3065) - A pull run cancelled just after assignment to a worker stays cancelled (#3023)
- PostgreSQL: a push job queued while the idle-bucket cleanup ran is dispatched (#3040)
- PostgreSQL: pull dispatch no longer slows down as the queue grows (#3029)
- SQLite: pull dispatch no longer slows down as the queue grows, or as a keyed function sees more keys (#3023, #3041)
- PostgreSQL: roles, API keys, users, projects, organizations and NATS accounts read back with the timestamps the write returned (#3073)
NATS_STREAM_REPLICASnow replicates KV buckets, not only streamsX-Ironflow-Environment: currentmeans the key’s own environment on secret routes. Go and Node secrets calls no longer get403with a tenant key (#3003)- A tenant’s built-in roles can no longer be renamed or deleted (#3003)
- A ConnectRPC
Subscribestream gives the event ID thatPublishreturned (#3003) GET /api/v1/auditgives"events": []when nothing matches, notnull(#3003)- A step a REST pull worker reports now has an end time (#3003)
- Browser
getPausedStateandinjectStepOutputread and send the server’s real shapes (#3051, #3003) - Node
getPausedStateandregisterFunctionreturninjected: false,created: falseand""for empty strings, notundefined(#3051, #3003) - Helm: the chart starts Ironflow again, a PostgreSQL restore keeps the
ironflowdatabase and owner, pooled connections pass the NetworkPolicy, S3 endpoints on other ports are reachable, and theIronflowDownandHighErrorRatealerts work again - Helm: templates no longer reference a
ghcr-pull-secret, and alertrunbook_urllinks open public docs ironflow deployinstalls CloudNativePG 1.28 and cert-manager before the Barman Cloud Plugin, checksblobs.urlfirst, and refuses to drop a master keydeploy/helm/bootstrap.shinstalls Sealed Secrets from the current repository and renders the ServiceMonitor and PrometheusRules- The
docker-compose.cluster.ymlstack keeps NATS and blob data in named volumes - A clone of a release tag runs that release: published compose files default to their release image
Improvements
Section titled “Improvements”make loadtestruns five realistic scenarios (order-saga,durable-steps,agent-loop,webhook-burst,ledger-contention) at a fixed arrival rate on SQLite and PostgreSQL- The Kubernetes docs install from the published chart, with one install path and one page per topic