You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
-[_Better Windows releases_](#better-windows-releases-toc)
33
+
-[_HTTP by default_](#http-by-default-toc)
34
+
-[_More Polars_](#more-polars-toc)
35
+
-[_Changes_](#changes-toc)
36
+
-[_Additions_](#additions-toc)
37
+
-[_Ignore fields in simple `parse` patterns with `_`_](#ignore-fields-in-simple-parse-patterns-with-toc)
38
+
-[_Lazy closure evaluation for `default`_](#lazy-closure-evaluation-for-default-toc)
39
+
-[_`path join` can now read byte stream input_](#path-join-can-now-read-byte-stream-input-toc)
40
+
-[_`run-external` spreads command if it's a list_](#run-external-spreads-command-if-it-s-a-list-toc)
41
+
-[_Improvements to `bench`_](#improvements-to-bench-toc)
42
+
-[_`overlay new -r` can now reset overlays_](#overlay-new-r-can-now-reset-overlays-toc)
43
+
-[_See env variables as externals would_](#see-env-variables-as-externals-would-toc)
44
+
-[_Use PowerShell scripts from the `$env.PATH`_](#use-powershell-scripts-from-the-env-path-toc)
45
+
-[_Make your table look like they are from neovim_](#make-your-table-look-like-they-are-from-neovim-toc)
46
+
-[_Center columns via `to md --center`_](#center-columns-via-to-md-center-toc)
47
+
-[_Prefer OSC 9;9 on Windows over OSC 7_](#prefer-osc-9-9-on-windows-over-osc-7-toc)
48
+
-[_Disable expensive calculations with `gstat --disable-tag`_](#disable-expensive-calculations-with-gstat-disable-tag-toc)
49
+
-[_Know what `open` and `save` can do with `std/help`_](#know-what-open-and-save-can-do-with-std-help-toc)
50
+
-[_Content type of `view span`_](#content-type-of-view-span-toc)
51
+
-[_Breaking changes_](#breaking-changes-toc)
52
+
-[_Cell-paths with case-sensitivity and without`!`_](#cell-paths-with-case-sensitivity-and-without-toc)
53
+
-[_Paths on lazy frames now produce expressions_](#paths-on-lazy-frames-now-produce-expressions-toc)
54
+
-[_Bug fixes and other changes_](#bug-fixes-and-other-changes-toc)
55
+
-[_Notes for plugin developers_](#notes-for-plugin-developers-toc)
56
+
-[_Construct `IoError` from `std::io::Error` instead of `std::io::ErrorKind`_](#construct-ioerror-from-std-io-error-instead-of-std-io-errorkind-toc)
57
+
-[_Hall of fame_](#hall-of-fame-toc)
58
+
-[_Full changelog_](#full-changelog-toc)
25
59
<!-- TODO: once all the content below is finished and committed, `use nu_scripts/make_release/release-note/notes.nu *` and run `write-toc $this_file`. -->
26
60
27
-
# Highlights and themes of this release
61
+
# Highlights and themes of this release[[toc](#table-of-contents)]
28
62
29
63
<!-- NOTE: if you wanna write a section about a breaking change, when it's a very important one,
30
64
please add the following snippet to have a "warning" banner :)
@@ -40,7 +74,7 @@ As part of this release, we also publish a set of optional [plugins](https://www
40
74
for the list of available *containers*
41
75
-->
42
76
43
-
## One `where` to rule them all
77
+
## One `where` to rule them all[[toc](#table-of-contents)]
44
78
45
79
`where` used to support only row conditions and literal closures for filtering rows.
46
80
If you wanted to use stored closures, you had to use `filter`.
@@ -50,7 +84,7 @@ In [#15697](https://github.com/nushell/nushell/pull/15697), [@Bahex](https://git
50
84
51
85
Now, `where` can be used as a drop-in replacement for `filter`.
52
86
53
-
## Better deprecations
87
+
## Better deprecations[[toc](#table-of-contents)]
54
88
55
89
You can now use the `@deprecated` attribute on custom commands to mark them as deprecated, thanks to [@132ikl](https://github.com/132ikl) in [#15770](https://github.com/nushell/nushell/pull/15770). Pass a string as the first argument to show a custom deprecation message. You can also add flags to give more details:
56
90
@@ -67,7 +101,7 @@ For example:
67
101
def my-old-command [] {}
68
102
```
69
103
70
-
## `oneof` the things
104
+
## `oneof` the things[[toc](#table-of-contents)]
71
105
72
106
Built-in commands have long used `SyntaxShape::OneOf` to accept multiple possible types.
73
107
Custom commands couldn't do this until [#15646](https://github.com/nushell/nushell/pull/15646), when [@Bahex](https://github.com/Bahex) added the `oneof<...>` type to declare type alternatives.
@@ -80,7 +114,7 @@ def foo [
80
114
] { .. }
81
115
```
82
116
83
-
## Case-sensitive cell-paths or not`!`
117
+
## Case-sensitive cell-paths or not`!`[[toc](#table-of-contents)]
84
118
85
119
Before, it wasn't clear if cell-paths were case-sensitive, so some commands expected case sensitivity while others didn't.
86
120
[@Bahex](https://github.com/Bahex) fixed this in [#15692](https://github.com/nushell/nushell/pull/15692).
@@ -104,7 +138,7 @@ The `--sensitive` and `--insensitive` flags still work but some are now deprecat
104
138
105
139
You can also use the new syntax to say: get `"foo"` case-insensitively, or return nothing if not found: `get foo?!`.
This release adds a new `recurse` command in `std-rfc/iter`, as an equivalent to jq's `recurse`/`..`.
110
144
@@ -158,20 +192,20 @@ http get 'https://www.nushell.sh/rss.xml'
158
192
# => This week in Nushell #296
159
193
```
160
194
161
-
## No more `openssl`
195
+
## No more `openssl`[[toc](#table-of-contents)]
162
196
163
-
If you've built nushell on Linux, you probably had to install openssl libraries because we linked to it by default.
164
-
This version switches fully to [rustls](https://github.com/rustls/rustls), a pure Rust TLS library, making builds simpler.
197
+
If you've built nushell on Linux, you probably had to install openssl libraries because we linked to it by default.
198
+
This version switches fully to [rustls](https://github.com/rustls/rustls), a pure Rust TLS library, making builds simpler.
165
199
The change was made by [@cptpiepmatz](https://github.com/cptpiepmatz) in [#15810](https://github.com/nushell/nushell/pull/15810), and [#15812](https://github.com/nushell/nushell/pull/15812) added support for older platforms.
166
200
167
201
If you still need openssl, build with `--no-default-features --features plugin,trash-support,sqlite,native-tls`.
168
202
169
-
## Better Windows releases
203
+
## Better Windows releases[[toc](#table-of-contents)]
170
204
171
205
Thanks to [@hustcer](https://github.com/hustcer), our Windows releases are now much improved.
172
206
Check out the [Nushell 0.104.1 blog post](https://www.nushell.sh/blog/2025-05-23-nushell_0_104_1.html) for more details.
173
207
174
-
## HTTP by default
208
+
## HTTP by default[[toc](#table-of-contents)]
175
209
176
210
Running `http get example.com` used to fail because the command needed a full URL.
177
211
[@noahfraiture](https://github.com/noahfraiture) fixed this in [#15804](https://github.com/nushell/nushell/pull/15804) by letting Nushell add `http://` when the scheme is missing.
@@ -180,7 +214,7 @@ Now you can write:
180
214
-`http get example.com`
181
215
-`http get :8000` goes to [http://localhost:8000](http://localhost:8000)
182
216
183
-
## More Polars
217
+
## More Polars[[toc](#table-of-contents)]
184
218
185
219
This release adds several new `polars` commands:
186
220
@@ -194,11 +228,11 @@ Thanks to [@pyz4](https://github.com/pyz4), `polars unique` ([#15771](https://gi
194
228
195
229
[@pyz4](https://github.com/pyz4) also added new `polars math` expressions in [#15822](https://github.com/nushell/nushell/pull/15822).
196
230
197
-
# Changes
231
+
# Changes[[toc](#table-of-contents)]
198
232
199
-
## Additions
233
+
## Additions[[toc](#table-of-contents)]
200
234
201
-
### Ignore fields in simple `parse` patterns with `_`
235
+
### Ignore fields in simple `parse` patterns with `_`[[toc](#table-of-contents)]
202
236
203
237
[@132ikl](https://github.com/132ikl) added the option to use the placeholder `_` to ignore fields in [#15873](https://github.com/nushell/nushell/pull/15873).
204
238
@@ -211,7 +245,7 @@ Thanks to [@pyz4](https://github.com/pyz4), `polars unique` ([#15771](https://gi
211
245
# => ╰───┴───────╯
212
246
```
213
247
214
-
### Lazy closure evaluation for `default`
248
+
### Lazy closure evaluation for `default`[[toc](#table-of-contents)]
215
249
216
250
`default` can now take a closure for a default value instead of a direct value thanks to [@Mrfiregem](https://github.com/Mrfiregem) in [#15654](https://github.com/nushell/nushell/pull/15654).
217
251
These closure are lazily evaluated and cached.
@@ -221,15 +255,15 @@ ls | default { sleep 5sec; 'N/A' } name # => No-op since `name` column is never
221
255
ls | default { sleep 5sec; 'N/A' } foo bar # => creates columns `foo` and `bar`; only takes 5 seconds since closure result is cached
222
256
```
223
257
224
-
### `path join` can now read byte stream input
258
+
### `path join` can now read byte stream input[[toc](#table-of-contents)]
225
259
226
260
When commands return a path, thanks to [@Mrfiregem](https://github.com/Mrfiregem) in [#15736](https://github.com/nushell/nushell/pull/15736), you can now call `path join` directly without having to use `collect`.
227
261
228
262
```nu
229
263
^pwd | path join foo
230
264
```
231
265
232
-
### `run-external` spreads command if it's a list
266
+
### `run-external` spreads command if it's a list[[toc](#table-of-contents)]
233
267
234
268
With the addition of [#15776](https://github.com/nushell/nushell/pull/15776) by [@Mrfiregem](https://github.com/Mrfiregem), `run-external` (or calling an external) can now use a list to support arguments.
### Improvements to `bench`[[toc](#table-of-contents)]
242
276
243
277
[@Tyarel8](https://github.com/Tyarel8) added some improvements to `bench` in [#15843](https://github.com/nushell/nushell/pull/15843) and [#15856](https://github.com/nushell/nushell/pull/15856).
244
278
It is now possible to pass multiple closures into `bench` to compare and added the flags:
@@ -249,20 +283,20 @@ It is now possible to pass multiple closures into `bench` to compare and added t
249
283
-`--conclude`
250
284
-`--ignore-errors`
251
285
252
-
### `overlay new -r` can now reset overlays
286
+
### `overlay new -r` can now reset overlays[[toc](#table-of-contents)]
253
287
254
288
[@WindSoilder](https://github.com/WindSoilder) added the option to reset new overlays via `overlay new -r` in [#15849](https://github.com/nushell/nushell/pull/15849).
255
289
256
-
### See env variables as externals would
290
+
### See env variables as externals would[[toc](#table-of-contents)]
257
291
258
292
In [#15875](https://github.com/nushell/nushell/pull/15875) did [@cptpiepmatz](https://github.com/cptpiepmatz) add the command `debug env` to get a record of how an external would get the environment variables.
259
293
This includes handling the `$env.PATH` and all env conversions.
260
294
261
-
### Use PowerShell scripts from the `$env.PATH`
295
+
### Use PowerShell scripts from the `$env.PATH`[[toc](#table-of-contents)]
262
296
263
297
[@fdncred](https://github.com/fdncred) made it possible in [#15760](https://github.com/nushell/nushell/pull/15760) to execute powershell scripts from anywhere if they are in the `$env.PATH`.
264
298
265
-
### Make your table look like they are from neovim
299
+
### Make your table look like they are from neovim[[toc](#table-of-contents)]
266
300
267
301
[@gmr458](https://github.com/gmr458) added the new table mode `"single"` to `$env.config.table.mode` in [#15672](https://github.com/nushell/nushell/pull/15672).
268
302
It looks like the `"default"` with sharp corners or `"heavy"` with thinner lines:
@@ -278,7 +312,7 @@ scope commands | select name category | first 2
278
312
# => └───┴───────┴──────────┘
279
313
```
280
314
281
-
### Center columns via `to md --center`
315
+
### Center columns via `to md --center`[[toc](#table-of-contents)]
282
316
283
317
[@lazenga](https://github.com/lazenga) added in [#15861](https://github.com/nushell/nushell/pull/15861) the flag `--center` to `to md`.
284
318
With it you can pass a list of cell-paths to center in the markdown output.
@@ -291,38 +325,38 @@ version | select version build_time | transpose k v | to md --center [v] --prett
291
325
# => | build_time | 2025-06-08 23:31:40 +02:00 |
292
326
```
293
327
294
-
### Prefer OSC 9;9 on Windows over OSC 7
328
+
### Prefer OSC 9;9 on Windows over OSC 7[[toc](#table-of-contents)]
295
329
296
330
[@ofek](https://github.com/ofek) made `$env.config.shell_integration.osc7 = false` by default on Windows in favor of `$env.config.shell_integration.osc9_9 = true` in [#15914](https://github.com/nushell/nushell/pull/15914).
297
331
298
-
### Disable expensive calculations with `gstat --disable-tag`
332
+
### Disable expensive calculations with `gstat --disable-tag`[[toc](#table-of-contents)]
299
333
300
334
In [#15893](https://github.com/nushell/nushell/pull/15893) did [@snickerdoodle2](https://github.com/snickerdoodle2) add the option `--disable-tag` to disable some of the heavy calculations of the `gstat` plugin.
301
335
302
-
### Know what `open` and `save` can do with `std/help`
336
+
### Know what `open` and `save` can do with `std/help`[[toc](#table-of-contents)]
303
337
304
338
`open` and `save` can use `from` and `to` to convert data types.
305
339
With the addition of [@weirdan](https://github.com/weirdan) in [#15651](https://github.com/nushell/nushell/pull/15651),
306
340
the `std/help` command can now show these conversions.
307
341
308
-
### Content type of `view span`
342
+
### Content type of `view span`[[toc](#table-of-contents)]
309
343
310
344
[@weirdan](https://github.com/weirdan) added in [#15842](https://github.com/nushell/nushell/pull/15842) a content type to `view span`.
311
345
If your display hook highlights content types, will this be a nice addition.
312
346
313
-
## Breaking changes
347
+
## Breaking changes[[toc](#table-of-contents)]
314
348
315
-
### Cell-paths with case-sensitivity and without`!`
349
+
### Cell-paths with case-sensitivity and without`!`[[toc](#table-of-contents)]
316
350
317
351
The new cell-path syntax `!`, introduced by [@Bahex](https://github.com/Bahex) in [#15692](https://github.com/nushell/nushell/pull/15692), may break some commands.
318
352
If your commands relied on case-insensitive paths, please check your code.
319
353
320
-
### Paths on lazy frames now produce expressions
354
+
### Paths on lazy frames now produce expressions[[toc](#table-of-contents)]
321
355
322
356
Thanks to [@ayax79](https://github.com/ayax79) in [#15891](https://github.com/nushell/nushell/pull/15891), paths on lazy frames now generate expressions.
323
357
You will need to use `polar collect` to evaluate them.
324
358
325
-
## Bug fixes and other changes
359
+
## Bug fixes and other changes[[toc](#table-of-contents)]
326
360
327
361
<!-- TODO: remove these tables after proper text segments -->
328
362
|author|title|link|
@@ -361,14 +395,14 @@ You will need to use `polar collect` to evaluate them.
361
395
|[@zhiburt](https://github.com/zhiburt)|Fix #15653 regression with not counting padding properly|[#15704](https://github.com/nushell/nushell/pull/15704)|
362
396
|[@zhiburt](https://github.com/zhiburt)|nu-table: (table --expand) Remove unnecessary use of truncate logic|[#15727](https://github.com/nushell/nushell/pull/15727)|
363
397
364
-
# Notes for plugin developers
398
+
# Notes for plugin developers[[toc](#table-of-contents)]
365
399
366
-
## Construct `IoError` from `std::io::Error` instead of `std::io::ErrorKind`
400
+
## Construct `IoError` from `std::io::Error` instead of `std::io::ErrorKind`[[toc](#table-of-contents)]
367
401
368
402
To give us better control over IO errors, [@cptpiepmatz](https://github.com/cptpiepmatz) changed in [#15777](https://github.com/nushell/nushell/pull/15777) how `IoError`s are created. Now they’re built directly from `std::io::Error` instead of just the `ErrorKind`.
369
403
Just remove the calls to `.kind()` and you're good to go.
370
404
371
-
# Hall of fame
405
+
# Hall of fame[[toc](#table-of-contents)]
372
406
373
407
Thanks to all the contributors below for helping us solve issues, improve documentation, refactor code, and more! :pray:
374
408
@@ -418,7 +452,7 @@ Thanks to all the contributors below for helping us solve issues, improve docume
418
452
|[@ysthakur](https://github.com/ysthakur)|Bump to 0.104.1 dev version|[#15669](https://github.com/nushell/nushell/pull/15669)|
419
453
|[@ysthakur](https://github.com/ysthakur)|Use Default for making Suggestions in attribute_completions|[#15764](https://github.com/nushell/nushell/pull/15764)|
0 commit comments