From f159656b92227d2d45967696938bded2dcaf0fbe Mon Sep 17 00:00:00 2001 From: ysthakur <45539777+ysthakur@users.noreply.github.com> Date: Sat, 17 Jan 2026 09:48:15 -0500 Subject: [PATCH 1/8] Initial release notes --- blog/2026-01-17-nushell_v0_110_0.md | 397 ++++++++++++++++++++++++++++ 1 file changed, 397 insertions(+) create mode 100644 blog/2026-01-17-nushell_v0_110_0.md diff --git a/blog/2026-01-17-nushell_v0_110_0.md b/blog/2026-01-17-nushell_v0_110_0.md new file mode 100644 index 00000000000..6c87a732766 --- /dev/null +++ b/blog/2026-01-17-nushell_v0_110_0.md @@ -0,0 +1,397 @@ +--- +title: Nushell 0.110.0 +author: The Nu Authors +author_site: https://www.nushell.sh/blog +author_image: https://www.nushell.sh/blog/images/nu_logo.png +excerpt: Today, we're releasing version 0.110.0 of Nu. This release adds... +--- + + + + + +# Nushell 0.110.0 + + + +Today, we're releasing version 0.110.0 of Nu. This release adds... + +# Where to get it + +Nu 0.110.0 is available as [pre-built binaries](https://github.com/nushell/nushell/releases/tag/0.110.0) or from [crates.io](https://crates.io/crates/nu). If you have Rust installed you can install it using `cargo install nu`. + +As part of this release, we also publish a set of optional [plugins](https://www.nushell.sh/book/plugins.html) you can install and use with Nushell. + +# Table of contents + + + +# Highlights and themes of this release + + + + +# Changes + +## Additions + +### New Configuration Option: `$env.config.show_hints` + +You can now disable hints for completions and the history by setting `$env.config.show_hints = false`. + +### Add `error_lines` and `error_style = tree` settings + +* New option for `$env.config.error_style` to show related/nested errors: `tree` +* New setting to change the number of lines printed for error context (default: 1): `$env.config.error_lines` + +### Other additions + +* `job flush` can now take a `--tag` to filter which messages to discard ([#17056](https://github.com/nushell/nushell/pull/17056)) + +## Other changes + +### Add `short` error_style + +Add a new `short` option for `$env.config.error_style` that displays errors as concise, single-line messages similar to classic shells. + +``` +$ ll +Error: External command failed: Command `ll` not found (Did you mean `all`?) +``` + +### Update explore regex command to look more helpful and professional + +This PR just makes the UI look a little more professional, abstracts the coloring, and tries to make the code a little more idiomatic. +image + +### New command: `explore config` TUI + +Introducing the `explore config` command. + +Functionality: +- When launched with no parameters it loads your config settings into a tree and editor to allow you to traverse, explore, and change settings. +- When launched with the `--tree` parameter, it draws a tree view of your piped in input into the terminal +- When launched with the `--use-example-data` parameter, it shows you a customized configuration (my config actually). May be removed later. +- When JSON is piped into it e.g `'{"abc": 1, "xyz": 2}' | explore config --output foo.json` it allows you to explore and edit the JSON data and save it out to the provided filename. +- When in "config mode" it shows you the nushell datatypes as you traverse the tree. When in "json" mode it shows you the json datatypes as you traverse the tree. +- When in "config mode" it shows you a description of the config setting _assuming proper documentation in doc_config.nu_. This file will need to be updated a bit in a separate PR. If there is no documentation it shows you a warning triangle by the tree item. +- As you make changes to your config, you can save those changes and they're immediately applied. +- If you hit Enter on any node leaf, you immediately jump into editing that value. If you hit Enter on tree nodes, the tree expands or collapses. + +![explore-config2](https://github.com/user-attachments/assets/10f4407e-28a0-4aac-8baa-88f7b95229e2) + +Help +```nushell +❯ explore config --help +Launch a TUI to view and edit the nushell configuration interactively. + +By default, opens the current nushell configuration ($env.config) in the TUI. +Changes made in config mode are applied to the running session when you quit. + +You can also pipe JSON data to explore arbitrary data structures, or use +--use-example-data to see sample configuration data. + +TUI Keybindings: + Tab Switch between tree and editor panes + ↑↓ Navigate tree / scroll editor + ←→ Collapse/Expand tree nodes + Enter/Space Toggle tree node expansion + Enter/Space On leaf nodes, open editor pane + Enter/e Start editing (in editor pane) + Ctrl+Enter Apply edit + Esc Cancel edit + Ctrl+S Save/Apply changes + q Quit (applies config changes if modified) + Ctrl+C Force quit without saving + +Usage: + > explore config {flags} + +Flags: + -h, --help: Display the help message for this command + -e, --use-example-data: Show the nushell configuration TUI using example data + -t, --tree: Do not show the TUI, just show a tree structure of the data + -o, --output : Optional output file to save changes to (default: output.json) + +Input/output types: + ╭─#─┬──input──┬─output─╮ + │ 0 │ nothing │ string │ + │ 1 │ string │ string │ + ╰───┴─────────┴────────╯ + +Examples: + Open the nushell configuration in an interactive TUI editor + > explore config + + Explore JSON data interactively + > open --raw data.json | explore config + + Explore with example data to see TUI features + > explore config --use-example-data +``` + +### Fix--propagate more descriptive error message for rm Os errors + +This makes a descriptive error message for particular IO / OS errors on the "rm" command. This would be helpful in the associated issue, where MacOS will silently deny access in some circumstances, and it can appear to users as an inconsistency within Nushell + +related to #17057 + +### `*` no longer matches dotfiles in mv/cp/du by default +```nushell +> touch .a +> cp * /tmp +> "/tmp/.a" | path exists +false +``` +But users can make it matches dotfiles by `--all(-a)` flag. + +### Replace deprecated current_dir usage with EngineState::cwd in multiple files + +This PR removes some deprecated Rust functions from nu-engine that have been deprecated since 0.92.3: +- current_dir_str() +- current_dir_str_const() +- current_dir() +- current_dir_const() + +### Additional changes + +* Add a quick reference panel to `explore regex` with the F1 keybinding and dismiss it with the ESC keybinding. ([#17187](https://github.com/nushell/nushell/pull/17187)) +* Within the `explore` command the `:nu` command will now stream content by spawning the command issues without blocking. ([#17208](https://github.com/nushell/nushell/pull/17208)) +* `--help` is now available for `debug env`. ([#17278](https://github.com/nushell/nushell/pull/17278)) +* This PR adds the `memory_size()` function on nushell `Value` so that we can get the size of variables to understand them better. ([#17287](https://github.com/nushell/nushell/pull/17287)) +* Update agents.md for better LLM use. ([#17318](https://github.com/nushell/nushell/pull/17318)) +* Make `detect type` more robust with datetime handling by updating regular expressions ([#17357](https://github.com/nushell/nushell/pull/17357)) + +## Bug fixes + +### Deduplicated types in type_check process to improve error message + +This PR is intended to fix the issue with error messages documented in #16717, by sorting and deduplicating the current_type param in check_type.rs. + +Fixes https://github.com/nushell/nushell/issues/16717. + +### [fix] fixed issue with alias "missing required flag" on create + +Added logic to treat Missing Required Flag the same as Missing Positional (i.e., alias parsing logic ignores those errors when returned from parse_call). I did a scan of similar types of parse errors and added MissingFlagParam, which I think should have the same treatment. + +fixes #16847 + +### Fixed handling of ranges with respect to parentheses + +added logic to exclude parenthesized expressions in the search for the optional second piece of a range expression, ex + +```0..(1..2 | first)``` + +will now parse as a simple range `0..1` rather than an invalid complex range `0..(1..2` + +fixes #16969 + +### Fixed parsing issue with multiarm match + guard + +match statements will now work with multiple arms _and_ a guard expression. + +Updated parse_match_block_expression such that in `match 3 {1 | 2 | 3 if true => 'test'}` the logic will now add "if true" guard to "1 | 2 | 3" match pattern and evaluate per existing logic. Previously the guard check would be skipped for multi-arm expressions, which would always lead to a parse error (logic expecting "=>") + +fixes #16131 + +### Infinite sequences cant be terminated when piped to other command +``` +> `1..inf | to md` # then press ctrl-c +^CError: nu::shell::error + + × Operation interrupted + ╭─[entry #1:1:1] + 1 │ 1..inf | to md + · ───────┬────── + · ╰── This operation was interrupted + ╰──── +``` + +### Other fixes + +* - Multiplying duration by integers now throws an error on overflow ([#17063](https://github.com/nushell/nushell/pull/17063)) +* rm command will return error when there is one file is failed to remove. ([#17237](https://github.com/nushell/nushell/pull/17237)) +* Changed the behavior of `cal --month-names` to create a new `month_name` column instead of overriding `month`. ([#17302](https://github.com/nushell/nushell/pull/17302)) +* `glob` no longer canoncailizes paths internally ([#17312](https://github.com/nushell/nushell/pull/17312)) +* Fixed the issue where "Duplicate Pane" in Windows Terminal failed when the current path contained Chinese characters by removing unnecessary URL-encoding in OSC 9;9 sequences. ([#17311](https://github.com/nushell/nushell/pull/17311)) +* Enable `detect columns` to be more robust, specifically for handling the output of tablelike structures that are created with ascii or unicode table characters like we use in nushell today. Many tools are starting to use this columnar data output so hopefully this will enable nushell to be able to parse this data better. ([#17317](https://github.com/nushell/nushell/pull/17317)) +* General speed up increase in the `ls` command by caching and not calling`metadata()` so frequently. ([#17339](https://github.com/nushell/nushell/pull/17339)) +* `input -s` will append newline when user finished typing. ([#17298](https://github.com/nushell/nushell/pull/17298)) + + +# Notes for plugin developers + +# Hall of fame + +Thanks to all the contributors below for helping us solve issues, improve documentation, refactor code, and more! :pray: + +| author | change | link | +| --- | --- | --- | +| [@migraine-user](https://github.com/migraine-user) | Quick typo fix in docs for `each` | [#17110](https://github.com/nushell/nushell/pull/17110) | +| [@KaiSforza](https://github.com/KaiSforza) | Update flake.lock, added `latest` devshell variant | [#17084](https://github.com/nushell/nushell/pull/17084) | +| [@fdncred](https://github.com/fdncred) | Bump the rust-toolchain to 1.90.0 | [#17133](https://github.com/nushell/nushell/pull/17133) | +| [@blindFS](https://github.com/blindFS) | Use `checked_sub` in `parse_range` to avoid overflow | [#17152](https://github.com/nushell/nushell/pull/17152) | +| [@fdncred](https://github.com/fdncred) | Update doc config | [#17168](https://github.com/nushell/nushell/pull/17168) | +| [@fdncred](https://github.com/fdncred) | Update match count when test text changes | [#17169](https://github.com/nushell/nushell/pull/17169) | +| [@fdncred](https://github.com/fdncred) | Add search capability to `explore config` command | [#17170](https://github.com/nushell/nushell/pull/17170) | +| [@fdncred](https://github.com/fdncred) | Add syntax higlighting to `explore config` | [#17176](https://github.com/nushell/nushell/pull/17176) | +| [@fdncred](https://github.com/fdncred) | Refactor `explore` family of commands so that it's easier to understand and maintain | [#17181](https://github.com/nushell/nushell/pull/17181) | +| [@fdncred](https://github.com/fdncred) | Update uutils to 0.5.0 | [#17183](https://github.com/nushell/nushell/pull/17183) | +| [@WindSoilder](https://github.com/WindSoilder) | Add http pool cmd | [#17177](https://github.com/nushell/nushell/pull/17177) | +| [@fdncred](https://github.com/fdncred) | Add agents.md to help LLMs | [#17148](https://github.com/nushell/nushell/pull/17148) | +| [@fdncred](https://github.com/fdncred) | Update reedline to the latest commit | [#17197](https://github.com/nushell/nushell/pull/17197) | +| [@fdncred](https://github.com/fdncred) | Fix the mcp ctrl-c bug | [#17199](https://github.com/nushell/nushell/pull/17199) | +| [@sgvictorino](https://github.com/sgvictorino) | Make MCP server interruptible | [#17200](https://github.com/nushell/nushell/pull/17200) | +| [@fdncred](https://github.com/fdncred) | Increase help menu description rows from 10 to 15 | [#17223](https://github.com/nushell/nushell/pull/17223) | +| [@Ecorous](https://github.com/Ecorous) | Bump rmp(-serde) to 0.8.15/1.3.1 | [#17242](https://github.com/nushell/nushell/pull/17242) | +| [@WindSoilder](https://github.com/WindSoilder) | Fix rm -f when some files not found | [#17249](https://github.com/nushell/nushell/pull/17249) | +| [@ysthakur](https://github.com/ysthakur) | Bump reedline to latest main (reedline#991) | [#17252](https://github.com/nushell/nushell/pull/17252) | +| [@fdncred](https://github.com/fdncred) | Update reedline to latest commit | [#17266](https://github.com/nushell/nushell/pull/17266) | +| [@fdncred](https://github.com/fdncred) | The new command `unlet` will delete variables from memory. | [#17270](https://github.com/nushell/nushell/pull/17270) | +| [@fdncred](https://github.com/fdncred) | Fix `explore` searching | [#17289](https://github.com/nushell/nushell/pull/17289) | +| [@fdncred](https://github.com/fdncred) | Update reedline to latest commit | [#17299](https://github.com/nushell/nushell/pull/17299) | +| [@fdncred](https://github.com/fdncred) | Update nushell to latest reedline commit 6ceda500 | [#17328](https://github.com/nushell/nushell/pull/17328) | + +# Full changelog + +| author | title | link | +| --- | --- | --- | +| [@ChrisDenton](https://github.com/ChrisDenton) | Introduce `nupath::absolute_with` and use it in `glob` | [#17312](https://github.com/nushell/nushell/pull/17312) | +| [@ChrisDenton](https://github.com/ChrisDenton) | Replace uses of canonicalize in nu-command | [#17319](https://github.com/nushell/nushell/pull/17319) | +| [@ChrisDenton](https://github.com/ChrisDenton) | Fix removing broken symlinks on Windows | [#17320](https://github.com/nushell/nushell/pull/17320) | +| [@DevAldrete](https://github.com/DevAldrete) | Allow disabling filtering in custom completions | [#17253](https://github.com/nushell/nushell/pull/17253) | +| [@Dorumin](https://github.com/Dorumin) | --tag on job flush | [#17056](https://github.com/nushell/nushell/pull/17056) | +| [@Ecorous](https://github.com/Ecorous) | Bump rmp(-serde) to 0.8.15/1.3.1 | [#17242](https://github.com/nushell/nushell/pull/17242) | +| [@IvolliousElectrolux](https://github.com/IvolliousElectrolux) | Fix OSC 9;9 path reporting in Windows Terminal (Fixes #17300) | [#17311](https://github.com/nushell/nushell/pull/17311) | +| [@Jan9103](https://github.com/Jan9103) | feat(bytes length): make available at const-time | [#17204](https://github.com/nushell/nushell/pull/17204) | +| [@KaiSforza](https://github.com/KaiSforza) | std/help: Add colors, proper examples, fix output | [#17010](https://github.com/nushell/nushell/pull/17010) | +| [@KaiSforza](https://github.com/KaiSforza) | error_make: Another rewrite of `error make` | [#17070](https://github.com/nushell/nushell/pull/17070) | +| [@KaiSforza](https://github.com/KaiSforza) | Update flake.lock, added `latest` devshell variant | [#17084](https://github.com/nushell/nushell/pull/17084) | +| [@KaiSforza](https://github.com/KaiSforza) | Fix up the env.rs tests | [#17085](https://github.com/nushell/nushell/pull/17085) | +| [@KaiSforza](https://github.com/KaiSforza) | Add `error_lines` and `error_style = tree` settings | [#17105](https://github.com/nushell/nushell/pull/17105) | +| [@NotTheDr01ds](https://github.com/NotTheDr01ds) | Added record conversion to `into list` | [#17127](https://github.com/nushell/nushell/pull/17127) | +| [@NotTheDr01ds](https://github.com/NotTheDr01ds) | Changed home-path/temp-path to home-dir/temp-dir | [#17129](https://github.com/nushell/nushell/pull/17129) | +| [@NotTheDr01ds](https://github.com/NotTheDr01ds) | Added CARGO_ and RUSTUP_ environment variables back to test environment | [#17186](https://github.com/nushell/nushell/pull/17186) | +| [@NotTheDr01ds](https://github.com/NotTheDr01ds) | Add `--icons` option to `table` for `ls` tables | [#17248](https://github.com/nushell/nushell/pull/17248) | +| [@Tyarel8](https://github.com/Tyarel8) | feat(`timeit`): add `--output` flag | [#17202](https://github.com/nushell/nushell/pull/17202) | +| [@WindSoilder](https://github.com/WindSoilder) | pipefail: works inside try block | [#17052](https://github.com/nushell/nushell/pull/17052) | +| [@WindSoilder](https://github.com/WindSoilder) | Making --env-config and --config errors lead to error status code when running nu scripts or commands. | [#17103](https://github.com/nushell/nushell/pull/17103) | +| [@WindSoilder](https://github.com/WindSoilder) | merge_predecl don't move all predecls to overlay | [#17130](https://github.com/nushell/nushell/pull/17130) | +| [@WindSoilder](https://github.com/WindSoilder) | http commands can use builtin connection pool | [#17157](https://github.com/nushell/nushell/pull/17157) | +| [@WindSoilder](https://github.com/WindSoilder) | add http pool cmd | [#17177](https://github.com/nushell/nushell/pull/17177) | +| [@WindSoilder](https://github.com/WindSoilder) | `mv/cp/du *`: don't match dotfiles by default. | [#17185](https://github.com/nushell/nushell/pull/17185) | +| [@WindSoilder](https://github.com/WindSoilder) | rm: returns Error when it failed to remove a file | [#17237](https://github.com/nushell/nushell/pull/17237) | +| [@WindSoilder](https://github.com/WindSoilder) | Value::List and Value::Range can be interrupted when piping to other commands. | [#17245](https://github.com/nushell/nushell/pull/17245) | +| [@WindSoilder](https://github.com/WindSoilder) | fix rm -f when some files not found | [#17249](https://github.com/nushell/nushell/pull/17249) | +| [@WindSoilder](https://github.com/WindSoilder) | input -s: always write "\\n" when user finished typing. | [#17298](https://github.com/nushell/nushell/pull/17298) | +| [@andrewgazelka](https://github.com/andrewgazelka) | feat(mcp): output NUON format instead of expanded string | [#17119](https://github.com/nushell/nushell/pull/17119) | +| [@andrewgazelka](https://github.com/andrewgazelka) | refactor(mcp): extract tool descriptions to markdown files | [#17120](https://github.com/nushell/nushell/pull/17120) | +| [@andrewgazelka](https://github.com/andrewgazelka) | feat(mcp): add REPL-style state persistence across evaluations | [#17121](https://github.com/nushell/nushell/pull/17121) | +| [@andrewgazelka](https://github.com/andrewgazelka) | feat(mcp): add $history variable and structured response format | [#17132](https://github.com/nushell/nushell/pull/17132) | +| [@andrewgazelka](https://github.com/andrewgazelka) | docs(mcp): add string interpolation syntax to instructions | [#17153](https://github.com/nushell/nushell/pull/17153) | +| [@andrewgazelka](https://github.com/andrewgazelka) | docs(mcp): add stderr redirection BAD/GOOD examples to instructions | [#17163](https://github.com/nushell/nushell/pull/17163) | +| [@andrewgazelka](https://github.com/andrewgazelka) | docs(mcp): add par-each preference to instructions | [#17171](https://github.com/nushell/nushell/pull/17171) | +| [@andrewgazelka](https://github.com/andrewgazelka) | feat(nuon): add raw string serialization support | [#17189](https://github.com/nushell/nushell/pull/17189) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump actions/checkout from 5 to 6 | [#17076](https://github.com/nushell/nushell/pull/17076) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump schemars from 1.0.4 to 1.1.0 | [#17078](https://github.com/nushell/nushell/pull/17078) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump crate-ci/typos from 1.39.2 to 1.40.0 | [#17108](https://github.com/nushell/nushell/pull/17108) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump bytesize from 2.1.0 to 2.3.1 | [#17139](https://github.com/nushell/nushell/pull/17139) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump actions/upload-artifact from 5 to 6 | [#17190](https://github.com/nushell/nushell/pull/17190) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump http from 1.3.1 to 1.4.0 | [#17191](https://github.com/nushell/nushell/pull/17191) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump bytes from 1.10.0 to 1.11.0 | [#17192](https://github.com/nushell/nushell/pull/17192) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump winreg from 0.52.0 to 0.55.0 | [#17193](https://github.com/nushell/nushell/pull/17193) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump strum from 0.26.3 to 0.27.2 | [#17194](https://github.com/nushell/nushell/pull/17194) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump procfs from 0.17.0 to 0.18.0 | [#17195](https://github.com/nushell/nushell/pull/17195) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump rmcp from 0.8.1 to 0.8.5 | [#17224](https://github.com/nushell/nushell/pull/17224) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump toml from 0.8.19 to 0.9.10+spec-1.1.0 | [#17225](https://github.com/nushell/nushell/pull/17225) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump mach2 from 0.4.3 to 0.6.0 | [#17227](https://github.com/nushell/nushell/pull/17227) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump crate-ci/typos from 1.40.0 to 1.40.1 | [#17259](https://github.com/nushell/nushell/pull/17259) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump tempfile from 3.23.0 to 3.24.0 | [#17261](https://github.com/nushell/nushell/pull/17261) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump csv from 1.3.1 to 1.4.0 | [#17262](https://github.com/nushell/nushell/pull/17262) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump uuid from 1.18.1 to 1.19.0 | [#17264](https://github.com/nushell/nushell/pull/17264) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump calamine from 0.28.0 to 0.32.0 | [#17306](https://github.com/nushell/nushell/pull/17306) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump fancy-regex from 0.16.1 to 0.17.0 | [#17307](https://github.com/nushell/nushell/pull/17307) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump unicase from 2.8.0 to 2.9.0 | [#17308](https://github.com/nushell/nushell/pull/17308) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump tokio from 1.46.1 to 1.49.0 | [#17309](https://github.com/nushell/nushell/pull/17309) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump lru from 0.12.5 to 0.16.3 | [#17313](https://github.com/nushell/nushell/pull/17313) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump dialoguer from 0.11.0 to 0.12.0 | [#17314](https://github.com/nushell/nushell/pull/17314) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump shadow-rs from 1.4.0 to 1.5.0 | [#17315](https://github.com/nushell/nushell/pull/17315) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump schemars from 1.1.0 to 1.2.0 | [#17316](https://github.com/nushell/nushell/pull/17316) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump crate-ci/typos from 1.41.0 to 1.42.0 | [#17343](https://github.com/nushell/nushell/pull/17343) | +| [@astral-l](https://github.com/astral-l) | Add `month_name` column to `cal --month-names` | [#17302](https://github.com/nushell/nushell/pull/17302) | +| [@atahabaki](https://github.com/atahabaki) | Do not treat 0 as padding always \| bracoxide \| str expand | [#17294](https://github.com/nushell/nushell/pull/17294) | +| [@ayax79](https://github.com/ayax79) | Azure blob storage support for polars | [#17116](https://github.com/nushell/nushell/pull/17116) | +| [@ayax79](https://github.com/ayax79) | Polars: Add google cloud support | [#17135](https://github.com/nushell/nushell/pull/17135) | +| [@ayax79](https://github.com/ayax79) | Added mcp to default and all features | [#17151](https://github.com/nushell/nushell/pull/17151) | +| [@ayax79](https://github.com/ayax79) | Polars: Allow series and expressions to be passed into `polars is-in` | [#17275](https://github.com/nushell/nushell/pull/17275) | +| [@ayax79](https://github.com/ayax79) | Polars: Introduce selector support | [#17296](https://github.com/nushell/nushell/pull/17296) | +| [@blackhat-hemsworth](https://github.com/blackhat-hemsworth) | deduplicated types in type_check process to improve error message | [#17075](https://github.com/nushell/nushell/pull/17075) | +| [@blackhat-hemsworth](https://github.com/blackhat-hemsworth) | [fix] fixed issue with alias "missing required flag" on create | [#17106](https://github.com/nushell/nushell/pull/17106) | +| [@blackhat-hemsworth](https://github.com/blackhat-hemsworth) | fixed handling of ranges with respect to parentheses | [#17109](https://github.com/nushell/nushell/pull/17109) | +| [@blackhat-hemsworth](https://github.com/blackhat-hemsworth) | fixed parsing issue with multiarm match + guard | [#17115](https://github.com/nushell/nushell/pull/17115) | +| [@blackhat-hemsworth](https://github.com/blackhat-hemsworth) | fix--propagate more descriptive error message for rm Os errors | [#17134](https://github.com/nushell/nushell/pull/17134) | +| [@blindFS](https://github.com/blindFS) | fix(parser): use `checked_sub` in `parse_range` to avoid overflow | [#17152](https://github.com/nushell/nushell/pull/17152) | +| [@cptpiepmatz](https://github.com/cptpiepmatz) | Replace dep `rust-embed` with custom code generation | [#17276](https://github.com/nushell/nushell/pull/17276) | +| [@cptpiepmatz](https://github.com/cptpiepmatz) | Use `Signature::build` instead of `new` on `debug env` | [#17278](https://github.com/nushell/nushell/pull/17278) | +| [@dhr412](https://github.com/dhr412) | Add `definition` column to `which` command for aliases | [#17338](https://github.com/nushell/nushell/pull/17338) | +| [@fdncred](https://github.com/fdncred) | bump the rust-toolchain to 1.90.0 | [#17133](https://github.com/nushell/nushell/pull/17133) | +| [@fdncred](https://github.com/fdncred) | new command: `explore config` TUI | [#17147](https://github.com/nushell/nushell/pull/17147) | +| [@fdncred](https://github.com/fdncred) | add agents.md to help LLMs | [#17148](https://github.com/nushell/nushell/pull/17148) | +| [@fdncred](https://github.com/fdncred) | update explore regex command to look more helpful and professional | [#17149](https://github.com/nushell/nushell/pull/17149) | +| [@fdncred](https://github.com/fdncred) | Update doc config | [#17168](https://github.com/nushell/nushell/pull/17168) | +| [@fdncred](https://github.com/fdncred) | update match count when test text changes | [#17169](https://github.com/nushell/nushell/pull/17169) | +| [@fdncred](https://github.com/fdncred) | add search capability to `explore config` command | [#17170](https://github.com/nushell/nushell/pull/17170) | +| [@fdncred](https://github.com/fdncred) | clean up explore a bit | [#17172](https://github.com/nushell/nushell/pull/17172) | +| [@fdncred](https://github.com/fdncred) | Add syntax higlighting to `explore config` | [#17176](https://github.com/nushell/nushell/pull/17176) | +| [@fdncred](https://github.com/fdncred) | refactor `explore` family of commands so that it's easier to understand and maintain | [#17181](https://github.com/nushell/nushell/pull/17181) | +| [@fdncred](https://github.com/fdncred) | update uutils to 0.5.0 | [#17183](https://github.com/nushell/nushell/pull/17183) | +| [@fdncred](https://github.com/fdncred) | Add quick reference panel to `explore regex` command | [#17187](https://github.com/nushell/nushell/pull/17187) | +| [@fdncred](https://github.com/fdncred) | update reedline to the latest commit | [#17197](https://github.com/nushell/nushell/pull/17197) | +| [@fdncred](https://github.com/fdncred) | fix the mcp ctrl-c bug | [#17199](https://github.com/nushell/nushell/pull/17199) | +| [@fdncred](https://github.com/fdncred) | Stream explore nu output | [#17208](https://github.com/nushell/nushell/pull/17208) | +| [@fdncred](https://github.com/fdncred) | use graphemes instead of byte indexes in `explore regegx` | [#17219](https://github.com/nushell/nushell/pull/17219) | +| [@fdncred](https://github.com/fdncred) | Increase help menu description rows from 10 to 15 | [#17223](https://github.com/nushell/nushell/pull/17223) | +| [@fdncred](https://github.com/fdncred) | Allow `let` to be able to be used at the end of the pipeline | [#17247](https://github.com/nushell/nushell/pull/17247) | +| [@fdncred](https://github.com/fdncred) | update reedline to latest commit | [#17266](https://github.com/nushell/nushell/pull/17266) | +| [@fdncred](https://github.com/fdncred) | new command: `unlet` | [#17270](https://github.com/nushell/nushell/pull/17270) | +| [@fdncred](https://github.com/fdncred) | add `memory_size` funciton on nushell's `Value` | [#17287](https://github.com/nushell/nushell/pull/17287) | +| [@fdncred](https://github.com/fdncred) | Fix `explore` searching | [#17289](https://github.com/nushell/nushell/pull/17289) | +| [@fdncred](https://github.com/fdncred) | update reedline to latest commit | [#17299](https://github.com/nushell/nushell/pull/17299) | +| [@fdncred](https://github.com/fdncred) | replace deprecated current_dir usage with EngineState::cwd in multiple files | [#17303](https://github.com/nushell/nushell/pull/17303) | +| [@fdncred](https://github.com/fdncred) | make `detect columns` more robust + refactor + new switch | [#17317](https://github.com/nushell/nushell/pull/17317) | +| [@fdncred](https://github.com/fdncred) | add more details to agents.md | [#17318](https://github.com/nushell/nushell/pull/17318) | +| [@fdncred](https://github.com/fdncred) | update nushell to latest reedline commit 6ceda500 | [#17328](https://github.com/nushell/nushell/pull/17328) | +| [@fdncred](https://github.com/fdncred) | make `ls` faster | [#17339](https://github.com/nushell/nushell/pull/17339) | +| [@fdncred](https://github.com/fdncred) | Update evaluate_tool.md | [#17342](https://github.com/nushell/nushell/pull/17342) | +| [@fdncred](https://github.com/fdncred) | add better regex pattern handling | [#17357](https://github.com/nushell/nushell/pull/17357) | +| [@hustcer](https://github.com/hustcer) | Fix http DNS resolution "Service not supported" error in Docker containers | [#17125](https://github.com/nushell/nushell/pull/17125) | +| [@hustcer](https://github.com/hustcer) | Fix `table -i false` panic when there is an index column | [#17126](https://github.com/nushell/nushell/pull/17126) | +| [@hustcer](https://github.com/hustcer) | Upgrade nushell to 0.109.1 for release and nightly workflow | [#17131](https://github.com/nushell/nushell/pull/17131) | +| [@hustcer](https://github.com/hustcer) | Add --list flag to `to md` for ordered/unordered/none list formatting | [#17250](https://github.com/nushell/nushell/pull/17250) | +| [@hustcer](https://github.com/hustcer) | Fix typo & upgrade crate-ci/typos | [#17310](https://github.com/nushell/nushell/pull/17310) | +| [@kaathewisegit](https://github.com/kaathewisegit) | fix: throw errors on overflow in duration integer multiplication | [#17063](https://github.com/nushell/nushell/pull/17063) | +| [@kouhe3](https://github.com/kouhe3) | use win_uds as uds on windows | [#17214](https://github.com/nushell/nushell/pull/17214) | +| [@migraine-user](https://github.com/migraine-user) | Quick typo fix in docs for `each` | [#17110](https://github.com/nushell/nushell/pull/17110) | +| [@playwmadness](https://github.com/playwmadness) | Update `--allow-dtd` hint phrasing for `from xml` | [#17218](https://github.com/nushell/nushell/pull/17218) | +| [@playwmadness](https://github.com/playwmadness) | fix(#17321): `with-env` not applying locale env vars to `format date` | [#17333](https://github.com/nushell/nushell/pull/17333) | +| [@reubeno](https://github.com/reubeno) | update reedline to the latest commit | [#17203](https://github.com/nushell/nushell/pull/17203) | +| [@sgvictorino](https://github.com/sgvictorino) | use `Stack::get_config()` in more places | [#17058](https://github.com/nushell/nushell/pull/17058) | +| [@sgvictorino](https://github.com/sgvictorino) | make MCP server interruptible | [#17200](https://github.com/nushell/nushell/pull/17200) | +| [@splintersuidman](https://github.com/splintersuidman) | Add configuration option for whether to show hints | [#17156](https://github.com/nushell/nushell/pull/17156) | +| [@tom-lubenow](https://github.com/tom-lubenow) | Add GetBlockIR engine call to plugin protocol | [#17279](https://github.com/nushell/nushell/pull/17279) | +| [@yanek](https://github.com/yanek) | Add `short` error_style | [#17097](https://github.com/nushell/nushell/pull/17097) | +| [@ysthakur](https://github.com/ysthakur) | fix: Make custom completer spans relative to command expr | [#17060](https://github.com/nushell/nushell/pull/17060) | +| [@ysthakur](https://github.com/ysthakur) | Bump reedline to latest main (reedline#991) | [#17252](https://github.com/nushell/nushell/pull/17252) | +| [@ysthakur](https://github.com/ysthakur) | Change default IdeMenu min_description_width to 15 | [#17280](https://github.com/nushell/nushell/pull/17280) | +| [@ysthakur](https://github.com/ysthakur) | Pin reedline to 0.45 for 0.110 release | [#17366](https://github.com/nushell/nushell/pull/17366) | From 95273c0a87bc4b69c2fa4ea80ea220f003ee7b1c Mon Sep 17 00:00:00 2001 From: ysthakur <45539777+ysthakur@users.noreply.github.com> Date: Sat, 17 Jan 2026 10:14:00 -0500 Subject: [PATCH 2/8] Handle PRs with multiline summaries and no title --- blog/2026-01-17-nushell_v0_110_0.md | 97 ++++++++++++++--------------- 1 file changed, 46 insertions(+), 51 deletions(-) diff --git a/blog/2026-01-17-nushell_v0_110_0.md b/blog/2026-01-17-nushell_v0_110_0.md index 6c87a732766..038fbfb2308 100644 --- a/blog/2026-01-17-nushell_v0_110_0.md +++ b/blog/2026-01-17-nushell_v0_110_0.md @@ -50,37 +50,29 @@ As part of this release, we also publish a set of optional [plugins](https://www You can now disable hints for completions and the history by setting `$env.config.show_hints = false`. -### Add `error_lines` and `error_style = tree` settings - -* New option for `$env.config.error_style` to show related/nested errors: `tree` -* New setting to change the number of lines printed for error context (default: 1): `$env.config.error_lines` - -### Other additions - -* `job flush` can now take a `--tag` to filter which messages to discard ([#17056](https://github.com/nushell/nushell/pull/17056)) - -## Other changes - ### Add `short` error_style -Add a new `short` option for `$env.config.error_style` that displays errors as concise, single-line messages similar to classic shells. +[#17097](https://github.com/nushell/nushell/pull/17097) adds a new `short` option to `$env.config.error_style` for displaying errors as concise, single-line messages similar to classic shells. ``` $ ll Error: External command failed: Command `ll` not found (Did you mean `all`?) ``` -### Update explore regex command to look more helpful and professional +### New `error_style = true` setting + +[#17105](https://github.com/nushell/nushell/pull/17105) adds a new `tree` option for `$env.config.error_style` to show related/nested errors. -This PR just makes the UI look a little more professional, abstracts the coloring, and tries to make the code a little more idiomatic. -image +### New `error_lines` setting + +[#17105](https://github.com/nushell/nushell/pull/17105) adds a new `$env.config.error_lines` option to control the number of lines printed for error context. By default, this is set to 1. ### New command: `explore config` TUI Introducing the `explore config` command. Functionality: -- When launched with no parameters it loads your config settings into a tree and editor to allow you to traverse, explore, and change settings. +- When launched with no parameters, it loads your config settings into a tree and editor to allow you to traverse, explore, and change settings. - When launched with the `--tree` parameter, it draws a tree view of your piped in input into the terminal - When launched with the `--use-example-data` parameter, it shows you a customized configuration (my config actually). May be removed later. - When JSON is piped into it e.g `'{"abc": 1, "xyz": 2}' | explore config --output foo.json` it allows you to explore and edit the JSON data and save it out to the provided filename. @@ -141,11 +133,32 @@ Examples: > explore config --use-example-data ``` -### Fix--propagate more descriptive error message for rm Os errors +### Other additions + +* `job flush` can now take a `--tag` to filter which messages to discard ([#17056](https://github.com/nushell/nushell/pull/17056)) + +## Removals -This makes a descriptive error message for particular IO / OS errors on the "rm" command. This would be helpful in the associated issue, where MacOS will silently deny access in some circumstances, and it can appear to users as an inconsistency within Nushell +### Replace deprecated current_dir usage with EngineState::cwd in multiple files + +[#17303](https://github.com/nushell/nushell/pull/17303) removes some deprecated Rust functions from `nu-engine` that have been deprecated since Nushell 0.92.3: -related to #17057 +- `current_dir_str()` +- `current_dir_str_const()` +- `current_dir()` +- `current_dir_const()` + +## Other changes + +### Update explore regex command to look more helpful and professional + +With [#17149](https://github.com/nushell/nushell/pull/17149), the `explore regex` UI now looks more helpful and professional. + +![New explore regex UI](https://github.com/user-attachments/assets/15e64dcf-96f7-4c6c-87da-b52c1f78d986) + +### More descriptive error messages for `rm` + +The `rm` command now provides more descriptive error messages when it runs into an IO error. Implemented in [#17134](https://github.com/nushell/nushell/pull/17134). ### `*` no longer matches dotfiles in mv/cp/du by default ```nushell @@ -156,14 +169,6 @@ false ``` But users can make it matches dotfiles by `--all(-a)` flag. -### Replace deprecated current_dir usage with EngineState::cwd in multiple files - -This PR removes some deprecated Rust functions from nu-engine that have been deprecated since 0.92.3: -- current_dir_str() -- current_dir_str_const() -- current_dir() -- current_dir_const() - ### Additional changes * Add a quick reference panel to `explore regex` with the F1 keybinding and dismiss it with the ESC keybinding. ([#17187](https://github.com/nushell/nushell/pull/17187)) @@ -175,35 +180,23 @@ This PR removes some deprecated Rust functions from nu-engine that have been dep ## Bug fixes -### Deduplicated types in type_check process to improve error message - -This PR is intended to fix the issue with error messages documented in #16717, by sorting and deduplicating the current_type param in check_type.rs. - -Fixes https://github.com/nushell/nushell/issues/16717. +### Fixed parsing of ranges with parentheses -### [fix] fixed issue with alias "missing required flag" on create +Ranges that include a parenthesized expression will now be parsed correctly after [#17109](https://github.com/nushell/nushell/pull/17109). The below example will now evaluate to the range `0..1` rather than being parsed as an invalid three-part range `0..(1..2`. -Added logic to treat Missing Required Flag the same as Missing Positional (i.e., alias parsing logic ignores those errors when returned from parse_call). I did a scan of similar types of parse errors and added MissingFlagParam, which I think should have the same treatment. - -fixes #16847 - -### Fixed handling of ranges with respect to parentheses - -added logic to exclude parenthesized expressions in the search for the optional second piece of a range expression, ex - -```0..(1..2 | first)``` - -will now parse as a simple range `0..1` rather than an invalid complex range `0..(1..2` - -fixes #16969 +```nu +0..(1..2 | first) +``` ### Fixed parsing issue with multiarm match + guard -match statements will now work with multiple arms _and_ a guard expression. +Match statements with multiple alarms and a guard expression, such as the below example, will now be parsed correctly after [#17115](https://github.com/nushell/nushell/pull/17115). Previously, such an expression would fail to parse. -Updated parse_match_block_expression such that in `match 3 {1 | 2 | 3 if true => 'test'}` the logic will now add "if true" guard to "1 | 2 | 3" match pattern and evaluate per existing logic. Previously the guard check would be skipped for multi-arm expressions, which would always lead to a parse error (logic expecting "=>") - -fixes #16131 +```nu +match 3 { + 1 | 2 | 3 if true => 'test' +} +``` ### Infinite sequences cant be terminated when piped to other command ``` @@ -220,7 +213,9 @@ fixes #16131 ### Other fixes -* - Multiplying duration by integers now throws an error on overflow ([#17063](https://github.com/nushell/nushell/pull/17063)) +* Type mismatch errors no longer list the same type multiple times ([#17075](https://github.com/nushell/nushell/pull/17075)) +* Allow creating aliases for commands with required flags ([#17106](https://github.com/nushell/nushell/pull/17106)) +* Multiplying duration by integers now throws an error on overflow ([#17063](https://github.com/nushell/nushell/pull/17063)) * rm command will return error when there is one file is failed to remove. ([#17237](https://github.com/nushell/nushell/pull/17237)) * Changed the behavior of `cal --month-names` to create a new `month_name` column instead of overriding `month`. ([#17302](https://github.com/nushell/nushell/pull/17302)) * `glob` no longer canoncailizes paths internally ([#17312](https://github.com/nushell/nushell/pull/17312)) From 8d92335d9374f365774a921172d4be783cb99626 Mon Sep 17 00:00:00 2001 From: ysthakur <45539777+ysthakur@users.noreply.github.com> Date: Sat, 17 Jan 2026 12:02:37 -0500 Subject: [PATCH 3/8] Release notes for some PRs without notes:ready --- blog/2026-01-17-nushell_v0_110_0.md | 142 ++++++++++++++++++++++++++-- 1 file changed, 135 insertions(+), 7 deletions(-) diff --git a/blog/2026-01-17-nushell_v0_110_0.md b/blog/2026-01-17-nushell_v0_110_0.md index 038fbfb2308..ee448800c6b 100644 --- a/blog/2026-01-17-nushell_v0_110_0.md +++ b/blog/2026-01-17-nushell_v0_110_0.md @@ -44,6 +44,16 @@ As part of this release, we also publish a set of optional [plugins](https://www # Changes +## Breaking changes + +### Renamed `$nu.temp-path` and `$nu.home-path` + +For consistency with other `$nu` fields: +- `$nu.temp-path` has been renamed to `$nu.temp-dir` +- `$nu.home-path` has been renamed to `$nu.home-dir` + +Implemented in [#17129](https://github.com/nushell/nushell/pull/17129). + ## Additions ### New Configuration Option: `$env.config.show_hints` @@ -67,6 +77,74 @@ Error: External command failed: Command `ll` not found (Did you mean `all`?) [#17105](https://github.com/nushell/nushell/pull/17105) adds a new `$env.config.error_lines` option to control the number of lines printed for error context. By default, this is set to 1. +### `let` can be used in pipelines + +With [#17247](https://github.com/nushell/nushell/pull/17247), the `let` command is now allowed to be at the end of the pipeline when a variable name is also provided. + +```nu +ls | get name | let files +# Equivalent to the following: +let files = ls | get name +``` + +### New command: `unlet` + +The new command `unlet`, introduced in [#17270](https://github.com/nushell/nushell/pull/17270), will delete variables from memory. + +```nu +❯ let a = 1;let b = 2;let c = 3;let d = 4 +❯ $"($a)($b)($c)($d)" +1234 +❯ unlet $a $b $cM +❯ $"($a)($b)($c)($d)" +Error: nu::shell::variable_not_found + + × Variable not found + ╭─[entry #21:1:4] + 1 │ $"($a)($b)($c)($d)" + · ─┬ + · ╰── variable not found + ╰──── +``` + +### Added record conversion to `into list` + +With [#17127](https://github.com/nushell/nushell/pull/17127), `into list` from `std-rfc/conversions` now handles record types. + +``` +use std-rfc/conversions * +{ a: 3, b: 7, c: 10 } | into list +# => ╭───┬─────┬───────╮ +# => │ # │ key │ value │ +# => ├───┼─────┼───────┤ +# => │ 0 │ a │ 3 │ +# => │ 1 │ b │ 7 │ +# => │ 2 │ c │ 10 │ +# => ╰───┴─────┴───────╯ +``` + +### Azure support for the polars plugin + +[#17116](https://github.com/nushell/nushell/pull/17116) brings Azure blob storage support to the polars plugin. The following environment variables are now supported: +- `AZURE_STORAGE_ACCOUNT_NAME`: storage account name +- `AZURE_STORAGE_ACCOUNT_KEY`: storage account master key +- `AZURE_STORAGE_ACCESS_KEY`: alias for `AZURE_STORAGE_ACCOUNT_KEY` +- `AZURE_STORAGE_CLIENT_ID`: client id for service principal authorization +- `AZURE_STORAGE_CLIENT_SECRET`: client secret for service principal authorization +- `AZURE_STORAGE_TENANT_ID`: tenant id used in oauth flows + +Example Usage: +```nu +$env.AZURE_STORAGE_ACCOUNT_KEY = "" +$env.AZURE_STORAGE_ACCOUNT_NAME = "" +ps | polars into-df | polars save azure:///ps.parquet +polars open azure:///ps.parquet | polars first 5 | polars collect +``` + +### Include MCP server support by default + +The MCP server support is now included as a default feature in [#17151](https://github.com/nushell/nushell/pull/17151). + ### New command: `explore config` TUI Introducing the `explore config` command. @@ -171,6 +249,8 @@ But users can make it matches dotfiles by `--all(-a)` flag. ### Additional changes +* Single column dataframes (series) or expressions can now be passed into `polars is-in` ([#17275](https://github.com/nushell/nushell/pull/17275)) +* Lists can now be passed into `polars lit` ([#17275](https://github.com/nushell/nushell/pull/17275)) * Add a quick reference panel to `explore regex` with the F1 keybinding and dismiss it with the ESC keybinding. ([#17187](https://github.com/nushell/nushell/pull/17187)) * Within the `explore` command the `:nu` command will now stream content by spawning the command issues without blocking. ([#17208](https://github.com/nushell/nushell/pull/17208)) * `--help` is now available for `debug env`. ([#17278](https://github.com/nushell/nushell/pull/17278)) @@ -199,6 +279,7 @@ match 3 { ``` ### Infinite sequences cant be terminated when piped to other command + ``` > `1..inf | to md` # then press ctrl-c ^CError: nu::shell::error @@ -211,6 +292,52 @@ match 3 { ╰──── ``` +### Pipefail works with `try` block + +With [#17052](https://github.com/nushell/nushell/pull/17052), the following code will an empty list with additional `1`, because the command is failed actually. + +```nu +> nu --experimental-options=[pipefail] +> try { + ^false | lines +} catch {|e| + print $e.exit_code +} +``` + +### Nushell exits early when running scripts or commands with bad config files + +With [#17103](https://github.com/nushell/nushell/pull/17103), if a script or command is run with a `config.nu` or `env.nu` that can't be evaluated, Nushell will exit. + +```nu +echo 'errnocmd' | save config.nu +nu --config config.nu -c 'echo $env.NU_VERSION' +``` + +This will exit with status code 1 rather than printing the Nushell version. + +### Fix `http` DNS resolution "Service not supported" error in Docker containers + +With [#17125](https://github.com/nushell/nushell/pull/17125), `http` commands will no longer error with "Service not supported for this socket type" in certain Linux environments (particularly Docker containers running Debian Trixie). + +### Fix variables remaining active after `overlay hide` + +[#17130](https://github.com/nushell/nushell/pull/17130) makes overlays work more reliably inside scripts. + +``` +#!/usr/bin/env nu + +def something [] { "example" } + +module spam {} +overlay use spam +def bar [] { "bar" } +overlay hide spam +bar +``` + +Previously, `bar` would be available to use even after `overlay hide spam`. This has been fixed. + ### Other fixes * Type mismatch errors no longer list the same type multiple times ([#17075](https://github.com/nushell/nushell/pull/17075)) @@ -218,12 +345,13 @@ match 3 { * Multiplying duration by integers now throws an error on overflow ([#17063](https://github.com/nushell/nushell/pull/17063)) * rm command will return error when there is one file is failed to remove. ([#17237](https://github.com/nushell/nushell/pull/17237)) * Changed the behavior of `cal --month-names` to create a new `month_name` column instead of overriding `month`. ([#17302](https://github.com/nushell/nushell/pull/17302)) -* `glob` no longer canoncailizes paths internally ([#17312](https://github.com/nushell/nushell/pull/17312)) +* `glob` no longer canonicalizes paths internally ([#17312](https://github.com/nushell/nushell/pull/17312)) * Fixed the issue where "Duplicate Pane" in Windows Terminal failed when the current path contained Chinese characters by removing unnecessary URL-encoding in OSC 9;9 sequences. ([#17311](https://github.com/nushell/nushell/pull/17311)) * Enable `detect columns` to be more robust, specifically for handling the output of tablelike structures that are created with ascii or unicode table characters like we use in nushell today. Many tools are starting to use this columnar data output so hopefully this will enable nushell to be able to parse this data better. ([#17317](https://github.com/nushell/nushell/pull/17317)) -* General speed up increase in the `ls` command by caching and not calling`metadata()` so frequently. ([#17339](https://github.com/nushell/nushell/pull/17339)) -* `input -s` will append newline when user finished typing. ([#17298](https://github.com/nushell/nushell/pull/17298)) - +* General speed up increase in the `ls` command by caching and not calling `metadata()` so frequently. ([#17339](https://github.com/nushell/nushell/pull/17339)) +* `input -s` will append newline when user finishes typing. ([#17298](https://github.com/nushell/nushell/pull/17298)) +* `std/help`: Add colors, proper examples, fix output ([#17010](https://github.com/nushell/nushell/pull/17010)) +* `table -i false` no longer panic when there is an index column, e.g: `[{index: 0, data: yes}] | table -i false` ([#17126](https://github.com/nushell/nushell/pull/17126)) # Notes for plugin developers @@ -240,7 +368,7 @@ Thanks to all the contributors below for helping us solve issues, improve docume | [@fdncred](https://github.com/fdncred) | Update doc config | [#17168](https://github.com/nushell/nushell/pull/17168) | | [@fdncred](https://github.com/fdncred) | Update match count when test text changes | [#17169](https://github.com/nushell/nushell/pull/17169) | | [@fdncred](https://github.com/fdncred) | Add search capability to `explore config` command | [#17170](https://github.com/nushell/nushell/pull/17170) | -| [@fdncred](https://github.com/fdncred) | Add syntax higlighting to `explore config` | [#17176](https://github.com/nushell/nushell/pull/17176) | +| [@fdncred](https://github.com/fdncred) | Add syntax highlighting to `explore config` | [#17176](https://github.com/nushell/nushell/pull/17176) | | [@fdncred](https://github.com/fdncred) | Refactor `explore` family of commands so that it's easier to understand and maintain | [#17181](https://github.com/nushell/nushell/pull/17181) | | [@fdncred](https://github.com/fdncred) | Update uutils to 0.5.0 | [#17183](https://github.com/nushell/nushell/pull/17183) | | [@WindSoilder](https://github.com/WindSoilder) | Add http pool cmd | [#17177](https://github.com/nushell/nushell/pull/17177) | @@ -348,7 +476,7 @@ Thanks to all the contributors below for helping us solve issues, improve docume | [@fdncred](https://github.com/fdncred) | update match count when test text changes | [#17169](https://github.com/nushell/nushell/pull/17169) | | [@fdncred](https://github.com/fdncred) | add search capability to `explore config` command | [#17170](https://github.com/nushell/nushell/pull/17170) | | [@fdncred](https://github.com/fdncred) | clean up explore a bit | [#17172](https://github.com/nushell/nushell/pull/17172) | -| [@fdncred](https://github.com/fdncred) | Add syntax higlighting to `explore config` | [#17176](https://github.com/nushell/nushell/pull/17176) | +| [@fdncred](https://github.com/fdncred) | Add syntax highlighting to `explore config` | [#17176](https://github.com/nushell/nushell/pull/17176) | | [@fdncred](https://github.com/fdncred) | refactor `explore` family of commands so that it's easier to understand and maintain | [#17181](https://github.com/nushell/nushell/pull/17181) | | [@fdncred](https://github.com/fdncred) | update uutils to 0.5.0 | [#17183](https://github.com/nushell/nushell/pull/17183) | | [@fdncred](https://github.com/fdncred) | Add quick reference panel to `explore regex` command | [#17187](https://github.com/nushell/nushell/pull/17187) | @@ -360,7 +488,7 @@ Thanks to all the contributors below for helping us solve issues, improve docume | [@fdncred](https://github.com/fdncred) | Allow `let` to be able to be used at the end of the pipeline | [#17247](https://github.com/nushell/nushell/pull/17247) | | [@fdncred](https://github.com/fdncred) | update reedline to latest commit | [#17266](https://github.com/nushell/nushell/pull/17266) | | [@fdncred](https://github.com/fdncred) | new command: `unlet` | [#17270](https://github.com/nushell/nushell/pull/17270) | -| [@fdncred](https://github.com/fdncred) | add `memory_size` funciton on nushell's `Value` | [#17287](https://github.com/nushell/nushell/pull/17287) | +| [@fdncred](https://github.com/fdncred) | add `memory_size` function on nushell's `Value` | [#17287](https://github.com/nushell/nushell/pull/17287) | | [@fdncred](https://github.com/fdncred) | Fix `explore` searching | [#17289](https://github.com/nushell/nushell/pull/17289) | | [@fdncred](https://github.com/fdncred) | update reedline to latest commit | [#17299](https://github.com/nushell/nushell/pull/17299) | | [@fdncred](https://github.com/fdncred) | replace deprecated current_dir usage with EngineState::cwd in multiple files | [#17303](https://github.com/nushell/nushell/pull/17303) | From af53fc97eafce41b1ac1c3e7fb41855b28dcc23a Mon Sep 17 00:00:00 2001 From: ysthakur <45539777+ysthakur@users.noreply.github.com> Date: Sat, 17 Jan 2026 17:25:50 -0500 Subject: [PATCH 4/8] Finish adding release notes for PRs with no notes:ready label --- blog/2026-01-17-nushell_v0_110_0.md | 248 +++++++++++++++++++++++++++- 1 file changed, 246 insertions(+), 2 deletions(-) diff --git a/blog/2026-01-17-nushell_v0_110_0.md b/blog/2026-01-17-nushell_v0_110_0.md index ee448800c6b..57c6774043e 100644 --- a/blog/2026-01-17-nushell_v0_110_0.md +++ b/blog/2026-01-17-nushell_v0_110_0.md @@ -54,6 +54,45 @@ For consistency with other `$nu` fields: Implemented in [#17129](https://github.com/nushell/nushell/pull/17129). +### Use `labels` for multiple labels in `error make` + +Previously, when calling `error make` with a record argument, the `label` field could be either a single label or a list of labels. Now, it must be a single label. There is a new `labels` field that can hold a list of labels. Updated in [#17070](https://github.com/nushell/nushell/pull/17070). + +```nu +> def f [x y z] { + error make {msg: here labels: [ + {text: "there" span: (metadata $x).span} + {text: "everywhere" span: (metadata $y).span} + {text: "somewhere" span: (metadata $z).span} + ] + } +} +f abcd [x y z] {d: a} + +Error: nu::shell::error + + × here + ╭─[entry #11:9:3] + 8 │ } + 9 │ f abcd [x y z] {d: a} + · ──┬─ ───┬─── ───┬── + · │ │ ╰── somewhere + · │ ╰── everywhere + · ╰── there + ╰──── +``` + +### IDE menu `min_description_width` should be non-zero + +With [reedline#996](https://github.com/nushell/reedline/pull/996), the `min_description_width` setting for the IDE menu is used to determine when to switch the description to the left if `description_mode` is `prefer_right`. This means that if `min_description_width` is set to 0, the description box will always stay on the right, even when there isn't enough space to show it. + +To fix this, set `min_description_width` to a width at which the description box can still hold a decent amount of text (e.g., 15, the new default). + +### `to md` formats lists as unordered Markdown lists + +`to md` will now format lists as unordered Markdown lists by default. For more information, see [TODO do this after TOC is generated!]. +TODO fix link + ## Additions ### New Configuration Option: `$env.config.show_hints` @@ -123,9 +162,11 @@ use std-rfc/conversions * # => ╰───┴─────┴───────╯ ``` -### Azure support for the polars plugin +### Polars plugin supports more cloud providers + +#### Azure support -[#17116](https://github.com/nushell/nushell/pull/17116) brings Azure blob storage support to the polars plugin. The following environment variables are now supported: +[#17116](https://github.com/nushell/nushell/pull/17116) brings Azure blob storage support to the Polars plugin. The following environment variables are now supported: - `AZURE_STORAGE_ACCOUNT_NAME`: storage account name - `AZURE_STORAGE_ACCOUNT_KEY`: storage account master key - `AZURE_STORAGE_ACCESS_KEY`: alias for `AZURE_STORAGE_ACCOUNT_KEY` @@ -141,10 +182,96 @@ ps | polars into-df | polars save azure:///ps.parquet polars open azure:///ps.parquet | polars first 5 | polars collect ``` +#### Google Cloud support + +[#17135](https://github.com/nushell/nushell/pull/17135) brings Google Cloud Storage support to the Polars plugin. + +```nu +$env.GOOGLE_SERVICE_ACCOUNT = "/path/to/service_account.json" +$env.GOOGLE_BUCKET = "your_bucket" +ps | polars into-df | polars save gs://nushell_testing/ps.parquet +polars open gs://nushell_testing/ps.parquet | polars first 5 | polars collect +``` + ### Include MCP server support by default The MCP server support is now included as a default feature in [#17151](https://github.com/nushell/nushell/pull/17151). +### Connection pool for `http` commands + +With [#17157](https://github.com/nushell/nushell/pull/17157) `http` subcommands now have a `--pool` flag for reusing connections: + +```nu +http get https://www.google.com --pool +``` + +The `http pool` command can be used to reset and customize the HTTP connection pool. + +### New `--output` flag for `timeit` + +[#17202](https://github.com/nushell/nushell/pull/17202) adds a flag called `--output` to the `timeit` command that will make the command return a record with both the execution time and the output of the closure. + +``` +> timeit --output { 'example text' } +╭────────┬──────────────╮ +│ time │ 14328 │ +│ output │ example text │ +╰────────┴──────────────╯ +``` + +### Allow disabling filtering in custom completions + +[#17253](https://github.com/nushell/nushell/pull/17253) allows disabling filtering in custom completions. This is useful if you have a completer that filters on something other than the `value` of the suggestion (e.g. a completer that displays git commits and filters based on commit description). + +::: note +If you disable filtering, your completions will also not be sorted. +::: + +### New plugin interface `get_block_ir` + +[#17279](https://github.com/nushell/nushell/pull/17279) a new engine call to the plugin protocol for getting the compiled Intermediate Representation (IR) for a block: + +```rust +fn get_block_ir(&self, block_id: BlockId) -> Result +``` + +### New `--list` flag to control list formatting in `to md` + +With [#17250](https://github.com/nushell/nushell/pull/17250), `to md` will format lists as unordered Markdown lists by default. The `--list` flag can be used to control this: + +```nu + [a b c] | to md # => "* a\n* b\n* c" + [a b c] | to md --list unordered # => "* a\n* b\n* c" + [a b c] | to md --list ordered # => "1. a\n2. b\n3. c" + [a b c] | to md --list none # => "a\nb\nc" +``` + +::: warning +**Breaking change**: The previous behavior was equivalent to `--list none` (no formatting for lists). The new behavior is `--list unordered`. +::: + +### Add `--icons` option to table for `ls` tables + +Similar to `ls | grid -i`, now `ls | table --icons` will display file icons to the left of the filename. This can be used in your `$env.config.hooks.display_output` to always display icons when using `ls`. Implemented in [#17248](https://github.com/nushell/nushell/pull/17248). + +![table --icons screenshot](https://github.com/user-attachments/assets/3d8fad53-018d-4616-a659-37ef9122f6c3) + +### Alias definitions shown in `which` command + +With [#17338](https://github.com/nushell/nushell/pull/17338), the `which` command includes a `definitions` column when inspecting aliases to show the command that the alias expands to. + +### Support selectors in Polars plugin + +[#17296](https://github.com/nushell/nushell/pull/17296) introduces [Polars selector](https://docs.pola.rs/api/python/stable/reference/selectors.html) support. This introduces the NuSelector type and adds following new commands. + +- `polars selector all` (plugin) - Creates a selector that selects all columns. +- `polars selector by-dtype` (plugin) - Creates a selector that selects columns by data type. +- `polars selector by-name` (plugin) - Creates a selector that selects columns by name. +- `polars selector first` (plugin) - Creates a selector that selects the first column(s) by index. +- `polars selector last` (plugin) - Creates a selector that selects the last column(s) by index. + +Selectors may be used with `polars select` and `polars with-column`. + ### New command: `explore config` TUI Introducing the `explore config` command. @@ -211,6 +338,114 @@ Examples: > explore config --use-example-data ``` +### Improvements to `error make` + +[#17070](https://github.com/nushell/nushell/pull/17070) introduced several improvements to `error make`. + +#### Creating errors more easily + +`error make` can now be called without arguments: +``` +> error make +Error: nu::shell::error + + × originates from here + ╭─[entry #4:1:1] + 1 │ error make + · ────────── + ╰──── +``` + +It can also be passed a single message in any of the following ways: +- Pipeline input: `{msg: foo} | error make` +- Record argument: `error make {msg: foo}` +- String argument: `error make foo` + +``` +Error: nu::shell::error + + × foo + ╭─[entry #2:1:12] + 1 │ error make {msg: foo} + · ────────── + ╰──── +``` + +#### Chaining errors together + +`error make` already lets you created chained errors using `inner`, like so: +```nu +error make {msg: bar inner: [{msg: foo}]} +``` + +Now, you can achieve the same effect by: +- Passing a message as pipeline input: `{msg: foo} | error make bar` +- Creating an error in a `catch` block: `try {error make foo} catch {error make bar}` + +Here's how that second one looks: + +``` +Error: nu::shell::error + + × bar + ╭─[entry #1:1:29] + 1 │ try {error make foo} catch {error make bar} + · ────────── + ╰──── + +Error: nu::shell::error + + × foo + ╭─[entry #1:1:6] + 1 │ try {error make foo} catch {error make bar} + · ────────── + ╰──── +``` + +#### Labels + +Labels can now be created without a `text` field, like this error that only has a `span`. The span is highlighted, but with an empty label: + +``` +> def f [x] { + error make {msg: here label: {span: (metadata $x).span}} +} +f abcd +Error: nu::shell::error + + × here + ╭─[entry #7:4:3] + 3 │ } + 4 │ f abcd + · ──── + ╰──── +``` + +#### External sources + +The new `src` field allows highlighting spans of text in any file, not just internal Nushell spans. + +``` +> "foo\nbar\nbaz" | save -f /tmp/foo.bar +error make { + msg: 'error here' + src: {path: /tmp/foo.bar} + labels: [ + {text: "this" span: {start: 4 end: 7}} + ] +} +Error: nu::shell::outside + + × error here + ╭─[/tmp/foo.bar:2:1] + 1 │ foo + 2 │ bar + · ─┬─ + · ╰── this + 3 │ baz + ╰──── +``` + ### Other additions * `job flush` can now take a `--tag` to filter which messages to discard ([#17056](https://github.com/nushell/nushell/pull/17056)) @@ -239,18 +474,25 @@ With [#17149](https://github.com/nushell/nushell/pull/17149), the `explore regex The `rm` command now provides more descriptive error messages when it runs into an IO error. Implemented in [#17134](https://github.com/nushell/nushell/pull/17134). ### `*` no longer matches dotfiles in mv/cp/du by default + ```nushell > touch .a > cp * /tmp > "/tmp/.a" | path exists false ``` + But users can make it matches dotfiles by `--all(-a)` flag. +### Some Nushell commands no longer canonicalize paths + +With [#17319](https://github.com/nushell/nushell/pull/17319), `rm`, `watch`, and `source` no longer canonicalize paths. Additionally, the file path links in table view will no longer be canonicalized if you click them. + ### Additional changes * Single column dataframes (series) or expressions can now be passed into `polars is-in` ([#17275](https://github.com/nushell/nushell/pull/17275)) * Lists can now be passed into `polars lit` ([#17275](https://github.com/nushell/nushell/pull/17275)) +* `bytes length` can now be used at const time ([#17204](https://github.com/nushell/nushell/pull/17204)) * Add a quick reference panel to `explore regex` with the F1 keybinding and dismiss it with the ESC keybinding. ([#17187](https://github.com/nushell/nushell/pull/17187)) * Within the `explore` command the `:nu` command will now stream content by spawning the command issues without blocking. ([#17208](https://github.com/nushell/nushell/pull/17208)) * `--help` is now available for `debug env`. ([#17278](https://github.com/nushell/nushell/pull/17278)) @@ -342,6 +584,8 @@ Previously, `bar` would be available to use even after `overlay hide spam`. This * Type mismatch errors no longer list the same type multiple times ([#17075](https://github.com/nushell/nushell/pull/17075)) * Allow creating aliases for commands with required flags ([#17106](https://github.com/nushell/nushell/pull/17106)) +* `rm` can now delete broken symlinks on Windows ([#17320](https://github.com/nushell/nushell/pull/17320)) +* `format date` can see locale environment variables set by `with-env` ([#17333](https://github.com/nushell/nushell/pull/17333)) * Multiplying duration by integers now throws an error on overflow ([#17063](https://github.com/nushell/nushell/pull/17063)) * rm command will return error when there is one file is failed to remove. ([#17237](https://github.com/nushell/nushell/pull/17237)) * Changed the behavior of `cal --month-names` to create a new `month_name` column instead of overriding `month`. ([#17302](https://github.com/nushell/nushell/pull/17302)) From c223410962f5e225c84d7ad22a1afe5414514712 Mon Sep 17 00:00:00 2001 From: ysthakur <45539777+ysthakur@users.noreply.github.com> Date: Sat, 17 Jan 2026 17:37:37 -0500 Subject: [PATCH 5/8] Add release notes for all PRs with no release notes section --- blog/2026-01-17-nushell_v0_110_0.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/blog/2026-01-17-nushell_v0_110_0.md b/blog/2026-01-17-nushell_v0_110_0.md index 57c6774043e..928838186bf 100644 --- a/blog/2026-01-17-nushell_v0_110_0.md +++ b/blog/2026-01-17-nushell_v0_110_0.md @@ -272,6 +272,10 @@ With [#17338](https://github.com/nushell/nushell/pull/17338), the `which` comman Selectors may be used with `polars select` and `polars with-column`. +### Allow serializing as raw strings in `to nuon` + +[#17189](https://github.com/nushell/nushell/pull/17189) adds a `--raw-strings` flag to `to nuon` for serializing strings with raw string syntax (`r#'...'#`) instead of strings with escapes. + ### New command: `explore config` TUI Introducing the `explore config` command. @@ -449,6 +453,7 @@ Error: nu::shell::outside ### Other additions * `job flush` can now take a `--tag` to filter which messages to discard ([#17056](https://github.com/nushell/nushell/pull/17056)) +* Add `$history` variable to MCP ([#17132](https://github.com/nushell/nushell/pull/17132)) ## Removals @@ -488,6 +493,23 @@ But users can make it matches dotfiles by `--all(-a)` flag. With [#17319](https://github.com/nushell/nushell/pull/17319), `rm`, `watch`, and `source` no longer canonicalize paths. Additionally, the file path links in table view will no longer be canonicalized if you click them. +### Add REPL-style state persistence across evaluations for MCP server + +With [#17121](https://github.com/nushell/nushell/pull/17121), variables and environment changes now persist across MCP tool calls (REPL-style). This enables workflows like + +```nu +$env.MY_VAR = "hello" # First call +$env.MY_VAR # Second call returns "hello" +``` + +### Use structured response format for MCP server + +With [#17132](https://github.com/nushell/nushell/pull/17132), all MCP responses will be wrapped in a structured record with: + +- `history_index`: 0-based index of result in history +- `cwd`: current working directory after command +- `output`: command output (possibly truncated) + ### Additional changes * Single column dataframes (series) or expressions can now be passed into `polars is-in` ([#17275](https://github.com/nushell/nushell/pull/17275)) @@ -586,6 +608,7 @@ Previously, `bar` would be available to use even after `overlay hide spam`. This * Allow creating aliases for commands with required flags ([#17106](https://github.com/nushell/nushell/pull/17106)) * `rm` can now delete broken symlinks on Windows ([#17320](https://github.com/nushell/nushell/pull/17320)) * `format date` can see locale environment variables set by `with-env` ([#17333](https://github.com/nushell/nushell/pull/17333)) +* Changes to `$env.config` outside of `config.nu` are reflected in more places ([17058](https://github.com/nushell/nushell/pull/17058)) * Multiplying duration by integers now throws an error on overflow ([#17063](https://github.com/nushell/nushell/pull/17063)) * rm command will return error when there is one file is failed to remove. ([#17237](https://github.com/nushell/nushell/pull/17237)) * Changed the behavior of `cal --month-names` to create a new `month_name` column instead of overriding `month`. ([#17302](https://github.com/nushell/nushell/pull/17302)) From ed734ea5d4d7702d49b846a67be127650474f31b Mon Sep 17 00:00:00 2001 From: ysthakur <45539777+ysthakur@users.noreply.github.com> Date: Sat, 17 Jan 2026 17:47:53 -0500 Subject: [PATCH 6/8] A little polishing --- blog/2026-01-17-nushell_v0_110_0.md | 425 ++++++++++++++-------------- package-lock.json | 35 ++- 2 files changed, 241 insertions(+), 219 deletions(-) diff --git a/blog/2026-01-17-nushell_v0_110_0.md b/blog/2026-01-17-nushell_v0_110_0.md index 928838186bf..4d09faf68ad 100644 --- a/blog/2026-01-17-nushell_v0_110_0.md +++ b/blog/2026-01-17-nushell_v0_110_0.md @@ -49,6 +49,7 @@ As part of this release, we also publish a set of optional [plugins](https://www ### Renamed `$nu.temp-path` and `$nu.home-path` For consistency with other `$nu` fields: + - `$nu.temp-path` has been renamed to `$nu.temp-dir` - `$nu.home-path` has been renamed to `$nu.home-dir` @@ -93,13 +94,26 @@ To fix this, set `min_description_width` to a width at which the description box `to md` will now format lists as unordered Markdown lists by default. For more information, see [TODO do this after TOC is generated!]. TODO fix link +### `*` no longer matches dotfiles in mv/cp/du by default + +With [#17185](https://github.com/nushell/nushell/pull/17185), the glob `*` won't match files whose names start with a dot (`.`) when using `cp`, `mv`, and `du`. However, these commands have a new `--all(-a)` flag for forcing the glob to match dotfiles. + +```nushell +> touch .a +> cp * /tmp +> "/tmp/.a" | path exists +false +``` + ## Additions ### New Configuration Option: `$env.config.show_hints` You can now disable hints for completions and the history by setting `$env.config.show_hints = false`. -### Add `short` error_style +### Configuring errors + +#### New `error_style = short` setting [#17097](https://github.com/nushell/nushell/pull/17097) adds a new `short` option to `$env.config.error_style` for displaying errors as concise, single-line messages similar to classic shells. @@ -108,11 +122,11 @@ $ ll Error: External command failed: Command `ll` not found (Did you mean `all`?) ``` -### New `error_style = true` setting +#### New `error_style = tree` setting [#17105](https://github.com/nushell/nushell/pull/17105) adds a new `tree` option for `$env.config.error_style` to show related/nested errors. -### New `error_lines` setting +#### New `error_lines` setting [#17105](https://github.com/nushell/nushell/pull/17105) adds a new `$env.config.error_lines` option to control the number of lines printed for error context. By default, this is set to 1. @@ -150,7 +164,7 @@ Error: nu::shell::variable_not_found With [#17127](https://github.com/nushell/nushell/pull/17127), `into list` from `std-rfc/conversions` now handles record types. -``` +```nu use std-rfc/conversions * { a: 3, b: 7, c: 10 } | into list # => ╭───┬─────┬───────╮ @@ -167,6 +181,7 @@ use std-rfc/conversions * #### Azure support [#17116](https://github.com/nushell/nushell/pull/17116) brings Azure blob storage support to the Polars plugin. The following environment variables are now supported: + - `AZURE_STORAGE_ACCOUNT_NAME`: storage account name - `AZURE_STORAGE_ACCOUNT_KEY`: storage account master key - `AZURE_STORAGE_ACCESS_KEY`: alias for `AZURE_STORAGE_ACCOUNT_KEY` @@ -175,6 +190,7 @@ use std-rfc/conversions * - `AZURE_STORAGE_TENANT_ID`: tenant id used in oauth flows Example Usage: + ```nu $env.AZURE_STORAGE_ACCOUNT_KEY = "" $env.AZURE_STORAGE_ACCOUNT_NAME = "" @@ -211,7 +227,7 @@ The `http pool` command can be used to reset and customize the HTTP connection p [#17202](https://github.com/nushell/nushell/pull/17202) adds a flag called `--output` to the `timeit` command that will make the command return a record with both the execution time and the output of the closure. -``` +```nu > timeit --output { 'example text' } ╭────────┬──────────────╮ │ time │ 14328 │ @@ -281,6 +297,7 @@ Selectors may be used with `polars select` and `polars with-column`. Introducing the `explore config` command. Functionality: + - When launched with no parameters, it loads your config settings into a tree and editor to allow you to traverse, explore, and change settings. - When launched with the `--tree` parameter, it draws a tree view of your piped in input into the terminal - When launched with the `--use-example-data` parameter, it shows you a customized configuration (my config actually). May be removed later. @@ -293,6 +310,7 @@ Functionality: ![explore-config2](https://github.com/user-attachments/assets/10f4407e-28a0-4aac-8baa-88f7b95229e2) Help + ```nushell ❯ explore config --help Launch a TUI to view and edit the nushell configuration interactively. @@ -349,7 +367,8 @@ Examples: #### Creating errors more easily `error make` can now be called without arguments: -``` + +```nu > error make Error: nu::shell::error @@ -361,11 +380,12 @@ Error: nu::shell::error ``` It can also be passed a single message in any of the following ways: + - Pipeline input: `{msg: foo} | error make` - Record argument: `error make {msg: foo}` - String argument: `error make foo` -``` +```nu Error: nu::shell::error × foo @@ -378,17 +398,19 @@ Error: nu::shell::error #### Chaining errors together `error make` already lets you created chained errors using `inner`, like so: + ```nu error make {msg: bar inner: [{msg: foo}]} ``` Now, you can achieve the same effect by: + - Passing a message as pipeline input: `{msg: foo} | error make bar` - Creating an error in a `catch` block: `try {error make foo} catch {error make bar}` Here's how that second one looks: -``` +```nu Error: nu::shell::error × bar @@ -410,7 +432,7 @@ Error: nu::shell::error Labels can now be created without a `text` field, like this error that only has a `span`. The span is highlighted, but with an empty label: -``` +```nu > def f [x] { error make {msg: here label: {span: (metadata $x).span}} } @@ -429,7 +451,7 @@ Error: nu::shell::error The new `src` field allows highlighting spans of text in any file, not just internal Nushell spans. -``` +```nu > "foo\nbar\nbaz" | save -f /tmp/foo.bar error make { msg: 'error here' @@ -452,8 +474,8 @@ Error: nu::shell::outside ### Other additions -* `job flush` can now take a `--tag` to filter which messages to discard ([#17056](https://github.com/nushell/nushell/pull/17056)) -* Add `$history` variable to MCP ([#17132](https://github.com/nushell/nushell/pull/17132)) +- `job flush` can now take a `--tag` to filter which messages to discard ([#17056](https://github.com/nushell/nushell/pull/17056)) +- Add `$history` variable to MCP ([#17132](https://github.com/nushell/nushell/pull/17132)) ## Removals @@ -478,17 +500,6 @@ With [#17149](https://github.com/nushell/nushell/pull/17149), the `explore regex The `rm` command now provides more descriptive error messages when it runs into an IO error. Implemented in [#17134](https://github.com/nushell/nushell/pull/17134). -### `*` no longer matches dotfiles in mv/cp/du by default - -```nushell -> touch .a -> cp * /tmp -> "/tmp/.a" | path exists -false -``` - -But users can make it matches dotfiles by `--all(-a)` flag. - ### Some Nushell commands no longer canonicalize paths With [#17319](https://github.com/nushell/nushell/pull/17319), `rm`, `watch`, and `source` no longer canonicalize paths. Additionally, the file path links in table view will no longer be canonicalized if you click them. @@ -512,15 +523,15 @@ With [#17132](https://github.com/nushell/nushell/pull/17132), all MCP responses ### Additional changes -* Single column dataframes (series) or expressions can now be passed into `polars is-in` ([#17275](https://github.com/nushell/nushell/pull/17275)) -* Lists can now be passed into `polars lit` ([#17275](https://github.com/nushell/nushell/pull/17275)) -* `bytes length` can now be used at const time ([#17204](https://github.com/nushell/nushell/pull/17204)) -* Add a quick reference panel to `explore regex` with the F1 keybinding and dismiss it with the ESC keybinding. ([#17187](https://github.com/nushell/nushell/pull/17187)) -* Within the `explore` command the `:nu` command will now stream content by spawning the command issues without blocking. ([#17208](https://github.com/nushell/nushell/pull/17208)) -* `--help` is now available for `debug env`. ([#17278](https://github.com/nushell/nushell/pull/17278)) -* This PR adds the `memory_size()` function on nushell `Value` so that we can get the size of variables to understand them better. ([#17287](https://github.com/nushell/nushell/pull/17287)) -* Update agents.md for better LLM use. ([#17318](https://github.com/nushell/nushell/pull/17318)) -* Make `detect type` more robust with datetime handling by updating regular expressions ([#17357](https://github.com/nushell/nushell/pull/17357)) +- Single column dataframes (series) or expressions can now be passed into `polars is-in` ([#17275](https://github.com/nushell/nushell/pull/17275)) +- Lists can now be passed into `polars lit` ([#17275](https://github.com/nushell/nushell/pull/17275)) +- `bytes length` can now be used at const time ([#17204](https://github.com/nushell/nushell/pull/17204)) +- Add a quick reference panel to `explore regex` with the F1 keybinding and dismiss it with the ESC keybinding. ([#17187](https://github.com/nushell/nushell/pull/17187)) +- Within the `explore` command the `:nu` command will now stream content by spawning the command issues without blocking. ([#17208](https://github.com/nushell/nushell/pull/17208)) +- `--help` is now available for `debug env`. ([#17278](https://github.com/nushell/nushell/pull/17278)) +- This PR adds the `memory_size()` function on nushell `Value` so that we can get the size of variables to understand them better. ([#17287](https://github.com/nushell/nushell/pull/17287)) +- Update agents.md for better LLM use. ([#17318](https://github.com/nushell/nushell/pull/17318)) +- Make `detect type` more robust with datetime handling by updating regular expressions ([#17357](https://github.com/nushell/nushell/pull/17357)) ## Bug fixes @@ -542,7 +553,9 @@ match 3 { } ``` -### Infinite sequences cant be terminated when piped to other command +### Infinite sequences can be terminated when piped to other commands + +[#17245](https://github.com/nushell/nushell/pull/17245) allows infinite sequences to be terminated when piped to other commands. ``` > `1..inf | to md` # then press ctrl-c @@ -558,7 +571,7 @@ match 3 { ### Pipefail works with `try` block -With [#17052](https://github.com/nushell/nushell/pull/17052), the following code will an empty list with additional `1`, because the command is failed actually. +With [#17052](https://github.com/nushell/nushell/pull/17052), the following code will an empty list with additional `1`, because the command is failed actually. ```nu > nu --experimental-options=[pipefail] @@ -588,7 +601,7 @@ With [#17125](https://github.com/nushell/nushell/pull/17125), `http` commands wi [#17130](https://github.com/nushell/nushell/pull/17130) makes overlays work more reliably inside scripts. -``` +```nu #!/usr/bin/env nu def something [] { "example" } @@ -604,21 +617,21 @@ Previously, `bar` would be available to use even after `overlay hide spam`. This ### Other fixes -* Type mismatch errors no longer list the same type multiple times ([#17075](https://github.com/nushell/nushell/pull/17075)) -* Allow creating aliases for commands with required flags ([#17106](https://github.com/nushell/nushell/pull/17106)) -* `rm` can now delete broken symlinks on Windows ([#17320](https://github.com/nushell/nushell/pull/17320)) -* `format date` can see locale environment variables set by `with-env` ([#17333](https://github.com/nushell/nushell/pull/17333)) -* Changes to `$env.config` outside of `config.nu` are reflected in more places ([17058](https://github.com/nushell/nushell/pull/17058)) -* Multiplying duration by integers now throws an error on overflow ([#17063](https://github.com/nushell/nushell/pull/17063)) -* rm command will return error when there is one file is failed to remove. ([#17237](https://github.com/nushell/nushell/pull/17237)) -* Changed the behavior of `cal --month-names` to create a new `month_name` column instead of overriding `month`. ([#17302](https://github.com/nushell/nushell/pull/17302)) -* `glob` no longer canonicalizes paths internally ([#17312](https://github.com/nushell/nushell/pull/17312)) -* Fixed the issue where "Duplicate Pane" in Windows Terminal failed when the current path contained Chinese characters by removing unnecessary URL-encoding in OSC 9;9 sequences. ([#17311](https://github.com/nushell/nushell/pull/17311)) -* Enable `detect columns` to be more robust, specifically for handling the output of tablelike structures that are created with ascii or unicode table characters like we use in nushell today. Many tools are starting to use this columnar data output so hopefully this will enable nushell to be able to parse this data better. ([#17317](https://github.com/nushell/nushell/pull/17317)) -* General speed up increase in the `ls` command by caching and not calling `metadata()` so frequently. ([#17339](https://github.com/nushell/nushell/pull/17339)) -* `input -s` will append newline when user finishes typing. ([#17298](https://github.com/nushell/nushell/pull/17298)) -* `std/help`: Add colors, proper examples, fix output ([#17010](https://github.com/nushell/nushell/pull/17010)) -* `table -i false` no longer panic when there is an index column, e.g: `[{index: 0, data: yes}] | table -i false` ([#17126](https://github.com/nushell/nushell/pull/17126)) +- Type mismatch errors no longer list the same type multiple times ([#17075](https://github.com/nushell/nushell/pull/17075)) +- Allow creating aliases for commands with required flags ([#17106](https://github.com/nushell/nushell/pull/17106)) +- `rm` can now delete broken symlinks on Windows ([#17320](https://github.com/nushell/nushell/pull/17320)) +- `format date` can see locale environment variables set by `with-env` ([#17333](https://github.com/nushell/nushell/pull/17333)) +- Changes to `$env.config` outside of `config.nu` are reflected in more places ([17058](https://github.com/nushell/nushell/pull/17058)) +- Multiplying duration by integers now throws an error on overflow ([#17063](https://github.com/nushell/nushell/pull/17063)) +- rm command will return error when there is one file is failed to remove. ([#17237](https://github.com/nushell/nushell/pull/17237)) +- Changed the behavior of `cal --month-names` to create a new `month_name` column instead of overriding `month`. ([#17302](https://github.com/nushell/nushell/pull/17302)) +- `glob` no longer canonicalizes paths internally ([#17312](https://github.com/nushell/nushell/pull/17312)) +- Fixed the issue where "Duplicate Pane" in Windows Terminal failed when the current path contained Chinese characters by removing unnecessary URL-encoding in OSC 9;9 sequences. ([#17311](https://github.com/nushell/nushell/pull/17311)) +- Enable `detect columns` to be more robust, specifically for handling the output of tablelike structures that are created with ascii or unicode table characters like we use in nushell today. Many tools are starting to use this columnar data output so hopefully this will enable nushell to be able to parse this data better. ([#17317](https://github.com/nushell/nushell/pull/17317)) +- General speed up increase in the `ls` command by caching and not calling `metadata()` so frequently. ([#17339](https://github.com/nushell/nushell/pull/17339)) +- `input -s` will append newline when user finishes typing. ([#17298](https://github.com/nushell/nushell/pull/17298)) +- `std/help`: Add colors, proper examples, fix output ([#17010](https://github.com/nushell/nushell/pull/17010)) +- `table -i false` no longer panic when there is an index column, e.g: `[{index: 0, data: yes}] | table -i false` ([#17126](https://github.com/nushell/nushell/pull/17126)) # Notes for plugin developers @@ -626,162 +639,162 @@ Previously, `bar` would be available to use even after `overlay hide spam`. This Thanks to all the contributors below for helping us solve issues, improve documentation, refactor code, and more! :pray: -| author | change | link | -| --- | --- | --- | -| [@migraine-user](https://github.com/migraine-user) | Quick typo fix in docs for `each` | [#17110](https://github.com/nushell/nushell/pull/17110) | -| [@KaiSforza](https://github.com/KaiSforza) | Update flake.lock, added `latest` devshell variant | [#17084](https://github.com/nushell/nushell/pull/17084) | -| [@fdncred](https://github.com/fdncred) | Bump the rust-toolchain to 1.90.0 | [#17133](https://github.com/nushell/nushell/pull/17133) | -| [@blindFS](https://github.com/blindFS) | Use `checked_sub` in `parse_range` to avoid overflow | [#17152](https://github.com/nushell/nushell/pull/17152) | -| [@fdncred](https://github.com/fdncred) | Update doc config | [#17168](https://github.com/nushell/nushell/pull/17168) | -| [@fdncred](https://github.com/fdncred) | Update match count when test text changes | [#17169](https://github.com/nushell/nushell/pull/17169) | -| [@fdncred](https://github.com/fdncred) | Add search capability to `explore config` command | [#17170](https://github.com/nushell/nushell/pull/17170) | -| [@fdncred](https://github.com/fdncred) | Add syntax highlighting to `explore config` | [#17176](https://github.com/nushell/nushell/pull/17176) | -| [@fdncred](https://github.com/fdncred) | Refactor `explore` family of commands so that it's easier to understand and maintain | [#17181](https://github.com/nushell/nushell/pull/17181) | -| [@fdncred](https://github.com/fdncred) | Update uutils to 0.5.0 | [#17183](https://github.com/nushell/nushell/pull/17183) | -| [@WindSoilder](https://github.com/WindSoilder) | Add http pool cmd | [#17177](https://github.com/nushell/nushell/pull/17177) | -| [@fdncred](https://github.com/fdncred) | Add agents.md to help LLMs | [#17148](https://github.com/nushell/nushell/pull/17148) | -| [@fdncred](https://github.com/fdncred) | Update reedline to the latest commit | [#17197](https://github.com/nushell/nushell/pull/17197) | -| [@fdncred](https://github.com/fdncred) | Fix the mcp ctrl-c bug | [#17199](https://github.com/nushell/nushell/pull/17199) | -| [@sgvictorino](https://github.com/sgvictorino) | Make MCP server interruptible | [#17200](https://github.com/nushell/nushell/pull/17200) | -| [@fdncred](https://github.com/fdncred) | Increase help menu description rows from 10 to 15 | [#17223](https://github.com/nushell/nushell/pull/17223) | -| [@Ecorous](https://github.com/Ecorous) | Bump rmp(-serde) to 0.8.15/1.3.1 | [#17242](https://github.com/nushell/nushell/pull/17242) | -| [@WindSoilder](https://github.com/WindSoilder) | Fix rm -f when some files not found | [#17249](https://github.com/nushell/nushell/pull/17249) | -| [@ysthakur](https://github.com/ysthakur) | Bump reedline to latest main (reedline#991) | [#17252](https://github.com/nushell/nushell/pull/17252) | -| [@fdncred](https://github.com/fdncred) | Update reedline to latest commit | [#17266](https://github.com/nushell/nushell/pull/17266) | -| [@fdncred](https://github.com/fdncred) | The new command `unlet` will delete variables from memory. | [#17270](https://github.com/nushell/nushell/pull/17270) | -| [@fdncred](https://github.com/fdncred) | Fix `explore` searching | [#17289](https://github.com/nushell/nushell/pull/17289) | -| [@fdncred](https://github.com/fdncred) | Update reedline to latest commit | [#17299](https://github.com/nushell/nushell/pull/17299) | -| [@fdncred](https://github.com/fdncred) | Update nushell to latest reedline commit 6ceda500 | [#17328](https://github.com/nushell/nushell/pull/17328) | +| author | change | link | +| -------------------------------------------------- | ------------------------------------------------------------------------------------ | ------------------------------------------------------- | +| [@migraine-user](https://github.com/migraine-user) | Quick typo fix in docs for `each` | [#17110](https://github.com/nushell/nushell/pull/17110) | +| [@KaiSforza](https://github.com/KaiSforza) | Update flake.lock, added `latest` devshell variant | [#17084](https://github.com/nushell/nushell/pull/17084) | +| [@fdncred](https://github.com/fdncred) | Bump the rust-toolchain to 1.90.0 | [#17133](https://github.com/nushell/nushell/pull/17133) | +| [@blindFS](https://github.com/blindFS) | Use `checked_sub` in `parse_range` to avoid overflow | [#17152](https://github.com/nushell/nushell/pull/17152) | +| [@fdncred](https://github.com/fdncred) | Update doc config | [#17168](https://github.com/nushell/nushell/pull/17168) | +| [@fdncred](https://github.com/fdncred) | Update match count when test text changes | [#17169](https://github.com/nushell/nushell/pull/17169) | +| [@fdncred](https://github.com/fdncred) | Add search capability to `explore config` command | [#17170](https://github.com/nushell/nushell/pull/17170) | +| [@fdncred](https://github.com/fdncred) | Add syntax highlighting to `explore config` | [#17176](https://github.com/nushell/nushell/pull/17176) | +| [@fdncred](https://github.com/fdncred) | Refactor `explore` family of commands so that it's easier to understand and maintain | [#17181](https://github.com/nushell/nushell/pull/17181) | +| [@fdncred](https://github.com/fdncred) | Update uutils to 0.5.0 | [#17183](https://github.com/nushell/nushell/pull/17183) | +| [@WindSoilder](https://github.com/WindSoilder) | Add http pool cmd | [#17177](https://github.com/nushell/nushell/pull/17177) | +| [@fdncred](https://github.com/fdncred) | Add agents.md to help LLMs | [#17148](https://github.com/nushell/nushell/pull/17148) | +| [@fdncred](https://github.com/fdncred) | Update reedline to the latest commit | [#17197](https://github.com/nushell/nushell/pull/17197) | +| [@fdncred](https://github.com/fdncred) | Fix the mcp ctrl-c bug | [#17199](https://github.com/nushell/nushell/pull/17199) | +| [@sgvictorino](https://github.com/sgvictorino) | Make MCP server interruptible | [#17200](https://github.com/nushell/nushell/pull/17200) | +| [@fdncred](https://github.com/fdncred) | Increase help menu description rows from 10 to 15 | [#17223](https://github.com/nushell/nushell/pull/17223) | +| [@Ecorous](https://github.com/Ecorous) | Bump rmp(-serde) to 0.8.15/1.3.1 | [#17242](https://github.com/nushell/nushell/pull/17242) | +| [@WindSoilder](https://github.com/WindSoilder) | Fix rm -f when some files not found | [#17249](https://github.com/nushell/nushell/pull/17249) | +| [@ysthakur](https://github.com/ysthakur) | Bump reedline to latest main (reedline#991) | [#17252](https://github.com/nushell/nushell/pull/17252) | +| [@fdncred](https://github.com/fdncred) | Update reedline to latest commit | [#17266](https://github.com/nushell/nushell/pull/17266) | +| [@fdncred](https://github.com/fdncred) | The new command `unlet` will delete variables from memory. | [#17270](https://github.com/nushell/nushell/pull/17270) | +| [@fdncred](https://github.com/fdncred) | Fix `explore` searching | [#17289](https://github.com/nushell/nushell/pull/17289) | +| [@fdncred](https://github.com/fdncred) | Update reedline to latest commit | [#17299](https://github.com/nushell/nushell/pull/17299) | +| [@fdncred](https://github.com/fdncred) | Update nushell to latest reedline commit 6ceda500 | [#17328](https://github.com/nushell/nushell/pull/17328) | # Full changelog -| author | title | link | -| --- | --- | --- | -| [@ChrisDenton](https://github.com/ChrisDenton) | Introduce `nupath::absolute_with` and use it in `glob` | [#17312](https://github.com/nushell/nushell/pull/17312) | -| [@ChrisDenton](https://github.com/ChrisDenton) | Replace uses of canonicalize in nu-command | [#17319](https://github.com/nushell/nushell/pull/17319) | -| [@ChrisDenton](https://github.com/ChrisDenton) | Fix removing broken symlinks on Windows | [#17320](https://github.com/nushell/nushell/pull/17320) | -| [@DevAldrete](https://github.com/DevAldrete) | Allow disabling filtering in custom completions | [#17253](https://github.com/nushell/nushell/pull/17253) | -| [@Dorumin](https://github.com/Dorumin) | --tag on job flush | [#17056](https://github.com/nushell/nushell/pull/17056) | -| [@Ecorous](https://github.com/Ecorous) | Bump rmp(-serde) to 0.8.15/1.3.1 | [#17242](https://github.com/nushell/nushell/pull/17242) | -| [@IvolliousElectrolux](https://github.com/IvolliousElectrolux) | Fix OSC 9;9 path reporting in Windows Terminal (Fixes #17300) | [#17311](https://github.com/nushell/nushell/pull/17311) | -| [@Jan9103](https://github.com/Jan9103) | feat(bytes length): make available at const-time | [#17204](https://github.com/nushell/nushell/pull/17204) | -| [@KaiSforza](https://github.com/KaiSforza) | std/help: Add colors, proper examples, fix output | [#17010](https://github.com/nushell/nushell/pull/17010) | -| [@KaiSforza](https://github.com/KaiSforza) | error_make: Another rewrite of `error make` | [#17070](https://github.com/nushell/nushell/pull/17070) | -| [@KaiSforza](https://github.com/KaiSforza) | Update flake.lock, added `latest` devshell variant | [#17084](https://github.com/nushell/nushell/pull/17084) | -| [@KaiSforza](https://github.com/KaiSforza) | Fix up the env.rs tests | [#17085](https://github.com/nushell/nushell/pull/17085) | -| [@KaiSforza](https://github.com/KaiSforza) | Add `error_lines` and `error_style = tree` settings | [#17105](https://github.com/nushell/nushell/pull/17105) | -| [@NotTheDr01ds](https://github.com/NotTheDr01ds) | Added record conversion to `into list` | [#17127](https://github.com/nushell/nushell/pull/17127) | -| [@NotTheDr01ds](https://github.com/NotTheDr01ds) | Changed home-path/temp-path to home-dir/temp-dir | [#17129](https://github.com/nushell/nushell/pull/17129) | -| [@NotTheDr01ds](https://github.com/NotTheDr01ds) | Added CARGO_ and RUSTUP_ environment variables back to test environment | [#17186](https://github.com/nushell/nushell/pull/17186) | -| [@NotTheDr01ds](https://github.com/NotTheDr01ds) | Add `--icons` option to `table` for `ls` tables | [#17248](https://github.com/nushell/nushell/pull/17248) | -| [@Tyarel8](https://github.com/Tyarel8) | feat(`timeit`): add `--output` flag | [#17202](https://github.com/nushell/nushell/pull/17202) | -| [@WindSoilder](https://github.com/WindSoilder) | pipefail: works inside try block | [#17052](https://github.com/nushell/nushell/pull/17052) | -| [@WindSoilder](https://github.com/WindSoilder) | Making --env-config and --config errors lead to error status code when running nu scripts or commands. | [#17103](https://github.com/nushell/nushell/pull/17103) | -| [@WindSoilder](https://github.com/WindSoilder) | merge_predecl don't move all predecls to overlay | [#17130](https://github.com/nushell/nushell/pull/17130) | -| [@WindSoilder](https://github.com/WindSoilder) | http commands can use builtin connection pool | [#17157](https://github.com/nushell/nushell/pull/17157) | -| [@WindSoilder](https://github.com/WindSoilder) | add http pool cmd | [#17177](https://github.com/nushell/nushell/pull/17177) | -| [@WindSoilder](https://github.com/WindSoilder) | `mv/cp/du *`: don't match dotfiles by default. | [#17185](https://github.com/nushell/nushell/pull/17185) | -| [@WindSoilder](https://github.com/WindSoilder) | rm: returns Error when it failed to remove a file | [#17237](https://github.com/nushell/nushell/pull/17237) | -| [@WindSoilder](https://github.com/WindSoilder) | Value::List and Value::Range can be interrupted when piping to other commands. | [#17245](https://github.com/nushell/nushell/pull/17245) | -| [@WindSoilder](https://github.com/WindSoilder) | fix rm -f when some files not found | [#17249](https://github.com/nushell/nushell/pull/17249) | -| [@WindSoilder](https://github.com/WindSoilder) | input -s: always write "\\n" when user finished typing. | [#17298](https://github.com/nushell/nushell/pull/17298) | -| [@andrewgazelka](https://github.com/andrewgazelka) | feat(mcp): output NUON format instead of expanded string | [#17119](https://github.com/nushell/nushell/pull/17119) | -| [@andrewgazelka](https://github.com/andrewgazelka) | refactor(mcp): extract tool descriptions to markdown files | [#17120](https://github.com/nushell/nushell/pull/17120) | -| [@andrewgazelka](https://github.com/andrewgazelka) | feat(mcp): add REPL-style state persistence across evaluations | [#17121](https://github.com/nushell/nushell/pull/17121) | -| [@andrewgazelka](https://github.com/andrewgazelka) | feat(mcp): add $history variable and structured response format | [#17132](https://github.com/nushell/nushell/pull/17132) | -| [@andrewgazelka](https://github.com/andrewgazelka) | docs(mcp): add string interpolation syntax to instructions | [#17153](https://github.com/nushell/nushell/pull/17153) | -| [@andrewgazelka](https://github.com/andrewgazelka) | docs(mcp): add stderr redirection BAD/GOOD examples to instructions | [#17163](https://github.com/nushell/nushell/pull/17163) | -| [@andrewgazelka](https://github.com/andrewgazelka) | docs(mcp): add par-each preference to instructions | [#17171](https://github.com/nushell/nushell/pull/17171) | -| [@andrewgazelka](https://github.com/andrewgazelka) | feat(nuon): add raw string serialization support | [#17189](https://github.com/nushell/nushell/pull/17189) | -| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump actions/checkout from 5 to 6 | [#17076](https://github.com/nushell/nushell/pull/17076) | -| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump schemars from 1.0.4 to 1.1.0 | [#17078](https://github.com/nushell/nushell/pull/17078) | -| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump crate-ci/typos from 1.39.2 to 1.40.0 | [#17108](https://github.com/nushell/nushell/pull/17108) | -| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump bytesize from 2.1.0 to 2.3.1 | [#17139](https://github.com/nushell/nushell/pull/17139) | -| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump actions/upload-artifact from 5 to 6 | [#17190](https://github.com/nushell/nushell/pull/17190) | -| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump http from 1.3.1 to 1.4.0 | [#17191](https://github.com/nushell/nushell/pull/17191) | -| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump bytes from 1.10.0 to 1.11.0 | [#17192](https://github.com/nushell/nushell/pull/17192) | -| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump winreg from 0.52.0 to 0.55.0 | [#17193](https://github.com/nushell/nushell/pull/17193) | -| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump strum from 0.26.3 to 0.27.2 | [#17194](https://github.com/nushell/nushell/pull/17194) | -| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump procfs from 0.17.0 to 0.18.0 | [#17195](https://github.com/nushell/nushell/pull/17195) | -| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump rmcp from 0.8.1 to 0.8.5 | [#17224](https://github.com/nushell/nushell/pull/17224) | -| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump toml from 0.8.19 to 0.9.10+spec-1.1.0 | [#17225](https://github.com/nushell/nushell/pull/17225) | -| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump mach2 from 0.4.3 to 0.6.0 | [#17227](https://github.com/nushell/nushell/pull/17227) | -| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump crate-ci/typos from 1.40.0 to 1.40.1 | [#17259](https://github.com/nushell/nushell/pull/17259) | -| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump tempfile from 3.23.0 to 3.24.0 | [#17261](https://github.com/nushell/nushell/pull/17261) | -| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump csv from 1.3.1 to 1.4.0 | [#17262](https://github.com/nushell/nushell/pull/17262) | -| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump uuid from 1.18.1 to 1.19.0 | [#17264](https://github.com/nushell/nushell/pull/17264) | -| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump calamine from 0.28.0 to 0.32.0 | [#17306](https://github.com/nushell/nushell/pull/17306) | -| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump fancy-regex from 0.16.1 to 0.17.0 | [#17307](https://github.com/nushell/nushell/pull/17307) | -| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump unicase from 2.8.0 to 2.9.0 | [#17308](https://github.com/nushell/nushell/pull/17308) | -| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump tokio from 1.46.1 to 1.49.0 | [#17309](https://github.com/nushell/nushell/pull/17309) | -| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump lru from 0.12.5 to 0.16.3 | [#17313](https://github.com/nushell/nushell/pull/17313) | -| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump dialoguer from 0.11.0 to 0.12.0 | [#17314](https://github.com/nushell/nushell/pull/17314) | -| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump shadow-rs from 1.4.0 to 1.5.0 | [#17315](https://github.com/nushell/nushell/pull/17315) | -| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump schemars from 1.1.0 to 1.2.0 | [#17316](https://github.com/nushell/nushell/pull/17316) | -| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump crate-ci/typos from 1.41.0 to 1.42.0 | [#17343](https://github.com/nushell/nushell/pull/17343) | -| [@astral-l](https://github.com/astral-l) | Add `month_name` column to `cal --month-names` | [#17302](https://github.com/nushell/nushell/pull/17302) | -| [@atahabaki](https://github.com/atahabaki) | Do not treat 0 as padding always \| bracoxide \| str expand | [#17294](https://github.com/nushell/nushell/pull/17294) | -| [@ayax79](https://github.com/ayax79) | Azure blob storage support for polars | [#17116](https://github.com/nushell/nushell/pull/17116) | -| [@ayax79](https://github.com/ayax79) | Polars: Add google cloud support | [#17135](https://github.com/nushell/nushell/pull/17135) | -| [@ayax79](https://github.com/ayax79) | Added mcp to default and all features | [#17151](https://github.com/nushell/nushell/pull/17151) | -| [@ayax79](https://github.com/ayax79) | Polars: Allow series and expressions to be passed into `polars is-in` | [#17275](https://github.com/nushell/nushell/pull/17275) | -| [@ayax79](https://github.com/ayax79) | Polars: Introduce selector support | [#17296](https://github.com/nushell/nushell/pull/17296) | -| [@blackhat-hemsworth](https://github.com/blackhat-hemsworth) | deduplicated types in type_check process to improve error message | [#17075](https://github.com/nushell/nushell/pull/17075) | -| [@blackhat-hemsworth](https://github.com/blackhat-hemsworth) | [fix] fixed issue with alias "missing required flag" on create | [#17106](https://github.com/nushell/nushell/pull/17106) | -| [@blackhat-hemsworth](https://github.com/blackhat-hemsworth) | fixed handling of ranges with respect to parentheses | [#17109](https://github.com/nushell/nushell/pull/17109) | -| [@blackhat-hemsworth](https://github.com/blackhat-hemsworth) | fixed parsing issue with multiarm match + guard | [#17115](https://github.com/nushell/nushell/pull/17115) | -| [@blackhat-hemsworth](https://github.com/blackhat-hemsworth) | fix--propagate more descriptive error message for rm Os errors | [#17134](https://github.com/nushell/nushell/pull/17134) | -| [@blindFS](https://github.com/blindFS) | fix(parser): use `checked_sub` in `parse_range` to avoid overflow | [#17152](https://github.com/nushell/nushell/pull/17152) | -| [@cptpiepmatz](https://github.com/cptpiepmatz) | Replace dep `rust-embed` with custom code generation | [#17276](https://github.com/nushell/nushell/pull/17276) | -| [@cptpiepmatz](https://github.com/cptpiepmatz) | Use `Signature::build` instead of `new` on `debug env` | [#17278](https://github.com/nushell/nushell/pull/17278) | -| [@dhr412](https://github.com/dhr412) | Add `definition` column to `which` command for aliases | [#17338](https://github.com/nushell/nushell/pull/17338) | -| [@fdncred](https://github.com/fdncred) | bump the rust-toolchain to 1.90.0 | [#17133](https://github.com/nushell/nushell/pull/17133) | -| [@fdncred](https://github.com/fdncred) | new command: `explore config` TUI | [#17147](https://github.com/nushell/nushell/pull/17147) | -| [@fdncred](https://github.com/fdncred) | add agents.md to help LLMs | [#17148](https://github.com/nushell/nushell/pull/17148) | -| [@fdncred](https://github.com/fdncred) | update explore regex command to look more helpful and professional | [#17149](https://github.com/nushell/nushell/pull/17149) | -| [@fdncred](https://github.com/fdncred) | Update doc config | [#17168](https://github.com/nushell/nushell/pull/17168) | -| [@fdncred](https://github.com/fdncred) | update match count when test text changes | [#17169](https://github.com/nushell/nushell/pull/17169) | -| [@fdncred](https://github.com/fdncred) | add search capability to `explore config` command | [#17170](https://github.com/nushell/nushell/pull/17170) | -| [@fdncred](https://github.com/fdncred) | clean up explore a bit | [#17172](https://github.com/nushell/nushell/pull/17172) | -| [@fdncred](https://github.com/fdncred) | Add syntax highlighting to `explore config` | [#17176](https://github.com/nushell/nushell/pull/17176) | -| [@fdncred](https://github.com/fdncred) | refactor `explore` family of commands so that it's easier to understand and maintain | [#17181](https://github.com/nushell/nushell/pull/17181) | -| [@fdncred](https://github.com/fdncred) | update uutils to 0.5.0 | [#17183](https://github.com/nushell/nushell/pull/17183) | -| [@fdncred](https://github.com/fdncred) | Add quick reference panel to `explore regex` command | [#17187](https://github.com/nushell/nushell/pull/17187) | -| [@fdncred](https://github.com/fdncred) | update reedline to the latest commit | [#17197](https://github.com/nushell/nushell/pull/17197) | -| [@fdncred](https://github.com/fdncred) | fix the mcp ctrl-c bug | [#17199](https://github.com/nushell/nushell/pull/17199) | -| [@fdncred](https://github.com/fdncred) | Stream explore nu output | [#17208](https://github.com/nushell/nushell/pull/17208) | -| [@fdncred](https://github.com/fdncred) | use graphemes instead of byte indexes in `explore regegx` | [#17219](https://github.com/nushell/nushell/pull/17219) | -| [@fdncred](https://github.com/fdncred) | Increase help menu description rows from 10 to 15 | [#17223](https://github.com/nushell/nushell/pull/17223) | -| [@fdncred](https://github.com/fdncred) | Allow `let` to be able to be used at the end of the pipeline | [#17247](https://github.com/nushell/nushell/pull/17247) | -| [@fdncred](https://github.com/fdncred) | update reedline to latest commit | [#17266](https://github.com/nushell/nushell/pull/17266) | -| [@fdncred](https://github.com/fdncred) | new command: `unlet` | [#17270](https://github.com/nushell/nushell/pull/17270) | -| [@fdncred](https://github.com/fdncred) | add `memory_size` function on nushell's `Value` | [#17287](https://github.com/nushell/nushell/pull/17287) | -| [@fdncred](https://github.com/fdncred) | Fix `explore` searching | [#17289](https://github.com/nushell/nushell/pull/17289) | -| [@fdncred](https://github.com/fdncred) | update reedline to latest commit | [#17299](https://github.com/nushell/nushell/pull/17299) | -| [@fdncred](https://github.com/fdncred) | replace deprecated current_dir usage with EngineState::cwd in multiple files | [#17303](https://github.com/nushell/nushell/pull/17303) | -| [@fdncred](https://github.com/fdncred) | make `detect columns` more robust + refactor + new switch | [#17317](https://github.com/nushell/nushell/pull/17317) | -| [@fdncred](https://github.com/fdncred) | add more details to agents.md | [#17318](https://github.com/nushell/nushell/pull/17318) | -| [@fdncred](https://github.com/fdncred) | update nushell to latest reedline commit 6ceda500 | [#17328](https://github.com/nushell/nushell/pull/17328) | -| [@fdncred](https://github.com/fdncred) | make `ls` faster | [#17339](https://github.com/nushell/nushell/pull/17339) | -| [@fdncred](https://github.com/fdncred) | Update evaluate_tool.md | [#17342](https://github.com/nushell/nushell/pull/17342) | -| [@fdncred](https://github.com/fdncred) | add better regex pattern handling | [#17357](https://github.com/nushell/nushell/pull/17357) | -| [@hustcer](https://github.com/hustcer) | Fix http DNS resolution "Service not supported" error in Docker containers | [#17125](https://github.com/nushell/nushell/pull/17125) | -| [@hustcer](https://github.com/hustcer) | Fix `table -i false` panic when there is an index column | [#17126](https://github.com/nushell/nushell/pull/17126) | -| [@hustcer](https://github.com/hustcer) | Upgrade nushell to 0.109.1 for release and nightly workflow | [#17131](https://github.com/nushell/nushell/pull/17131) | -| [@hustcer](https://github.com/hustcer) | Add --list flag to `to md` for ordered/unordered/none list formatting | [#17250](https://github.com/nushell/nushell/pull/17250) | -| [@hustcer](https://github.com/hustcer) | Fix typo & upgrade crate-ci/typos | [#17310](https://github.com/nushell/nushell/pull/17310) | -| [@kaathewisegit](https://github.com/kaathewisegit) | fix: throw errors on overflow in duration integer multiplication | [#17063](https://github.com/nushell/nushell/pull/17063) | -| [@kouhe3](https://github.com/kouhe3) | use win_uds as uds on windows | [#17214](https://github.com/nushell/nushell/pull/17214) | -| [@migraine-user](https://github.com/migraine-user) | Quick typo fix in docs for `each` | [#17110](https://github.com/nushell/nushell/pull/17110) | -| [@playwmadness](https://github.com/playwmadness) | Update `--allow-dtd` hint phrasing for `from xml` | [#17218](https://github.com/nushell/nushell/pull/17218) | -| [@playwmadness](https://github.com/playwmadness) | fix(#17321): `with-env` not applying locale env vars to `format date` | [#17333](https://github.com/nushell/nushell/pull/17333) | -| [@reubeno](https://github.com/reubeno) | update reedline to the latest commit | [#17203](https://github.com/nushell/nushell/pull/17203) | -| [@sgvictorino](https://github.com/sgvictorino) | use `Stack::get_config()` in more places | [#17058](https://github.com/nushell/nushell/pull/17058) | -| [@sgvictorino](https://github.com/sgvictorino) | make MCP server interruptible | [#17200](https://github.com/nushell/nushell/pull/17200) | -| [@splintersuidman](https://github.com/splintersuidman) | Add configuration option for whether to show hints | [#17156](https://github.com/nushell/nushell/pull/17156) | -| [@tom-lubenow](https://github.com/tom-lubenow) | Add GetBlockIR engine call to plugin protocol | [#17279](https://github.com/nushell/nushell/pull/17279) | -| [@yanek](https://github.com/yanek) | Add `short` error_style | [#17097](https://github.com/nushell/nushell/pull/17097) | -| [@ysthakur](https://github.com/ysthakur) | fix: Make custom completer spans relative to command expr | [#17060](https://github.com/nushell/nushell/pull/17060) | -| [@ysthakur](https://github.com/ysthakur) | Bump reedline to latest main (reedline#991) | [#17252](https://github.com/nushell/nushell/pull/17252) | -| [@ysthakur](https://github.com/ysthakur) | Change default IdeMenu min_description_width to 15 | [#17280](https://github.com/nushell/nushell/pull/17280) | -| [@ysthakur](https://github.com/ysthakur) | Pin reedline to 0.45 for 0.110 release | [#17366](https://github.com/nushell/nushell/pull/17366) | +| author | title | link | +| -------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------- | +| [@ChrisDenton](https://github.com/ChrisDenton) | Introduce `nupath::absolute_with` and use it in `glob` | [#17312](https://github.com/nushell/nushell/pull/17312) | +| [@ChrisDenton](https://github.com/ChrisDenton) | Replace uses of canonicalize in nu-command | [#17319](https://github.com/nushell/nushell/pull/17319) | +| [@ChrisDenton](https://github.com/ChrisDenton) | Fix removing broken symlinks on Windows | [#17320](https://github.com/nushell/nushell/pull/17320) | +| [@DevAldrete](https://github.com/DevAldrete) | Allow disabling filtering in custom completions | [#17253](https://github.com/nushell/nushell/pull/17253) | +| [@Dorumin](https://github.com/Dorumin) | --tag on job flush | [#17056](https://github.com/nushell/nushell/pull/17056) | +| [@Ecorous](https://github.com/Ecorous) | Bump rmp(-serde) to 0.8.15/1.3.1 | [#17242](https://github.com/nushell/nushell/pull/17242) | +| [@IvolliousElectrolux](https://github.com/IvolliousElectrolux) | Fix OSC 9;9 path reporting in Windows Terminal (Fixes #17300) | [#17311](https://github.com/nushell/nushell/pull/17311) | +| [@Jan9103](https://github.com/Jan9103) | feat(bytes length): make available at const-time | [#17204](https://github.com/nushell/nushell/pull/17204) | +| [@KaiSforza](https://github.com/KaiSforza) | std/help: Add colors, proper examples, fix output | [#17010](https://github.com/nushell/nushell/pull/17010) | +| [@KaiSforza](https://github.com/KaiSforza) | error_make: Another rewrite of `error make` | [#17070](https://github.com/nushell/nushell/pull/17070) | +| [@KaiSforza](https://github.com/KaiSforza) | Update flake.lock, added `latest` devshell variant | [#17084](https://github.com/nushell/nushell/pull/17084) | +| [@KaiSforza](https://github.com/KaiSforza) | Fix up the env.rs tests | [#17085](https://github.com/nushell/nushell/pull/17085) | +| [@KaiSforza](https://github.com/KaiSforza) | Add `error_lines` and `error_style = tree` settings | [#17105](https://github.com/nushell/nushell/pull/17105) | +| [@NotTheDr01ds](https://github.com/NotTheDr01ds) | Added record conversion to `into list` | [#17127](https://github.com/nushell/nushell/pull/17127) | +| [@NotTheDr01ds](https://github.com/NotTheDr01ds) | Changed home-path/temp-path to home-dir/temp-dir | [#17129](https://github.com/nushell/nushell/pull/17129) | +| [@NotTheDr01ds](https://github.com/NotTheDr01ds) | Added CARGO* and RUSTUP* environment variables back to test environment | [#17186](https://github.com/nushell/nushell/pull/17186) | +| [@NotTheDr01ds](https://github.com/NotTheDr01ds) | Add `--icons` option to `table` for `ls` tables | [#17248](https://github.com/nushell/nushell/pull/17248) | +| [@Tyarel8](https://github.com/Tyarel8) | feat(`timeit`): add `--output` flag | [#17202](https://github.com/nushell/nushell/pull/17202) | +| [@WindSoilder](https://github.com/WindSoilder) | pipefail: works inside try block | [#17052](https://github.com/nushell/nushell/pull/17052) | +| [@WindSoilder](https://github.com/WindSoilder) | Making --env-config and --config errors lead to error status code when running nu scripts or commands. | [#17103](https://github.com/nushell/nushell/pull/17103) | +| [@WindSoilder](https://github.com/WindSoilder) | merge_predecl don't move all predecls to overlay | [#17130](https://github.com/nushell/nushell/pull/17130) | +| [@WindSoilder](https://github.com/WindSoilder) | http commands can use builtin connection pool | [#17157](https://github.com/nushell/nushell/pull/17157) | +| [@WindSoilder](https://github.com/WindSoilder) | add http pool cmd | [#17177](https://github.com/nushell/nushell/pull/17177) | +| [@WindSoilder](https://github.com/WindSoilder) | `mv/cp/du *`: don't match dotfiles by default. | [#17185](https://github.com/nushell/nushell/pull/17185) | +| [@WindSoilder](https://github.com/WindSoilder) | rm: returns Error when it failed to remove a file | [#17237](https://github.com/nushell/nushell/pull/17237) | +| [@WindSoilder](https://github.com/WindSoilder) | Value::List and Value::Range can be interrupted when piping to other commands. | [#17245](https://github.com/nushell/nushell/pull/17245) | +| [@WindSoilder](https://github.com/WindSoilder) | fix rm -f when some files not found | [#17249](https://github.com/nushell/nushell/pull/17249) | +| [@WindSoilder](https://github.com/WindSoilder) | input -s: always write "\\n" when user finished typing. | [#17298](https://github.com/nushell/nushell/pull/17298) | +| [@andrewgazelka](https://github.com/andrewgazelka) | feat(mcp): output NUON format instead of expanded string | [#17119](https://github.com/nushell/nushell/pull/17119) | +| [@andrewgazelka](https://github.com/andrewgazelka) | refactor(mcp): extract tool descriptions to markdown files | [#17120](https://github.com/nushell/nushell/pull/17120) | +| [@andrewgazelka](https://github.com/andrewgazelka) | feat(mcp): add REPL-style state persistence across evaluations | [#17121](https://github.com/nushell/nushell/pull/17121) | +| [@andrewgazelka](https://github.com/andrewgazelka) | feat(mcp): add $history variable and structured response format | [#17132](https://github.com/nushell/nushell/pull/17132) | +| [@andrewgazelka](https://github.com/andrewgazelka) | docs(mcp): add string interpolation syntax to instructions | [#17153](https://github.com/nushell/nushell/pull/17153) | +| [@andrewgazelka](https://github.com/andrewgazelka) | docs(mcp): add stderr redirection BAD/GOOD examples to instructions | [#17163](https://github.com/nushell/nushell/pull/17163) | +| [@andrewgazelka](https://github.com/andrewgazelka) | docs(mcp): add par-each preference to instructions | [#17171](https://github.com/nushell/nushell/pull/17171) | +| [@andrewgazelka](https://github.com/andrewgazelka) | feat(nuon): add raw string serialization support | [#17189](https://github.com/nushell/nushell/pull/17189) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump actions/checkout from 5 to 6 | [#17076](https://github.com/nushell/nushell/pull/17076) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump schemars from 1.0.4 to 1.1.0 | [#17078](https://github.com/nushell/nushell/pull/17078) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump crate-ci/typos from 1.39.2 to 1.40.0 | [#17108](https://github.com/nushell/nushell/pull/17108) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump bytesize from 2.1.0 to 2.3.1 | [#17139](https://github.com/nushell/nushell/pull/17139) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump actions/upload-artifact from 5 to 6 | [#17190](https://github.com/nushell/nushell/pull/17190) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump http from 1.3.1 to 1.4.0 | [#17191](https://github.com/nushell/nushell/pull/17191) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump bytes from 1.10.0 to 1.11.0 | [#17192](https://github.com/nushell/nushell/pull/17192) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump winreg from 0.52.0 to 0.55.0 | [#17193](https://github.com/nushell/nushell/pull/17193) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump strum from 0.26.3 to 0.27.2 | [#17194](https://github.com/nushell/nushell/pull/17194) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump procfs from 0.17.0 to 0.18.0 | [#17195](https://github.com/nushell/nushell/pull/17195) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump rmcp from 0.8.1 to 0.8.5 | [#17224](https://github.com/nushell/nushell/pull/17224) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump toml from 0.8.19 to 0.9.10+spec-1.1.0 | [#17225](https://github.com/nushell/nushell/pull/17225) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump mach2 from 0.4.3 to 0.6.0 | [#17227](https://github.com/nushell/nushell/pull/17227) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump crate-ci/typos from 1.40.0 to 1.40.1 | [#17259](https://github.com/nushell/nushell/pull/17259) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump tempfile from 3.23.0 to 3.24.0 | [#17261](https://github.com/nushell/nushell/pull/17261) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump csv from 1.3.1 to 1.4.0 | [#17262](https://github.com/nushell/nushell/pull/17262) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump uuid from 1.18.1 to 1.19.0 | [#17264](https://github.com/nushell/nushell/pull/17264) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump calamine from 0.28.0 to 0.32.0 | [#17306](https://github.com/nushell/nushell/pull/17306) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump fancy-regex from 0.16.1 to 0.17.0 | [#17307](https://github.com/nushell/nushell/pull/17307) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump unicase from 2.8.0 to 2.9.0 | [#17308](https://github.com/nushell/nushell/pull/17308) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump tokio from 1.46.1 to 1.49.0 | [#17309](https://github.com/nushell/nushell/pull/17309) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump lru from 0.12.5 to 0.16.3 | [#17313](https://github.com/nushell/nushell/pull/17313) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump dialoguer from 0.11.0 to 0.12.0 | [#17314](https://github.com/nushell/nushell/pull/17314) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump shadow-rs from 1.4.0 to 1.5.0 | [#17315](https://github.com/nushell/nushell/pull/17315) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump schemars from 1.1.0 to 1.2.0 | [#17316](https://github.com/nushell/nushell/pull/17316) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump crate-ci/typos from 1.41.0 to 1.42.0 | [#17343](https://github.com/nushell/nushell/pull/17343) | +| [@astral-l](https://github.com/astral-l) | Add `month_name` column to `cal --month-names` | [#17302](https://github.com/nushell/nushell/pull/17302) | +| [@atahabaki](https://github.com/atahabaki) | Do not treat 0 as padding always \| bracoxide \| str expand | [#17294](https://github.com/nushell/nushell/pull/17294) | +| [@ayax79](https://github.com/ayax79) | Azure blob storage support for polars | [#17116](https://github.com/nushell/nushell/pull/17116) | +| [@ayax79](https://github.com/ayax79) | Polars: Add google cloud support | [#17135](https://github.com/nushell/nushell/pull/17135) | +| [@ayax79](https://github.com/ayax79) | Added mcp to default and all features | [#17151](https://github.com/nushell/nushell/pull/17151) | +| [@ayax79](https://github.com/ayax79) | Polars: Allow series and expressions to be passed into `polars is-in` | [#17275](https://github.com/nushell/nushell/pull/17275) | +| [@ayax79](https://github.com/ayax79) | Polars: Introduce selector support | [#17296](https://github.com/nushell/nushell/pull/17296) | +| [@blackhat-hemsworth](https://github.com/blackhat-hemsworth) | deduplicated types in type_check process to improve error message | [#17075](https://github.com/nushell/nushell/pull/17075) | +| [@blackhat-hemsworth](https://github.com/blackhat-hemsworth) | [fix] fixed issue with alias "missing required flag" on create | [#17106](https://github.com/nushell/nushell/pull/17106) | +| [@blackhat-hemsworth](https://github.com/blackhat-hemsworth) | fixed handling of ranges with respect to parentheses | [#17109](https://github.com/nushell/nushell/pull/17109) | +| [@blackhat-hemsworth](https://github.com/blackhat-hemsworth) | fixed parsing issue with multiarm match + guard | [#17115](https://github.com/nushell/nushell/pull/17115) | +| [@blackhat-hemsworth](https://github.com/blackhat-hemsworth) | fix--propagate more descriptive error message for rm Os errors | [#17134](https://github.com/nushell/nushell/pull/17134) | +| [@blindFS](https://github.com/blindFS) | fix(parser): use `checked_sub` in `parse_range` to avoid overflow | [#17152](https://github.com/nushell/nushell/pull/17152) | +| [@cptpiepmatz](https://github.com/cptpiepmatz) | Replace dep `rust-embed` with custom code generation | [#17276](https://github.com/nushell/nushell/pull/17276) | +| [@cptpiepmatz](https://github.com/cptpiepmatz) | Use `Signature::build` instead of `new` on `debug env` | [#17278](https://github.com/nushell/nushell/pull/17278) | +| [@dhr412](https://github.com/dhr412) | Add `definition` column to `which` command for aliases | [#17338](https://github.com/nushell/nushell/pull/17338) | +| [@fdncred](https://github.com/fdncred) | bump the rust-toolchain to 1.90.0 | [#17133](https://github.com/nushell/nushell/pull/17133) | +| [@fdncred](https://github.com/fdncred) | new command: `explore config` TUI | [#17147](https://github.com/nushell/nushell/pull/17147) | +| [@fdncred](https://github.com/fdncred) | add agents.md to help LLMs | [#17148](https://github.com/nushell/nushell/pull/17148) | +| [@fdncred](https://github.com/fdncred) | update explore regex command to look more helpful and professional | [#17149](https://github.com/nushell/nushell/pull/17149) | +| [@fdncred](https://github.com/fdncred) | Update doc config | [#17168](https://github.com/nushell/nushell/pull/17168) | +| [@fdncred](https://github.com/fdncred) | update match count when test text changes | [#17169](https://github.com/nushell/nushell/pull/17169) | +| [@fdncred](https://github.com/fdncred) | add search capability to `explore config` command | [#17170](https://github.com/nushell/nushell/pull/17170) | +| [@fdncred](https://github.com/fdncred) | clean up explore a bit | [#17172](https://github.com/nushell/nushell/pull/17172) | +| [@fdncred](https://github.com/fdncred) | Add syntax highlighting to `explore config` | [#17176](https://github.com/nushell/nushell/pull/17176) | +| [@fdncred](https://github.com/fdncred) | refactor `explore` family of commands so that it's easier to understand and maintain | [#17181](https://github.com/nushell/nushell/pull/17181) | +| [@fdncred](https://github.com/fdncred) | update uutils to 0.5.0 | [#17183](https://github.com/nushell/nushell/pull/17183) | +| [@fdncred](https://github.com/fdncred) | Add quick reference panel to `explore regex` command | [#17187](https://github.com/nushell/nushell/pull/17187) | +| [@fdncred](https://github.com/fdncred) | update reedline to the latest commit | [#17197](https://github.com/nushell/nushell/pull/17197) | +| [@fdncred](https://github.com/fdncred) | fix the mcp ctrl-c bug | [#17199](https://github.com/nushell/nushell/pull/17199) | +| [@fdncred](https://github.com/fdncred) | Stream explore nu output | [#17208](https://github.com/nushell/nushell/pull/17208) | +| [@fdncred](https://github.com/fdncred) | use graphemes instead of byte indexes in `explore regegx` | [#17219](https://github.com/nushell/nushell/pull/17219) | +| [@fdncred](https://github.com/fdncred) | Increase help menu description rows from 10 to 15 | [#17223](https://github.com/nushell/nushell/pull/17223) | +| [@fdncred](https://github.com/fdncred) | Allow `let` to be able to be used at the end of the pipeline | [#17247](https://github.com/nushell/nushell/pull/17247) | +| [@fdncred](https://github.com/fdncred) | update reedline to latest commit | [#17266](https://github.com/nushell/nushell/pull/17266) | +| [@fdncred](https://github.com/fdncred) | new command: `unlet` | [#17270](https://github.com/nushell/nushell/pull/17270) | +| [@fdncred](https://github.com/fdncred) | add `memory_size` function on nushell's `Value` | [#17287](https://github.com/nushell/nushell/pull/17287) | +| [@fdncred](https://github.com/fdncred) | Fix `explore` searching | [#17289](https://github.com/nushell/nushell/pull/17289) | +| [@fdncred](https://github.com/fdncred) | update reedline to latest commit | [#17299](https://github.com/nushell/nushell/pull/17299) | +| [@fdncred](https://github.com/fdncred) | replace deprecated current_dir usage with EngineState::cwd in multiple files | [#17303](https://github.com/nushell/nushell/pull/17303) | +| [@fdncred](https://github.com/fdncred) | make `detect columns` more robust + refactor + new switch | [#17317](https://github.com/nushell/nushell/pull/17317) | +| [@fdncred](https://github.com/fdncred) | add more details to agents.md | [#17318](https://github.com/nushell/nushell/pull/17318) | +| [@fdncred](https://github.com/fdncred) | update nushell to latest reedline commit 6ceda500 | [#17328](https://github.com/nushell/nushell/pull/17328) | +| [@fdncred](https://github.com/fdncred) | make `ls` faster | [#17339](https://github.com/nushell/nushell/pull/17339) | +| [@fdncred](https://github.com/fdncred) | Update evaluate_tool.md | [#17342](https://github.com/nushell/nushell/pull/17342) | +| [@fdncred](https://github.com/fdncred) | add better regex pattern handling | [#17357](https://github.com/nushell/nushell/pull/17357) | +| [@hustcer](https://github.com/hustcer) | Fix http DNS resolution "Service not supported" error in Docker containers | [#17125](https://github.com/nushell/nushell/pull/17125) | +| [@hustcer](https://github.com/hustcer) | Fix `table -i false` panic when there is an index column | [#17126](https://github.com/nushell/nushell/pull/17126) | +| [@hustcer](https://github.com/hustcer) | Upgrade nushell to 0.109.1 for release and nightly workflow | [#17131](https://github.com/nushell/nushell/pull/17131) | +| [@hustcer](https://github.com/hustcer) | Add --list flag to `to md` for ordered/unordered/none list formatting | [#17250](https://github.com/nushell/nushell/pull/17250) | +| [@hustcer](https://github.com/hustcer) | Fix typo & upgrade crate-ci/typos | [#17310](https://github.com/nushell/nushell/pull/17310) | +| [@kaathewisegit](https://github.com/kaathewisegit) | fix: throw errors on overflow in duration integer multiplication | [#17063](https://github.com/nushell/nushell/pull/17063) | +| [@kouhe3](https://github.com/kouhe3) | use win_uds as uds on windows | [#17214](https://github.com/nushell/nushell/pull/17214) | +| [@migraine-user](https://github.com/migraine-user) | Quick typo fix in docs for `each` | [#17110](https://github.com/nushell/nushell/pull/17110) | +| [@playwmadness](https://github.com/playwmadness) | Update `--allow-dtd` hint phrasing for `from xml` | [#17218](https://github.com/nushell/nushell/pull/17218) | +| [@playwmadness](https://github.com/playwmadness) | fix(#17321): `with-env` not applying locale env vars to `format date` | [#17333](https://github.com/nushell/nushell/pull/17333) | +| [@reubeno](https://github.com/reubeno) | update reedline to the latest commit | [#17203](https://github.com/nushell/nushell/pull/17203) | +| [@sgvictorino](https://github.com/sgvictorino) | use `Stack::get_config()` in more places | [#17058](https://github.com/nushell/nushell/pull/17058) | +| [@sgvictorino](https://github.com/sgvictorino) | make MCP server interruptible | [#17200](https://github.com/nushell/nushell/pull/17200) | +| [@splintersuidman](https://github.com/splintersuidman) | Add configuration option for whether to show hints | [#17156](https://github.com/nushell/nushell/pull/17156) | +| [@tom-lubenow](https://github.com/tom-lubenow) | Add GetBlockIR engine call to plugin protocol | [#17279](https://github.com/nushell/nushell/pull/17279) | +| [@yanek](https://github.com/yanek) | Add `short` error_style | [#17097](https://github.com/nushell/nushell/pull/17097) | +| [@ysthakur](https://github.com/ysthakur) | fix: Make custom completer spans relative to command expr | [#17060](https://github.com/nushell/nushell/pull/17060) | +| [@ysthakur](https://github.com/ysthakur) | Bump reedline to latest main (reedline#991) | [#17252](https://github.com/nushell/nushell/pull/17252) | +| [@ysthakur](https://github.com/ysthakur) | Change default IdeMenu min_description_width to 15 | [#17280](https://github.com/nushell/nushell/pull/17280) | +| [@ysthakur](https://github.com/ysthakur) | Pin reedline to 0.45 for 0.110 release | [#17366](https://github.com/nushell/nushell/pull/17366) | diff --git a/package-lock.json b/package-lock.json index f8e994f082c..a74de64ad9d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -248,7 +248,6 @@ "integrity": "sha512-/FRKUM1G4xn3vV8+9xH1WJ9XknU8rkBGlefruq9jDhYUAvYozKimhrmC2pRqw/RyHhPivmgZCRuC8jHP8piz4Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@algolia/client-common": "5.44.0", "@algolia/requester-browser-xhr": "5.44.0", @@ -1934,7 +1933,6 @@ "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/linkify-it": "^5", "@types/mdurl": "^2" @@ -2200,7 +2198,6 @@ "integrity": "sha512-4+YfKs2iOxuVSMW+L2tFzu2+X2HiGAREpo1DbkkYVDa5GyyPR+YsSueXNZMroTdzWDk5kAUz2Z1Tz1lIu7TO2g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@vitejs/plugin-vue": "^6.0.1", "@vuepress/bundlerutils": "2.0.0-rc.26", @@ -2784,7 +2781,6 @@ "integrity": "sha512-f8IpsbdQjzTjr/4mJ/jv5UplrtyMnnciGax6/B0OnLCs2/GJTK13O4Y7Ff1AvJVAaztanH+m5nzPoUq6EAy+aA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@algolia/abtesting": "1.10.0", "@algolia/client-abtesting": "5.44.0", @@ -2945,7 +2941,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "caniuse-lite": "^1.0.30001726", "electron-to-chromium": "^1.5.173", @@ -4357,7 +4352,6 @@ "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "argparse": "^2.0.1", "entities": "^4.4.0", @@ -4894,7 +4888,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -5180,13 +5173,34 @@ "dev": true, "license": "MIT" }, + "node_modules/sass": { + "version": "1.93.3", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.93.3.tgz", + "integrity": "sha512-elOcIZRTM76dvxNAjqYrucTSI0teAF/L2Lv0s6f6b7FOwcwIuA357bIE871580AjHJuSvLIRUosgV+lIWx6Rgg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "chokidar": "^4.0.0", + "immutable": "^5.0.2", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + }, + "optionalDependencies": { + "@parcel/watcher": "^2.4.1" + } + }, "node_modules/sass-embedded": { "version": "1.93.3", "resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.93.3.tgz", "integrity": "sha512-+VUy01yfDqNmIVMd/LLKl2TTtY0ovZN0rTonh+FhKr65mFwIYgU9WzgIZKS7U9/SPCQvWTsTGx9jyt+qRm/XFw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@bufbuild/protobuf": "^2.5.0", "buffer-builder": "^0.2.0", @@ -5920,7 +5934,6 @@ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -6220,7 +6233,6 @@ "integrity": "sha512-ZWyE8YXEXqJrrSLvYgrRP7p62OziLW7xI5HYGWFzOvupfAlrLvURSzv/FyGyy0eidogEM3ujU+kUG1zuHgb6Ug==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.5.0", @@ -6314,7 +6326,6 @@ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -6373,7 +6384,6 @@ "integrity": "sha512-ztTS3m6Q2MAb6D26vM2UyU5nOuxIhIk37SSD3jTcKI00x4ha0FcwY3Cm0MAt6w58REBmkwNLPxN5iiulatHtbw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@vuepress/cli": "2.0.0-rc.26", "@vuepress/client": "2.0.0-rc.26", @@ -6503,7 +6513,6 @@ "integrity": "sha512-JInaHOamG8pt5+Ey8kGmdcAcg3OL9reK8ltczgHTAwNhMys/6ThXHityHxVV2p3fkw/c+MAvBHFVYHFZDmjMCQ==", "dev": true, "license": "MIT", - "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } From 084c0601fc2cf6d8358b6e3d2710108a35b269c9 Mon Sep 17 00:00:00 2001 From: ysthakur <45539777+ysthakur@users.noreply.github.com> Date: Sat, 17 Jan 2026 19:53:17 -0500 Subject: [PATCH 7/8] Add highlights --- blog/2026-01-17-nushell_v0_110_0.md | 434 +++++++++++++++------------- 1 file changed, 227 insertions(+), 207 deletions(-) diff --git a/blog/2026-01-17-nushell_v0_110_0.md b/blog/2026-01-17-nushell_v0_110_0.md index 4d09faf68ad..f0264638d12 100644 --- a/blog/2026-01-17-nushell_v0_110_0.md +++ b/blog/2026-01-17-nushell_v0_110_0.md @@ -12,9 +12,7 @@ excerpt: Today, we're releasing version 0.110.0 of Nu. This release adds... # Nushell 0.110.0 - - -Today, we're releasing version 0.110.0 of Nu. This release adds... +Today, we're releasing version 0.110.0 of Nu. This release adds a `let` pipeline command, an `unlet` command, improvements to the Polars plugin, improvements to `explore`, and faster `ls` on Windows. # Where to get it @@ -28,109 +26,7 @@ As part of this release, we also publish a set of optional [plugins](https://www # Highlights and themes of this release - - - -# Changes - -## Breaking changes - -### Renamed `$nu.temp-path` and `$nu.home-path` - -For consistency with other `$nu` fields: - -- `$nu.temp-path` has been renamed to `$nu.temp-dir` -- `$nu.home-path` has been renamed to `$nu.home-dir` - -Implemented in [#17129](https://github.com/nushell/nushell/pull/17129). - -### Use `labels` for multiple labels in `error make` - -Previously, when calling `error make` with a record argument, the `label` field could be either a single label or a list of labels. Now, it must be a single label. There is a new `labels` field that can hold a list of labels. Updated in [#17070](https://github.com/nushell/nushell/pull/17070). - -```nu -> def f [x y z] { - error make {msg: here labels: [ - {text: "there" span: (metadata $x).span} - {text: "everywhere" span: (metadata $y).span} - {text: "somewhere" span: (metadata $z).span} - ] - } -} -f abcd [x y z] {d: a} - -Error: nu::shell::error - - × here - ╭─[entry #11:9:3] - 8 │ } - 9 │ f abcd [x y z] {d: a} - · ──┬─ ───┬─── ───┬── - · │ │ ╰── somewhere - · │ ╰── everywhere - · ╰── there - ╰──── -``` - -### IDE menu `min_description_width` should be non-zero - -With [reedline#996](https://github.com/nushell/reedline/pull/996), the `min_description_width` setting for the IDE menu is used to determine when to switch the description to the left if `description_mode` is `prefer_right`. This means that if `min_description_width` is set to 0, the description box will always stay on the right, even when there isn't enough space to show it. - -To fix this, set `min_description_width` to a width at which the description box can still hold a decent amount of text (e.g., 15, the new default). - -### `to md` formats lists as unordered Markdown lists - -`to md` will now format lists as unordered Markdown lists by default. For more information, see [TODO do this after TOC is generated!]. -TODO fix link - -### `*` no longer matches dotfiles in mv/cp/du by default - -With [#17185](https://github.com/nushell/nushell/pull/17185), the glob `*` won't match files whose names start with a dot (`.`) when using `cp`, `mv`, and `du`. However, these commands have a new `--all(-a)` flag for forcing the glob to match dotfiles. - -```nushell -> touch .a -> cp * /tmp -> "/tmp/.a" | path exists -false -``` - -## Additions - -### New Configuration Option: `$env.config.show_hints` - -You can now disable hints for completions and the history by setting `$env.config.show_hints = false`. - -### Configuring errors - -#### New `error_style = short` setting - -[#17097](https://github.com/nushell/nushell/pull/17097) adds a new `short` option to `$env.config.error_style` for displaying errors as concise, single-line messages similar to classic shells. - -``` -$ ll -Error: External command failed: Command `ll` not found (Did you mean `all`?) -``` - -#### New `error_style = tree` setting - -[#17105](https://github.com/nushell/nushell/pull/17105) adds a new `tree` option for `$env.config.error_style` to show related/nested errors. - -#### New `error_lines` setting - -[#17105](https://github.com/nushell/nushell/pull/17105) adds a new `$env.config.error_lines` option to control the number of lines printed for error context. By default, this is set to 1. - -### `let` can be used in pipelines +## `let` can be used in pipelines With [#17247](https://github.com/nushell/nushell/pull/17247), the `let` command is now allowed to be at the end of the pipeline when a variable name is also provided. @@ -140,9 +36,9 @@ ls | get name | let files let files = ls | get name ``` -### New command: `unlet` +## Destroying variables with `unlet` -The new command `unlet`, introduced in [#17270](https://github.com/nushell/nushell/pull/17270), will delete variables from memory. +To bring balance to the universe, [#17270](https://github.com/nushell/nushell/pull/17270) introduces a new command `unlet` for deleting variables from memory. ```nu ❯ let a = 1;let b = 2;let c = 3;let d = 4 @@ -160,25 +56,23 @@ Error: nu::shell::variable_not_found ╰──── ``` -### Added record conversion to `into list` +Accompanying this is a new `mem_size` column in the output of the `scope variables` command for showing the size of each variable in memory (implemented in [#17287](https://github.com/nushell/nushell/pull/17287)). -With [#17127](https://github.com/nushell/nushell/pull/17127), `into list` from `std-rfc/conversions` now handles record types. +## Polars plugin supports selectors -```nu -use std-rfc/conversions * -{ a: 3, b: 7, c: 10 } | into list -# => ╭───┬─────┬───────╮ -# => │ # │ key │ value │ -# => ├───┼─────┼───────┤ -# => │ 0 │ a │ 3 │ -# => │ 1 │ b │ 7 │ -# => │ 2 │ c │ 10 │ -# => ╰───┴─────┴───────╯ -``` +[#17296](https://github.com/nushell/nushell/pull/17296) introduces [Polars selector](https://docs.pola.rs/api/python/stable/reference/selectors.html) support. This introduces the NuSelector type and adds following new commands. + +- `polars selector all` (plugin) - Creates a selector that selects all columns. +- `polars selector by-dtype` (plugin) - Creates a selector that selects columns by data type. +- `polars selector by-name` (plugin) - Creates a selector that selects columns by name. +- `polars selector first` (plugin) - Creates a selector that selects the first column(s) by index. +- `polars selector last` (plugin) - Creates a selector that selects the last column(s) by index. + +Selectors may be used with `polars select` and `polars with-column`. -### Polars plugin supports more cloud providers +## Polars plugin supports more cloud providers -#### Azure support +### Azure support [#17116](https://github.com/nushell/nushell/pull/17116) brings Azure blob storage support to the Polars plugin. The following environment variables are now supported: @@ -198,7 +92,7 @@ ps | polars into-df | polars save azure:///ps.parquet polars open azure:///ps.parquet | polars first 5 | polars collect ``` -#### Google Cloud support +### Google Cloud support [#17135](https://github.com/nushell/nushell/pull/17135) brings Google Cloud Storage support to the Polars plugin. @@ -209,92 +103,15 @@ ps | polars into-df | polars save gs://nushell_testing/ps.parquet polars open gs://nushell_testing/ps.parquet | polars first 5 | polars collect ``` -### Include MCP server support by default - -The MCP server support is now included as a default feature in [#17151](https://github.com/nushell/nushell/pull/17151). - -### Connection pool for `http` commands - -With [#17157](https://github.com/nushell/nushell/pull/17157) `http` subcommands now have a `--pool` flag for reusing connections: - -```nu -http get https://www.google.com --pool -``` - -The `http pool` command can be used to reset and customize the HTTP connection pool. - -### New `--output` flag for `timeit` - -[#17202](https://github.com/nushell/nushell/pull/17202) adds a flag called `--output` to the `timeit` command that will make the command return a record with both the execution time and the output of the closure. - -```nu -> timeit --output { 'example text' } -╭────────┬──────────────╮ -│ time │ 14328 │ -│ output │ example text │ -╰────────┴──────────────╯ -``` - -### Allow disabling filtering in custom completions - -[#17253](https://github.com/nushell/nushell/pull/17253) allows disabling filtering in custom completions. This is useful if you have a completer that filters on something other than the `value` of the suggestion (e.g. a completer that displays git commits and filters based on commit description). - -::: note -If you disable filtering, your completions will also not be sorted. -::: - -### New plugin interface `get_block_ir` - -[#17279](https://github.com/nushell/nushell/pull/17279) a new engine call to the plugin protocol for getting the compiled Intermediate Representation (IR) for a block: - -```rust -fn get_block_ir(&self, block_id: BlockId) -> Result -``` - -### New `--list` flag to control list formatting in `to md` - -With [#17250](https://github.com/nushell/nushell/pull/17250), `to md` will format lists as unordered Markdown lists by default. The `--list` flag can be used to control this: - -```nu - [a b c] | to md # => "* a\n* b\n* c" - [a b c] | to md --list unordered # => "* a\n* b\n* c" - [a b c] | to md --list ordered # => "1. a\n2. b\n3. c" - [a b c] | to md --list none # => "a\nb\nc" -``` - -::: warning -**Breaking change**: The previous behavior was equivalent to `--list none` (no formatting for lists). The new behavior is `--list unordered`. -::: - -### Add `--icons` option to table for `ls` tables - -Similar to `ls | grid -i`, now `ls | table --icons` will display file icons to the left of the filename. This can be used in your `$env.config.hooks.display_output` to always display icons when using `ls`. Implemented in [#17248](https://github.com/nushell/nushell/pull/17248). - -![table --icons screenshot](https://github.com/user-attachments/assets/3d8fad53-018d-4616-a659-37ef9122f6c3) - -### Alias definitions shown in `which` command - -With [#17338](https://github.com/nushell/nushell/pull/17338), the `which` command includes a `definitions` column when inspecting aliases to show the command that the alias expands to. - -### Support selectors in Polars plugin - -[#17296](https://github.com/nushell/nushell/pull/17296) introduces [Polars selector](https://docs.pola.rs/api/python/stable/reference/selectors.html) support. This introduces the NuSelector type and adds following new commands. - -- `polars selector all` (plugin) - Creates a selector that selects all columns. -- `polars selector by-dtype` (plugin) - Creates a selector that selects columns by data type. -- `polars selector by-name` (plugin) - Creates a selector that selects columns by name. -- `polars selector first` (plugin) - Creates a selector that selects the first column(s) by index. -- `polars selector last` (plugin) - Creates a selector that selects the last column(s) by index. - -Selectors may be used with `polars select` and `polars with-column`. +## `explore regex` -### Allow serializing as raw strings in `to nuon` +[#17187](https://github.com/nushell/nushell/pull/17187) adds a quick reference panel to `explore regex` so you won't have to remember every character class or anchor. Use F1 to trigger it and ESC to dismiss. -[#17189](https://github.com/nushell/nushell/pull/17189) adds a `--raw-strings` flag to `to nuon` for serializing strings with raw string syntax (`r#'...'#`) instead of strings with escapes. +![quick reference panel screenshot](https://github.com/user-attachments/assets/502a6566-715f-4ce0-b787-6012fc5b9942) -### New command: `explore config` TUI +## New `explore config` TUI -Introducing the `explore config` command. +[#17147](https://github.com/nushell/nushell/pull/17147) introduces the `explore config` command, which launches a TUI allowing you to view and interactively modify your config. Functionality: @@ -307,6 +124,8 @@ Functionality: - As you make changes to your config, you can save those changes and they're immediately applied. - If you hit Enter on any node leaf, you immediately jump into editing that value. If you hit Enter on tree nodes, the tree expands or collapses. +Below is a GIF showing off the TUI: + ![explore-config2](https://github.com/user-attachments/assets/10f4407e-28a0-4aac-8baa-88f7b95229e2) Help @@ -360,7 +179,33 @@ Examples: > explore config --use-example-data ``` -### Improvements to `error make` +## Faster `ls` on Windows + +[#17339](https://github.com/nushell/nushell/pull/17339) makes `ls` much faster on Windows. + +Before: + +```nu +❯ use std/bench * +❯ bench { ls c:\windows\system32 | length } { ls c:\windows\system32 } --rounds 10 +╭─#─┬────────────────code─────────────────┬──────────mean──────────┬──────────min───────────┬──────────max───────────┬───────std────────┬─ratio─╮ +│ 0 │ { ls c:\windows\system32 | length } │ 1sec 536ms 50µs 650ns │ 1sec 502ms 450µs 200ns │ 1sec 605ms 537µs 100ns │ 29ms 468µs 800ns │ 1.01 │ +│ 1 │ { ls c:\windows\system32 } │ 1sec 527ms 102µs 580ns │ 1sec 508ms 441µs 300ns │ 1sec 556ms 144µs 800ns │ 17ms 852µs 739ns │ 1.00 │ +╰─#─┴────────────────code─────────────────┴──────────mean──────────┴──────────min───────────┴──────────max───────────┴───────std────────┴─ratio─╯ +``` + +After: + +```nu +❯ use std/bench * +❯ bench { ls c:\windows\system32 | length } { ls c:\windows\system32 } --rounds 10 +╭─#─┬────────────────code─────────────────┬───────mean────────┬────────min────────┬────────max────────┬───────std───────┬─ratio─╮ +│ 0 │ { ls c:\windows\system32 | length } │ 171ms 623µs 760ns │ 167ms 632µs 400ns │ 182ms 443µs 100ns │ 4ms 263µs 43ns │ 1.01 │ +│ 1 │ { ls c:\windows\system32 } │ 170ms 398µs 400ns │ 167ms 103µs 200ns │ 174ms 190µs 500ns │ 2ms 260µs 683ns │ 1.00 │ +╰─#─┴────────────────code─────────────────┴───────mean────────┴────────min────────┴────────max────────┴───────std───────┴─ratio─╯ +``` + +## Improvements to `error make` [#17070](https://github.com/nushell/nushell/pull/17070) introduced several improvements to `error make`. @@ -472,6 +317,181 @@ Error: nu::shell::outside ╰──── ``` +# Changes + +## Breaking changes + +### Renamed `$nu.temp-path` and `$nu.home-path` + +For consistency with other `$nu` fields: + +- `$nu.temp-path` has been renamed to `$nu.temp-dir` +- `$nu.home-path` has been renamed to `$nu.home-dir` + +Implemented in [#17129](https://github.com/nushell/nushell/pull/17129). + +### `*` no longer matches dotfiles in mv/cp/du by default + +With [#17185](https://github.com/nushell/nushell/pull/17185), the glob `*` won't match files whose names start with a dot (`.`) when using `cp`, `mv`, and `du`. However, these commands have a new `--all(-a)` flag for forcing the glob to match dotfiles. + +```nushell +> touch .a +> cp * /tmp +> "/tmp/.a" | path exists +false +``` + +### Use `labels` for multiple labels in `error make` + +Previously, when calling `error make` with a record argument, the `label` field could be either a single label or a list of labels. Now, it must be a single label. There is a new `labels` field that can hold a list of labels. Updated in [#17070](https://github.com/nushell/nushell/pull/17070). + +```nu +> def f [x y z] { + error make {msg: here labels: [ + {text: "there" span: (metadata $x).span} + {text: "everywhere" span: (metadata $y).span} + {text: "somewhere" span: (metadata $z).span} + ] + } +} +f abcd [x y z] {d: a} + +Error: nu::shell::error + + × here + ╭─[entry #11:9:3] + 8 │ } + 9 │ f abcd [x y z] {d: a} + · ──┬─ ───┬─── ───┬── + · │ │ ╰── somewhere + · │ ╰── everywhere + · ╰── there + ╰──── +``` + +### IDE menu `min_description_width` should be non-zero + +With [reedline#996](https://github.com/nushell/reedline/pull/996), the `min_description_width` setting for the IDE menu is used to determine when to switch the description to the left if `description_mode` is `prefer_right`. This means that if `min_description_width` is set to 0, the description box will always stay on the right, even when there isn't enough space to show it. + +To fix this, set `min_description_width` to a width at which the description box can still hold a decent amount of text (e.g., 15, the new default). + +### `to md` formats lists as unordered Markdown lists + +`to md` will now format lists as unordered Markdown lists by default. For more information, see [TODO do this after TOC is generated!]. +TODO fix link + +## Additions + +### New Configuration Option: `$env.config.show_hints` + +You can now disable hints for completions and the history by setting `$env.config.show_hints = false`. + +### Configuring errors + +#### New `error_style = short` setting + +[#17097](https://github.com/nushell/nushell/pull/17097) adds a new `short` option to `$env.config.error_style` for displaying errors as concise, single-line messages similar to classic shells. + +``` +$ ll +Error: External command failed: Command `ll` not found (Did you mean `all`?) +``` + +#### New `error_style = tree` setting + +[#17105](https://github.com/nushell/nushell/pull/17105) adds a new `tree` option for `$env.config.error_style` to show related/nested errors. + +#### New `error_lines` setting + +[#17105](https://github.com/nushell/nushell/pull/17105) adds a new `$env.config.error_lines` option to control the number of lines printed for error context. By default, this is set to 1. + +### Added record conversion to `into list` + +With [#17127](https://github.com/nushell/nushell/pull/17127), `into list` from `std-rfc/conversions` now handles record types. + +```nu +use std-rfc/conversions * +{ a: 3, b: 7, c: 10 } | into list +# => ╭───┬─────┬───────╮ +# => │ # │ key │ value │ +# => ├───┼─────┼───────┤ +# => │ 0 │ a │ 3 │ +# => │ 1 │ b │ 7 │ +# => │ 2 │ c │ 10 │ +# => ╰───┴─────┴───────╯ +``` + +### Include MCP server support by default + +The MCP server support is now included as a default feature in [#17151](https://github.com/nushell/nushell/pull/17151). + +### Connection pool for `http` commands + +With [#17157](https://github.com/nushell/nushell/pull/17157) `http` subcommands now have a `--pool` flag for reusing connections: + +```nu +http get https://www.google.com --pool +``` + +The `http pool` command can be used to reset and customize the HTTP connection pool. + +### New `--output` flag for `timeit` + +[#17202](https://github.com/nushell/nushell/pull/17202) adds a flag called `--output` to the `timeit` command that will make the command return a record with both the execution time and the output of the closure. + +```nu +> timeit --output { 'example text' } +╭────────┬──────────────╮ +│ time │ 14328 │ +│ output │ example text │ +╰────────┴──────────────╯ +``` + +### Allow disabling filtering in custom completions + +[#17253](https://github.com/nushell/nushell/pull/17253) allows disabling filtering in custom completions. This is useful if you have a completer that filters on something other than the `value` of the suggestion (e.g. a completer that displays git commits and filters based on commit description). + +::: note +If you disable filtering, your completions will also not be sorted. +::: + +### New plugin interface `get_block_ir` + +[#17279](https://github.com/nushell/nushell/pull/17279) a new engine call to the plugin protocol for getting the compiled Intermediate Representation (IR) for a block: + +```rust +fn get_block_ir(&self, block_id: BlockId) -> Result +``` + +### New `--list` flag to control list formatting in `to md` + +With [#17250](https://github.com/nushell/nushell/pull/17250), `to md` will format lists as unordered Markdown lists by default. The `--list` flag can be used to control this: + +```nu + [a b c] | to md # => "* a\n* b\n* c" + [a b c] | to md --list unordered # => "* a\n* b\n* c" + [a b c] | to md --list ordered # => "1. a\n2. b\n3. c" + [a b c] | to md --list none # => "a\nb\nc" +``` + +::: warning +**Breaking change**: The previous behavior was equivalent to `--list none` (no formatting for lists). The new behavior is `--list unordered`. +::: + +### Add `--icons` option to table for `ls` tables + +Similar to `ls | grid -i`, now `ls | table --icons` will display file icons to the left of the filename. This can be used in your `$env.config.hooks.display_output` to always display icons when using `ls`. Implemented in [#17248](https://github.com/nushell/nushell/pull/17248). + +![table --icons screenshot](https://github.com/user-attachments/assets/3d8fad53-018d-4616-a659-37ef9122f6c3) + +### Alias definitions shown in `which` command + +With [#17338](https://github.com/nushell/nushell/pull/17338), the `which` command includes a `definitions` column when inspecting aliases to show the command that the alias expands to. + +### Allow serializing as raw strings in `to nuon` + +[#17189](https://github.com/nushell/nushell/pull/17189) adds a `--raw-strings` flag to `to nuon` for serializing strings with raw string syntax (`r#'...'#`) instead of strings with escapes. + ### Other additions - `job flush` can now take a `--tag` to filter which messages to discard ([#17056](https://github.com/nushell/nushell/pull/17056)) From 6aa6b3688d90ea5d43ad43889fb6a11bb135e7a1 Mon Sep 17 00:00:00 2001 From: ysthakur <45539777+ysthakur@users.noreply.github.com> Date: Sat, 17 Jan 2026 20:55:08 -0500 Subject: [PATCH 8/8] Add table of contents --- blog/2026-01-17-nushell_v0_110_0.md | 173 ++++++++++++++++++---------- 1 file changed, 110 insertions(+), 63 deletions(-) diff --git a/blog/2026-01-17-nushell_v0_110_0.md b/blog/2026-01-17-nushell_v0_110_0.md index f0264638d12..edc492a3c7a 100644 --- a/blog/2026-01-17-nushell_v0_110_0.md +++ b/blog/2026-01-17-nushell_v0_110_0.md @@ -3,13 +3,9 @@ title: Nushell 0.110.0 author: The Nu Authors author_site: https://www.nushell.sh/blog author_image: https://www.nushell.sh/blog/images/nu_logo.png -excerpt: Today, we're releasing version 0.110.0 of Nu. This release adds... +excerpt: Today, we're releasing version 0.110.0 of Nu. This release adds a let pipeline command, an unlet command, improvements to the Polars plugin, improvements to explore, and faster ls on Windows. --- - - - - # Nushell 0.110.0 Today, we're releasing version 0.110.0 of Nu. This release adds a `let` pipeline command, an `unlet` command, improvements to the Polars plugin, improvements to `explore`, and faster `ls` on Windows. @@ -22,11 +18,63 @@ As part of this release, we also publish a set of optional [plugins](https://www # Table of contents - - -# Highlights and themes of this release - -## `let` can be used in pipelines +- [_Highlights and themes of this release_](#highlights-and-themes-of-this-release-toc) + - [_`let` can be used in pipelines_](#let-can-be-used-in-pipelines-toc) + - [_Destroying variables with `unlet`_](#destroying-variables-with-unlet-toc) + - [_Polars plugin supports selectors_](#polars-plugin-supports-selectors-toc) + - [_Polars plugin supports more cloud providers_](#polars-plugin-supports-more-cloud-providers-toc) + - [_Azure support_](#azure-support-toc) + - [_Google Cloud support_](#google-cloud-support-toc) + - [_`explore regex`_](#explore-regex-toc) + - [_New `explore config` TUI_](#new-explore-config-tui-toc) + - [_Faster `ls` on Windows_](#faster-ls-on-windows-toc) + - [_Improvements to `error make`_](#improvements-to-error-make-toc) +- [_Changes_](#changes-toc) + - [_Breaking changes_](#breaking-changes-toc) + - [_Renamed `$nu.temp-path` and `$nu.home-path`_](#renamed-nu-temp-path-and-nu-home-path-toc) + - [_`*` no longer matches dotfiles in mv/cp/du by default_](#no-longer-matches-dotfiles-in-mv-cp-du-by-default-toc) + - [_Use `labels` for multiple labels in `error make`_](#use-labels-for-multiple-labels-in-error-make-toc) + - [_IDE menu `min_description_width` should be non-zero_](#ide-menu-min-description-width-should-be-non-zero-toc) + - [_`to md` formats lists as unordered Markdown lists_](#to-md-formats-lists-as-unordered-markdown-lists-toc) + - [_Additions_](#additions-toc) + - [_New Configuration Option: `$env.config.show_hints`_](#new-configuration-option-env-config-show-hints-toc) + - [_Configuring errors_](#configuring-errors-toc) + - [_Added record conversion to `into list`_](#added-record-conversion-to-into-list-toc) + - [_Include MCP server support by default_](#include-mcp-server-support-by-default-toc) + - [_Connection pool for `http` commands_](#connection-pool-for-http-commands-toc) + - [_New `--output` flag for `timeit`_](#new-output-flag-for-timeit-toc) + - [_Allow disabling filtering in custom completions_](#allow-disabling-filtering-in-custom-completions-toc) + - [_New plugin interface `get_block_ir`_](#new-plugin-interface-get-block-ir-toc) + - [_New `--list` flag to control list formatting in `to md`_](#new-list-flag-to-control-list-formatting-in-to-md-toc) + - [_Add `--icons` option to table for `ls` tables_](#add-icons-option-to-table-for-ls-tables-toc) + - [_Alias definitions shown in `which` command_](#alias-definitions-shown-in-which-command-toc) + - [_Allow serializing as raw strings in `to nuon`_](#allow-serializing-as-raw-strings-in-to-nuon-toc) + - [_Other additions_](#other-additions-toc) + - [_Removals_](#removals-toc) + - [_Replace deprecated current_dir usage with EngineState::cwd in multiple files_](#replace-deprecated-current-dir-usage-with-enginestate-cwd-in-multiple-files-toc) + - [_Other changes_](#other-changes-toc) + - [_Update explore regex command to look more helpful and professional_](#update-explore-regex-command-to-look-more-helpful-and-professional-toc) + - [_More descriptive error messages for `rm`_](#more-descriptive-error-messages-for-rm-toc) + - [_Some Nushell commands no longer canonicalize paths_](#some-nushell-commands-no-longer-canonicalize-paths-toc) + - [_Add REPL-style state persistence across evaluations for MCP server_](#add-repl-style-state-persistence-across-evaluations-for-mcp-server-toc) + - [_Use structured response format for MCP server_](#use-structured-response-format-for-mcp-server-toc) + - [_Additional changes_](#additional-changes-toc) + - [_Bug fixes_](#bug-fixes-toc) + - [_Fixed parsing of ranges with parentheses_](#fixed-parsing-of-ranges-with-parentheses-toc) + - [_Fixed parsing issue with multiarm match + guard_](#fixed-parsing-issue-with-multiarm-match-guard-toc) + - [_Infinite sequences can be terminated when piped to other commands_](#infinite-sequences-can-be-terminated-when-piped-to-other-commands-toc) + - [_Pipefail works with `try` block_](#pipefail-works-with-try-block-toc) + - [_Nushell exits early when running scripts or commands with bad config files_](#nushell-exits-early-when-running-scripts-or-commands-with-bad-config-files-toc) + - [_Fix `http` DNS resolution "Service not supported" error in Docker containers_](#fix-http-dns-resolution-service-not-supported-error-in-docker-containers-toc) + - [_Fix variables remaining active after `overlay hide`_](#fix-variables-remaining-active-after-overlay-hide-toc) + - [_Other fixes_](#other-fixes-toc) +- [_Notes for plugin developers_](#notes-for-plugin-developers-toc) +- [_Hall of fame_](#hall-of-fame-toc) +- [_Full changelog_](#full-changelog-toc) + +# Highlights and themes of this release [[toc](#table-of-contents)] + +## `let` can be used in pipelines [[toc](#table-of-contents)] With [#17247](https://github.com/nushell/nushell/pull/17247), the `let` command is now allowed to be at the end of the pipeline when a variable name is also provided. @@ -36,7 +84,7 @@ ls | get name | let files let files = ls | get name ``` -## Destroying variables with `unlet` +## Destroying variables with `unlet` [[toc](#table-of-contents)] To bring balance to the universe, [#17270](https://github.com/nushell/nushell/pull/17270) introduces a new command `unlet` for deleting variables from memory. @@ -58,7 +106,7 @@ Error: nu::shell::variable_not_found Accompanying this is a new `mem_size` column in the output of the `scope variables` command for showing the size of each variable in memory (implemented in [#17287](https://github.com/nushell/nushell/pull/17287)). -## Polars plugin supports selectors +## Polars plugin supports selectors [[toc](#table-of-contents)] [#17296](https://github.com/nushell/nushell/pull/17296) introduces [Polars selector](https://docs.pola.rs/api/python/stable/reference/selectors.html) support. This introduces the NuSelector type and adds following new commands. @@ -70,9 +118,9 @@ Accompanying this is a new `mem_size` column in the output of the `scope variabl Selectors may be used with `polars select` and `polars with-column`. -## Polars plugin supports more cloud providers +## Polars plugin supports more cloud providers [[toc](#table-of-contents)] -### Azure support +### Azure support [[toc](#table-of-contents)] [#17116](https://github.com/nushell/nushell/pull/17116) brings Azure blob storage support to the Polars plugin. The following environment variables are now supported: @@ -92,7 +140,7 @@ ps | polars into-df | polars save azure:///ps.parquet polars open azure:///ps.parquet | polars first 5 | polars collect ``` -### Google Cloud support +### Google Cloud support [[toc](#table-of-contents)] [#17135](https://github.com/nushell/nushell/pull/17135) brings Google Cloud Storage support to the Polars plugin. @@ -103,13 +151,13 @@ ps | polars into-df | polars save gs://nushell_testing/ps.parquet polars open gs://nushell_testing/ps.parquet | polars first 5 | polars collect ``` -## `explore regex` +## `explore regex` [[toc](#table-of-contents)] [#17187](https://github.com/nushell/nushell/pull/17187) adds a quick reference panel to `explore regex` so you won't have to remember every character class or anchor. Use F1 to trigger it and ESC to dismiss. ![quick reference panel screenshot](https://github.com/user-attachments/assets/502a6566-715f-4ce0-b787-6012fc5b9942) -## New `explore config` TUI +## New `explore config` TUI [[toc](#table-of-contents)] [#17147](https://github.com/nushell/nushell/pull/17147) introduces the `explore config` command, which launches a TUI allowing you to view and interactively modify your config. @@ -179,7 +227,7 @@ Examples: > explore config --use-example-data ``` -## Faster `ls` on Windows +## Faster `ls` on Windows [[toc](#table-of-contents)] [#17339](https://github.com/nushell/nushell/pull/17339) makes `ls` much faster on Windows. @@ -205,7 +253,7 @@ After: ╰─#─┴────────────────code─────────────────┴───────mean────────┴────────min────────┴────────max────────┴───────std───────┴─ratio─╯ ``` -## Improvements to `error make` +## Improvements to `error make` [[toc](#table-of-contents)] [#17070](https://github.com/nushell/nushell/pull/17070) introduced several improvements to `error make`. @@ -317,11 +365,11 @@ Error: nu::shell::outside ╰──── ``` -# Changes +# Changes [[toc](#table-of-contents)] -## Breaking changes +## Breaking changes [[toc](#table-of-contents)] -### Renamed `$nu.temp-path` and `$nu.home-path` +### Renamed `$nu.temp-path` and `$nu.home-path` [[toc](#table-of-contents)] For consistency with other `$nu` fields: @@ -330,7 +378,7 @@ For consistency with other `$nu` fields: Implemented in [#17129](https://github.com/nushell/nushell/pull/17129). -### `*` no longer matches dotfiles in mv/cp/du by default +### `*` no longer matches dotfiles in mv/cp/du by default [[toc](#table-of-contents)] With [#17185](https://github.com/nushell/nushell/pull/17185), the glob `*` won't match files whose names start with a dot (`.`) when using `cp`, `mv`, and `du`. However, these commands have a new `--all(-a)` flag for forcing the glob to match dotfiles. @@ -341,7 +389,7 @@ With [#17185](https://github.com/nushell/nushell/pull/17185), the glob `*` won't false ``` -### Use `labels` for multiple labels in `error make` +### Use `labels` for multiple labels in `error make` [[toc](#table-of-contents)] Previously, when calling `error make` with a record argument, the `label` field could be either a single label or a list of labels. Now, it must be a single label. There is a new `labels` field that can hold a list of labels. Updated in [#17070](https://github.com/nushell/nushell/pull/17070). @@ -369,24 +417,23 @@ Error: nu::shell::error ╰──── ``` -### IDE menu `min_description_width` should be non-zero +### IDE menu `min_description_width` should be non-zero [[toc](#table-of-contents)] With [reedline#996](https://github.com/nushell/reedline/pull/996), the `min_description_width` setting for the IDE menu is used to determine when to switch the description to the left if `description_mode` is `prefer_right`. This means that if `min_description_width` is set to 0, the description box will always stay on the right, even when there isn't enough space to show it. To fix this, set `min_description_width` to a width at which the description box can still hold a decent amount of text (e.g., 15, the new default). -### `to md` formats lists as unordered Markdown lists +### `to md` formats lists as unordered Markdown lists [[toc](#table-of-contents)] -`to md` will now format lists as unordered Markdown lists by default. For more information, see [TODO do this after TOC is generated!]. -TODO fix link +`to md` will now format lists as unordered Markdown lists by default. For more information, see [**New `--list` flag to control list formatting in `to md`**](#new-list-flag-to-control-list-formatting-in-to-md-toc). -## Additions +## Additions [[toc](#table-of-contents)] -### New Configuration Option: `$env.config.show_hints` +### New Configuration Option: `$env.config.show_hints` [[toc](#table-of-contents)] You can now disable hints for completions and the history by setting `$env.config.show_hints = false`. -### Configuring errors +### Configuring errors [[toc](#table-of-contents)] #### New `error_style = short` setting @@ -405,7 +452,7 @@ Error: External command failed: Command `ll` not found (Did you mean `all`?) [#17105](https://github.com/nushell/nushell/pull/17105) adds a new `$env.config.error_lines` option to control the number of lines printed for error context. By default, this is set to 1. -### Added record conversion to `into list` +### Added record conversion to `into list` [[toc](#table-of-contents)] With [#17127](https://github.com/nushell/nushell/pull/17127), `into list` from `std-rfc/conversions` now handles record types. @@ -421,11 +468,11 @@ use std-rfc/conversions * # => ╰───┴─────┴───────╯ ``` -### Include MCP server support by default +### Include MCP server support by default [[toc](#table-of-contents)] The MCP server support is now included as a default feature in [#17151](https://github.com/nushell/nushell/pull/17151). -### Connection pool for `http` commands +### Connection pool for `http` commands [[toc](#table-of-contents)] With [#17157](https://github.com/nushell/nushell/pull/17157) `http` subcommands now have a `--pool` flag for reusing connections: @@ -435,7 +482,7 @@ http get https://www.google.com --pool The `http pool` command can be used to reset and customize the HTTP connection pool. -### New `--output` flag for `timeit` +### New `--output` flag for `timeit` [[toc](#table-of-contents)] [#17202](https://github.com/nushell/nushell/pull/17202) adds a flag called `--output` to the `timeit` command that will make the command return a record with both the execution time and the output of the closure. @@ -447,7 +494,7 @@ The `http pool` command can be used to reset and customize the HTTP connection p ╰────────┴──────────────╯ ``` -### Allow disabling filtering in custom completions +### Allow disabling filtering in custom completions [[toc](#table-of-contents)] [#17253](https://github.com/nushell/nushell/pull/17253) allows disabling filtering in custom completions. This is useful if you have a completer that filters on something other than the `value` of the suggestion (e.g. a completer that displays git commits and filters based on commit description). @@ -455,7 +502,7 @@ The `http pool` command can be used to reset and customize the HTTP connection p If you disable filtering, your completions will also not be sorted. ::: -### New plugin interface `get_block_ir` +### New plugin interface `get_block_ir` [[toc](#table-of-contents)] [#17279](https://github.com/nushell/nushell/pull/17279) a new engine call to the plugin protocol for getting the compiled Intermediate Representation (IR) for a block: @@ -463,7 +510,7 @@ If you disable filtering, your completions will also not be sorted. fn get_block_ir(&self, block_id: BlockId) -> Result ``` -### New `--list` flag to control list formatting in `to md` +### New `--list` flag to control list formatting in `to md` [[toc](#table-of-contents)] With [#17250](https://github.com/nushell/nushell/pull/17250), `to md` will format lists as unordered Markdown lists by default. The `--list` flag can be used to control this: @@ -478,28 +525,28 @@ With [#17250](https://github.com/nushell/nushell/pull/17250), `to md` will forma **Breaking change**: The previous behavior was equivalent to `--list none` (no formatting for lists). The new behavior is `--list unordered`. ::: -### Add `--icons` option to table for `ls` tables +### Add `--icons` option to table for `ls` tables [[toc](#table-of-contents)] Similar to `ls | grid -i`, now `ls | table --icons` will display file icons to the left of the filename. This can be used in your `$env.config.hooks.display_output` to always display icons when using `ls`. Implemented in [#17248](https://github.com/nushell/nushell/pull/17248). ![table --icons screenshot](https://github.com/user-attachments/assets/3d8fad53-018d-4616-a659-37ef9122f6c3) -### Alias definitions shown in `which` command +### Alias definitions shown in `which` command [[toc](#table-of-contents)] With [#17338](https://github.com/nushell/nushell/pull/17338), the `which` command includes a `definitions` column when inspecting aliases to show the command that the alias expands to. -### Allow serializing as raw strings in `to nuon` +### Allow serializing as raw strings in `to nuon` [[toc](#table-of-contents)] [#17189](https://github.com/nushell/nushell/pull/17189) adds a `--raw-strings` flag to `to nuon` for serializing strings with raw string syntax (`r#'...'#`) instead of strings with escapes. -### Other additions +### Other additions [[toc](#table-of-contents)] - `job flush` can now take a `--tag` to filter which messages to discard ([#17056](https://github.com/nushell/nushell/pull/17056)) - Add `$history` variable to MCP ([#17132](https://github.com/nushell/nushell/pull/17132)) -## Removals +## Removals [[toc](#table-of-contents)] -### Replace deprecated current_dir usage with EngineState::cwd in multiple files +### Replace deprecated current_dir usage with EngineState::cwd in multiple files [[toc](#table-of-contents)] [#17303](https://github.com/nushell/nushell/pull/17303) removes some deprecated Rust functions from `nu-engine` that have been deprecated since Nushell 0.92.3: @@ -508,23 +555,23 @@ With [#17338](https://github.com/nushell/nushell/pull/17338), the `which` comman - `current_dir()` - `current_dir_const()` -## Other changes +## Other changes [[toc](#table-of-contents)] -### Update explore regex command to look more helpful and professional +### Update explore regex command to look more helpful and professional [[toc](#table-of-contents)] With [#17149](https://github.com/nushell/nushell/pull/17149), the `explore regex` UI now looks more helpful and professional. ![New explore regex UI](https://github.com/user-attachments/assets/15e64dcf-96f7-4c6c-87da-b52c1f78d986) -### More descriptive error messages for `rm` +### More descriptive error messages for `rm` [[toc](#table-of-contents)] The `rm` command now provides more descriptive error messages when it runs into an IO error. Implemented in [#17134](https://github.com/nushell/nushell/pull/17134). -### Some Nushell commands no longer canonicalize paths +### Some Nushell commands no longer canonicalize paths [[toc](#table-of-contents)] With [#17319](https://github.com/nushell/nushell/pull/17319), `rm`, `watch`, and `source` no longer canonicalize paths. Additionally, the file path links in table view will no longer be canonicalized if you click them. -### Add REPL-style state persistence across evaluations for MCP server +### Add REPL-style state persistence across evaluations for MCP server [[toc](#table-of-contents)] With [#17121](https://github.com/nushell/nushell/pull/17121), variables and environment changes now persist across MCP tool calls (REPL-style). This enables workflows like @@ -533,7 +580,7 @@ $env.MY_VAR = "hello" # First call $env.MY_VAR # Second call returns "hello" ``` -### Use structured response format for MCP server +### Use structured response format for MCP server [[toc](#table-of-contents)] With [#17132](https://github.com/nushell/nushell/pull/17132), all MCP responses will be wrapped in a structured record with: @@ -541,7 +588,7 @@ With [#17132](https://github.com/nushell/nushell/pull/17132), all MCP responses - `cwd`: current working directory after command - `output`: command output (possibly truncated) -### Additional changes +### Additional changes [[toc](#table-of-contents)] - Single column dataframes (series) or expressions can now be passed into `polars is-in` ([#17275](https://github.com/nushell/nushell/pull/17275)) - Lists can now be passed into `polars lit` ([#17275](https://github.com/nushell/nushell/pull/17275)) @@ -553,9 +600,9 @@ With [#17132](https://github.com/nushell/nushell/pull/17132), all MCP responses - Update agents.md for better LLM use. ([#17318](https://github.com/nushell/nushell/pull/17318)) - Make `detect type` more robust with datetime handling by updating regular expressions ([#17357](https://github.com/nushell/nushell/pull/17357)) -## Bug fixes +## Bug fixes [[toc](#table-of-contents)] -### Fixed parsing of ranges with parentheses +### Fixed parsing of ranges with parentheses [[toc](#table-of-contents)] Ranges that include a parenthesized expression will now be parsed correctly after [#17109](https://github.com/nushell/nushell/pull/17109). The below example will now evaluate to the range `0..1` rather than being parsed as an invalid three-part range `0..(1..2`. @@ -563,7 +610,7 @@ Ranges that include a parenthesized expression will now be parsed correctly afte 0..(1..2 | first) ``` -### Fixed parsing issue with multiarm match + guard +### Fixed parsing issue with multiarm match + guard [[toc](#table-of-contents)] Match statements with multiple alarms and a guard expression, such as the below example, will now be parsed correctly after [#17115](https://github.com/nushell/nushell/pull/17115). Previously, such an expression would fail to parse. @@ -573,7 +620,7 @@ match 3 { } ``` -### Infinite sequences can be terminated when piped to other commands +### Infinite sequences can be terminated when piped to other commands [[toc](#table-of-contents)] [#17245](https://github.com/nushell/nushell/pull/17245) allows infinite sequences to be terminated when piped to other commands. @@ -589,7 +636,7 @@ match 3 { ╰──── ``` -### Pipefail works with `try` block +### Pipefail works with `try` block [[toc](#table-of-contents)] With [#17052](https://github.com/nushell/nushell/pull/17052), the following code will an empty list with additional `1`, because the command is failed actually. @@ -602,7 +649,7 @@ With [#17052](https://github.com/nushell/nushell/pull/17052), the following code } ``` -### Nushell exits early when running scripts or commands with bad config files +### Nushell exits early when running scripts or commands with bad config files [[toc](#table-of-contents)] With [#17103](https://github.com/nushell/nushell/pull/17103), if a script or command is run with a `config.nu` or `env.nu` that can't be evaluated, Nushell will exit. @@ -613,11 +660,11 @@ nu --config config.nu -c 'echo $env.NU_VERSION' This will exit with status code 1 rather than printing the Nushell version. -### Fix `http` DNS resolution "Service not supported" error in Docker containers +### Fix `http` DNS resolution "Service not supported" error in Docker containers [[toc](#table-of-contents)] With [#17125](https://github.com/nushell/nushell/pull/17125), `http` commands will no longer error with "Service not supported for this socket type" in certain Linux environments (particularly Docker containers running Debian Trixie). -### Fix variables remaining active after `overlay hide` +### Fix variables remaining active after `overlay hide` [[toc](#table-of-contents)] [#17130](https://github.com/nushell/nushell/pull/17130) makes overlays work more reliably inside scripts. @@ -635,7 +682,7 @@ bar Previously, `bar` would be available to use even after `overlay hide spam`. This has been fixed. -### Other fixes +### Other fixes [[toc](#table-of-contents)] - Type mismatch errors no longer list the same type multiple times ([#17075](https://github.com/nushell/nushell/pull/17075)) - Allow creating aliases for commands with required flags ([#17106](https://github.com/nushell/nushell/pull/17106)) @@ -653,9 +700,9 @@ Previously, `bar` would be available to use even after `overlay hide spam`. This - `std/help`: Add colors, proper examples, fix output ([#17010](https://github.com/nushell/nushell/pull/17010)) - `table -i false` no longer panic when there is an index column, e.g: `[{index: 0, data: yes}] | table -i false` ([#17126](https://github.com/nushell/nushell/pull/17126)) -# Notes for plugin developers +# Notes for plugin developers [[toc](#table-of-contents)] -# Hall of fame +# Hall of fame [[toc](#table-of-contents)] Thanks to all the contributors below for helping us solve issues, improve documentation, refactor code, and more! :pray: @@ -686,7 +733,7 @@ Thanks to all the contributors below for helping us solve issues, improve docume | [@fdncred](https://github.com/fdncred) | Update reedline to latest commit | [#17299](https://github.com/nushell/nushell/pull/17299) | | [@fdncred](https://github.com/fdncred) | Update nushell to latest reedline commit 6ceda500 | [#17328](https://github.com/nushell/nushell/pull/17328) | -# Full changelog +# Full changelog [[toc](#table-of-contents)] | author | title | link | | -------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------- |