Release v0.13.0
Highlights
Unified lifecycle vocabulary under a runtime-owned xs. namespace (ADR 0005). Actors, services, and actions now share one topic shape, xs.<kind>.<name>.<event>, for example xs.actor.greeter.create, xs.service.api.active, and xs.action.greet.fin.term. This replaces the old per-processor ad-hoc topics (.register/.spawn/.define and friends). A topic starting with xs. is runtime-managed; everything else is app data, and the runtime reads only its own namespace at startup instead of scanning the whole stream.
This is a breaking change. xs is pre-1.0, there is no migration path, and the runtime does not read pre-rename stores. Existing stores written by v0.12.0 or earlier are not supported: start fresh, stay on v0.12.0, or convert your store by hand using the topic mapping documented in ADR 0005.
A shared two-slot compaction algorithm now governs which definitions restart on boot, the same logic for all three processors. This closes a set of long-standing bugs: a thing that terminally stopped no longer restarts on the next boot, a broken hot-replace falls back to the last known-good version instead of vanishing, exit reasons are now distinct topics (fin.ok / fin.error / fin.term / invalid / replaced / stopped) rather than one overloaded event plus meta, and actions gain a real undefine via xs.action.<name>.term.
Module registration moved to xs.module.<name>, replacing the old <name>.nu topic.
Embedded Nushell updated to 0.113.1 (from 0.112.1). This raises the minimum Rust version to 1.93.1.
Bug fixes
- fix: compact unregistered actors on replay so they are not resurrected
- fix: correct return_options target default, add service shutdown stop reason and eval --commands
- fix: don't hang serving iroh when no relay is reachable
- fix!: service output suffix now concatenated verbatim, matching actors and actions
- fix: .last now correctly handles positional args like the CLI
Changelog
- feat: unified xs... lifecycle (ADR 0005) + nushell 0.113.1 (#140)
- ci: bump release-docker nu to 0.112.1 to match the bundled engine
- docs: note to keep CI/release nu in sync with the bundled nu version
- fix: compact unregistered actors on replay so they are not resurrected
- fix: correct return_options target default, add service shutdown stop reason and eval --commands
- fix: document xs nu --lib-path and --autoload-path options
- fix: document the POST /eval store API endpoint
- fix: don't hang serving iroh when no relay is reachable
- fix!: service output suffix now concatenated verbatim, matching actors and actions
- fix: .last now correctly handles positional args like the CLI
- fix: correct stale head: references to last: in docs and comments