diff --git a/blog/2024-01-09-nushell_0_89_0.md b/blog/2024-01-09-nushell_0_89_0.md index f827d63fd12..8873eb4c647 100644 --- a/blog/2024-01-09-nushell_0_89_0.md +++ b/blog/2024-01-09-nushell_0_89_0.md @@ -267,7 +267,7 @@ Setting the limits is done via flags available in `help ulimit`. - [Fix the test which fails on windows](https://github.com/nushell/nushell/pull/11478) - [Fix rm for symlinks pointing to directory on windows (issue #11461)](https://github.com/nushell/nushell/pull/11463) - [hustcer](https://github.com/hustcer) created - - [Try to fix riscv64 building by using unbuntu-latest](https://github.com/nushell/nushell/pull/11476) + - [Try to fix riscv64 building by using ubuntu-latest](https://github.com/nushell/nushell/pull/11476) - [Downgrade openssl-src to fix riscv64 build target, close #11345](https://github.com/nushell/nushell/pull/11353) - [rsteube](https://github.com/rsteube) created - [Revert "Return external file completions if not empty (#10898)"](https://github.com/nushell/nushell/pull/11446) diff --git a/blog/2025-04-29-nushell_0_104_0.md b/blog/2025-04-29-nushell_0_104_0.md new file mode 100644 index 00000000000..1a34794e1ca --- /dev/null +++ b/blog/2025-04-29-nushell_0_104_0.md @@ -0,0 +1,578 @@ +--- +title: Nushell 0.104.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.104.0 of Nu. This release adds additional job control capabilities, many datetime improvements, and a number of new Polars commands. +--- + +# Nushell 0.104.0 + +Today, we're releasing version 0.104.0 of Nu. This release adds additional job control capabilities, many datetime improvements, and a number of new Polars commands. + +Thank you to all those who have contributed to this release through the PRs below, issues and suggestions leading to those changes, and Discord discussions. + +# Where to get it + +Nu 0.104.0 is available as [pre-built binaries](https://github.com/nushell/nushell/releases/tag/0.104.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_](#highlights-and-themes-of-this-release-toc) + - [_New Job-Control Features_](#new-job-control-features-toc) + - [_Inter-Job Messaging (Experimental)_](#inter-job-messaging-experimental-toc) + - [_Job tags_](#job-tags-toc) + - [_New `datetime` and `duration` Features_](#new-datetime-and-duration-features-toc) + - [_New `date from-human` command_](#new-date-from-human-command-toc) + - [_`into datetime` now accepts a record_](#into-datetime-now-accepts-a-record-toc) + - [_`into duration` now accepts a record_](#into-duration-now-accepts-a-record-toc) + - [_`into datetime --format` can now parse dates and times separately_](#into-datetime-format-can-now-parse-dates-and-times-separately-toc) + - [_`into duration` now accepts floats_](#into-duration-now-accepts-floats-toc) + - [_New Polars commands_](#new-polars-commands-toc) +- [_Changes_](#changes-toc) + - [_Additions_](#additions-toc) + - [_`kill` now accepts list spreading_](#kill-now-accepts-list-spreading-toc) + - [_Custom indicator for missing table values_](#custom-indicator-for-missing-table-values-toc) + - [_Some `math` commands now work with bounded ranges_](#some-math-commands-now-work-with-bounded-ranges-toc) + - [_The executable directory is now added to `$NU_PLUGIN_DIRS` by default_](#the-executable-directory-is-now-added-to-nu-plugin-dirs-by-default-toc) + - [_`env-conversions` helpers added to the standard library_](#env-conversions-helpers-added-to-the-standard-library-toc) + - [_Proxy support for `http` commands_](#proxy-support-for-http-commands-toc) + - [_Tab completion when importing the standard library and its exports_](#tab-completion-when-importing-the-standard-library-and-its-exports-toc) + - [_New columns available from `ps -l` on macOS_](#new-columns-available-from-ps-l-on-macos-toc) + - [_LSP: Snippet-style completions_](#lsp-snippet-style-completions-toc) + - [_`debug --raw-value`_](#debug-raw-value-toc) + - [_More info from `describe --detailed`_](#more-info-from-describe-detailed-toc) + - [_Support `PATHEXT` for additional extensions on Windows_](#support-pathext-for-additional-extensions-on-windows-toc) + - [_Execute Nushell scripts on the Path in Windows_](#execute-nushell-scripts-on-the-path-in-windows-toc) + - [_New flag `glob --follow-symlinks`_](#new-flag-glob-follow-symlinks-toc) + - [_Substring match algorithm_](#substring-match-algorithm-toc) + - [_Breaking changes_](#breaking-changes-toc) + - [_Parse human date time explicitly_](#parse-human-date-time-explicitly-toc) + - [_`str join` formatting for `datetime` values has changed_](#str-join-formatting-for-datetime-values-has-changed-toc) + - [_`history` with sqlite uses datetimes now_](#history-with-sqlite-uses-datetimes-now-toc) + - [_`date` is now `datetime`_](#date-is-now-datetime-toc) + - [_Deprecations_](#deprecations-toc) + - [_`positional` completer option_](#positional-completer-option-toc) + - [_Removals_](#removals-toc) + - [_Removed `-s` and `-p` in `do`_](#removed-s-and-p-in-do-toc) + - [_Bug fixes and other changes_](#bug-fixes-and-other-changes-toc) +- [_Notes for plugin developers_](#notes-for-plugin-developers-toc) + - [_Convert `IoError` into `LabeledError`_](#convert-ioerror-into-labelederror-toc) + - [_New Repo for Plugin Examples_](#new-repo-for-plugin-examples-toc) +- [_Hall of fame_](#hall-of-fame-toc) +- [_Full changelog_](#full-changelog-toc) + + +# Highlights and themes of this release [[toc](#table-of-contents)] + +## New Job-Control Features [[toc](#table-of-contents)] + +### Inter-Job Messaging (Experimental) [[toc](#table-of-contents)] + +Jobs can now communicate with other jobs. The following commands were added in +[#15253](https://github.com/nushell/nushell/pull/15253): + +- `job send` +- `job recv` +- `job flush` +- `job id` + +See `help job ` for details. + +### Job tags [[toc](#table-of-contents)] + +Jobs can now be tagged using `job tag`, added in [#15555](https://github.com/nushell/nushell/pull/15555). + +## New `datetime` and `duration` Features [[toc](#table-of-contents)] + +Thanks to [@LoicRiegel](https://github.com/LoicRiegel) for a number of `datetime` and `duration` features in this release: + +### New `date from-human` command [[toc](#table-of-contents)] + +The new `date from-human` command introduced in [#15495](https://github.com/nushell/nushell/pull/15495) is now used to parse human-language date forms like _"tomorrow"_ into `datetime` values. + +```nushell +date from-human "next Friday at 6pm" +# => 2025-04-18T18:00:00+02:00 +``` + +The equivalent functionality from `into datetime` has been removed from that command. + +::: warning Breaking change +See a full overview of the [breaking changes](#breaking-changes) +::: + +### `into datetime` now accepts a record [[toc](#table-of-contents)] + +With [#15455](https://github.com/nushell/nushell/pull/15455), it is now possible to construct a datetime from a record input. If the timezone is not specified, the locale is used: + +```nushell +{ year: 2025, month: 3, day: 30, hour: 12, minute: 15, second: 59, timezone: '+02:00' } | into datetime +# => Sun, 30 Mar 2025 12:15:59 +0200 (2 weeks ago) +``` + +### `into duration` now accepts a record [[toc](#table-of-contents)] + +With [#15600](https://github.com/nushell/nushell/pull/15600), it is now possible to construct a datetime from a record input. If the timezone is not specified, the local is used: + +```nushell +{ week: 10, day: 1, hour: 2, minute: 3, second: 4, millisecond: 5, microsecond: 6, nanosecond: 7, sign: '-' } | into duration +# => -10wk 1day 2hr 3min 4sec 5ms 6µs 7ns +``` + +### `into datetime --format` can now parse dates and times separately [[toc](#table-of-contents)] + +Previously, `into datetime --format` required both a date and a time. With [#15544](https://github.com/nushell/nushell/pull/15544), +each can be created separately. The system's local timezone will be used +by default. + +For example, to parse a `DD/MM/YYYY`: + +```nushell +"25/03/2024" | into datetime --format "%d/%m/%Y" +# => Mon, 25 Mar 2024 00:00:00 +0100 (a year ago) +``` + +### `into duration` now accepts floats [[toc](#table-of-contents)] + +With [#15297](https://github.com/nushell/nushell/pull/15297), `into duration` now accepts floats as a valid input type: + +```nushell +1.5day | into duration +# => 1day 12hr +``` + +## New Polars commands [[toc](#table-of-contents)] + +The following `polars` commands have been added in this release: + +- `polars join_where` ([#15635](https://github.com/nushell/nushell/pull/15635) by [@MMesch](https://github.com/MMesch)) +- `polars cut` and `polars qcut` for binning ([#15431](https://github.com/nushell/nushell/pull/15431) by [@ayax79](https://github.com/ayax79)) +- `polars into-schema` ([#15534](https://github.com/nushell/nushell/pull/15534)) by [@ayax79](https://github.com/ayax79)) +- `polars dtype` ([#15529](https://github.com/nushell/nushell/pull/15529) by [@ayax79](https://github.com/ayax79), which also adds the `NuDataType` custom type) +- `polars replace-time-zone` ([#15538](https://github.com/nushell/nushell/pull/15538) by [@pyz4](https://github.com/pyz4)) +- `polars convert-time-zone` ([#15550](https://github.com/nushell/nushell/pull/15550) by [@pyz4](https://github.com/pyz4)) +- `polars over` ([#15551](https://github.com/nushell/nushell/pull/15551) by [@pyz4](https://github.com/pyz4)) +- `polars truncate` ([#15582](https://github.com/nushell/nushell/pull/15582) by [@pyz4](https://github.com/pyz4)) + +# Changes [[toc](#table-of-contents)] + +## Additions [[toc](#table-of-contents)] + +### `kill` now accepts list spreading [[toc](#table-of-contents)] + +In [#15558](https://github.com/nushell/nushell/pull/15558) from [@Mrfiregem](https://github.com/Mrfiregem), the signature of the `kill` command was changed so that it can accept multiple arguments via the list spreading operator. For example: + +```nushell +ps | where name == bash | kill ...$in.pid +``` + +### Custom indicator for missing table values [[toc](#table-of-contents)] + +Missing values (not `null`) are represented by ❎ in tables. [#15647](https://github.com/nushell/nushell/pull/15647) from [@Bahex](https://github.com/Bahex) makes this indicator configurable. For example: + +```nushell +$env.config.table.missing_symbol = " ∅ " +``` + +### Some `math` commands now work with bounded ranges [[toc](#table-of-contents)] + +With [#15319](https://github.com/nushell/nushell/pull/15319) from [@LoicRiegel](https://github.com/LoicRiegel), the following commands have been updated to allow bounded ranges as input: + +- `math abs` +- `math ceil` +- `math floor` +- `math log` +- `math round` + +When passed a `range` input, the command is applied to each item of the range, thus producing a `list` of numbers as output. + +Example: + +```nushell +-2.2..2.5 | math floor +# => ╭───┬────╮ +# => │ 0 │ -3 │ +# => │ 1 │ -2 │ +# => │ 2 │ -1 │ +# => │ 3 │ 0 │ +# => │ 4 │ 1 │ +# => ╰───┴────╯ +``` + +### The executable directory is now added to `$NU_PLUGIN_DIRS` by default [[toc](#table-of-contents)] + +Many distributions (including our binary distributions) place plugins in the same directory as the Nushell executable. With [#15380](https://github.com/nushell/nushell/pull/15380) from [@NotTheDr01ds](https://github.com/NotTheDr01ds), plugins in this type of environment will now work out-of-the-box using `plugin register`. + +### `env-conversions` helpers added to the standard library [[toc](#table-of-contents)] + +Previously, the default `$env.ENV_CONVERSION` for `PATH` could be "reused" in other path-related conversions. In a previous release, this conversion was removed and became Rust-based. [#15569](https://github.com/nushell/nushell/pull/15569) by [@NotTheDr01ds](https://github.com/NotTheDr01ds) adds the equivalent helper to the standard library so that it can be easily used. + +### Proxy support for `http` commands [[toc](#table-of-contents)] + +With [#15597](https://github.com/nushell/nushell/pull/15597) from [@scarlet-storm](https://github.com/scarlet-storm), commands like `http get` can now utilize a proxy using environment variables. + +### Tab completion when importing the standard library and its exports [[toc](#table-of-contents)] + +With [#15270](https://github.com/nushell/nushell/pull/15270), [@blindFS](https://github.com/blindFS) enabled tab-completion for the standard library and its exports with the `use` (and related) commands. + +### New columns available from `ps -l` on macOS [[toc](#table-of-contents)] + +[#15341](https://github.com/nushell/nushell/pull/15341) from [@fdncred](https://github.com/fdncred) adds the following columns to `ps -l` on macOS: + +- `user_id` +- `priority` +- `process_threads` + +### LSP: Snippet-style completions [[toc](#table-of-contents)] + +In [#15494](https://github.com/nushell/nushell/pull/15494), [@blindFS](https://github.com/blindFS) added the ability for completions of built-in commands to insert a snippet with placeholders for its arguments. + +In addition, you'll find numerous LSP fixes below from [@blindFS](https://github.com/blindFS). + +### `debug --raw-value` [[toc](#table-of-contents)] + +[@fdncred](https://github.com/fdncred) added a `--raw-value` option to the `debug` command in [15581](https://github.com/nushell/nushell/pull/15581) to allow retrieval of only the debug string part of the Nushell value. + +### More info from `describe --detailed` [[toc](#table-of-contents)] + +In [#15591](https://github.com/nushell/nushell/pull/15591), [@fdncred](https://github.com/fdncred) added more details to the `describe --detailed` output, including the Rust data type, the Nushell data type, and the value. + +### Support `PATHEXT` for additional extensions on Windows [[toc](#table-of-contents)] + +With the changes in [#15611](https://github.com/nushell/nushell/pull/15611) by [@hfrentzel](https://github.com/hfrentzel), Nushell will now automatically attempt to execute scripts using any extension found in the `PATHEXT` environment variable on Windows. + +### Execute Nushell scripts on the Path in Windows [[toc](#table-of-contents)] + +Also, with [#15486](https://github.com/nushell/nushell/pull/15486) from [@mztikk](https://github.com/mztikk), Nushell scripts can be more easily executed from any directory in the `Path`. + +### New flag `glob --follow-symlinks` [[toc](#table-of-contents)] + +[@sebasnallar](https://github.com/sebasnallar) added `--follow-symlinks` to ... folllow symlinks when globbing ([#15626](https://github.com/nushell/nushell/pull/15626)) + +### Substring match algorithm [[toc](#table-of-contents)] + +In [#15511](https://github.com/nushell/nushell/pull/15511), [@vansh284](https://github.com/vansh284) added the option to use substring matching for completions. Previously, only prefix and fuzzy matching were allowed. Users can now set `$env.config.completions.algorithm` to `"substring"` to enable this. + +Custom completers already had the ability to use substring matching by setting `positional: false` in their [options](https://www.nushell.sh/book/custom_completions.html#options-for-custom-completions). However, `positional` has now been deprecated, and completers should set `completion_algorithm: "substring"` to maintain the same behavior. + +## Breaking changes [[toc](#table-of-contents)] + +### Parse human date time explicitly [[toc](#table-of-contents)] + +`into datetime` used to parse not only strictly formatted date time strings, but also human readable ones. This created some situations where unexpected values might result from `into datetime`. This functionality has been removed. + +Instead, users can now explicitly choose to opt-in to that functionality using the new `date from-human` command added in [#15495](https://github.com/nushell/nushell/pull/15495) by [@LoicRiegel](https://github.com/LoicRiegel). + +### `str join` formatting for `datetime` values has changed [[toc](#table-of-contents)] + +When a `datetime` is passed to `str join`, the resulting format of the string has changed. With [#15629](https://github.com/nushell/nushell/pull/15629) from [@LoicRiegel](https://github, it will now format positive dates using RFC2822 and negative dates using RFC3339. + +This could be a breaking change if you depend on a particular format of the output of `str join`. Consider using `format date` before `str join`. + +### `history` with sqlite uses datetimes now [[toc](#table-of-contents)] + +Previously, the `history` command would return a `start_timestamp` with a `string` when using the SQLite backend. With +[#15630](https://github.com/nushell/nushell/pull/15630), it now returns an actual Nushell `datetime`. + +If you were previously relying on a `string` value from that column, you can easily convert it using `format date`. + +### `date` is now `datetime` [[toc](#table-of-contents)] + +The `describe` command previously incorrectly reported `datetime` values as `date`. This has been fixed in [#15264](https://github.com/nushell/nushell/pull/15264). + +If you were previously checking the type of a value using `describe`, you should change occurrences of `date` to `datetime`. + +## Deprecations [[toc](#table-of-contents)] + +### `positional` completer option [[toc](#table-of-contents)] + +The `positional` [option](https://www.nushell.sh/book/custom_completions.html#options-for-custom-completions) available to custom completers has been deprecated. See the section about the [Substring match algorithm](#substring-match-algorithm-toc) above for details. + +## Removals [[toc](#table-of-contents)] + +### Removed `-s` and `-p` in `do` [[toc](#table-of-contents)] + +We deprecated the `-s` and `-p` flags and planned to remove them in version 0.102.0. We forgot about it for a couple of releases, but [#15456](https://github.com/nushell/nushell/pull/15456) by [WindSoilder](https://github.com/WindSoilder) finally completes this removal. + +## Bug fixes and other changes [[toc](#table-of-contents)] + +| author | title | link | +| ------------------------------------------------ | ----------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | +| [@0x4D5352](https://github.com/0x4D5352) | chore: move 'job' to experimental category | [#15568](https://github.com/nushell/nushell/pull/15568) | +| [@IanManske](https://github.com/IanManske) | Don't collect job output | [#15365](https://github.com/nushell/nushell/pull/15365) | +| [@LoicRiegel](https://github.com/LoicRiegel) | bugfix: wrong display of human readable string | [#15522](https://github.com/nushell/nushell/pull/15522) | +| [@LoicRiegel](https://github.com/LoicRiegel) | Bugfix chrono panic + hotifx PR15544 | [#15549](https://github.com/nushell/nushell/pull/15549) | +| [@MMesch](https://github.com/MMesch) | fix mistake in description of polars pivot command | [#15621](https://github.com/nushell/nushell/pull/15621) | +| [@Mrfiregem](https://github.com/Mrfiregem) | Fix `path add` bug when given a record | [#15379](https://github.com/nushell/nushell/pull/15379) | +| [@NotTheDr01ds](https://github.com/NotTheDr01ds) | Fixes `clip copy` stripping control characters when de-ansifying | [#15428](https://github.com/nushell/nushell/pull/15428) | +| [@SkillFlame](https://github.com/SkillFlame) | Fix #14660: to md breaks on tables with empty values | [#15631](https://github.com/nushell/nushell/pull/15631) | +| [@WindSoilder](https://github.com/WindSoilder) | IR: rasing reasonable error when using subexpression with `and` operator | [#15623](https://github.com/nushell/nushell/pull/15623) | +| [@WindSoilder](https://github.com/WindSoilder) | overlay use: keep PWD after activating the overlay thought file. | [#15566](https://github.com/nushell/nushell/pull/15566) | +| [@ayax79](https://github.com/ayax79) | Fix output type of `polars schema` | [#15572](https://github.com/nushell/nushell/pull/15572) | +| [@ayax79](https://github.com/ayax79) | fix cannot find issue when performing collect on an eager dataframe | [#15577](https://github.com/nushell/nushell/pull/15577) | +| [@blindFS](https://github.com/blindFS) | fix(completion): inline defined custom completion | [#15318](https://github.com/nushell/nushell/pull/15318) | +| [@blindFS](https://github.com/blindFS) | fix(parser): skip eval_const if parsing errors detected to avoid panic | [#15364](https://github.com/nushell/nushell/pull/15364) | +| [@blindFS](https://github.com/blindFS) | fix(explore): do not create extra layer for empty entries | [#15367](https://github.com/nushell/nushell/pull/15367) | +| [@blindFS](https://github.com/blindFS) | fix(parser): comments in subexpressions of `let`/`mut` | [#15375](https://github.com/nushell/nushell/pull/15375) | +| [@blindFS](https://github.com/blindFS) | fix: flatten of empty closures | [#15374](https://github.com/nushell/nushell/pull/15374) | +| [@blindFS](https://github.com/blindFS) | fix: command `open` sets default flags when calling "from xxx" converters | [#15383](https://github.com/nushell/nushell/pull/15383) | +| [@blindFS](https://github.com/blindFS) | fix(completion): ls_color for `~/xxx` symlinks | [#15403](https://github.com/nushell/nushell/pull/15403) | +| [@blindFS](https://github.com/blindFS) | feat(lsp): parse_warnings in diagnostics report | [#15449](https://github.com/nushell/nushell/pull/15449) | +| [@blindFS](https://github.com/blindFS) | fix(completion): completions.external.enable config option not respected | [#15443](https://github.com/nushell/nushell/pull/15443) | +| [@blindFS](https://github.com/blindFS) | fix(lsp): more accurate PWD: from env -> parent dir of current file | [#15470](https://github.com/nushell/nushell/pull/15470) | +| [@blindFS](https://github.com/blindFS) | fix(lsp): keywords in completion snippets | [#15499](https://github.com/nushell/nushell/pull/15499) | +| [@blindFS](https://github.com/blindFS) | fix(lsp): workspace wide ops may panic in certain conditions | [#15514](https://github.com/nushell/nushell/pull/15514) | +| [@blindFS](https://github.com/blindFS) | fix(lsp): parser_info based id detection for use/overlay keywords | [#15517](https://github.com/nushell/nushell/pull/15517) | +| [@blindFS](https://github.com/blindFS) | fix(lsp): several edge cases of inaccurate references | [#15523](https://github.com/nushell/nushell/pull/15523) | +| [@blindFS](https://github.com/blindFS) | fix(lsp): more accurate command name highlight/rename | [#15540](https://github.com/nushell/nushell/pull/15540) | +| [@blindFS](https://github.com/blindFS) | fix(completion): quoted cell path completion | [#15546](https://github.com/nushell/nushell/pull/15546) | +| [@blindFS](https://github.com/blindFS) | fix(lsp): a panic caused by completion with decl_id out of range | [#15576](https://github.com/nushell/nushell/pull/15576) | +| [@blindFS](https://github.com/blindFS) | fix(lsp): regression of semantic tokens of module-prefixed commands | [#15603](https://github.com/nushell/nushell/pull/15603) | +| [@cosineblast](https://github.com/cosineblast) | `config` commands now add frozen jobs to job table | [#15556](https://github.com/nushell/nushell/pull/15556) | +| [@fdncred](https://github.com/fdncred) | fix `datetime-diff` so that it reports ms, us, ns as well | [#15537](https://github.com/nushell/nushell/pull/15537) | +| [@jjflash95](https://github.com/jjflash95) | Fix #15440 default --empty fails at empty streams | [#15562](https://github.com/nushell/nushell/pull/15562) | +| [@lazenga](https://github.com/lazenga) | Fix #13546: Outer joins incorrectly removing unmatched rows | [#15472](https://github.com/nushell/nushell/pull/15472) | +| [@mokurin000](https://github.com/mokurin000) | fix(nu-command): support ACL, SELinux, e.g. in cd have_permission check | [#15360](https://github.com/nushell/nushell/pull/15360) | +| [@pyz4](https://github.com/pyz4) | `polars into-df`/`polars into-lazy`: `--schema` will not throw error if only some columns are defined | [#15473](https://github.com/nushell/nushell/pull/15473) | +| [@pyz4](https://github.com/pyz4) | FIX `polars as-datetime`: ignores timezone information on conversion | [#15490](https://github.com/nushell/nushell/pull/15490) | +| [@pyz4](https://github.com/pyz4) | fix(polars): cast as date now returns Date type instead of Datetime\ | [#15574](https://github.com/nushell/nushell/pull/15574) | +| [@pyz4](https://github.com/pyz4) | feat(polars): enable `as_date` and `as_datetime` to handle expressions as inputs | [#15590](https://github.com/nushell/nushell/pull/15590) | +| [@pyz4](https://github.com/pyz4) | feat(polars): add pow (`**`) operator for polars expressions | [#15598](https://github.com/nushell/nushell/pull/15598) | +| [@pyz4](https://github.com/pyz4) | fix(custom_value) + fix(polars): map `//` operator to FloorDivide for custom values and in polars | [#15599](https://github.com/nushell/nushell/pull/15599) | +| [@pyz4](https://github.com/pyz4) | fix(polars): remove requirement that pivot columns must be same type in `polars pivot` | [#15608](https://github.com/nushell/nushell/pull/15608) | +| [@pyz4](https://github.com/pyz4) | fix(polars): conversion from nanoseconds to time_units in Datetime and Duration parsing | [#15637](https://github.com/nushell/nushell/pull/15637) | +| [@sgvictorino](https://github.com/sgvictorino) | preserve variable capture spans in blocks | [#15334](https://github.com/nushell/nushell/pull/15334) | +| [@sholderbach](https://github.com/sholderbach) | Fix `to nuon --serialize` of closure | [#15357](https://github.com/nushell/nushell/pull/15357) | +| [@sgvictorino](https://github.com/sgvictorino) | reset argument/redirection state after `eval_call` errors | [#15400](https://github.com/nushell/nushell/pull/15400) | +| [@sholderbach](https://github.com/sholderbach) | Fix `to nuon --serialize` of closure | [#15357](https://github.com/nushell/nushell/pull/15357) | +| [@sholderbach](https://github.com/sholderbach) | Fix Exbibyte parsing | [#15515](https://github.com/nushell/nushell/pull/15515) | +| [@sholderbach](https://github.com/sholderbach) | Fix future clippy lints | [#15519](https://github.com/nushell/nushell/pull/15519) | +| [@vansh284](https://github.com/vansh284) | Improve completions for exact matches (Issue #14794) | [#15387](https://github.com/nushell/nushell/pull/15387) | +| [@ysthakur](https://github.com/ysthakur) | Enable exact match behavior for any path with slashes | [#15458](https://github.com/nushell/nushell/pull/15458) | +| [@zhiburt](https://github.com/zhiburt) | Fix #15394 for `table -e` wrapping issue | [#15407](https://github.com/nushell/nushell/pull/15407) | +| [@zhiburt](https://github.com/zhiburt) | fix f25525b | [#15500](https://github.com/nushell/nushell/pull/15500) | + +# Notes for plugin developers [[toc](#table-of-contents)] + +## Convert `IoError` into `LabeledError` [[toc](#table-of-contents)] + +In version 0.102.0 `IoError`s were added on top of `std::io::Error`s. [@132ikl](https://github.com/132ikl) made it easier in [#15327](https://github.com/nushell/nushell/pull/15327) to return these in `SimplePluginCommand`s. + +## New Repo for Plugin Examples [[toc](#table-of-contents)] + +[@cptpiepmatz](https://github.com/cptpiepmatz) has created a [new repository](https://github.com/nushell/plugin-examples) for plugin examples. It includes various examples demonstrating how to write plugins with different features and in multiple languages, including Nu. The existing plugin examples in the main repository will be moved there soon. + +# 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 | title | link | +| -------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------- | +| [@0x4D5352](https://github.com/0x4D5352) | replace repeat().take() with repeat_n() | [#15575](https://github.com/nushell/nushell/pull/15575) | +| [@132ikl](https://github.com/132ikl) | Add compile-time assertion of `Value`'s size | [#15362](https://github.com/nushell/nushell/pull/15362) | +| [@132ikl](https://github.com/132ikl) | Add boolean examples to `any` and `all` | [#15442](https://github.com/nushell/nushell/pull/15442) | +| [@AucaCoyan](https://github.com/AucaCoyan) | Add labeler bot | [#15627](https://github.com/nushell/nushell/pull/15627) | +| [@Bahex](https://github.com/Bahex) | docs(explore): Add ":nu" back to the help text | [#15644](https://github.com/nushell/nushell/pull/15644) | +| [@IanManske](https://github.com/IanManske) | Remove `nu-glob`'s dependency on `nu-protocol` | [#15349](https://github.com/nushell/nushell/pull/15349) | +| [@LoicRiegel](https://github.com/LoicRiegel) | refactor: ensure range is bounded | [#15429](https://github.com/nushell/nushell/pull/15429) | +| [@LoicRiegel](https://github.com/LoicRiegel) | Replace some PipelineMismatch by OnlySupportsThisInputType by shell error | [#15447](https://github.com/nushell/nushell/pull/15447) | +| [@NotTheDr01ds](https://github.com/NotTheDr01ds) | Ignore problematic overlapping tests for SHLVL | [#15430](https://github.com/nushell/nushell/pull/15430) | +| [@NotTheDr01ds](https://github.com/NotTheDr01ds) | Reminder comment to update doc when adding `$nu` constants | [#15481](https://github.com/nushell/nushell/pull/15481) | +| [@NotTheDr01ds](https://github.com/NotTheDr01ds) | Revert "Fix `kv set` with a closure argument" | [#15648](https://github.com/nushell/nushell/pull/15648) | +| [@NotTheDr01ds](https://github.com/NotTheDr01ds) | Renamed `join_where` to `join-where` | [#15660](https://github.com/nushell/nushell/pull/15660) | +| [@Tyarel8](https://github.com/Tyarel8) | Fix `kv set` with a closure argument | [#15588](https://github.com/nushell/nushell/pull/15588) | +| [@WindSoilder](https://github.com/WindSoilder) | update shadow-rs to version 1 | [#15462](https://github.com/nushell/nushell/pull/15462) | +| [@WindSoilder](https://github.com/WindSoilder) | Update rand and rand_chacha to 0.9 | [#15463](https://github.com/nushell/nushell/pull/15463) | +| [@WindSoilder](https://github.com/WindSoilder) | Fix clippy | [#15489](https://github.com/nushell/nushell/pull/15489) | +| [@WindSoilder](https://github.com/WindSoilder) | IR: allow subexpression with redirection. | [#15617](https://github.com/nushell/nushell/pull/15617) | +| [@blindFS](https://github.com/blindFS) | refactor: command identified by name instead of span content | [#15471](https://github.com/nushell/nushell/pull/15471) | +| [@blindFS](https://github.com/blindFS) | refactor(lsp): align markdown doc string with output of --help | [#15508](https://github.com/nushell/nushell/pull/15508) | +| [@blindFS](https://github.com/blindFS) | refactor(completion, lsp): include decl_id in suggetion_kind for later usage | [#15536](https://github.com/nushell/nushell/pull/15536) | +| [@blindFS](https://github.com/blindFS) | refactor(lsp): flat_map with mutable accumulator | [#15567](https://github.com/nushell/nushell/pull/15567) | +| [@cptpiepmatz](https://github.com/cptpiepmatz) | Add `--plugins` flag to `nu-std/testing.nu` | [#15552](https://github.com/nushell/nushell/pull/15552) | +| [@cptpiepmatz](https://github.com/cptpiepmatz) | Add `cat` and `get-content` to `open`'s search terms | [#15643](https://github.com/nushell/nushell/pull/15643) | +| [@fdncred](https://github.com/fdncred) | bump uutils crates to 0.0.30 | [#15316](https://github.com/nushell/nushell/pull/15316) | +| [@fdncred](https://github.com/fdncred) | update human-date-parser to 3.0 | [#15426](https://github.com/nushell/nushell/pull/15426) | +| [@fdncred](https://github.com/fdncred) | bump to the latest rust version | [#15483](https://github.com/nushell/nushell/pull/15483) | +| [@fdncred](https://github.com/fdncred) | Revert "Fix #15394 for `table -e` wrapping issue" | [#15498](https://github.com/nushell/nushell/pull/15498) | +| [@fdncred](https://github.com/fdncred) | bump reedline to 75f2c50 | [#15659](https://github.com/nushell/nushell/pull/15659) | +| [@fennewald](https://github.com/fennewald) | Limit Allowed `serde_json` Versions to Match Usage | [#15504](https://github.com/nushell/nushell/pull/15504) | +| [@g2p](https://github.com/g2p) | Upgrade calamine dependency to fix zip semver breakage | [#15657](https://github.com/nushell/nushell/pull/15657) | +| [@hustcer](https://github.com/hustcer) | Fix upgrading and checking of typos | [#15454](https://github.com/nushell/nushell/pull/15454) | +| [@hustcer](https://github.com/hustcer) | Update Nu to 0.103.0 for release workflow and improve Windows OS checks | [#15625](https://github.com/nushell/nushell/pull/15625) | +| [@kidrigger](https://github.com/kidrigger) | Fix examples about RFC3339 format in `date now` and `format date`. | [#15563](https://github.com/nushell/nushell/pull/15563) | +| [@migraine-user](https://github.com/migraine-user) | Fix typo in doc_config.nu + small description | [#15461](https://github.com/nushell/nushell/pull/15461) | +| [@sholderbach](https://github.com/sholderbach) | Bump `crossbeam-channel` | [#15541](https://github.com/nushell/nushell/pull/15541) | +| [@sholderbach](https://github.com/sholderbach) | Fix labelling of plugins through correct glob | [#15634](https://github.com/nushell/nushell/pull/15634) | +| [@suimong](https://github.com/suimong) | Improve `std/log` performance | [#15614](https://github.com/nushell/nushell/pull/15614) | +| [@whiter001](https://github.com/whiter001) | create nu_plugin_node_example.js | [#15482](https://github.com/nushell/nushell/pull/15482) | +| [@ysthakur](https://github.com/ysthakur) | Bump to 0.103.1 dev version | [#15347](https://github.com/nushell/nushell/pull/15347) | +| [@ysthakur](https://github.com/ysthakur) | Revert "Improve completions for exact matches (Issue #14794)" | [#15457](https://github.com/nushell/nushell/pull/15457) | +| [@pyz4](https://github.com/pyz4) | `polars cast`: add decimal option for dtype parameter | [#15464](https://github.com/nushell/nushell/pull/15464) | +| [@pyz4](https://github.com/pyz4) | `polars`: extend `NuExpression::extract_exprs` to handle records | [#15553](https://github.com/nushell/nushell/pull/15553) | +| [@pyz4](https://github.com/pyz4) | `polars`: update `get-` datetime components commands to allow expressions as inputs | [#15557](https://github.com/nushell/nushell/pull/15557) | +| [@pyz4](https://github.com/pyz4) | `polars`: update `polars lit` to handle nushell Value::Duration and Value::Date types | [#15564](https://github.com/nushell/nushell/pull/15564) | +| [@pyz4](https://github.com/pyz4) | `polars`: expand `polars col` to handle multiple columns and by types | [#15570](https://github.com/nushell/nushell/pull/15570) | +| [@pyz4](https://github.com/pyz4) | feat(polars): loosen constraints on accepted expressions in `polars group-by` | [#15583](https://github.com/nushell/nushell/pull/15583) | +| [@pyz4](https://github.com/pyz4) | feat(polars): enable parsing decimals in polars schemas | [#15632](https://github.com/nushell/nushell/pull/15632) | +| [@pyz4](https://github.com/pyz4) | feat(polars): enable parsing strings as dates and datetime in polars schema | [#15645](https://github.com/nushell/nushell/pull/15645) | + +# Full changelog [[toc](#table-of-contents)] + +| author | title | link | +| ---------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | +| [@0x4D5352](https://github.com/0x4D5352) | chore: move 'job' to experimental category | [#15568](https://github.com/nushell/nushell/pull/15568) | +| [@0x4D5352](https://github.com/0x4D5352) | replace repeat().take() with repeat_n() | [#15575](https://github.com/nushell/nushell/pull/15575) | +| [@132ikl](https://github.com/132ikl) | Add `From` for LabeledError | [#15327](https://github.com/nushell/nushell/pull/15327) | +| [@132ikl](https://github.com/132ikl) | Add compile-time assertion of `Value`'s size | [#15362](https://github.com/nushell/nushell/pull/15362) | +| [@132ikl](https://github.com/132ikl) | Add boolean examples to `any` and `all` | [#15442](https://github.com/nushell/nushell/pull/15442) | +| [@AucaCoyan](https://github.com/AucaCoyan) | Add labeler bot | [#15627](https://github.com/nushell/nushell/pull/15627) | +| [@Bahex](https://github.com/Bahex) | docs(explore): Add ":nu" back to the help text | [#15644](https://github.com/nushell/nushell/pull/15644) | +| [@Bahex](https://github.com/Bahex) | feat(table): make missing value symbol configurable | [#15647](https://github.com/nushell/nushell/pull/15647) | +| [@IanManske](https://github.com/IanManske) | Remove `nu-glob`'s dependency on `nu-protocol` | [#15349](https://github.com/nushell/nushell/pull/15349) | +| [@IanManske](https://github.com/IanManske) | Don't collect job output | [#15365](https://github.com/nushell/nushell/pull/15365) | +| [@LoicRiegel](https://github.com/LoicRiegel) | Math commands can work with bounded ranges and produce list of numbers | [#15319](https://github.com/nushell/nushell/pull/15319) | +| [@LoicRiegel](https://github.com/LoicRiegel) | Bugfix/into datetime ignores timezone with format | [#15370](https://github.com/nushell/nushell/pull/15370) | +| [@LoicRiegel](https://github.com/LoicRiegel) | refactor: ensure range is bounded | [#15429](https://github.com/nushell/nushell/pull/15429) | +| [@LoicRiegel](https://github.com/LoicRiegel) | Replace some PipelineMismatch by OnlySupportsThisInputType by shell error | [#15447](https://github.com/nushell/nushell/pull/15447) | +| [@LoicRiegel](https://github.com/LoicRiegel) | Feat: construct datetime from record | [#15455](https://github.com/nushell/nushell/pull/15455) | +| [@LoicRiegel](https://github.com/LoicRiegel) | Move human date parsing into new command `date from-human` | [#15495](https://github.com/nushell/nushell/pull/15495) | +| [@LoicRiegel](https://github.com/LoicRiegel) | bugfix: wrong display of human readable string | [#15522](https://github.com/nushell/nushell/pull/15522) | +| [@LoicRiegel](https://github.com/LoicRiegel) | Bugfix: datetime parsing and local timezones | [#15544](https://github.com/nushell/nushell/pull/15544) | +| [@LoicRiegel](https://github.com/LoicRiegel) | Bugfix chrono panic + hotifx PR15544 | [#15549](https://github.com/nushell/nushell/pull/15549) | +| [@LoicRiegel](https://github.com/LoicRiegel) | feat: duration from record | [#15600](https://github.com/nushell/nushell/pull/15600) | +| [@LoicRiegel](https://github.com/LoicRiegel) | Bugfix/loss of precision when parsing value with unit | [#15606](https://github.com/nushell/nushell/pull/15606) | +| [@LoicRiegel](https://github.com/LoicRiegel) | bugfix: `str join` outputs dates consistently (RFC2822 when possible) | [#15629](https://github.com/nushell/nushell/pull/15629) | +| [@LoicRiegel](https://github.com/LoicRiegel) | history table using sqlite outputs start_timestamp as datetime instead of string | [#15630](https://github.com/nushell/nushell/pull/15630) | +| [@MMesch](https://github.com/MMesch) | fix mistake in description of polars pivot command | [#15621](https://github.com/nushell/nushell/pull/15621) | +| [@MMesch](https://github.com/MMesch) | add polars join_where command | [#15635](https://github.com/nushell/nushell/pull/15635) | +| [@Mrfiregem](https://github.com/Mrfiregem) | Fix `path add` bug when given a record | [#15379](https://github.com/nushell/nushell/pull/15379) | +| [@Mrfiregem](https://github.com/Mrfiregem) | Allow spreading arguments of `kill` command | [#15558](https://github.com/nushell/nushell/pull/15558) | +| [@NotTheDr01ds](https://github.com/NotTheDr01ds) | Rename user-facing 'date' to 'datetime' | [#15264](https://github.com/nushell/nushell/pull/15264) | +| [@NotTheDr01ds](https://github.com/NotTheDr01ds) | Add current exe directory to default `$NU_PLUGIN_DIRS` | [#15380](https://github.com/nushell/nushell/pull/15380) | +| [@NotTheDr01ds](https://github.com/NotTheDr01ds) | Fixes `clip copy` stripping control characters when de-ansifying | [#15428](https://github.com/nushell/nushell/pull/15428) | +| [@NotTheDr01ds](https://github.com/NotTheDr01ds) | Ignore problematic overlapping tests for SHLVL | [#15430](https://github.com/nushell/nushell/pull/15430) | +| [@NotTheDr01ds](https://github.com/NotTheDr01ds) | Reminder comment to update doc when adding `$nu` constants | [#15481](https://github.com/nushell/nushell/pull/15481) | +| [@NotTheDr01ds](https://github.com/NotTheDr01ds) | Add env-conversions helpers to std | [#15569](https://github.com/nushell/nushell/pull/15569) | +| [@NotTheDr01ds](https://github.com/NotTheDr01ds) | Revert "Fix `kv set` with a closure argument" | [#15648](https://github.com/nushell/nushell/pull/15648) | +| [@NotTheDr01ds](https://github.com/NotTheDr01ds) | Renamed `join_where` to `join-where` | [#15660](https://github.com/nushell/nushell/pull/15660) | +| [@SkillFlame](https://github.com/SkillFlame) | Fix #14660: to md breaks on tables with empty values | [#15631](https://github.com/nushell/nushell/pull/15631) | +| [@Tyarel8](https://github.com/Tyarel8) | Fix `kv set` with a closure argument | [#15588](https://github.com/nushell/nushell/pull/15588) | +| [@WindSoilder](https://github.com/WindSoilder) | remove -s, -p in do | [#15456](https://github.com/nushell/nushell/pull/15456) | +| [@WindSoilder](https://github.com/WindSoilder) | update shadow-rs to version 1 | [#15462](https://github.com/nushell/nushell/pull/15462) | +| [@WindSoilder](https://github.com/WindSoilder) | Update rand and rand_chacha to 0.9 | [#15463](https://github.com/nushell/nushell/pull/15463) | +| [@WindSoilder](https://github.com/WindSoilder) | Fix clippy | [#15489](https://github.com/nushell/nushell/pull/15489) | +| [@WindSoilder](https://github.com/WindSoilder) | overlay use: keep PWD after activating the overlay thought file. | [#15566](https://github.com/nushell/nushell/pull/15566) | +| [@WindSoilder](https://github.com/WindSoilder) | IR: allow subexpression with redirection. | [#15617](https://github.com/nushell/nushell/pull/15617) | +| [@WindSoilder](https://github.com/WindSoilder) | IR: rasing reasonable error when using subexpression with `and` operator | [#15623](https://github.com/nushell/nushell/pull/15623) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump mockito from 1.6.1 to 1.7.0 | [#15343](https://github.com/nushell/nushell/pull/15343) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump indexmap from 2.7.0 to 2.8.0 | [#15345](https://github.com/nushell/nushell/pull/15345) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump uuid from 1.12.0 to 1.16.0 | [#15346](https://github.com/nushell/nushell/pull/15346) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump crate-ci/typos from 1.29.10 to 1.30.3 | [#15418](https://github.com/nushell/nushell/pull/15418) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump tokio from 1.43.0 to 1.44.1 | [#15419](https://github.com/nushell/nushell/pull/15419) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump array-init-cursor from 0.2.0 to 0.2.1 | [#15460](https://github.com/nushell/nushell/pull/15460) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump bytesize from 1.3.2 to 1.3.3 | [#15468](https://github.com/nushell/nushell/pull/15468) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump crate-ci/typos from 1.31.0 to 1.31.1 | [#15469](https://github.com/nushell/nushell/pull/15469) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump openssl from 0.10.70 to 0.10.72 | [#15493](https://github.com/nushell/nushell/pull/15493) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump tokio from 1.44.1 to 1.44.2 | [#15521](https://github.com/nushell/nushell/pull/15521) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump titlecase from 3.4.0 to 3.5.0 | [#15530](https://github.com/nushell/nushell/pull/15530) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump indexmap from 2.8.0 to 2.9.0 | [#15531](https://github.com/nushell/nushell/pull/15531) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump rust-embed from 8.6.0 to 8.7.0 | [#15579](https://github.com/nushell/nushell/pull/15579) | +| [@app/dependabot](https://github.com/app/dependabot) | build(deps): bump data-encoding from 2.8.0 to 2.9.0 | [#15580](https://github.com/nushell/nushell/pull/15580) | +| [@ayax79](https://github.com/ayax79) | Polars binning commands: cut/qcut | [#15431](https://github.com/nushell/nushell/pull/15431) | +| [@ayax79](https://github.com/ayax79) | Introduction of NuDataType and `polars dtype` | [#15529](https://github.com/nushell/nushell/pull/15529) | +| [@ayax79](https://github.com/ayax79) | Introducing `polars into-schema` | [#15534](https://github.com/nushell/nushell/pull/15534) | +| [@ayax79](https://github.com/ayax79) | Fix output type of `polars schema` | [#15572](https://github.com/nushell/nushell/pull/15572) | +| [@ayax79](https://github.com/ayax79) | fix cannot find issue when performing collect on an eager dataframe | [#15577](https://github.com/nushell/nushell/pull/15577) | +| [@blindFS](https://github.com/blindFS) | feat(completion): stdlib virtual path completion & exportable completion | [#15270](https://github.com/nushell/nushell/pull/15270) | +| [@blindFS](https://github.com/blindFS) | fix(completion): inline defined custom completion | [#15318](https://github.com/nushell/nushell/pull/15318) | +| [@blindFS](https://github.com/blindFS) | fix(lsp): verbose signature help response for less well supported editors | [#15353](https://github.com/nushell/nushell/pull/15353) | +| [@blindFS](https://github.com/blindFS) | fix(parser): skip eval_const if parsing errors detected to avoid panic | [#15364](https://github.com/nushell/nushell/pull/15364) | +| [@blindFS](https://github.com/blindFS) | fix(explore): do not create extra layer for empty entries | [#15367](https://github.com/nushell/nushell/pull/15367) | +| [@blindFS](https://github.com/blindFS) | fix: flatten of empty closures | [#15374](https://github.com/nushell/nushell/pull/15374) | +| [@blindFS](https://github.com/blindFS) | fix(parser): comments in subexpressions of `let`/`mut` | [#15375](https://github.com/nushell/nushell/pull/15375) | +| [@blindFS](https://github.com/blindFS) | fix: command `open` sets default flags when calling "from xxx" converters | [#15383](https://github.com/nushell/nushell/pull/15383) | +| [@blindFS](https://github.com/blindFS) | fix(completion): ls_color for `~/xxx` symlinks | [#15403](https://github.com/nushell/nushell/pull/15403) | +| [@blindFS](https://github.com/blindFS) | fix(completion): completions.external.enable config option not respected | [#15443](https://github.com/nushell/nushell/pull/15443) | +| [@blindFS](https://github.com/blindFS) | feat(lsp): parse_warnings in diagnostics report | [#15449](https://github.com/nushell/nushell/pull/15449) | +| [@blindFS](https://github.com/blindFS) | fix(lsp): more accurate PWD: from env -> parent dir of current file | [#15470](https://github.com/nushell/nushell/pull/15470) | +| [@blindFS](https://github.com/blindFS) | refactor: command identified by name instead of span content | [#15471](https://github.com/nushell/nushell/pull/15471) | +| [@blindFS](https://github.com/blindFS) | feat(lsp): snippet style completion for commands | [#15494](https://github.com/nushell/nushell/pull/15494) | +| [@blindFS](https://github.com/blindFS) | fix(lsp): keywords in completion snippets | [#15499](https://github.com/nushell/nushell/pull/15499) | +| [@blindFS](https://github.com/blindFS) | refactor(lsp): align markdown doc string with output of --help | [#15508](https://github.com/nushell/nushell/pull/15508) | +| [@blindFS](https://github.com/blindFS) | fix(lsp): workspace wide ops may panic in certain conditions | [#15514](https://github.com/nushell/nushell/pull/15514) | +| [@blindFS](https://github.com/blindFS) | fix(lsp): parser_info based id detection for use/overlay keywords | [#15517](https://github.com/nushell/nushell/pull/15517) | +| [@blindFS](https://github.com/blindFS) | fix(lsp): several edge cases of inaccurate references | [#15523](https://github.com/nushell/nushell/pull/15523) | +| [@blindFS](https://github.com/blindFS) | refactor(completion, lsp): include decl_id in suggetion_kind for later usage | [#15536](https://github.com/nushell/nushell/pull/15536) | +| [@blindFS](https://github.com/blindFS) | fix(lsp): more accurate command name highlight/rename | [#15540](https://github.com/nushell/nushell/pull/15540) | +| [@blindFS](https://github.com/blindFS) | fix(completion): quoted cell path completion | [#15546](https://github.com/nushell/nushell/pull/15546) | +| [@blindFS](https://github.com/blindFS) | refactor(lsp): flat_map with mutable accumulator | [#15567](https://github.com/nushell/nushell/pull/15567) | +| [@blindFS](https://github.com/blindFS) | fix(lsp): a panic caused by completion with decl_id out of range | [#15576](https://github.com/nushell/nushell/pull/15576) | +| [@blindFS](https://github.com/blindFS) | fix(lsp): regression of semantic tokens of module-prefixed commands | [#15603](https://github.com/nushell/nushell/pull/15603) | +| [@cosineblast](https://github.com/cosineblast) | Inter-Job direct messaging | [#15253](https://github.com/nushell/nushell/pull/15253) | +| [@cosineblast](https://github.com/cosineblast) | Add job tags | [#15555](https://github.com/nushell/nushell/pull/15555) | +| [@cosineblast](https://github.com/cosineblast) | `config` commands now add frozen jobs to job table | [#15556](https://github.com/nushell/nushell/pull/15556) | +| [@cptpiepmatz](https://github.com/cptpiepmatz) | Add `--plugins` flag to `nu-std/testing.nu` | [#15552](https://github.com/nushell/nushell/pull/15552) | +| [@cptpiepmatz](https://github.com/cptpiepmatz) | Add `cat` and `get-content` to `open`'s search terms | [#15643](https://github.com/nushell/nushell/pull/15643) | +| [@fdncred](https://github.com/fdncred) | bump uutils crates to 0.0.30 | [#15316](https://github.com/nushell/nushell/pull/15316) | +| [@fdncred](https://github.com/fdncred) | add more columns to macos `ps -l` | [#15341](https://github.com/nushell/nushell/pull/15341) | +| [@fdncred](https://github.com/fdncred) | update human-date-parser to 3.0 | [#15426](https://github.com/nushell/nushell/pull/15426) | +| [@fdncred](https://github.com/fdncred) | bump to the latest rust version | [#15483](https://github.com/nushell/nushell/pull/15483) | +| [@fdncred](https://github.com/fdncred) | Revert "Fix #15394 for `table -e` wrapping issue" | [#15498](https://github.com/nushell/nushell/pull/15498) | +| [@fdncred](https://github.com/fdncred) | fix `datetime-diff` so that it reports ms, us, ns as well | [#15537](https://github.com/nushell/nushell/pull/15537) | +| [@fdncred](https://github.com/fdncred) | add `--raw-value` option to `debug` command | [#15581](https://github.com/nushell/nushell/pull/15581) | +| [@fdncred](https://github.com/fdncred) | add more details to `decribe -d` | [#15591](https://github.com/nushell/nushell/pull/15591) | +| [@fdncred](https://github.com/fdncred) | bump reedline to 75f2c50 | [#15659](https://github.com/nushell/nushell/pull/15659) | +| [@fennewald](https://github.com/fennewald) | Limit Allowed `serde_json` Versions to Match Usage | [#15504](https://github.com/nushell/nushell/pull/15504) | +| [@g2p](https://github.com/g2p) | Upgrade calamine dependency to fix zip semver breakage | [#15657](https://github.com/nushell/nushell/pull/15657) | +| [@hfrentzel](https://github.com/hfrentzel) | Run scripts of any file extension in PATHEXT on Windows | [#15611](https://github.com/nushell/nushell/pull/15611) | +| [@hustcer](https://github.com/hustcer) | Fix upgrading and checking of typos | [#15454](https://github.com/nushell/nushell/pull/15454) | +| [@hustcer](https://github.com/hustcer) | Update Nu to 0.103.0 for release workflow and improve Windows OS checks | [#15625](https://github.com/nushell/nushell/pull/15625) | +| [@jjflash95](https://github.com/jjflash95) | Fix #15440 default --empty fails at empty streams | [#15562](https://github.com/nushell/nushell/pull/15562) | +| [@kidrigger](https://github.com/kidrigger) | Fix examples about RFC3339 format in `date now` and `format date`. | [#15563](https://github.com/nushell/nushell/pull/15563) | +| [@lazenga](https://github.com/lazenga) | Fix #13546: Outer joins incorrectly removing unmatched rows | [#15472](https://github.com/nushell/nushell/pull/15472) | +| [@migraine-user](https://github.com/migraine-user) | Fix typo in doc_config.nu + small description | [#15461](https://github.com/nushell/nushell/pull/15461) | +| [@mokurin000](https://github.com/mokurin000) | fix(nu-command): support ACL, SELinux, e.g. in cd have_permission check | [#15360](https://github.com/nushell/nushell/pull/15360) | +| [@mztikk](https://github.com/mztikk) | Consider PATH when running command is nuscript in windows | [#15486](https://github.com/nushell/nushell/pull/15486) | +| [@pyz4](https://github.com/pyz4) | `polars cast`: add decimal option for dtype parameter | [#15464](https://github.com/nushell/nushell/pull/15464) | +| [@pyz4](https://github.com/pyz4) | `polars into-df`/`polars into-lazy`: `--schema` will not throw error if only some columns are defined | [#15473](https://github.com/nushell/nushell/pull/15473) | +| [@pyz4](https://github.com/pyz4) | FIX `polars as-datetime`: ignores timezone information on conversion | [#15490](https://github.com/nushell/nushell/pull/15490) | +| [@pyz4](https://github.com/pyz4) | `polars`: add new command `polars replace-time-zone` | [#15538](https://github.com/nushell/nushell/pull/15538) | +| [@pyz4](https://github.com/pyz4) | `polars`: add new command `polars convert-time-zone` | [#15550](https://github.com/nushell/nushell/pull/15550) | +| [@pyz4](https://github.com/pyz4) | `polars`: add new command `polars over` | [#15551](https://github.com/nushell/nushell/pull/15551) | +| [@pyz4](https://github.com/pyz4) | `polars`: extend `NuExpression::extract_exprs` to handle records | [#15553](https://github.com/nushell/nushell/pull/15553) | +| [@pyz4](https://github.com/pyz4) | `polars`: update `get-` datetime components commands to allow expressions as inputs | [#15557](https://github.com/nushell/nushell/pull/15557) | +| [@pyz4](https://github.com/pyz4) | `polars`: update `polars lit` to handle nushell Value::Duration and Value::Date types | [#15564](https://github.com/nushell/nushell/pull/15564) | +| [@pyz4](https://github.com/pyz4) | `polars`: expand `polars col` to handle multiple columns and by types | [#15570](https://github.com/nushell/nushell/pull/15570) | +| [@pyz4](https://github.com/pyz4) | fix(polars): cast as date now returns Date type instead of Datetime\ | [#15574](https://github.com/nushell/nushell/pull/15574) | +| [@pyz4](https://github.com/pyz4) | feat(polars): add `polars truncate` for rounding datetimes | [#15582](https://github.com/nushell/nushell/pull/15582) | +| [@pyz4](https://github.com/pyz4) | feat(polars): loosen constraints on accepted expressions in `polars group-by` | [#15583](https://github.com/nushell/nushell/pull/15583) | +| [@pyz4](https://github.com/pyz4) | feat(polars): enable `as_date` and `as_datetime` to handle expressions as inputs | [#15590](https://github.com/nushell/nushell/pull/15590) | +| [@pyz4](https://github.com/pyz4) | feat(polars): add pow (`**`) operator for polars expressions | [#15598](https://github.com/nushell/nushell/pull/15598) | +| [@pyz4](https://github.com/pyz4) | fix(custom_value) + fix(polars): map `//` operator to FloorDivide for custom values and in polars | [#15599](https://github.com/nushell/nushell/pull/15599) | +| [@pyz4](https://github.com/pyz4) | fix(polars): remove requirement that pivot columns must be same type in `polars pivot` | [#15608](https://github.com/nushell/nushell/pull/15608) | +| [@pyz4](https://github.com/pyz4) | feat(polars): enable parsing decimals in polars schemas | [#15632](https://github.com/nushell/nushell/pull/15632) | +| [@pyz4](https://github.com/pyz4) | fix(polars): conversion from nanoseconds to time_units in Datetime and Duration parsing | [#15637](https://github.com/nushell/nushell/pull/15637) | +| [@pyz4](https://github.com/pyz4) | feat(polars): enable parsing strings as dates and datetime in polars schema | [#15645](https://github.com/nushell/nushell/pull/15645) | +| [@scarlet-storm](https://github.com/scarlet-storm) | Enable socks proxy support in ureq | [#15597](https://github.com/nushell/nushell/pull/15597) | +| [@sebasnallar](https://github.com/sebasnallar) | Add --follow-symlinks flag to glob command (fixes #15559) | [#15626](https://github.com/nushell/nushell/pull/15626) | +| [@sgvictorino](https://github.com/sgvictorino) | preserve variable capture spans in blocks | [#15334](https://github.com/nushell/nushell/pull/15334) | +| [@sgvictorino](https://github.com/sgvictorino) | enable streaming in `random` `binary`/`chars` | [#15361](https://github.com/nushell/nushell/pull/15361) | +| [@sgvictorino](https://github.com/sgvictorino) | reset argument/redirection state after `eval_call` errors | [#15400](https://github.com/nushell/nushell/pull/15400) | +| [@sholderbach](https://github.com/sholderbach) | Fix `to nuon --serialize` of closure | [#15357](https://github.com/nushell/nushell/pull/15357) | +| [@sholderbach](https://github.com/sholderbach) | Fix Exbibyte parsing | [#15515](https://github.com/nushell/nushell/pull/15515) | +| [@sholderbach](https://github.com/sholderbach) | Fix future clippy lints | [#15519](https://github.com/nushell/nushell/pull/15519) | +| [@sholderbach](https://github.com/sholderbach) | Bump `crossbeam-channel` | [#15541](https://github.com/nushell/nushell/pull/15541) | +| [@sholderbach](https://github.com/sholderbach) | Fix labelling of plugins through correct glob | [#15634](https://github.com/nushell/nushell/pull/15634) | +| [@suimong](https://github.com/suimong) | Improve `std/log` performance | [#15614](https://github.com/nushell/nushell/pull/15614) | +| [@vansh284](https://github.com/vansh284) | Improve completions for exact matches (Issue #14794) | [#15387](https://github.com/nushell/nushell/pull/15387) | +| [@vansh284](https://github.com/vansh284) | Substring Match Algorithm | [#15511](https://github.com/nushell/nushell/pull/15511) | +| [@whiter001](https://github.com/whiter001) | create nu_plugin_node_example.js | [#15482](https://github.com/nushell/nushell/pull/15482) | +| [@ysthakur](https://github.com/ysthakur) | Bump to 0.103.1 dev version | [#15347](https://github.com/nushell/nushell/pull/15347) | +| [@ysthakur](https://github.com/ysthakur) | Revert "Improve completions for exact matches (Issue #14794)" | [#15457](https://github.com/nushell/nushell/pull/15457) | +| [@ysthakur](https://github.com/ysthakur) | Enable exact match behavior for any path with slashes | [#15458](https://github.com/nushell/nushell/pull/15458) | +| [@zhiburt](https://github.com/zhiburt) | Fix #15394 for `table -e` wrapping issue | [#15407](https://github.com/nushell/nushell/pull/15407) | +| [@zhiburt](https://github.com/zhiburt) | fix f25525b | [#15500](https://github.com/nushell/nushell/pull/15500) |