Skip to content

Release v0.12.0

Choose a tag to compare

@github-actions github-actions released this 19 Feb 05:04
· 315 commits to main since this release

v0.12.0

Highlights

Templates can now load from the store. .mj --topic "page.html" renders a template stored in an xs topic, and {% extends %} / {% include %} references resolve as topic names from the same store. Previously you could load template content via --inline, but if that template referenced other templates they'd resolve from the filesystem -- there was no way for stream-sourced templates to reference each other.

.mj and .mj compile now take exactly one of three mutually exclusive modes:

  • File -- {% extends %} / {% include %} resolve from the template's directory on disk
  • Inline (--inline) -- self-contained, no resolution
  • Topic (--topic, requires --store) -- resolves template names as store topics

examples/templates/ demonstrates all three modes with visually distinct template variants so you can tell which source served the page.

Scripts can use path self for relative paths. Handler scripts no longer need to hardcode paths relative to the working directory:

const script_dir = path self | path dirname
let slides = open ($script_dir | path join data.json)
let page = .mj compile ($script_dir | path join page.html)

http-nu eval works the same way, so you can unit test handler endpoints from anywhere:

# test.nu
use std/assert

const script_dir = path self | path dirname
let handler = source ($script_dir | path join serve.nu)
let response = do $handler {method: GET, path: "/", headers: {}}
assert ($response | str contains "<h1>State in the Right Place</h1>")
http-nu eval test.nu

The Nushell standard library (std/assert, std/log, etc.) is now available in scripts and eval.

Breaking changes

  • feat!: inline mode no longer attaches a filesystem loader -- {% include "local.html" %} in an --inline template previously resolved from the working directory; use file mode instead

Changelog

  • feat!: .mj --topic for store-backed templates (#40) (2026-02-18)
  • feat: support path self in file-based scripts (2026-02-18)
  • feat: load nushell stdlib into engine (2026-02-19)
  • examples: add unit test for tao handler (2026-02-19)
  • examples: use path self for relative paths in tao (2026-02-18)
  • examples: The Tao of Datastar (#39) (2026-02-18)
  • docs: document unit testing endpoints with eval (2026-02-19)