This release brings 234 new commits since 4.7.1, contributed by 39 authors, 21 of which are new faces.
Notable improvements and fixes
- Translatable messages defined in Rust source code can and should now be translated using Fluent instead of GNU gettext. To make Fluent easy to work with, we have added tooling based on the new fluent-ftl-tools library. See Contributing Translations (#11928).
Deprecations and removed features
- Builtin complete’s
--commandand--pathoptions no longer unescape their argument.
Interactive improvements
- History search would sometimes forget about commands after those were re-run in concurrent sessions. This has been fixed (#10300).
fish_hg_prompt,fish_git_promptandfish_fossil_promptnow strip control characters from VCS state read off disk, matchingprompt_pwd.- Abbreviations with
--position=anywherecan now be completed in argument position, not just in command position (#12630). - Path component movement (
ctrl-w) skips escaped characters. - Completion of short option groups will now handle
--conditioncorrectly (#12821). - Fixed an issue where
ctrl-cmight fail to cancel certain functions (#12802). - On the first run after upgrading from an older version, fish will try harder to check if the current theme matches a historical default. If it does match, fish won’t create
~/.config/fish/conf.d/fish_frozen_theme.fishwhen upgrading from fish < 4.3. In particular, on systems where fish version 3.x was installed originally, fish will now avoid creating that file on upgrade (#12725).
Scripting improvements
cdsupports the-Land-Poptions, like other shells, to allow specifying whether symbolic links (symlinks) are resolved when changing directories (#7206).cdwith a relative path will now retry using the real current directory, if$PWDhas been moved (#12700).- Nested brace expansions now strip unquoted leading and trailing spaces from entries consistently (#12794).
- bind shows the files where bindings were defined (#12504).
Other improvements
- fish no longer creates the
__fish_initializeduniversal variable on startup. If you don’t expect to need to downgrade to earlier versions, you can remove it withset --erase __fish_initialized. This means that fish now only creates universal variables if instructed by the user.
For distributors and developers
- With the exception of the
$CMAKE_INSTALL_PREFIX/share/fish/mandirectory, fish no longer installs files to$CMAKE_INSTALL_PREFIX/share/fish. In particular, this means that both$CMAKE_INSTALL_PREFIX/share/fish/completionsand$CMAKE_INSTALL_PREFIX/share/fish/functionsshould no longer exist. These directories have been ignored since fish 4.2. If another package installs fish scripts there, they should be corrected to install toextra_completionsdir(typically$CMAKE_INSTALL_PREFIX/share/fish/vendor_completions.d),extra_functionsdir(typically$CMAKE_INSTALL_PREFIX/share/fish/vendor_functions.d) orextra_confdir(typically$CMAKE_INSTALL_PREFIX/share/fish/vendor_functions.d) instead. See also the output offor var in completions functions conf; pkgconf fish --variable="$var"dir; end.
Regression fixes:
- (from 4.4.0) Vi mode
c,Wkey binding wrongly deleted trailing spaces (#12790). - (from 4.4.0) Vi mode
xin builtin read (#12724). - (from 4.3.3) Repeated tab would sometimes insert smartcase completions redundantly.
- (from 4.3.0) Pressing escape during command execution could insert garbage text into the command line (#12379).
Thanks to everyone who contributed through issue discussions, code reviews, or code changes.
Welcome our new committers: Clément Bœsch, Deepak kudi, Drazape, Hans Larsen, Harry Garrood, Jian Weihang, Jonas Natten, June Kim, Justin Su, KeloYuan, Mark Otzen, Michael Morgan, Milo, Sean Reifschneider, Tunglies, Wes Higbee, cyphercodes, ketal, ritoban23, saku0512, sorgel
Welcome back our returning committers: Asuka Minato, Collin Styles, Daniel Rainer, David Adam, Fabian Boehm, Henrik Hørlück Berg, Johannes Altmanninger, Mahmoud Al-Qudsi, Nahor, Peter Ammon, PowerUser64, Remo Senekowitsch, Shayan, Tristan Partin, Vishrut Sachan, huaji2369, visrosa, xtqqczze
Download links: To download the source code for fish, we suggest the file named fish-4.8.0.tar.xz. The file downloaded from Source code (tar.gz) will not build correctly. A GPG signature using this key is available as fish-4.8.0.tar.xz.asc.
The files called fish-4.8.0-linux-*.tar.xz contain standalone fish binaries for any Linux with the given CPU architecture.
macOS packages will be uploaded soon