Skip to content

Releases: cablehead/http-nu

Release v0.10.2

29 Jan 05:05

Choose a tag to compare

v0.10.2

Highlights

  • Empty response bodies now default to 204 No Content
  • Datastar SDK naming aligned with spec (breaking for datastar users)
  • Shutdown message now gets a timestamp like other log lines
  • File watcher uses trailing-edge debounce for more reliable reloads
  • Bumped cross-stream to 0.9.3

Raw commits

  • chore: bump cross-stream to 0.9.3 (2026-01-29)
  • feat: timestamp the shutdown message separately from the closing tag (2026-01-29)
  • feat: default to 204 No Content for empty response body (2026-01-27)
  • refactor(datastar)!: align SDK naming with spec (2026-01-26)
  • fix: use trailing-edge debounce for file watcher (2026-01-23)
  • docs: update release.md for versioned artifact naming (2026-01-22)

Release v0.10.1

22 Jan 17:09

Choose a tag to compare

v0.10.1

Highlights

  • cargo-binstall support: Install http-nu in seconds with cargo binstall http-nu
  • Versioned release artifacts: Release tarballs now include version in filename for better compatibility

Raw commits

  • feat: add cargo-binstall support with versioned release artifacts
  • docs: update xs command references for 0.9 API
  • fix: show usage instead of panic when addr missing

Release v0.10.0

22 Jan 02:50

Choose a tag to compare

v0.10.0

Highlights

  • .response replaced by pipeline metadata (breaking): Use metadata set --merge {'http.response': {status: 200}} instead

  • Content-type inference: Lists become JSON arrays, record streams become JSONL, binary becomes application/octet-stream, empty responses omit the header

  • Nushell 0.110, cross-stream 0.9

  • New commands: print (logging), to dstar-redirect (Datastar SDK), sqlite commands enabled

  • --services flag: Enable xs handlers, generators, commands

Changelog

  • chore: update to nushell 0.110 and cross-stream 0.9
  • feat: lists serialize as JSON arrays, streams as JSONL
  • feat: omit Content-Type header for empty responses
  • feat: replace .response with pipeline metadata
  • feat: abort SSE connections on hot reload
  • feat: default binary values to application/octet-stream
  • fix: preserve template loader for external refs in .mj commands
  • feat: add print command that outputs to logging system
  • feat: add SDK test endpoint and support raw string signals
  • feat: add to dstar-redirect command for Datastar SDK
  • perf: enable LTO and single codegen unit for release builds
  • feat: enable sqlite commands in nushell pipelines
  • feat: add --services flag to enable xs handlers, generators, commands

Release v0.9.1

10 Jan 23:26

Choose a tag to compare

v0.9.1

Highlights

  • .mj now supports template inheritance and includes ({% extends %},
    {% include %}, {% import %}). Referenced templates resolve from the
    template's directory and subdirectories.

Raw commits

  • feat: support template inheritance and includes in .mj (2026-01-10)
  • docs: streamline nixos packaging guide (#36) (2026-01-08)

Release v0.9.0

06 Jan 22:33

Choose a tag to compare

v0.9.0

Highlights

  • Breaking: CLI accepts script file directly: The CLI now takes a script file as the main argument. Use -c for inline commands. Example: http-nu :3001 ./serve.nu or http-nu :3001 -c '{|req| "hello"}'
  • Watch mode: New -w/--watch flag enables automatic hot-reload when files change during development
  • Embedded store: New --store flag embeds cross.stream for real-time state and event streaming
  • Windows Unix socket support: Full Unix socket support on Windows
  • Markdown rendering: New .md command converts Markdown to HTML with syntax-highlighted code blocks
  • Module paths: New -I/--include-path flag for module resolution

Raw commits

  • feat: Windows Unix socket support (#35) (2026-01-06)
  • test: verify plugin process is shared across requests (2026-01-04)
  • feat: embed cross.stream store with --store flag (2026-01-03)
  • feat: add -w/--watch flag for file watching and hot reload (2026-01-02)
  • feat!: change CLI to accept script file, -c for inline commands (2026-01-02)
  • chore: format markdown files (2026-01-02)
  • docs: update CSS architecture to prioritize base typography (2026-01-02)
  • fix: add base paragraph spacing (2026-01-02)
  • docs: document javascript: URL injection vector in .md (2026-01-02)
  • feat: add .md command for markdown-to-HTML conversion (2026-01-02)
  • docs: add Datastar-ready branding (2026-01-02)
  • feat: add --include-path/-I flag for module resolution (2026-01-02)
  • feat(www): add Datastar demo, typography system, anchor links (2026-01-02)
  • fix: improve error formatting for streaming responses (2026-01-01)
  • bench: add Flask+gunicorn comparison benchmark (2026-01-01)
  • feat(www): add animated rocket to install section (2026-01-01)
  • refactor: replace indicatif with crossterm, add RequestGuard for abort handling (2026-01-01)
  • docs(www): add --locked to cargo install, add $ prompts (2026-01-01)

Release v0.8.0

01 Jan 06:53

Choose a tag to compare

v0.8.0

Highlights

  • Replaced tracing with custom event system: Removed tracing, tracing-subscriber, and valuable dependencies. New broadcast-based logging with dedicated handler threads sustains 24K+ req/sec. Fixes cargo install without requiring RUSTFLAGS.

Raw commits

  • refactor: replace tracing with broadcast-based event system (2026-01-01)
  • docs: center README header with logo, nav links, and badges (2026-01-01)
  • docs: add tarball verification step to release process (2025-12-31)

Release v0.7.1

31 Dec 22:23

Choose a tag to compare

v0.7.1

Highlights

  • Fix cargo install: Set tracing_unstable cfg flag automatically in build.rs so users no longer need to set RUSTFLAGS manually (thanks @cboecking for reporting)

Raw commits

  • fix: set tracing_unstable cfg flag in build.rs for cargo install (2025-12-31)
  • feat(www): add tabbed install section with copy button and wave divider (2025-12-31)
  • docs: add eval subcommand and homebrew to release notes (2025-12-31)
  • docs: add Homebrew install method and update release process (2025-12-31)

Release v0.7.0

31 Dec 19:51

Choose a tag to compare

v0.7.0

Highlights

  • HTML DSL: Write HTML naturally in Nushell without string concatenation or templates. Includes SVG and MathML elements, automatic XSS escaping, and composable components via Nushell functions
  • Datastar SDK 🚀: Build reactive UIs with server-sent events—all logic stays in Nushell
  • HTTP/2 & Graceful Shutdown: Production-ready with HTTP/2 over TLS and clean shutdown handling
  • Request Logging: Live-updating human-friendly logs (default) or structured JSONL for aggregation. --trust-proxy extracts real client IPs from X-Forwarded-For when behind reverse proxies
  • Routing Module: Organize routes with route and dispatch commands
  • Syntax Highlighting: .highlight command for code blocks with theme support
  • Plugin Support: Load Nushell plugins with --plugin flag
  • Precompiled Templates: .mj compile/render for Jinja2 templates—~200x faster than generating HTML on the fly
  • Eval Subcommand: http-nu eval runs Nushell expressions with http-nu's embedded modules and custom builtin commands available
  • Homebrew: brew install cablehead/tap/http-nu on macOS

Raw commits

  • feat: add Open Graph meta tags and social card image (2025-12-31)
  • docs: README.md (2025-12-31)
  • feat: add landing page (2025-12-31)
  • feat: add SVG and MathML elements to HTML DSL (2025-12-31)
  • feat: add syntax highlighting commands (2025-12-30)
  • docs: add precompiled template capture example (2025-12-30)
  • fix: preserve closure captures when running handler (2025-12-29)
  • feat: add structured logging and trusted proxy support (#34) (2025-12-29)
  • test: improve graceful shutdown test timing tolerance for CI (2025-12-29)
  • ci: free disk space before builds to fix Windows linker OOM (2025-12-29)
  • fix: make --plugin flag global for position-independent usage (2025-12-29)
  • feat: add --plugin flag to load Nushell plugins (#33) (2025-12-29)
  • docs: document {__html} for trusted content in HTML DSL (2025-12-29)
  • fix(examples): wrap P elements in quotes example (2025-12-29)
  • feat(html): HTML element includes DOCTYPE automatically (2025-12-29)
  • docs: add file watch reload example (2025-12-29)
  • chore: format nushell files with topiary (2025-12-27)
  • fix: update examples to use correct HTML DSL syntax (2025-12-27)
  • feat: auto-unwrap {__html} records in response handling (2025-12-26)
  • feat: HTML DSL redesign with XSS protection and Jinja2 integration (2025-12-26)
  • feat: add .mj compile/render commands and eval subcommand (2025-12-26)
  • feat(html): ADD UPPERCASE TAG VARIANTS FOR THE SHOUTY STYLE (2025-12-19)
  • feat(html): style values accept lists for comma-separated CSS (2025-12-19)
  • docs(html): document boolean attributes (2025-12-18)
  • feat(html): support boolean attributes (2025-12-18)
  • fix(html): handle empty args for nushell <0.109 compat (2025-12-18)
  • feat(html): variadic args, class lists, recursive children (2025-12-17)
  • docs(datastar): add mathml to namespace options (2025-12-17)
  • feat(html): allow style attribute to be a record (2025-12-17)
  • refactor(examples): use HTML DSL, unquoted methods, content negotiation (2025-12-16)
  • chore: lint test_html.nu (2025-12-16)
  • feat(html): add +tag append variants for sibling elements (2025-12-16)
  • docs: reorganize README with Reference section and Embedded Modules (2025-12-16)
  • refactor(examples): use append pipelines in datastar-sdk (2025-12-16)
  • refactor(router): stream request body through dispatch to handlers (2025-12-16)
  • feat: add datastar-sdk example and fix from datastar-request API (2025-12-16)
  • docs: simplify quotes example with nushell and posix examples (2025-12-16)
  • refactor(html): use _ prefix and explicit append for siblings (2025-12-16)
  • style: use raw strings in tests and apply nushell formatting (2025-12-15)
  • test: export attrs-to-string and add tests (2025-12-15)
  • docs: document HTTP/2 support in TLS section (2025-12-15)
  • feat: add Datastar SSE SDK module (#31) (2025-12-15)
  • feat: add HTML DSL module (#30) (2025-12-15)
  • feat: add embedded routing module (2025-12-11)
  • feat: add HTTP/2 support and graceful shutdown (2025-12-06)

Release v0.6.0

05 Dec 21:14

Choose a tag to compare

v0.6.0

Highlights

  • Dynamic script updates via stdin - Scripts can now be updated at runtime without restarting the server
  • Minijinja template rendering - New .mj command for rendering minijinja templates
  • Brotli compression - Added brotli compression with streaming support
  • Multi-value headers - Support for multi-value headers using list syntax
  • Nushell 0.109.1 - Updated to the latest Nushell version
http-nu-brotli.mp4

Raw commits

  • chore: add uninlined_format_args lint to CI and check script (2025-12-05)
  • feat: support dynamic script updates via stdin (#29) (2025-12-05)
  • chore: add /release command and streamline CLAUDE.md (2025-12-05)
  • feat: add .mj command for minijinja template rendering (2025-12-05)
  • feat: update nushell to 0.109.1 (2025-12-05)
  • chore: fix line wrapping in README (2025-12-05)
  • feat: add brotli compression with streaming support (#28) (2025-12-04)
  • docs: add NixOS packaging documentation (#26) (2025-12-03)
  • feat: support multi-value headers with list syntax (2025-11-24)
  • fix: print parse errors with proper ANSI formatting (2025-11-24)

Release v0.5.1

07 Nov 19:30

Choose a tag to compare

v0.5.1

Highlights

  • Fixed HTTPS support in Nushell commands: Commands like http get https://... now work correctly within http-nu handlers by initializing nu_command's TLS crypto provider

Raw commits

  • fix: initialize nu_command crypto provider for https support (2025-11-07)
  • chore: update Cargo.lock to resolve dependency conflicts (2025-10-15)