diff --git a/assets/gifs/2021-11-29-nushell_v0_109_0-explore-regex.gif b/assets/gifs/2021-11-29-nushell_v0_109_0-explore-regex.gif new file mode 100644 index 00000000000..f6300fc51b7 Binary files /dev/null and b/assets/gifs/2021-11-29-nushell_v0_109_0-explore-regex.gif differ diff --git a/blog/2025-11-29-nushell_v0_109_0.md b/blog/2025-11-29-nushell_v0_109_0.md new file mode 100644 index 00000000000..25b0025b685 --- /dev/null +++ b/blog/2025-11-29-nushell_v0_109_0.md @@ -0,0 +1,327 @@ +--- +title: Nushell 0.109.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.109.0 of Nu. This release adds the option to use regex in the explore command and a bunch of bug fixes and other small tweaks. +--- + + + +# Nushell 0.109.0 + +Today, we're releasing version 0.109.0 of Nu. This release adds the option to use regex in the `explore` command and a bunch of bug fixes and other small tweaks. + +# Where to get it + +Nu 0.109.0 is available as [pre-built binaries](https://github.com/nushell/nushell/releases/tag/0.109.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 + +- [_Changes_](#changes-toc) + - [_Additions_](#additions-toc) + - [_Add `explore regex` command_](#add-explore-regex-command-toc) + - [_Add name and description to the plugin list command_](#add-name-and-description-to-the-plugin-list-command-toc) + - [_Other additions_](#other-additions-toc) + - [_Other changes_](#other-changes-toc) + - [_Bug fixes_](#bug-fixes-toc) + - [_Better errors for dynamic `http` commands_](#better-errors-for-dynamic-http-commands-toc) + - [_Allow streaming to commands with union-typed pipeline input_](#allow-streaming-to-commands-with-union-typed-pipeline-input-toc) + - [_Fix(`split column`): switch to 0-index like other commands_](#fix-split-column-switch-to-0-index-like-other-commands-toc) + - [_Don't error on optional cellpaths_](#don-t-error-on-optional-cellpaths-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) + + + + + +# Changes [[toc](#table-of-contents)] + +## Additions [[toc](#table-of-contents)] + +### Add `explore regex` command [[toc](#table-of-contents)] + +The new `explore regex` command is meant to provide a TUI for exploring regular expressions and visualizing the results in real time. You can pipe text into the command and that text becomes the "test string" that the regular expressions run on. You can also start it up without piping anything into it and manually type the "test string" and then the regex. You can use the tab key to switch between panes. The arrow keys work to navigate as we as the page up and page down keys, home, and end. +![explore-regex](../assets/gifs/2021-11-29-nushell_v0_109_0-explore-regex.gif) + +### Add name and description to the plugin list command [[toc](#table-of-contents)] + +The `plugin list` command now adds an inline table containing the plugin commands names and descriptions. + +```ansi:no-line-numbers +> plugin list | select commands | table --expand --width 80 +╭───┬──────────────────────────────────────────────────────────────────────────╮ +│ # │ commands │ +├───┼──────────────────────────────────────────────────────────────────────────┤ +│ 0 │ ╭───┬────────────┬───────────────────────────────────────╮ │ +│ │ │ # │ name │ description │ │ +│ │ ├───┼────────────┼───────────────────────────────────────┤ │ +│ │ │ 0 │ from eml │ Parse text as .eml and create record. │ │ +│ │ │ 1 │ from ics │ Parse text as .ics and create table. │ │ +│ │ │ 2 │ from ini │ Parse text as .ini and create table. │ │ +│ │ │ 3 │ from plist │ Convert plist to Nushell values │ │ +│ │ │ 4 │ from vcf │ Parse text as .vcf and create table. │ │ +│ │ │ 5 │ to plist │ Convert Nu values into plist │ │ +│ │ ╰───┴────────────┴───────────────────────────────────────╯ │ +│ 1 │ ╭───┬────────────────────┬─────────────────────────────────────────────╮ │ +│ │ │ # │ name │ description │ │ +│ │ ├───┼────────────────────┼─────────────────────────────────────────────┤ │ +│ │ │ 0 │ query │ Show all the query commands │ │ +│ │ │ 1 │ query json │ execute json query on json file (open --raw │ │ +│ │ │ │ │ | query json 'query string') │ │ +│ │ │ 2 │ query web │ execute selector query on html/web │ │ +│ │ │ 3 │ query webpage-info │ uses the webpage crate to extract info from │ │ +│ │ │ │ │ html: title, description, language, links, │ │ +│ │ │ │ │ RSS feeds, Opengraph, Schema.org, and more │ │ +│ │ │ 4 │ query xml │ Execute XPath 1.0 query on XML input │ │ +│ │ ╰───┴────────────────────┴─────────────────────────────────────────────╯ │ +╰───┴──────────────────────────────────────────────────────────────────────────╯ +``` + +### Other additions [[toc](#table-of-contents)] + +- All `http` commands now support connecting via Unix domain sockets using the `--unix-socket` (or `-U`) flag, enabling communication with local services like Docker daemon, systemd, and other IPC services. ([#16907](https://github.com/nushell/nushell/pull/16907)) + +- `str replace` now accepts a closure that computes the replacement value for each match ([#16854](https://github.com/nushell/nushell/pull/16854)) + +## Other changes [[toc](#table-of-contents)] + +- add a `--dry` flag to `mktemp`. Edit or respond to this thread with what should go on this line ([#17039](https://github.com/nushell/nushell/pull/17039)) + +## Bug fixes [[toc](#table-of-contents)] + +### Better errors for dynamic `http` commands [[toc](#table-of-contents)] + +Defining an HTTP command dynamically using a string for the method used to cause an unclear, uncategorized error. It now produces a clear and specific error message instead. + +```ansi:no-line-numbers +> let method = "get"; http $method example.com +Error: nu::shell::error + + × Invalid command construction + ╭─[entry #5:1:26] + 1 │ let method = "get"; http $method example.com + ·  ───┬─── + · ╰── Using "get" dynamically is bad command construction + ╰──── + help: Prefer to use `http get` directly +``` + +### Allow streaming to commands with union-typed pipeline input [[toc](#table-of-contents)] + +Commands whose input signatures are declared with `oneof` now accept +streams instead of erroring: + +```ansi:collapsed-lines=3:no-line-numbers +> def f []: [oneof -> nothing] {} +> [] | each {} | f +Error: nu::shell::only_supports_this_input_type + + × Input type not supported. + ╭─[entry #2:1:6] + 1 │ [] | each {} | f + ·  ──┬─ ┬ + · │ ╰── only oneof> input data is supported + · ╰── input type: list + ╰──── + +``` + +### Fix(`split column`): switch to 0-index like other commands [[toc](#table-of-contents)] + +Like `detect columns` or `parse`, `split column` now also uses 0-index for the default column names. + +```ansi:no-line-numbers +> 'a b c' | detect columns --no-headers +╭───┬─────────┬─────────┬─────────╮ +│ # │ column0 │ column1 │ column2 │ +├───┼─────────┼─────────┼─────────┤ +│ 0 │ a │ b │ c │ +╰───┴─────────┴─────────┴─────────╯ +> 'a b c' | split column ' ' +╭───┬─────────┬─────────┬─────────╮ +│ # │ column1 │ column2 │ column3 │ +├───┼─────────┼─────────┼─────────┤ +│ 0 │ a │ b │ c │ +╰───┴─────────┴─────────┴─────────╯ +``` + +### Don't error on optional cellpaths [[toc](#table-of-contents)] + +Now, when you specify an optional cellpath in `update`, it won't error if it is not present. + +```ansi:no-line-numbers +> {a: 1} | update b? 2 +╭───┬───╮ +│ a │ 1 │ +╰───┴───╯ +``` + +### Other fixes [[toc](#table-of-contents)] + +- Fixed the new operators `not-starts-with` and `not-ends-with` not appearing in `help operators` ([#16873](https://github.com/nushell/nushell/pull/16873)) + +- Fixed a bug in completion matcher where `foo "b` doesn't match `"bar baz"`. ([#16869](https://github.com/nushell/nushell/pull/16869)) + +- Fixed a bug in flattening aliased external calls. ([#16876](https://github.com/nushell/nushell/pull/16876)) + +- Fixed a bug of wrong argument order when calling `$env.config.buffer_editor` from `config nu`. ([#16877](https://github.com/nushell/nushell/pull/16877)) + +- Fixed an issue where plugins built without the `nu-protocol/sqlite` feature would fail to load if `$env.config.history.file_format` was set to `"sqlite"`. ([#16890](https://github.com/nushell/nushell/pull/16890)) + +- Fixed the output type of `version check` to be `record` instead of `string`. ([#16893](https://github.com/nushell/nushell/pull/16893)) + +- Fixed a bug in aliased external command completion where `alias ea = ^$env.EDITOR /tmp/test.s; e` gets empty result. ([#16882](https://github.com/nushell/nushell/pull/16882)) + +- Fixes a regression that causes absolute paths to be required when opening files with the polars plugin. ([#16900](https://github.com/nushell/nushell/pull/16900)) + +- The `which` command now filters files found in `$PATH` to include only executables. ([#16895](https://github.com/nushell/nushell/pull/16895)) + +- Fixed a regression of custom-completion for short flags without a long name. ([#16967](https://github.com/nushell/nushell/pull/16967)) + +- This PR fixes the "polars slice" command so that it will return a lazyframe output when given a lazyframe as input. Fixes #17065 ([#17067](https://github.com/nushell/nushell/pull/17067)) + +# Notes for plugin developers [[toc](#table-of-contents)] + +Due to [#16890](https://github.com/nushell/nushell/pull/16890), plugins no longer need to be built with the `nu-protocol/sqlite` feature. + +# 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: + +| author | change | link | +| ---------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------- | +| [@Bahex](https://github.com/Bahex) | Use development version of reedline | [#16878](https://github.com/nushell/nushell/pull/16878) | +| [@blindFS](https://github.com/blindFS) | Ignore hover_on_external_command for the CI workflow | [#16880](https://github.com/nushell/nushell/pull/16880) | +| [@blindFS](https://github.com/blindFS) | Fixes the inconsistent parsing of `inf`/`INF`, `NaN`/`nan` | [#16415](https://github.com/nushell/nushell/pull/16415) | +| [@ysthakur](https://github.com/ysthakur) | Bump Reedline to latest main | [#16913](https://github.com/nushell/nushell/pull/16913) | +| [@fdncred](https://github.com/fdncred) | Update reedline to latest commit b574286 | [#16918](https://github.com/nushell/nushell/pull/16918) | +| [@fdncred](https://github.com/fdncred) | Add ut mit license | [#16921](https://github.com/nushell/nushell/pull/16921) | +| [@ysthakur](https://github.com/ysthakur) | Set HOME for test_config_path tests | [#16914](https://github.com/nushell/nushell/pull/16914) | +| [@WindSoilder](https://github.com/WindSoilder) | Update nu_plugin_formats README | [#16939](https://github.com/nushell/nushell/pull/16939) | +| [@KaiSforza](https://github.com/KaiSforza) | Allow setting the NU_COMMIT_HASH as an env variable | [#16947](https://github.com/nushell/nushell/pull/16947) | +| [@fdncred](https://github.com/fdncred) | Update uutils crates to 0.3.0 | [#16950](https://github.com/nushell/nushell/pull/16950) | +| [@pguerin3](https://github.com/pguerin3) | Update README.md to add windmill as a supported by utility | [#16953](https://github.com/nushell/nushell/pull/16953) | +| [@fdncred](https://github.com/fdncred) | Bump rust-toolchain to 1.89 | [#16958](https://github.com/nushell/nushell/pull/16958) | +| [@fdncred](https://github.com/fdncred) | Update reedline and crossterm | [#16975](https://github.com/nushell/nushell/pull/16975) | +| [@KaiSforza](https://github.com/KaiSforza) | Add nix flake to `scripts/nix/` | [#16848](https://github.com/nushell/nushell/pull/16848) | +| [@sholderbach](https://github.com/sholderbach) | Fix README mention of Nu support in 3rd party product | [#16984](https://github.com/nushell/nushell/pull/16984) | +| [@fdncred](https://github.com/fdncred) | Add winresource metadata to cargo.toml | [#16985](https://github.com/nushell/nushell/pull/16985) | +| [@sgvictorino](https://github.com/sgvictorino) | Fix comment typo in highlight_syntax | [#16998](https://github.com/nushell/nushell/pull/16998) | +| [@Tyarel8](https://github.com/Tyarel8) | Highlighting invalid syntax | [#17008](https://github.com/nushell/nushell/pull/17008) | +| [@fdncred](https://github.com/fdncred) | Update uutils to 0.4.0 | [#17009](https://github.com/nushell/nushell/pull/17009) | +| [@cptpiepmatz](https://github.com/cptpiepmatz) | Use `rustc` as external instead of `sleep` for highlight test | [#17022](https://github.com/nushell/nushell/pull/17022) | +| [@fdncred](https://github.com/fdncred) | Update to latest reedline | [#17023](https://github.com/nushell/nushell/pull/17023) | +| [@mrdgo](https://github.com/mrdgo) | Fix typo | [#17035](https://github.com/nushell/nushell/pull/17035) | +| [@KaiSforza](https://github.com/KaiSforza) | Don't add an empty column if there is only 1 column | [#17013](https://github.com/nushell/nushell/pull/17013) | + +# Full changelog [[toc](#table-of-contents)] + +| author | title | link | +| ------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | +| [@AnandajithS](https://github.com/AnandajithS) | fix: Add error handling for rounding non finite numbers | [#16934](https://github.com/nushell/nushell/pull/16934) | +| [@Bahex](https://github.com/Bahex) | Use development version of reedline | [#16878](https://github.com/nushell/nushell/pull/16878) | +| [@Bahex](https://github.com/Bahex) | Escaping braces in `pattern format` | [#16899](https://github.com/nushell/nushell/pull/16899) | +| [@Bahex](https://github.com/Bahex) | More granular type widening and stricter type checking | [#16912](https://github.com/nushell/nushell/pull/16912) | +| [@Dorumin](https://github.com/Dorumin) | --dry on mktemp | [#17039](https://github.com/nushell/nushell/pull/17039) | +| [@ItsHarper](https://github.com/ItsHarper) | Add `--optional` flag to `std-rfc/iter only` | [#16886](https://github.com/nushell/nushell/pull/16886) | +| [@Jan9103](https://github.com/Jan9103) | fix(into_sqlite): pass a span along | [#17036](https://github.com/nushell/nushell/pull/17036) | +| [@KaiSforza](https://github.com/KaiSforza) | Add nix flake to `scripts/nix/` | [#16848](https://github.com/nushell/nushell/pull/16848) | +| [@KaiSforza](https://github.com/KaiSforza) | Allow setting the NU_COMMIT_HASH as an env variable | [#16947](https://github.com/nushell/nushell/pull/16947) | +| [@KaiSforza](https://github.com/KaiSforza) | `nu-table`: Don't add an empty column if there is only 1 column | [#17013](https://github.com/nushell/nushell/pull/17013) | +| [@KaiSforza](https://github.com/KaiSforza) | Add all `LabeledError` structure parts to `error make` | [#17037](https://github.com/nushell/nushell/pull/17037) | +| [@Tyarel8](https://github.com/Tyarel8) | fix: add NotStartsWith and NotEndsWith operators to help | [#16873](https://github.com/nushell/nushell/pull/16873) | +| [@Tyarel8](https://github.com/Tyarel8) | fix(`version check`): output type is record not string | [#16893](https://github.com/nushell/nushell/pull/16893) | +| [@Tyarel8](https://github.com/Tyarel8) | feat(`std/help`): add code highlighting in descriptions | [#16931](https://github.com/nushell/nushell/pull/16931) | +| [@Tyarel8](https://github.com/Tyarel8) | feat(`group-by`): add example on how to delete the original columns | [#16933](https://github.com/nushell/nushell/pull/16933) | +| [@Tyarel8](https://github.com/Tyarel8) | fix(`std/help`): highlighting invalid syntax | [#17008](https://github.com/nushell/nushell/pull/17008) | +| [@Tyarel8](https://github.com/Tyarel8) | feat(`update`): don't error on optional cellpaths | [#17055](https://github.com/nushell/nushell/pull/17055) | +| [@Tyarel8](https://github.com/Tyarel8) | fix(`split column`): switch to 0-index like other commands | [#17064](https://github.com/nushell/nushell/pull/17064) | +| [@WindSoilder](https://github.com/WindSoilder) | Plugin: support custom completions in command flags | [#16859](https://github.com/nushell/nushell/pull/16859) | +| [@WindSoilder](https://github.com/WindSoilder) | make `pipefail` works with `let` | [#16879](https://github.com/nushell/nushell/pull/16879) | +| [@WindSoilder](https://github.com/WindSoilder) | update nu_plugin_formats README | [#16939](https://github.com/nushell/nushell/pull/16939) | +| [@WindSoilder](https://github.com/WindSoilder) | Plugin: add one parameter `call: DynamicCompletionCall` to `get_dynamic_completion`, and allow to return span. | [#17017](https://github.com/nushell/nushell/pull/17017) | +| [@WindSoilder](https://github.com/WindSoilder) | Add `--strict` flag to `first` and `last` command, to raise error on empty list. | [#17066](https://github.com/nushell/nushell/pull/17066) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump crate-ci/typos from 1.37.1 to 1.38.1 | [#16864](https://github.com/nushell/nushell/pull/16864) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump peter-evans/find-comment from 3 to 4 | [#16865](https://github.com/nushell/nushell/pull/16865) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump peter-evans/create-or-update-comment from 4 to 5 | [#16866](https://github.com/nushell/nushell/pull/16866) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump actions/upload-artifact from 4 to 5 | [#16942](https://github.com/nushell/nushell/pull/16942) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump hustcer/milestone-action from 2 to 3 | [#16943](https://github.com/nushell/nushell/pull/16943) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump crate-ci/typos from 1.38.1 to 1.39.0 | [#16978](https://github.com/nushell/nushell/pull/16978) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump crate-ci/typos from 1.39.0 to 1.39.2 | [#17043](https://github.com/nushell/nushell/pull/17043) | +| [@atahabaki](https://github.com/atahabaki) | str expand: two dots outside of curly braces should not be considered as range operator | [#16924](https://github.com/nushell/nushell/pull/16924) | +| [@ayax79](https://github.com/ayax79) | Re-introduce nu_expand_path for polars open/save | [#16900](https://github.com/nushell/nushell/pull/16900) | +| [@ayax79](https://github.com/ayax79) | Upgrade to polars 0.52 | [#16979](https://github.com/nushell/nushell/pull/16979) | +| [@ayax79](https://github.com/ayax79) | Handling of ByteStream out and eval description changes | [#16989](https://github.com/nushell/nushell/pull/16989) | +| [@ayax79](https://github.com/ayax79) | MCP: Evaluate tool description improvements | [#17007](https://github.com/nushell/nushell/pull/17007) | +| [@blackhat-hemsworth](https://github.com/blackhat-hemsworth) | adjusted polars / slice command to return lazy output on lazy input | [#17067](https://github.com/nushell/nushell/pull/17067) | +| [@blindFS](https://github.com/blindFS) | fix(parser): repeated parsing of module blocks | [#16403](https://github.com/nushell/nushell/pull/16403) | +| [@blindFS](https://github.com/blindFS) | refactor(parser): parse_value, move reserved keyword values check | [#16415](https://github.com/nushell/nushell/pull/16415) | +| [@blindFS](https://github.com/blindFS) | fix(completion): trim unmatched prefix/suffix quotes in the matcher | [#16869](https://github.com/nushell/nushell/pull/16869) | +| [@blindFS](https://github.com/blindFS) | fix: flattening aliased external call | [#16876](https://github.com/nushell/nushell/pull/16876) | +| [@blindFS](https://github.com/blindFS) | fix: wrong arg order of buffer_editor for `config nu` | [#16877](https://github.com/nushell/nushell/pull/16877) | +| [@blindFS](https://github.com/blindFS) | test(lsp): ignore hover_on_external_command for the CI workflow | [#16880](https://github.com/nushell/nushell/pull/16880) | +| [@blindFS](https://github.com/blindFS) | fix(completion): an edge case of aliased external head command | [#16882](https://github.com/nushell/nushell/pull/16882) | +| [@blindFS](https://github.com/blindFS) | fix: highlighting for aliased external calls | [#16957](https://github.com/nushell/nushell/pull/16957) | +| [@blindFS](https://github.com/blindFS) | fix(completion): a regression on flags without a long name | [#16967](https://github.com/nushell/nushell/pull/16967) | +| [@blindFS](https://github.com/blindFS) | fix(completion): path/directory/glob typed flag values get empty completion results | [#17006](https://github.com/nushell/nushell/pull/17006) | +| [@blindFS](https://github.com/blindFS) | fix(parser, completion): wrong span of `export def/extern` with attributes & snippet completion for attributable commands | [#17025](https://github.com/nushell/nushell/pull/17025) | +| [@blindFS](https://github.com/blindFS) | feat(completion): include already parsed module names in dotnu completion | [#17026](https://github.com/nushell/nushell/pull/17026) | +| [@blindFS](https://github.com/blindFS) | fix(completion): flag values with spaces & wrong position arg for custom completion without placeholder | [#17044](https://github.com/nushell/nushell/pull/17044) | +| [@blindFS](https://github.com/blindFS) | feat(completion): allow overriding half of the span in custom/external completer | [#17049](https://github.com/nushell/nushell/pull/17049) | +| [@cablehead](https://github.com/cablehead) | fix(mcp): merge parsed blocks to prevent closure panic | [#16884](https://github.com/nushell/nushell/pull/16884) | +| [@cablehead](https://github.com/cablehead) | feat(mcp): respect --login flag | [#16885](https://github.com/nushell/nushell/pull/16885) | +| [@cablehead](https://github.com/cablehead) | feat: add unix socket support to HTTP builtins | [#16907](https://github.com/nushell/nushell/pull/16907) | +| [@cablehead](https://github.com/cablehead) | feat: add -U short flag for --unix-socket to HTTP builtins | [#16954](https://github.com/nushell/nushell/pull/16954) | +| [@cablehead](https://github.com/cablehead) | feat: add closure parameter to `metadata set` | [#16976](https://github.com/nushell/nushell/pull/16976) | +| [@cablehead](https://github.com/cablehead) | fix(http): add tilde expansion for --unix-socket paths | [#16977](https://github.com/nushell/nushell/pull/16977) | +| [@cptpiepmatz](https://github.com/cptpiepmatz) | Bump to dev version 0.108.1 | [#16871](https://github.com/nushell/nushell/pull/16871) | +| [@cptpiepmatz](https://github.com/cptpiepmatz) | Make "sqlite" history file format known but invalid when compiled without `sqlite` | [#16890](https://github.com/nushell/nushell/pull/16890) | +| [@cptpiepmatz](https://github.com/cptpiepmatz) | Raise error if http method is defined dynamically | [#16892](https://github.com/nushell/nushell/pull/16892) | +| [@cptpiepmatz](https://github.com/cptpiepmatz) | Use native cert store on Android for rustls | [#17019](https://github.com/nushell/nushell/pull/17019) | +| [@cptpiepmatz](https://github.com/cptpiepmatz) | Use `rustc` as external instead of `sleep` for highlight test | [#17022](https://github.com/nushell/nushell/pull/17022) | +| [@cptpiepmatz](https://github.com/cptpiepmatz) | Improve DNS-related errors | [#17030](https://github.com/nushell/nushell/pull/17030) | +| [@fdncred](https://github.com/fdncred) | add `explore regex` command | [#16910](https://github.com/nushell/nushell/pull/16910) | +| [@fdncred](https://github.com/fdncred) | update reedline to latest commit b574286 | [#16918](https://github.com/nushell/nushell/pull/16918) | +| [@fdncred](https://github.com/fdncred) | add ut mit license | [#16921](https://github.com/nushell/nushell/pull/16921) | +| [@fdncred](https://github.com/fdncred) | update uutils crates to 0.3.0 | [#16950](https://github.com/nushell/nushell/pull/16950) | +| [@fdncred](https://github.com/fdncred) | bump rust-toolchain to 1.89 | [#16958](https://github.com/nushell/nushell/pull/16958) | +| [@fdncred](https://github.com/fdncred) | add name and description to the plugin list command | [#16965](https://github.com/nushell/nushell/pull/16965) | +| [@fdncred](https://github.com/fdncred) | update reedline and crossterm | [#16975](https://github.com/nushell/nushell/pull/16975) | +| [@fdncred](https://github.com/fdncred) | add winresource metadata to cargo.toml | [#16985](https://github.com/nushell/nushell/pull/16985) | +| [@fdncred](https://github.com/fdncred) | update uutils to 0.4.0 | [#17009](https://github.com/nushell/nushell/pull/17009) | +| [@fdncred](https://github.com/fdncred) | update to latest reedline | [#17023](https://github.com/nushell/nushell/pull/17023) | +| [@fdncred](https://github.com/fdncred) | add the rfind ability to the find command | [#17045](https://github.com/nushell/nushell/pull/17045) | +| [@fdncred](https://github.com/fdncred) | `first` and `last` return `nothing` on empty results | [#17054](https://github.com/nushell/nushell/pull/17054) | +| [@hustcer](https://github.com/hustcer) | Fix memory leaks in REPL | [#16348](https://github.com/nushell/nushell/pull/16348) | +| [@mrdgo](https://github.com/mrdgo) | fix typo | [#17035](https://github.com/nushell/nushell/pull/17035) | +| [@nome](https://github.com/nome) | Implement "str replace" with closure defined relacements | [#16854](https://github.com/nushell/nushell/pull/16854) | +| [@pguerin3](https://github.com/pguerin3) | Update README.md to add windmill as a supported by utility | [#16953](https://github.com/nushell/nushell/pull/16953) | +| [@praveenbhamidipati](https://github.com/praveenbhamidipati) | fix: less LICENSE fetch url | [#17002](https://github.com/nushell/nushell/pull/17002) | +| [@sgvictorino](https://github.com/sgvictorino) | fix comment typo in highlight_syntax | [#16998](https://github.com/nushell/nushell/pull/16998) | +| [@sgvictorino](https://github.com/sgvictorino) | allow streaming to commands with union-typed pipeline input | [#17048](https://github.com/nushell/nushell/pull/17048) | +| [@sholderbach](https://github.com/sholderbach) | Bump `sysinfo` to latest 0.37.2 | [#16983](https://github.com/nushell/nushell/pull/16983) | +| [@sholderbach](https://github.com/sholderbach) | Fix README mention of Nu support in 3rd party product | [#16984](https://github.com/nushell/nushell/pull/16984) | +| [@smaximov](https://github.com/smaximov) | Fix `ansi strip` ignoring the first provided cell path | [#16906](https://github.com/nushell/nushell/pull/16906) | +| [@taearls](https://github.com/taearls) | Improve error message when `plugin add` fails because config directory doesn't exist (Issue #10754) | [#16999](https://github.com/nushell/nushell/pull/16999) | +| [@xolra0d](https://github.com/xolra0d) | `which` without application param now lists only executables | [#16895](https://github.com/nushell/nushell/pull/16895) | +| [@ysthakur](https://github.com/ysthakur) | Set match_indices for fuzzy-matched suggestions | [#15887](https://github.com/nushell/nushell/pull/15887) | +| [@ysthakur](https://github.com/ysthakur) | Allow setting span in custom/extern completers | [#15888](https://github.com/nushell/nushell/pull/15888) | +| [@ysthakur](https://github.com/ysthakur) | Bump Reedline to latest main | [#16913](https://github.com/nushell/nushell/pull/16913) | +| [@ysthakur](https://github.com/ysthakur) | test: Set HOME for test_config_path tests | [#16914](https://github.com/nushell/nushell/pull/16914) |