Skip to content

Commit aaeaa36

Browse files
committed
0.94.1 release notes
1 parent 5dfc11d commit aaeaa36

File tree

1 file changed

+52
-90
lines changed

1 file changed

+52
-90
lines changed

blog/2024-05-30-nushell_0_94_1.md

Lines changed: 52 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,14 @@ title: Nushell 0.94.1
33
author: The Nu Authors
44
author_site: https://twitter.com/nu_shell
55
author_image: https://www.nushell.sh/blog/images/nu_logo.png
6-
excerpt: Today, we're releasing version 0.94.1 of Nu. This release adds...
6+
excerpt: Today, we're releasing version 0.94.1 of Nu. This is a patch release to fix issues introduced by 0.94.0.
77
---
8-
<!-- TODO: complete the excerpt above -->
98

109
# Nushell 0.94.1
1110

1211
Nushell, or Nu for short, is a new shell that takes a modern, structured approach to your command line. It works seamlessly with the data from your filesystem, operating system, and a growing number of file formats to make it easy to build powerful command line pipelines.
1312

14-
<!-- TODO: write this excerpt -->
15-
Today, we're releasing version 0.94.1 of Nu. This release adds...
13+
Today, we're releasing version 0.94.1 of Nu. This is a patch release to fix issues introduced by 0.94.0, including path expansion for external commands, `path type` changes, shell integration, and more.
1614

1715
# Where to get it
1816

@@ -21,114 +19,78 @@ Nu 0.94.1 is available as [pre-built binaries](https://github.com/nushell/nushel
2119
As part of this release, we also publish a set of optional plugins you can install and use with Nu. To install, use `cargo install nu_plugin_<plugin name>`.
2220

2321
# Table of content
22+
2423
- [_Highlights and themes of this release_](#highlights-and-themes-of-this-release-toc)
25-
- [_Changes to commands_](#changes-to-commands-toc)
26-
- [_Additions_](#additions-toc)
27-
- [_Breaking changes_](#breaking-changes-toc)
28-
- [_Deprecations_](#deprecations-toc)
29-
- [_Removals_](#removals-toc)
30-
- [_Other changes_](#other-changes-toc)
31-
- [_Bug fixes_](#bug-fixes-toc)
32-
- [_All breaking changes_](#all-breaking-changes-toc)
33-
- [_Notes for plugin developers_](#notes-for-plugin-developers)
24+
- [_Restore tilde expansion on external command names_](#restore-tilde-expansion-on-external-command-names-toc)
25+
- [_Fix handling of rest args in `do`_](#fix-handling-of-rest-args-in-do-toc)
26+
- [_Restore `path type` behavior_](#restore-path-type-behavior-toc)
27+
- [_Fix incorrect path handling in OSC9;9 shell integration_](#fix-incorrect-path-handling-in-osc9-9-shell-integration-toc)
28+
- [_Disallow more characters in arguments for internal `cmd.exe` commands_](#disallow-more-characters-in-arguments-for-internal-cmd-exe-commands-toc)
3429
- [_Hall of fame_](#hall-of-fame-toc)
3530
- [_Full changelog_](#full-changelog-toc)
36-
<!-- TODO: please add links to the other sections here
37-
38-
the following command should help pre-generate a great deal of the table of content.
39-
be careful with the format and false-positives :wink:
40-
```nushell
41-
rg '^#+ ' blog/...
42-
| lines
43-
| each {
44-
str replace '# ' '- '
45-
| str replace --all '#' ' '
46-
| str replace --regex '- (.*)' '- [_$1_](#$1-toc)'
47-
}
48-
| to text
49-
```
50-
-->
5131

5232
# Highlights and themes of this release [[toc](#table-of-content)]
53-
<!-- NOTE: if you wanna write a section about a breaking change, when it's a very important one,
54-
please add the following snippet to have a "warning" banner :)
55-
> see [an example](https://www.nushell.sh/blog/2023-09-19-nushell_0_85_0.html#pythonesque-operators-removal)
5633

57-
```md
58-
::: warning Breaking change
59-
See a full overview of the [breaking changes](#breaking-changes)
60-
:::
61-
```
62-
-->
63-
<!-- NOTE: see https://vuepress.github.io/reference/default-theme/markdown.html#custom-containers
64-
for the list of available *containers*
65-
-->
34+
## Restore tilde expansion on external command names [[toc](#table-of-content)]
35+
36+
Tilde expansion in the name of an external command was inadvertently removed from 0.94.0, so these no longer worked:
6637

67-
# Changes to commands [[toc](#table-of-content)]
38+
```nushell
39+
~/bin/foo
40+
^~/bin/bar
41+
run-external ~/bin/baz
42+
```
6843

69-
## Additions [[toc](#table-of-content)]
44+
This behavior has been restored by [#13001](https://github.com/nushell/nushell/pull/13001). We chose not to allow the following, for now (these still don't expand):
7045

71-
## Breaking changes [[toc](#table-of-content)]
46+
```nushell
47+
^"~/bin/foo"
48+
^$"~/bin/($env.BIN_NAME)"
49+
# and run-external with the same
50+
```
7251

73-
## Deprecations [[toc](#table-of-content)]
52+
This is to be consistent with our behavior in other places where quoted strings usually don't cause expansion of extra path features. It is possible to use `path expand` instead:
7453

75-
## Removals [[toc](#table-of-content)]
54+
```nushell
55+
^("~/bin/foo" | path expand)
56+
```
7657

77-
## Other changes [[toc](#table-of-content)]
58+
but we would like to make this more ergonomic somehow in a future release.
7859

79-
## Bug fixes [[toc](#table-of-content)]
60+
## Fix handling of rest args in `do` [[toc](#table-of-content)]
8061

81-
<!-- NOTE: to start investigating the contributions of last release, i like to list them all in a raw table.
82-
to achieve this, one can use the [`list-merged-prs` script from `nu_scripts`](https://github.com/nushell/nu_scripts/blob/main/make_release/release-note/list-merged-prs)
83-
as follows:
62+
A bug has existed for a little while when using `do` with a closure that takes rest args and also takes required or optional args.
8463

85-
```nushell
86-
use ./make_release/release-note/list-merged-prs
87-
use std clip
64+
```nushell
65+
do { |a, b, ...c| print $a $b $c } 1 2 3 4 5 6 7 8
66+
```
8867

89-
let last_release_date = ^gh api /repos/nushell/nushell/releases
90-
| from json
91-
| into datetime published_at
92-
| get published_at
93-
| sort
94-
| last
68+
Before the patch, this would print `1`, `2`, and then `[5 6 7 8]`, as the non-rest args were counted incorrectly. [@WindSoilder](https://github.com/WindSoilder) fixed this in [#13002](https://github.com/nushell/nushell/pull/13002), and that fix is included in this release. Thanks!
9569

96-
let prs = list-merged-prs nushell/nushell $last_release_date
97-
| sort-by mergedAt
98-
| update url {|it| $"[#($it.number)]\(($it.url)\)" }
99-
| update author { $"[@($in)]\(https://github.com/($in)\)" }
100-
| select author title url
101-
| rename -c {url: pr}
102-
| to md --pretty
70+
## Restore `path type` behavior [[toc](#table-of-content)]
10371

104-
$prs | to md --pretty | clip
105-
```
106-
-->
72+
In 0.94.0, we changed `path type` to return an error for non-existent paths rather than an empty string, but we didn't communicate this change thoroughly enough and it broke some tools like `zoxide`. We've decided to go back to the previous behavior for now and revisit this later.
10773

108-
# All breaking changes [[toc](#table-of-content)]
109-
<!-- TODO:
110-
paste the output of
111-
```nu
112-
./make_release/release-note/list-merged-prs nushell/nushell --label pr:breaking-change --pretty --no-author
113-
```
114-
here
115-
-->
74+
Fixed by [@IanManske](https://github.com/IanManske) in [#13006](https://github.com/nushell/nushell/pull/13006).
11675

117-
## Notes for plugin developers
76+
## Fix incorrect path handling in OSC9;9 shell integration [[toc](#table-of-content)]
11877

119-
# Hall of fame [[toc](#table-of-content)]
78+
This escape sequence is used to tell terminals where the current directory is. This is helpful for terminals that open new tabs in the same directory, e.g. "Duplicate Tab" in Windows Terminal. A slash was being added incorrectly to the beginning here, which broke Windows.
12079

121-
Thanks to all the contributors below for helping us solve issues and improve documentation :pray:
80+
Fixed by [@fdncred](https://github.com/fdncred) in [#12994](https://github.com/nushell/nushell/pull/12994).
12281

123-
| author | title | url |
124-
| ------------------------------------ | ----------- | ------------------------------------------------------- |
125-
| [@author](https://github.com/author) | ... | [#12345](https://github.com/nushell/nushell/pull/12345) |
82+
## Disallow more characters in arguments for internal `cmd.exe` commands [[toc](#table-of-content)]
83+
84+
Properly escaping command arguments on Windows is [complicated](https://flatt.tech/research/posts/batbadbut-you-cant-securely-execute-commands-on-windows/), and we weren't correctly rejecting certain potentially unsafe arguments to the `cmd.exe` builtins we support (such as `mklink`). As we would prefer that you only have to learn one set of escaping rules to use Nushell properly, this is undesirable behavior, so [@IanManske](https://github.com/IanManske) has fixed it in [#13009](https://github.com/nushell/nushell/pull/13009).
12685

12786
# Full changelog [[toc](#table-of-content)]
128-
<!-- TODO:
129-
paste the output of
130-
```nu
131-
./make_release/release-note/get-full-changelog
132-
```
133-
here
134-
-->
87+
88+
- [IanManske](https://github.com/IanManske) created
89+
- [Disallow more characters in arguments for internal `cmd` commands](https://github.com/nushell/nushell/pull/13009)
90+
- [Restore `path type` behavior](https://github.com/nushell/nushell/pull/13006)
91+
- [WindSoilder](https://github.com/WindSoilder) created
92+
- [fix do closure with both required, options, and rest args](https://github.com/nushell/nushell/pull/13002)
93+
- [devyn](https://github.com/devyn) created
94+
- [Restore tilde expansion on external command names](https://github.com/nushell/nushell/pull/13001)
95+
- [fdncred](https://github.com/fdncred) created
96+
- [fixes a bug in OSC9;9 execution](https://github.com/nushell/nushell/pull/12994)

0 commit comments

Comments
 (0)