v1.5.1
A follow-up to v1.5.0. This release fixes cases where failed SSE and WebSocket runs could lose the transcript collected before the failure or report the wrong failure type.
Fixed
Failed streams keep their transcript
When an SSE or WebSocket stream fails, Resterm now keeps the events and frames collected before the failure.
The partial transcript remains available in the Stream tab, history, RestermScript, and headless reports. SSE events also retain their original stream indexes when older events have been removed by retention limits.
Stream failures keep their original cause
Stream failures now preserve their underlying failure class instead of always becoming generic protocol errors.
For example:
- A missing file used by
@ws send-filereports a filesystem failure with detailed exit code25, rather than protocol error26. - A run whose caller deadline expires reports a timeout with detailed exit code
20. - Configured SSE duration or stream idle limit still ends the stream normally and does not fail the request.
- Stream summaries expose the optional
errorClassfield. - Headless stream reports include the failure message in
stream.error.
IPv6 redirects and limits
- IPv6 origins are now formatted correctly, including scoped addresses with interface names.
- For safer redirects, IPv6 interface names that differ only in capitalization are no longer treated as the same origin.
- Extremely large response and stream size limits (rare) are now handled correctly without integer overflow.
Headless API note
headless.Stream gains the Error field, and JSON stream objects may now include error. Stream summaries may include errorClass.
Existing keyed struct literals continue to work. Code using unkeyed headless.Stream literals must add the new field or switch to keyed literals.