github fish-shell/fish-shell 4.2.0
fish 4.2.0

7 hours ago

This release comprises 473 commits since 4.1.2, contributed by 35 authors, 15 of which are new committers.

Notable improvements and fixes

  • History-based autosuggestions now include multi-line commands.
  • A transient prompt containing more lines than the final prompt will now be cleared properly (#11875).
  • Taiwanese Chinese translations have been added.
  • French translations have been supplemented (#11842).

Deprecations and removed features

  • fish now assumes UTF-8 for character encoding even if the system does not have a UTF-8 locale. Input bytes which are not valid UTF-8 are still round-tripped correctly. For example, file paths using legacy encodings can still be used, but may be rendered differently on the command line.
  • On systems where no multi-byte locale is available, fish will no longer fall back to using ASCII replacements for Unicode characters such as “…”.

Interactive improvements

  • The title of the terminal tab can now be set separately from the window title by defining the fish_tab_title function (#2692).
  • fish now hides the portion of a multiline prompt that is scrolled out of view due to a huge command line. This prevents duplicate lines after repainting with partially visible prompt (#11911).
  • fish_config prompt’s choose and save subcommands have been taught to reset fish_mode_prompt in addition to the other prompt functions (#11937).
  • fish no longer force-disables mouse capture (DECSET/DECRST 1000), so you can use those commands to let mouse clicks move the cursor or select completions items (#4918).
  • The alt-p binding no longer adds a redundant space to the command line.
  • When run as a login shell on macOS, fish now sets MANPATH correctly when that variable was already present in the environment (#10684).
  • A Windows-specific case of the web-based config failing to launch has been fixed (#11805).
  • A MSYS2-specific workaround for Konsole and WezTerm has been added, to prevent them from using the wrong working directory when opening new tabs (#11981).

For distributors and developers

  • Release tags and source code tarballs are GPG-signed again (#11996).
  • Documentation in release tarballs is now built with the latest version of Sphinx, which means that pre-built man pages include OSC 8 hyperlinks.
  • The Sphinx dependency is now specified in pyproject.toml, which allows you to use uv to provide Sphinx for building documentation (e.g. uv run cargo install --path .).
  • The minimum supported Rust version (MSRV) has been updated to 1.85.
  • The standalone build mode has been made the default. This means that the files in $CMAKE_INSTALL_PREFIX/share/fish will not be used anymore, except for HTML docs. As a result, future upgrades will no longer break running shells if one of fish’s internal helper functions has been changed in the updated version. For now, the data files are still installed redundantly, to prevent upgrades from breaking already-running shells (#11921). To reverse this change (which should not be necessary), patch out the embed-data feature from cmake/Rust.cmake. This option will be removed in future.
  • OpenBSD 7.8 revealed an issue with fish’s approach to displaying builtin man pages, which has been fixed.

Regression fixes:

  • (from 4.1.0) Fix the web-based config for Python 3.9 and older (#12039).
  • (from 4.1.0) Correct wrong terminal modes set by fish -c 'read; cat (#12024).
  • (from 4.1.0) On VTE-based terminals, stop redrawing the prompt on resize again, to avoid glitches.
  • (from 4.1.0) On MSYS2, fix saving/loading of universal variables (#11948).
  • (from 4.1.0) Fix error using man for the commands ! . : [ { (#11955).
  • (from 4.1.0) Fix build issues on illumos systems (#11982).
  • (from 4.1.0) Fix crash on invalid function command (#11912).
  • (from 4.0.0) Fix build on SPARC and MIPS Linux by disabling SIGSTKFLT.
  • (from 4.0.0) Fix crash when passing negative PIDs to builtin wait (#11929).
  • (from 4.0.0) On Linux, fix status fish-path output when fish has been reinstalled since it was started.

Thanks to everyone who contributed through issue discussions, code reviews, or code changes.

Welcome our new committers: Ada Magicat, Aditya Bhargava, Alan Wu, Jesse Harwin, John Paul Adrian Glaubitz, Kabakov Grigoriy, Kaya Arro, Lumynous, Nahor, SandWood Jones, Shigure Kurosaki, ken, qianlongzt, seg6, traal

Welcome back our returning committers: Asuka Minato, Daniel Rainer, David Adam, Fabian Boehm, Henrik Hørlück Berg, Ilya Grigoriev, Integral, Isaac Oscar Gariano, Jiangqiu Shen, Johannes Altmanninger, Luca Weiss, Michael Nickerson, Peter Ammon, Sebastian Fleer, The0x539, Xiretza, kerty, ridiculousfish, Étienne Deparis, 王宇逸


Download links: To download the source code for fish, we suggest the file named fish-4.2.0.tar.xz. The file downloaded from Source code (tar.gz) will not build correctly. A GPG signature using the key published at https://github.com/krobelus.gpg is available as fish-4.2.0.tar.xz.asc.

The files called fish-4.2.0-linux-*.tar.xz contain standalone fish binaries for any Linux with the given CPU architecture.

macOS packages will be uploaded soon.

Don't miss a new fish-shell release

NewReleases is sending notifications on new releases.