Releases · fish-shell/fish-shell
fish 4.5.0
This is mostly a patch release for Vi mode regressions in 4.4.0 but other minor behavior changes are included as well.
This release comprises 68 commits since 4.4.0, contributed by 16 authors, 8 of which are new committers.
Interactive improvements
ctrl-lno longer cancels history search (#12436).- History search cursor positioning now works correctly with characters of arbitrary width.
Deprecations and removed features
- fish no longer reads the terminfo database to alter behaviour based on the
TERMenvironment variable, and does not depend on ncurses or terminfo. Theignore-terminfofeature flag, introduced and enabled by default in fish 4.1, is now permanently enabled. fish may no longer work correctly on Data General Dasher D220 and Wyse WY-350 terminals, but should continue to work on all known terminal emulators released in the 21st century.
Regression fixes:
- (from 4.4.0) Vi mode
d,fkey binding did not work (#12417). - (from 4.4.0) Vi mode
c,wkey binding wrongly deleted trailing spaces (#12443). - (from 4.4.0) Vi mode crash on
c,i,wafter accepting autosuggestion (#12430). - (from 4.4.0)
fish_vi_key_bindingscalled with a mode argument produced an error (#12413). - (from 4.0.0) Build on Illumos (#12410).
Thanks to everyone who contributed through issue discussions, code reviews, or code changes.
Welcome our new committers: Aman Verma, Jack Pickle, Liam Snow, Pothi Kalimuthu, Salman Muin Kayser Chishti, Simon Olofsson, Tristan Partin, Weixie Cui
Welcome back our returning committers: Daniel Rainer, David Adam, Francisco Giordano, Johannes Altmanninger, Nahor, Peter Ammon, madblobfish, xtqqczze
Download links: To download the source code for fish, we suggest the file named fish-4.5.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.5.0.tar.xz.asc.
The files called fish-4.5.0-linux-*.tar.xz contain standalone fish binaries for any Linux with the given CPU architecture.
fish 4.4.0
This release comprises 215 commits since 4.3.3, contributed by 20 authors, 9 of which are new committers.
Deprecations and removed features
- The default fossil prompt has been disabled (#12342).
Interactive improvements
- The
bindbuiltin lists mappings from all modes if--modeis not provided (#12214). - Line-wise autosuggestions that don’t start a command are no longer shown (739b82c, 58e7a50).
- Builtin
historynow assumes thatPAGERsupports ANSI color sequences. - fish now clears the terminal’s
FLUSHOflag when acquiring control of the terminal, to fix an issue caused by pressingctrl-oon macOS (#12304).
New or improved bindings
- Vi mode word movements (
w,W,e, andE) are now largely in line with Vim. The only exception is that underscores are treated as word separators (#12269). - New special input functions to support these movements:
forward-word-vi,kill-word-vi,forward-bigword-vi,kill-bigword-vi,forward-word-end,backward-word-end,forward-bigword-end,backward-bigword-end,kill-a-word,kill-inner-word,kill-a-bigword, andkill-inner-bigword. - Vi mode key bindings now support counts for movement and deletion commands (e.g. d3w or 3l), via a new operator mode (#2192).
- New
catpuccin-*color themes.
Improved terminal support
set_colorlearned the strikethrough (--strikethroughor-s) modifier.
For distributors and developers
- The CMake option
WITH_GETTEXThas been renamed toWITH_MESSAGE_LOCALIZATION, to reflect that it toggles localization independently of the backend used in the implementation. - New
cargo xtaskcommands can replace some CMake workflows.
Regression fixes:
- (from 4.1.0) Crash when autosuggesting Unicode characters with nontrivial lowercase mapping (#12326, 78f4541).
- (from 4.3.0) Glitch on
read --prompt-str ""(#12296).
Thanks to everyone who contributed through issue discussions, code reviews, or code changes.
Welcome our new committers: Heitor Augusto, JANMESH ARUN SHEWALE, SharzyL, Tiago de Paula, Timen Zandbergen, Wang Bing-hua, andreacfromtheapp, iksuddle, neglu
Welcome back our returning committers: Daniel Rainer, David Adam, Fabian Boehm, Ilya Grigoriev, Johannes Altmanninger, Luc J. Bourhis, Next Alone, Peter Ammon, Razzi Abuissa, phanium, xtqqczze
Download links: To download the source code for fish, we suggest the file named fish-4.4.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.4.0.tar.xz.asc.
The files called fish-4.4.0-linux-*.tar.xz contain standalone fish binaries for any Linux with the given CPU architecture.
fish 4.3.3
This release fixes the following problems identified in fish 4.3.0:
- Selecting a completion could insert only part of the token (#12249).
- Glitch with soft-wrapped autosuggestions and fish_right_prompt (#12255).
- Spurious echo in tmux when typing a command really fast (#12261).
tomorrowtheme always using the light variant (#12266).fish_config theme choosesometimes not shadowing themes set by e.g. webconfig (#12278).- The sample prompts and themes are correctly installed (#12241).
- Last line of command output could be hidden when missing newline (#12246).
Other improvements include:
- The
abbr,bind,complete,functions,historyandtypecommands now support a--coloroption to control syntax highlighting in their output. Valid values areauto(default),always, ornever. - Existing file paths in redirection targets such as
> file.txtare now highlighted usingfish_color_valid_path, indicating thatfile.txtwill be clobbered (#12260).
Download links: To download the source code for fish, we suggest the file named fish-4.3.3.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.3.3.tar.xz.asc.
The files called fish-4.3.3-linux-*.tar.xz contain standalone fish binaries for any Linux with the given CPU architecture.
fish 4.3.2
This release fixes the following problems identified in 4.3.0:
- Pre-built macOS packages failed to start due to a
Malformed Mach-O fileerror (#12224). extra_functionsdir(usuallyvendor_functions.d) and friends were not used (#12226).- Sample config file
~/.config/fish/config.fish/and config directories~/.config/fish/conf.d/,~/.config/fish/completions/and~/.config/fish/functions/were recreated on every startup instead of only the first time fish runs on a system (#12230). - Spurious echo of
^[[Iin some scenarios (#12232). - Infinite prompt redraw loop on some prompts (#12233).
- The removal of pre-built HTML docs from tarballs revealed that cross compilation is broken because we use
${CMAKE_BINARY_DIR}/fish_indentfor building HTML docs. As a workaround, the new CMake build optionFISH_INDENT_FOR_BUILDING_DOCScan be set to the path of a runnablefish_indentbinary.
Download links: To download the source code for fish, we suggest the file named fish-4.3.2.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.3.2.tar.xz.asc.
The files called fish-4.3.2-linux-*.tar.xz contain standalone fish binaries for any Linux with the given CPU architecture.
fish 4.3.1
This release fixes the following problem identified in 4.3.0:
- Possible crash after expanding an abbreviation (#12223).
Download links: To download the source code for fish, we suggest the file named fish-4.3.1.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.3.1.tar.xz.asc.
The files called fish-4.3.1-linux-*.tar.xz contain standalone fish binaries for any Linux with the given CPU architecture.
fish 4.3.0
This release comprises 285 commits since 4.2.1, contributed by 27 authors, 15 of which are new committers.
Deprecations and removed features
- fish no longer sets universal variables by default, which simplifies configuration. Specifically, the
fish_color_*,fish_pager_color_*andfish_key_bindingsvariables are now set in the global scope by default. After upgrading to 4.3.0, fish will (once and never again) migrate these universals to globals set at startup in the~/.config/fish/conf.d/fish_frozen_theme.fishand~/.config/fish/conf.d/fish_frozen_key_bindings.fishfiles. We suggest that you delete those files and set your theme in~/.config/fish/config.fish.- You can still configure fish to propagate theme changes instantly; see here for an example.
- You can still opt into storing color variables in the universal scope via
fish_config theme savethough unlikefish_config theme choose, that does not support dynamic theme switching based on the terminal’s color theme (see below).
- In addition to setting the variables which are explicitly defined in the given theme,
fish_config theme choosenow clears only color variables that were set by earlier invocations of afish_config theme choosecommand (which is how fish’s default theme is set).
Scripting improvements
- New status language command allows showing and modifying language settings for fish messages without having to modify environment variables.
- When using a noninteractive fish instance to compute completions,
commandline --cursorworks as expected instead of throwing an error (#11993). fish_tracecan now be set toallto also trace execution of key bindings, event handlers as well as prompt and title functions.
Interactive improvements
- When typing immediately after starting fish, the first prompt is now rendered correctly.
- Completion accuracy was improved for file paths containing
=or:(#5363). - Prefix-matching completions are now shown even if they don’t match the case typed by the user (#7944).
- On Cygwin/MSYS, command name completion will favor the non-exe name (
foo) unless the user started typing the extension. - When using the exe name (
foo.exe), fish will use to the description and completions forfooif there are none forfoo.exe. - Autosuggestions now also show soft-wrapped portions (#12045).
New or improved bindings
ctrl-w(backward-kill-path-component) also deletes escaped spaces (#2016).- New special input functions
backward-path-component,forward-path-componentandkill-path-component(#12127).
Improved terminal support
- Themes can now be made color-theme-aware by including both
[light]and[dark]sections in the theme file. Some default themes have been made color-theme-aware, meaning they dynamically adjust as your terminal’s background color switches between light and dark colors (#11580). - The working directory is now reported on every fresh prompt (via OSC 7), fixing scenarios where a child process (like
ssh) left behind a stale working directory (#12191). - OSC 133 prompt markers now also mark the prompt end, which improves shell integration with terminals like iTerm2 (#11837).
- Operating-system-specific key bindings are now decided based on the terminal’s host OS.
- Focus reporting is enabled unconditionally, not just inside tmux. To use it, define functions that handle the
fish_focus_inorfish_focus_outevents. - New feature flag
omit-term-workaroundscan be turned on to prevent fish from trying to work around some incompatible terminals.
For distributors and developers
- Tarballs no longer contain prebuilt documentation, so building and installing documentation requires Sphinx. To avoid users accidentally losing docs, the
BUILD_DOCSandINSTALL_DOCSconfiguration options have been replaced with a newWITH_DOCSoption. fish_key_readerandfish_indentare now installed as hardlinks tofish, to save some space.
Regression fixes:
- (from 4.1.0) Crash on incorrectly-set color variables (#12078).
- (from 4.1.0) Crash when autosuggesting Unicode characters with nontrivial lowercase mapping.
- (from 4.2.0) Incorrect emoji width computation on macOS.
- (from 4.2.0) Mouse clicks and
ctrl-ledge cases in multiline command lines (#12121). - (from 4.2.0) Completions for Git remote names on some non-glibc systems.
- (from 4.2.0) Expansion of
~$USER.
Thanks to everyone who contributed through issue discussions, code reviews, or code changes.
Welcome our new committers: Denys Zhak, ELginas, Gleb Smirnov, Juho Kuisma, Julio Napurí, Kristof Mattei, Nikita COEUR, PowerUser64, Tair Sabirgaliev, Toyosatomimi no Miko, Zhizhen He, huaji2369, oliwia, xtqqczze, チセ
Welcome back our returning committers: Asuka Minato, Branch Vincent, Daniel Rainer, David Adam, Fabian Boehm, Jesse Harwin, Johannes Altmanninger, Nahor, Peter Ammon, exploide, phanium, seg6
Download links: To download the source code for fish, we suggest the file named fish-4.3.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.3.0.tar.xz.asc.
The files called fish-4.3.0-linux-*.tar.xz contain standalone fish binaries for any Linux with the given CPU architecture.
fish 4.2.1
This release fixes the following problems identified in 4.2.0:
- When building from a tarball without Sphinx (that is, with
-DBUILD_DOCS=OFFor whensphinx-buildis not found), builtin man pages and help files were missing, which has been fixed (#12052). fish_config’s theme selector (the “colors” tab) was broken, which has been fixed (#12053).
Download links: To download the source code for fish, we suggest the file named fish-4.2.1.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.2.1.tar.xz.asc.
The files called fish-4.2.1-linux-*.tar.xz contain standalone fish binaries for any Linux with the given CPU architecture.
fish 4.2.0
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
chooseandsavesubcommands 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-pbinding no longer adds a redundant space to the command line. - When run as a login shell on macOS, fish now sets
MANPATHcorrectly 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/fishwill 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 theembed-datafeature fromcmake/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
manfor 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.
fish 4.1.2
This release fixes the following regressions identified in 4.1.0:
-
Fixed spurious error output when completing remote file paths for
scp(#11860). -
Fixed the
alt-lbinding not formattinglsoutput correctly (one entry per line, no colors) (#11888). -
Fixed an issue where focus events (currently only enabled in
tmux) would cause multiline prompts to be redrawn in the wrong line (#11870). -
Stopped printing output that would cause a glitch on old versions of Midnight Commander (#11869).
-
Added a fix for some configurations of Zellij where
escapekey processing was delayed (#11868). -
Fixed a case where the web-based configuration tool would generate invalid configuration (#11861).
-
Fixed a case where pasting into
fish -c readwould fail with a noisy error (#11836). -
Fixed a case where upgrading fish would break old versions of fish that were still running.
In general, fish still needs to be restarted after it is upgraded, except for standalone builds.
Download links: To download the source code for fish, we suggest the file named fish-4.1.2.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.1.2.tar.xz.asc.
The files called fish-4.1.2-linux-*.tar.xz are experimental packages containing a single standalone fish binary for any Linux with the given CPU architecture.
fish 4.1.1
This release fixes the following regressions identified in 4.1.0:
-
Many of our new Chinese translations were more confusing than helpful; they have been fixed or removed (#11833).
Note that you can work around this type of issue by configuring fish’s message localization: if your environment contains something like
LANG=zh_CN.UTF-8, you can useset -g LC_MESSAGES ento use English messages inside fish. This will not affect fish’s child processes unlessLC_MESSAGESwas already exported. -
Some fish_config subcommands for showing prompts and themes had been broken in standalone Linux builds (those using the
embed-datacargo feature), which has been fixed (#11832). -
On Windows Terminal, we observed an issue where fish would fail to read the terminal’s response to our new startup queries, causing noticeable lags and a misleading error message. A workaround has been added (#11841).
-
A WezTerm issue breaking shifted key input has resurfaced on some versions of WezTerm; our workaround has been extended to cover all versions for now (#11204).
-
Fixed a crash in the web-based configuration tool when using the new underline styles (#11840).
Download links: To download the source code for fish, we suggest the file named “fish-4.1.1.tar.xz”. The file downloaded from “Source code (tar.gz)” will not build correctly.
The files called fish-4.1.1-linux-*.tar.xz are experimental packages containing a single standalone fish binary for any Linux with the given CPU architecture.