Nushell
Get Nu!
Getting Started
  • The Nushell Book
  • Command Reference
  • Cookbook
  • Language Reference Guide
  • Contributing Guide
Blog
  • English
  • 中文
  • Deutsch
  • Français
  • Español
  • 日本語
  • Português do Brasil
  • Русский язык
GitHub
Get Nu!
Getting Started
  • The Nushell Book
  • Command Reference
  • Cookbook
  • Language Reference Guide
  • Contributing Guide
Blog
  • English
  • 中文
  • Deutsch
  • Français
  • Español
  • 日本語
  • Português do Brasil
  • Русский язык
GitHub

Nushell 0.102.0

Today, we're releasing version 0.102.0 of Nu. This release adds runtime pipeline input type checking, several new commands and operators, and various other miscellaneous improvements.

Where to get it

Nu 0.102.0 is available as pre-built binaries or from crates.io. 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 you can install and use with Nushell.

Table of contents

  • Highlights and themes of this release
    • Run-time pipeline input typechecking
  • Changes
    • Additions
      • New command: version check
      • generate with input
      • New operators: has and not-has
      • User autoload directories
      • Custom completers fall back to file completions
      • get is now const
      • format number (renamed from fmt)
      • chunks supports binary input
      • New command: bytes split
      • New command: help pipe-and-redirect
      • The start command now works with non-HTTP URIs
      • Duration value output from debug profile
      • Several into commands can now operate on their own type
      • touch now supports globbing
      • source null/use null
      • run-external and exec now support list spreading
      • New config option: use_ansi_coloring: 'auto'
      • New config option: banner: 'short'
      • move --first/--last flags
      • find --no-highlight switch
      • seq date enhancements
      • content_type metadata is now assigned to known filetypes that don't have a from convertor
    • Breaking changes
      • $env.config.filesize changes
      • format filesize
      • ENV_CONVERSIONS take effect immediately
      • External completers fall back to file completions only on null
      • Custom completions inherit case_sensitive option from config
      • Command pipeline input/output type changes
      • N-dots tweak
    • Deprecations
      • into bits
      • range
      • fmt
    • Removals
      • utouch
      • split-by
      • date to-record
      • date to-table
    • Bug fixes and other changes
      • Immediate error return
      • config reset fix
      • Fix empty list display when using print
      • Internal changes to PipelineData spans
      • Range related bug fixes
      • std enhancements
      • Nuon conversions of range values now keep step size
      • explore command panic when viewing small binary files
      • Convert Path to list in main and preserve case
      • Fix improperly escaped strings in stor update
      • Fix: Auto cd should not canonicalize symbolic path
      • Fix: Pressing Esc or Q was not closing explore
      • Custom values are now expanded in tables
      • Change how and and or operations are compiled to IR to support custom values
      • Fix stor reset when there are foreign keys
      • New, improved grid icons
      • SHLVL decrement on exec
      • cp reflink support on FreeBSD
      • Fix root directory traversal issue
      • Fix table panic
      • Parser fixes
      • Streaming improvements
  • Notes for plugin developers
  • Hall of fame
  • Full changelog

Highlights and themes of this release [toc]

Run-time pipeline input typechecking [toc]

Breaking change

See a full overview of the breaking changes

Previously, the type of a command's pipeline input was only checked against the input/output types of that command at parse-time. With #14741, this check also now happens at run-time. While these kinds of errors can often be caught at parse-time, adding run-time checks ensures commands can't receive unexpected input values.

Here's an example command, which should only accept integer pipeline input:

def cool-int-print []: int -> nothing {
  print $"my cool int is ($in)"
}

1 | cool-int-print
# => my cool int is 1

"evil string" | cool-int-print
# => Error: nu::parser::input_type_mismatch
# =>
# =>   × Command does not support string input.
# =>    ╭─[entry #12:1:17]
# =>  1 │ "evil string" | cool-int-print
# =>    ·                 ───────┬──────
# =>    ·                        ╰── command doesn't support string input
# =>    ╰────

The parser sees a string, and rejects the invalid input. Before this release however, if the parser couldn't determine an input was invalid, it would happily pass along the invalid value. In this example, the output type of from json is any, so the parser doesn't know we're trying to pass a string to cool-int-print:

"evil string" | from json | cool-int-print
# => my cool int is evil string

After this release, Nushell will also enforce the allowed input types at run-time (notice the error starts with nu::shell rather than nu::parse):

"evil string" | from json | cool-int-print
# => Error: nu::shell::only_supports_this_input_type
# =>
# =>   × Input type not supported.
# =>    ╭─[entry #18:1:17]
# =>  1 │ "evil string" | from json | cool-int-print
# =>    ·                 ────┬────   ───────┬──────
# =>    ·                     │              ╰── only int input data is supported
# =>    ·                     ╰── input type: string
# =>    ╰────

Because of this change, you may notice some new errors in your scripts like the one above. We've already adjusted the input/output types of many commands to better match their actual behavior (see Command pipeline input/output type changes), but if you run into an unexpected input type checking error, don't hesitate to file an issue!

Changes [toc]

Additions [toc]

New command: version check [toc]

Thanks to @fdncred for the new version check command (#14880) which can check your current Nushell version against the latest available release.

generate with input [toc]

In #14804, @Bahex added input support to generate. Without pipeline input, generate works same as before. But with pipeline input, generate's closure argument is supplied two arguments:

  • an item from the input
  • the next value from the previous iteration

This allows generate to act as a stateful each and more, filling the niche of a stateful and streaming filter command.

std/iter scan

Thanks to the new capabilities of generate, iter scan was updated to be streaming. It is also considerably more performant with large inputs.

New operators: has and not-has [toc]

In #14841, @Bahex added two new operators: has and not-has. They are analogous to in and not-in, with the order of operands switched. This makes certain operations more ergonomic.

[[name, children]; [foo, [a, b, c]], [bar [d, e, f]]] | where ("e" in $it.children)
# vs
[[name, children]; [foo, [a, b, c]], [bar [d, e, f]]] | where children has "e"

User autoload directories [toc]

Previous Nushell releases added the vendor/autoload directories which were automatically sourced during startup. In #14669, @NotTheDr01ds extended this to include user directories.

During startup, any .nu files in ($nu.default-config-dir)/autoload will be automatically sourced during startup. This occurs after any vendor files have been processed, allowing user override of vendor settings if needed.

Custom completers fall back to file completions [toc]

With #14781, custom completers can return null to fall back to file completions.

get is now const [toc]

With #14751, the get command can now be used during constant evaluation. For example:

const foo = [1 2 3] | get 2
$foo
# => 3

format number (renamed from fmt) [toc]

The fmt command, which is used for converting numbers to a variety of different formats, has been renamed to format number in #14875.

chunks supports binary input [toc]

Thanks to @Bahex in #14649, chunks command now works on binary values and binary streams, making it easier to inspect and work on binary values and allowing partial reads from streams without collecting.

For example, while working with a binary file or protocol, you might need to convert an IP address stored as raw bytes to the more commonly used string format.

0x[7F000001] | chunks 1 | each { into int } | str join "."
# => 127.0.0.1

New command: bytes split [toc]

In #14652, @Bahex added bytes split. It is similar to split row and lines:

  • Like split row, it splits its input over an arbitrary delimiter.
  • Like lines, it is streaming.

Some programs can output text delimited by characters or sequences other than newlines ("\n"), commonly the NUL byte ("\0"), as the returned text may contain newlines. If it is desirable to not collect the input or to act on a result as soon as possible bytes split can be used.

For example, reading events from a socket or pipe:

open --raw ./events.sock | bytes split (char nul) | each { decode }

New command: help pipe-and-redirect [toc]

Thanks @WindSoilder for the new help pipe-and-redirect command which lists the pipe and redirect operators (#14821).

The start command now works with non-HTTP URIs [toc]

Thanks to @anomius for adding support for additional URI types to the start command in (#14370). This will call a system-specific opener under the hood (open for macOS, start for Windows, and xdg-open or some other program for Linux).

This means that, for example, if you have Spotify installed and configured to open spotify: links, then the following will now start a Rickroll:

start spotify:track:4PTG3Z6ehGkBFwjybzWkR8?si=f9b4cdfc1aa14831

Of course, there are many more productive uses and URIs.

Duration value output from debug profile [toc]

The debug profile command now has a --duration-values flag, which allows outputting the run time of an instruction with proper duration values rather than floats representing milliseconds. This allows for more fine-grained measurement, and lets you use commands which work on duration values #14749.

Several into commands can now operate on their own type [toc]

Thanks to @Tyarel8 in #14845, #14881, and #14882, the into datetime, into cell-path, and into glob commands can now accept (respectively), a datimetime, cell-path, or glob. The commands will now return the values unaltered in these cases.

touch now supports globbing [toc]

Thanks to @hjetmundsen, the utouch (now touch) command supports globbing (#14674).

source null/use null [toc]

Thanks to @Bahex in #14773, source and use can be used with null, in which case the command is a noop. This allows conditionally sourcing files, if the condition is decidable at parse time.

const file = path self local.nu
const file = if ($file | path exists) { $file } else { null }

source $file

run-external and exec now support list spreading [toc]

With #14765, lists can now be spread directly into run-external and exec:

let command = ["cat" "hello.txt"]
run-external ...$command
# => hello world!

New config option: use_ansi_coloring: 'auto' [toc]

@cptpiepmatz config.use_ansi_coloring: 'auto' option in #14647. When set, Nushell will use ANSI coloring only when outputting to a terminal. This allows easier use of Nushell in embedded environments. When embedding Nushell in an environment that supports ANSI formatting, you can change the setting to true.

New command: config use-colors

The new config use-colors command will return the evaluated result of the use_ansi_coloring option. This allows scripts and custom commands to determine whether to add or strip ANSI formatting from their output (#14683).

New config option: banner: 'short' [toc]

With #14638, users can now configuration Nushell to start with a "short" welcome banner. The "short" banner will only show the startup time, allowing the user to populate the rest of the banner information as desired.

move --first/--last flags [toc]

@Coca162 added --first/--last flags to the move command in #14961, providing a convenient shorthand for moving a column to the first or last position in a table.

find --no-highlight switch [toc]

With #14970, @Mudada added --no-highlight to the find command. This provides an easy way to remove ANSI formatting and highlighting from non-regex finds and still keep the result as a table.

seq date enhancements [toc]

The seq date command can now use any duration for the --increment thanks to @pyz4's #14903.

content_type metadata is now assigned to known filetypes that don't have a from convertor [toc]

In (#14670), @NotTheDr01ds changed the open command to assign content_type metadata when a from convertor isn't available for a known filetype. This primarily allows open file.nu to provide application/x-nuscript as the content-type even when not using open --raw.

content_type set for config nu output

Similarly in #14666, @cptpiepmatz updated the config nu command to add content_type metadata. These two changes allow users to create a disable hook which will automatically nu-highlight the results.

Breaking changes [toc]

$env.config.filesize changes [toc]

This release saw an overhaul to file size formatting and related config settings (#14397). Previously, two separate config settings, $env.config.filesize.format and $env.config.filesize.metric, determined how file sizes were formatted. format determined the unit to use and metric determined whether to use metric or binary units. However, the two settings were allowed to conflict. E.g., format could be set to a binary unit, but metric could be set to true. To avoid this confusion, the file size unit is now controlled through a single option: $env.config.filesize.unit. It can be set to one of the following values:

  • A metric unit: kB, MB, GB, TB, PB, or EB (case sensitive!).
  • A binary unit: KiB, MiB, GiB, TiB, PiB, or EiB (case sensitive!).
  • metric: automatically choose a metric unit of an appropriate scale. In the old config, this would be equivalent to { format: auto, metric: true }.
  • binary: automatically choose a binary unit of an appropriate scale. In the old config, this would be equivalent to { format: auto, metric: false }.
# unit = kB
1kB  # => 1 kB
1KiB # => 1.024 kB

# unit = KiB
1kB  # => 0.9765625 KiB
1KiB # => 1 KiB

# unit = metric
1000B     # => 1 kB
1024B     # => 1.024 kB
10_000MB  # => 10 GB
10_240MiB # => 10.73741824 GB

# unit = binary
1000B     # => 1000 B
1024B     # => 1 KiB
10_000MB  # => 9.313225746154785 GiB
10_240MiB # => 10 GiB

In addition, you can now control how many decimal places file sizes should be formatted with using $env.config.filesize.precision. When set to null, as many decimal places as necessary will be printed. Otherwise, when set to a integer, that number of decimal places will be shown.

# precision = 1
1001B # => 1.0 kB

# precision = 0
1001B # => 1 kB

# precision = null
1001B # => 1.001 kB
1000B # => 1 kB

The default $env.config.filesize is { unit: metric, precision: 1 }.

format filesize [toc]

Related to changes above, format filesize is now case-sensitive for the file size unit to avoid ambiguity for KB (#14397).

ENV_CONVERSIONS take effect immediately [toc]

Thanks to @Bahex in #14591, when $env.ENV_CONVERSIONS is updated, changes take effect immediately. Previously, to make use of ENV_CONVERSIONS in your config.nu, you would need to set it up in env.nu, as it would only take effect after the file it was modified in was read. Now, you can set it in config.nu and immediately make use of its results. This also makes it useful for use in scripts and other modules.

External completers fall back to file completions only on null [toc]

With #14781, the external completer will fall back to file completions only if null is returned. The external completer used to do this for any invalid value, but completions will now be suppressed if a non-null invalid value is returned.

Custom completions inherit case_sensitive option from config [toc]

With #14738, when matching suggestions from a custom completions, the case sensitivity setting is always inherited from $env.config.completions.case_sensitive. Previously, if a custom completer returned a record containing an options field but didn't specify the case_sensitive option, it would default to true.

This change doesn't apply to custom completers that return either lists or records without an options field. For such completers, case_sensitive was always inherited from $env.config.completions.case_sensitive.

Command pipeline input/output type changes [toc]

As part of the introduction of run-time pipeline input type-checking (#14741, #14922), we discovered some inaccuracies in the listed input types for each command. The following commands had their input/output types adjusted to be more accurate:

  • drop nth
  • from csv
  • from tsv
  • get
  • headers
  • history import
  • into string
  • reject
  • rotate

Additionally, the following commands have temporarily been given an input type of any to prevent undesirable errors. Unfortunately, this prevents input type checking at both parse-time and run-time for these commands, despite being possible previously. This doesn't affect many commands, and is intended as a workaround until a more robust solution can be implemented. For more details, see #14922.

  • load-env
  • nu-check
  • open
  • polars when
  • stor insert
  • stor update
  • format date
  • into datetime

N-dots tweak [toc]

With #14755, n-dots such as ... are no longer expanded when prefixed with ./ (ex. ... is expanded, ./... is no longer expanded). This should make the feature less surprising, while also providing better compatibility with external programs using ... as part of their CLI.

Deprecations [toc]

The following commands have been deprecated in 0.102.0. They remain available, but will be removed in a future release. We recommend updating existing code to use the replacement command.

into bits [toc]

into bits is deprecated and replaced with the new format bits command with (#14634.

range [toc]

range is deprecated and replaced with the new slice command with #14825.

fmt [toc]

fmt is deprecated and replaced with the new format number command with #14875.

Removals [toc]

utouch [toc]

utouch is now the touch command in #14721.

split-by [toc]

The split-by command was previously deprecated in 0.101 and have been removed in this release (#14726).

date to-record [toc]

The date to-record command was previously deprecated in 0.101 and have been removed in this release (#14726).

date to-table [toc]

The date to-table command was previously deprecated in 0.101 and have been removed in this release (#14726).

Bug fixes and other changes [toc]

Immediate error return [toc]

With #14874, if Nushell detects that an error value passed to a command as pipeline input or as an argument, it will immediately return that error rather than continuing execution. Nested errors (errors in lists, records, etc.) are unaffected.

config reset fix [toc]

With the config changes in the previous release, some of the internal files were moved around, causing config reset to use the "default" config (e.g., config nu --default) rather than the "scaffold" or empty config which gets created when you start Nushell for the first time. With #14756, config reset now works as intended again.

Fix empty list display when using print [toc]

Previously, the print command would print the "empty list" placeholder text without a newline, causing messy looking output. This is fixed by #14758, #14766.

Internal changes to PipelineData spans [toc]

With #14757, spans will now be maintained in some places where they were previously overridden by command calls. Some errors should now point to the actual source of a value, rather than pointing to the command which used it.

Range related bug fixes [toc]

In #14863, @Bahex fixed range related bugs in

  • str substring
  • str index-of
  • slice
  • bytes at

std enhancements [toc]

In #14763, @Bahex made small, backwards compatible enhancements to std

  • iter find and iter find-index work better with streams, only consuming the input up to the first matching item.
  • Added log set-level, a small convenience command for changing the current logging level.

Nuon conversions of range values now keep step size [toc]

Previously, the step size of range values were discarded when converting to nuon. With #14687, the to nuon conversion of range values now include the step size. As a result, to nuon/from nuon round trips now work for these values. Thanks @Bahex!

explore command panic when viewing small binary files [toc]

#14592 fixes a panic in explorer when viewing small binary files thanks to @ChetanXpro.

Convert Path to list in main and preserve case [toc]

With #14764, the system PATH is now converted to a list before the configuration files are processed. An explicit ENV_CONVERSIONS is no longer required for the PATH.

It should be safe to remove any existing ENV_CONVERSIONS entry for PATH.

The case of the PATH is also now preserved during this conversion.

Fix improperly escaped strings in stor update [toc]

@NotTheDr01ds fixed an issue in stor update which prevented single quotes from being stored properly (#14921).

Fix: Auto cd should not canonicalize symbolic path [toc]

With #14708, @WindSoilder fixes an issue where using .. to go up one directory from a symlink would result in the wrong PWD.

Fix: Pressing Esc or Q was not closing explore [toc]

Thanks to @dam4rus, Esc and Q now properly close explore once again (#14941).

Custom values are now expanded in tables [toc]

Previously, custom values were being stringified in tables. #14760 expands these to display as Nushell values thanks to @dead10ck.

Change how and and or operations are compiled to IR to support custom values [toc]

#14653 allows the and and or operators to support custom values once again thanks to @devyn.

Fix stor reset when there are foreign keys [toc]

Thanks to @fdncred for fixing an issue where stor reset wasn't properly dropping tables (#14772).

New, improved grid icons [toc]

grid --icons now uses the icons from the devicons crate after #14827.

SHLVL decrement on exec [toc]

Thanks @rikukiix for fixing exec to properly decrement the SHLVL environment variable (#14707).

cp reflink support on FreeBSD [toc]

Thanks to @sgvictorino, cp no longer errors with "--reflink is only supported on Linux and macOS" (#14677).

Fix root directory traversal issue [toc]

@userwiths fixed an issue where cd .. at the root of a drive was returning the incorrect directory (#14747). Thank you!

Fix table panic [toc]

#14710 fixes an issue where nested data was creating a panic when unexpanded in a display hook. Thanks @zhiburt!

Parser fixes [toc]

  • Thanks @WindSoilder for fixing an issue where a duration suffix in a variable name in a range confused the parser (#14848).
  • Thanks @blindFS for multiple parser fixes (and even more LSP fixes!):
    • Fixes $in/$it having an unknown span (#14789).
    • Fixed an issue where the span of $it/$in was set to the first character of its scope (#14817).
    • Fixed a missing span of the entire block of a module file (#14889).
    • Fixed an issue where the wrong span was highlighted when an else block had a parse error (#14912).
    • Fixed the span of a keyword expression not including its subsidiary expression (#14928).
  • @RobbingDaHood fixed multiple issues with parsed comments not being prefixed with a space or tab, or being the beginning of a token (#14616). Thank you!

Streaming improvements [toc]

  • du now streams thanks to @WindSoilder! (#14665)
  • get and reject now support streaming thanks to @cosineblast! (#14622)
  • bytes at now streams thanks to @simon-curtis in #13552. Additionally, skip and take should now stream binary output when provided streaming binary input.

Notes for plugin developers [toc]

@cptpiepmatz refactored I/O errors in #14927, simplifying them and encouraging including spans in error messages. A new ShellError::Io(IoError) variant has been added to ShellError, replacing FileNotFound, IOError, and other variants. The Io variant holds an instance of the newly added IoError struct, which contains information common to I/O errors, such as error kind, span, and optional extra information. See the linked PR for more information, including how to construct IoError values.

Hall of fame [toc]

Thanks to all the contributors below for helping us solve issues, improve documentation, refactor code, and more! 🙏

authortitlelink
@0x4D5352Improve example formatting in README.md#14695
@NiceGuyITReference the correct command: insert -> delete#14696
@blindFSfeat(lsp): use lsp-textdocument to handle utf16 position#14742
@blindFSfeat(lsp): document_symbols and workspace_symbols#14770
@blindFSfeat(lsp): inlay hints of variable types and command params#14802
@blindFSfix(lsp): PWD env_var#14805
@blindFSfeat(lsp): inlay hints of types in assignments#14809
@blindFSfix(lsp): goto definition on variables in match guard#14818
@blindFSfeat(lsp): workspace wide operations: rename/goto references#14837
@blindFSfeat(lsp): cancellable heavy requests#14851
@blindFSfix(lsp): missing references in use command#14861
@blindFSfix(lsp): renaming of flag variables#14890
@blindFSfeat(lsp): document highlight#14898
@blindFSfeat(lsp): better completion item documentation#14905
@blindFSfix(lsp): goto/hover on module name in some commands#14924
@blindFSfeat(lsp): show value on hover for const variables and CellPaths#14940
@blindFSfix(completion): DotNuCompletion now completes nu scripts in const $NU_LIB_DIRS#14955
@blindFSfix(completion): dotnu_completion for nested folders/scripts#14978
@blindFSfix(completion): dotnu_completion dir with space, expand tilde#14983
@blindFSfix: clippy warning of rust 1.8.4#14984
@cosineblastls now collects metadata in a separate thread#14627
@cptpiepmatzReplace std::time::Instant with web_time::Instant#14668
@cptpiepmatzHandle permission denied error at nu_engine::glob_from#14679
@cptpiepmatzForce installing nushell in standard lib tests to fix CI#14693
@cptpiepmatzCoerce boolean values into strings too#14704
@cptpiepmatzAdd "whereis" and "get-command" to which search terms#14797
@cptpiepmatzRefactor I/O Errors#14927
@cptpiepmatzFix cargo doc Warnings#14948
@cptpiepmatzReplaced IoError::new calls that still had Span::unknown()#14968
@pyz4nu_plugin_polars: add polars into-repr to display dataframe in portable repr format#14917
@tmillrfix(cli): completion in nested blocks#14856
@tsukimizakestop the prompt from removing the last newline#14590

Full changelog [toc]

authortitlelink
@0x4D5352Improve example formatting in README.md#14695
@132iklRemove usages of internal_span#14700
@132iklAdd run-time type checking for command pipeline input#14741
@132iklAdd flag to debug profile to output duration field as Value::Duration#14749
@132iklAdd doccomments to find functions in EngineState and StateWorkingSet#14750
@132iklMake get const#14751
@132iklDon't expand ndots if prefixed with ./#14755
@132iklFix config reset to use scaffold config files#14756
@132iklChange PipelineData::into_value to use internal Value's span before passed in span#14757
@132iklAdd newline to empty list output#14758
@132iklRemove required positional arguments from run-external and exec#14765
@132iklFix extra newline on empty lists when $env.config.table.show_empty is…#14766
@132iklRemove file accidentally re-introduced by merge#14785
@132iklImmediately return error if detected as pipeline input or positional argument#14874
@132iklRename fmt to format number#14875
@132iklRun-time pipeline input typechecking tweaks#14922
@BahexRun ENV_CONVERSIONS whenever it's modified#14591
@BahexAdd binary input support to chunks#14649
@BahexAdd bytes split command#14652
@Bahexfix nuon conversions of range values#14687
@Bahexsmall, backwards compatible enhancements to std#14763
@BahexEnable conditional source and use patterns by allowing null as a no-op module#14773
@BahexAdd input support to generate#14804
@BahexAdd new operators has and not-has#14841
@Bahexfix error propagation in export-env#14847
@Bahexfix range bugs in str substring, str index-of, slice, bytes at#14863
@Bahexfix(help operators): include has and not-has operators#14943
@Chen1Plusfix wrong error msg of save command on windows#14699
@ChetanXprofix(explore): handle zero-size cursor in binary viewer#14592
@ChrisDentonUse non-canonicalized paths in shell integrations#14832
@Coca162Add --first/--last flags to move#14961
@IanManskeImprove and fix filesize formatting/display#14397
@IanManskeUse ref-cast crate to remove some unsafe#14897
@IanManskeRemove unused types#14916
@MudadaAdd --no-highlight to find command#14970
@NiceGuyITReference the correct command: insert -> delete#14696
@NotTheDr01ds"short" Welcome Banner option#14638
@NotTheDr01dsAdd user autoload directory#14669
@NotTheDr01dsopen: Assign content_type metadata for filetypes not handled with a from converter#14670
@NotTheDr01dsRemove no-longer-needed convert_env_values calls#14681
@NotTheDr01dsRemove deprecated commands#14726
@NotTheDr01dsRun SHLVL tests sequentially#14727
@NotTheDr01dsIncrement SHLVL before run_repl()#14732
@NotTheDr01dsAdd comment on nu_repl usage#14734
@NotTheDr01dsConvert Path to list in main and preserve case#14764
@NotTheDr01dsFix retrieval of config directory for user autoloads#14877
@NotTheDr01dsUse $nu.data-dir as last directory for vendor autoloads on all platforms#14879
@NotTheDr01dsImprove example for epoch -> datetime#14886
@NotTheDr01dsAdd correct path from data-dir#14894
@NotTheDr01dsLink to Blog in the welcome banner#14914
@NotTheDr01dsFix improperly escaped strings in stor update#14921
@NotTheDr01dsFix: Directories using a tilde to represent HOME will now be converted to an absolute-path before running an external#14959
@NotTheDr01dsRename std/core to std/prelude#14962
@RobbingDaHood14523 all comments should be prefixed with space tab or be beginning of token#14616
@Tyarel8into datetime: noop when input is a datetime#14845
@Tyarel8into cell-path: noop when input is cell-path#14881
@Tyarel8into glob: noop when input is glob#14882
@WindSoildermake du streaming#14665
@WindSoilderauto cd should not canonicalize symbolic path#14708
@WindSoilderAdd help pipe-and-redirect command.#14821
@WindSoilderFix variable names that end in a duration suffix can't be on the right part of a range#14848
@WindSoilderadd tests with display_error=True#14939
@anomiusnon-HTTP(s) URLs now works with start#14370
@app/dependabotBump git2 from 0.19.0 to 0.20.0#14776
@app/dependabotBump tempfile from 3.14.0 to 3.15.0#14777
@app/dependabotBump tokio from 1.42.0 to 1.43.0#14829
@app/dependabotBump uuid from 1.11.0 to 1.12.0#14830
@app/dependabotBump data-encoding from 2.6.0 to 2.7.0#14831
@app/dependabotBump similar from 2.6.0 to 2.7.0#14888
@app/dependabotBump brotli from 6.0.0 to 7.0.0#14949
@app/dependabotBump shadow-rs from 0.37.0 to 0.38.0#14952
@ayax79Polars AWS S3 support#14648
@ayax79Provide the ability to split strings in columns via polars str-split#14723
@ayax79Polars upgrade to 0.46#14933
@blindFSfeat(lsp): use lsp-textdocument to handle utf16 position#14742
@blindFSfeat(lsp): document_symbols and workspace_symbols#14770
@blindFSfix: unknown span for special variables $in/$it#14789
@blindFSfeat(lsp): inlay hints of variable types and command params#14802
@blindFSfix(lsp): PWD env_var#14805
@blindFSfeat(lsp): inlay hints of types in assignments#14809
@blindFSfix(parser): span of $it/$in set to the first character of its scope#14817
@blindFSfix(lsp): goto definition on variables in match guard#14818
@blindFSfeat(lsp): workspace wide operations: rename/goto references#14837
@blindFSfeat(lsp): cancellable heavy requests#14851
@blindFSfix(lsp): missing references in use command#14861
@blindFSfix(parser): missing span of the entire block of a module file#14889
@blindFSfix(lsp): renaming of flag variables#14890
@blindFSfeat(lsp): document highlight#14898
@blindFSfeat(lsp): better completion item documentation#14905
@blindFSfix(parser): mixed side effects of different choices in parse_oneof#14912
@blindFSrefactor(parser): use var_id for most constants in ResolvedImportPattern#14920
@blindFSfix(lsp): goto/hover on module name in some commands#14924
@blindFSfix(parser): span of keyword expression#14928
@blindFSfeat(lsp): show value on hover for const variables and CellPaths#14940
@blindFSfix(completion): DotNuCompletion now completes nu scripts in const $NU_LIB_DIRS#14955
@blindFSBump lsp-textdocument from 0.4.0 to 0.4.1#14974
@blindFSfix(completion): dotnu_completion for nested folders/scripts#14978
@blindFSfix(completion): dotnu_completion dir with space, expand tilde#14983
@blindFSfix: clippy warning of rust 1.8.4#14984
@cosineblastadd streaming to get and reject#14622
@cosineblastls now collects metadata in a separate thread#14627
@cosineblastFix reject regression#14931
@cptpiepmatzAdd auto option for config.use_ansi_coloring#14647
@cptpiepmatzAdd content type metadata to config nu commands#14666
@cptpiepmatzReplace std::time::Instant with web_time::Instant#14668
@cptpiepmatzHandle permission denied error at nu_engine::glob_from#14679
@cptpiepmatzAdd command to get evaluated color setting#14683
@cptpiepmatzForce installing nushell in standard lib tests to fix CI#14693
@cptpiepmatzCoerce boolean values into strings too#14704
@cptpiepmatzUse Value::coerce_bool in into bool#14731
@cptpiepmatzAdd "whereis" and "get-command" to which search terms#14797
@cptpiepmatzLet table only check for use_ansi_coloring config value#14798
@cptpiepmatzRefactor I/O Errors#14927
@cptpiepmatzFix cargo doc Warnings#14948
@cptpiepmatzReplaced IoError::new calls that still had Span::unknown()#14968
@dam4rusfix(explore): Fix esc immediately closing explore in expand and try view#14941
@dead10ckexpand custom values on table display#14760
@devynChange how and and or operations are compiled to IR to support custom values#14653
@fdncredreplace regex crate with fancy_regex#14646
@fdncredupdate banner command to respect use_ansi_colors#14684
@fdncredmore closure serialization#14698
@fdncredbetter error message for "sum", "product", and "sum_of_squares"#14711
@fdncredfix stor reset when there are foreign keys#14772
@fdncredbump to rust version 1.82#14795
@fdncredfinish removing terminal_size dep#14819
@fdncredreplace icons in grid with devicons + color#14827
@fdncredadd version check command#14880
@fdncredmanually revert from serde_yml to serde_yaml#14987
@hjetmundsenRemove trailing slash from symlink completion (issue #13275)#14667
@hjetmundsenAdd glob support to utouch (issue #13623)#14674
@hustcerFix docker image tests#14671
@hustcerDo not trigger release WF on nightly tags#14803
@hustcerUpdate Nu to 0.101.0 for workflow and ping ubuntu-latest to 22.04 for riscv64gc build#14835
@pyz4seq date: generalize to allow any duration for --increment argument#14903
@pyz4nu_plugin_polars: add polars into-repr to display dataframe in portable repr format#14917
@rikukiixSwitch from serde_yaml to serde_yml#14630
@rikukiixmake exec command decrement SHLVL correctly & SHLVL related test#14707
@sgvictorinocp: disable unsupported reflink mode in freebsd builds#14677
@sgvictorinoupdate uutils crates to 0.0.29#14867
@sholderbachRename/deprecate into bits to format bits#14634
@sholderbachBump version to 0.101.1#14661
@sholderbachPromote note about internal_span to doccomment#14703
@sholderbachBump typos workflow to 1.29.4#14782
@sholderbachRename/deprecate range to slice#14825
@simon-curtisImplementing ByteStream interruption on infinite stream#13552
@tmillrfix(cli): completion in nested blocks#14856
@tsukimizakestop the prompt from removing the last newline#14590
@userwithsFix root directory traversal issue#14747
@ysthakurCreate nu_glob::is_glob function#14717
@ysthakurMake utouch the new touch#14721
@ysthakurCustom completions: Inherit case_sensitive option from $env.config#14738
@ysthakurFallback to file completer in custom/external completer#14781
@ysthakurUse nucleo instead of skim for completions#14846
@ysthakurUse single atom for fuzzy matching (fix #14904)#14913
@zhiburtBump tabled to 0.17#14415
@zhiburtTry to fix tabled panic#14710
@zhiburtFix #14842#14885
Edit this page on GitHub
Contributors: Ian Manske, ysthakur, 132ikl, Bahex, NotTheDr01ds, Jan Klass, Maxim Uvarov, Jakub Žádník