Repository navigation
Release v0.18.0
v0.18.0
Highlights
-
xs store: 0.13.3 -> 0.14.1. Several behavior changes can affect existing stores and scripts. See the xs 0.14.0 and 0.14.1 release notes for the full list.
- Services now restart when their pipeline finishes cleanly (
restart: "on-success"is the default). A one-shot service, such as a seed or migration step, now runs again every second unless it setsrestart: "never". - A following read (
.cat --follow,.last --follow) now ends when it falls more than 4096 frames behind, instead of silently skipping frames. An SSE client sees its stream close and can reconnect from the last id it received. .id unpackreturnsts_ms(integer milliseconds) andwhen(a datetime) in place oftimestamp..id,.id unpackand.id packare now three separate commands, so.id unpack $id | get ts_mstype-checks.- Frames with a
ttl: time:<ms>are now deleted from disk when they expire, not just hidden from reads.
- Services now restart when their pipeline finishes cleanly (
-
Streaming requests release their thread when the client disconnects. Previously a handler streaming
to ssefrom.bus sub,.cat --followor.last --followkept its thread until the stream next produced output, which on a quiet topic could be never. The thread is now freed once the client goes away. A stream that is not piped throughto ssestill holds its thread until it produces its first item. -
Actors, services and actions can use
.mj,.mdand.highlight(#48). These were only registered on the HTTP handler engine, so calling them from an xs processor failed. The$HTTP_NUconst,-Ilib dirs and--plugincommands are not yet available there. -
Nushell engine: 0.113.1 -> 0.116.0. Scripts may need small edits:
str downcase/str upcaseare deprecated in favor ofstr lowercase/str uppercase, andget -i/reject -i/select -iin favor of-o.- A custom command's declared output type is now enforced when it runs. A command declared
record -> recordthat returnsnullerrors; declareoneof<record, nothing>instead. - Type checking at parse time is stricter, so an annotation that used to pass may now be rejected.
- Importing a module no longer implicitly imports its exported submodules; add
export use subto keep the old behavior. from yamlnow defaults to YAML 1.2.- New
from kdl/to kdl. - Minimum Rust is now 1.96.1.
-
Datastar SDK: 1.0.2 -> 1.0.4. The bundle http-nu serves under
--datastaradvances to/datastar@1.0.4.js. Upstream changes:- an opt-in CSP mode that runs without
unsafe-eval, with support for aliased nonce attributes; - a new
@query()action that sendsQUERYrequests with signals in the request body; - the current signals are sent when retrying a request after a network error;
- fixes for request-cancellation races, reactivity after deleting a key from an object-shaped signal, signal patches when truncating arrays, action calls inside string and template literals, and
data-bindon a<select>that gainsmultiple.
- an opt-in CSP mode that runs without
-
SIGTERM runs the xs shutdown protocol (#53). With
--store,xs.stoppingnow runs on SIGTERM as well as Ctrl-C, so services get to stop cleanly under process managers and containers. -
The access log fits the terminal width, down to a minimum of 96 columns, so wide terminals show more of each path. Paths are now shortened by character rather than byte, which fixes a crash that stopped the access log when a long path contained multi-byte characters.
-
An inherited
XS_APPEND_METAis no longer stamped on appended frames. When http-nu was started from inside an xs service, that service's identity leaked into frames http-nu appended. -
New example: markdown-mermaid, which renders mermaid diagrams inside markdown documents.
Raw commits
- build: bump cross-stream to 0.14.1 (2026-09-29)
- ci: fail the workflow when any platform fails (2026-09-29)
- test: check plugin sharing by process id, not timing (2026-09-29)
- fix: drop an inherited XS_APPEND_META from new engines (2026-09-29)
- fix: truncate access log paths on char boundaries, not bytes (2026-09-29)
- feat: processor engines get http-nu's context-free commands (.mj etc.) (#48) (2026-09-29)
- docs: pass the topic to .cat with -T in the getting-started guide (2026-09-29)
- build: upgrade to cross-stream 0.14.0 and nushell 0.116.0 (2026-09-29)
- deps: update datastar to v1.0.4 (2026-09-29)
- fix: release a streaming request's thread when its client disconnects (2026-09-29)
- feat: add an example which renders mermaid diagrams within markdown documents (2026-09-04)
- style: cargo fmt (2026-09-04)
- feat: fit the access log to the terminal width, 96 columns at the narrowest (2026-09-04)
- test: pin per-burst release of brotli stream output (2026-09-03)
- fix: run xs.stopping shutdown protocol on SIGTERM, not just SIGINT (#53) (2026-08-07)
- chore: bump to v0.17.3-dev (2026-06-09)