# Nushell 0.117.0 adds structured external commands, live REPL status line, dotenv support

> **Key takeaway:** Nushell 0.117.0 introduces the @structured attribute to parse external command output into typed data without altering their normal display, alongside a live REPL status line, automatic completion generation, native dotenv support, and reusable type aliases.

**Published:** 2026-11-10T02:02:24.206511+00:00 
**Source:** Nushell (nu) Structured Shell 
**Category:** devtools 
**Canonical URL:** https://fosswire.org/news/nushell-01170-adds-structured-external-commands-live-repl-st.html 

## Summary
Nushell 0.117.0, the Rust-based structured shell, expands its ability to bridge traditional Unix tools with its table-oriented data model. The headline feature is the @structured attribute, which lets users annotate external commands so they return parsed, typed records when piped into Nushell pipelines while preserving their original terminal output when run standalone. The release also adds a live status line beneath REPL input that surfaces parse errors, type information, command signatures with parameter highlighting, and even preview results for const expressions before Enter is pressed.

Additional capabilities include a generate completions command that produces Nushell extern definitions from carapace specs, fish or zsh completions, man pages, or --help text; four new record manipulation commands (record where, record each, record walk, record apply) that operate on fields directly without transpose gymnastics; native dotenv file reading and writing with variable expansion and automatic environment conversions; and a type keyword for reusable type aliases in annotations and modules. The ps command was also overhauled to list all processes on every platform with consistent columns, using null for unavailable values rather than omitting them.

## What changes in Nushell 0.117.0
- **@structured attribute for external commands:** Users can annotate extern definitions with @structured to specify parsing logic that activates only when the command's output is piped into a Nushell pipeline, leaving normal interactive output unchanged; the example shows git status parsed into status and file fields via --porcelain and regex.
- **Live REPL status line:** A new configurable status line below input shows parse and type errors in real time, displays the command signature with the current parameter emphasized, indicates pipeline output type, and previews results for expressions composed entirely of const commands.
- **generate completions command:** Automatically produces Nushell extern definitions and completers from multiple sources including carapace specs, fish or zsh completion files, man pages, and --help text, potentially covering subcommands, flag values, and dynamic values like Git branches.
- **Record manipulation commands:** record where filters fields, record each transforms key-value pairs, record walk traverses nested structures for operations like redaction, and record apply applies per-field conversions in a single pass; all four operate on table rows as well as standalone records.
- **Dotenv support and type aliases:** Nushell now reads and writes .env files with quoted values, multiline values, comments, and variable expansion without command execution, applying environment conversions automatically on load; the new type keyword creates reusable aliases like type Point = record<x: float, y: float> for use in signatures and modules.

## Why it matters
For DevOps engineers and developers using Nushell as their daily shell, the @structured attribute and dotenv support remove friction when integrating existing CLI tools into data pipelines, reducing the need for wrapper scripts or manual parsing. The completion generation and live REPL feedback lower the barrier to adopting Nushell's stricter type system, while reusable type aliases help teams scale scripts across larger codebases without sacrificing Nushell's compile-time checking.