Ironflow is pre-1.0: APIs can change between releases. Pin a version. What is ready →
- Releases
- Ironflow v0.51.0
Ironflow v0.51.0
Ironflow v0.51.0 requires the projection runner lease, stops sending store and driver error text to Connect clients, and makes NATS-ingested events land in the environment their subject names. Read the breaking changes before you upgrade: 8 items need action.
Breaking Changes
Section titled “Breaking Changes”- The projection runner RPCs
PollProjectionEvents,StreamProjectionEvents,SaveProjectionStateandAckProjectionEventsneed the projection lease and answerfailed_preconditionwithout it.SaveandAckrefuse SQL projections. Run projections with an SDK runner, which takes the lease (#504) ProjectionService.ReportRebuildProgressis removed from the proto, the Go and TypeScript generated code and the Pythonironflow.rpcmodule. The lease holder’sPollProjectionEventsends a rebuild when the cursor reaches the target. Delete any direct call; read the job withGetRebuildJob(#504)- An event published to NATS
events.ingest.>is stored and dispatched in the environment its subject names. Only functions in that environment start, andwaitForEventandcancelOnsee it. A subject that does not resolve to exactly one environment still fails the write. This path never worked before (#582) - A store fault in
CancelRebuildreturnsinternal, notfailed_precondition, and inGetRebuildJobreturnsinternal, notnot_found. Retry aninternalanswer; do not treat it as a missing job (#3102) - A worker’s mistake on the worker stream ends it with a client code, not
unknown:failed_preconditionfor an execution-fence violation,invalid_argumentfor a bad register,already_existsfor a duplicate worker ID. The streaming workers reconnect as before (#3102) - A deduplicated
ResumeRunwhose revert also failed returnsinternal, notalready_exists. Inspect the run (#3102) PubSubService.Subscribewith areplayover the server limit, andGetTopicStatswith a wildcard topic, returninvalid_argument, notinternal. The browser SDK no longer reconnects in a loop on the first one (#3102)@ironflow/nodeexportsRun,ListRunsOptionsandListRunsResultin the shape its client returns, with string timestamps.ListRunsOptions.statusno longer accepts"pending". For theDate-based types, import from@ironflow/core(#3043)
- A server fault on any Connect RPC sends
internal error (ref <id>)and logs the full error with the sameref. Before, PostgreSQL driver text with table, constraint and SQL detail reached the client. Search the server log for theref(#3102) - A cancel or timeout that a Connect handler codes itself sends only
context canceledorcontext deadline exceeded, not text that can name the database host and user (#3102) - The Connect
Healthdatabase message isconnection failed, and/readyreports a JetStream fault asjetstream unhealthy. The server log has the cause (#3102) InjectStepOutputno longer sends store text underaborted, and a server-side deadline is logged at warn level with its cause (#3102)@ironflow/core,@ironflow/nodeand@ironflow/browserrequirezod ^4.6.7. Move an olderzod4 pin to 4.6.7 or later (#2983)
Security
Section titled “Security”- The embedded dashboard bundles
zod4.6.7. Versions below 4.6.6 have advisory GHSA-mrhx-c7xc-m3w5: validating an oversized constrained collection can exhaust memory (#2983)
- New docs book, What You Can Build: ten Northwind Market scenarios (#3144)
- The platform overview diagrams and code samples are easier to read (#3143, #3142)
- Ironflow Desktop dependency updates ship in the desktop changelog