| CARVIEW |
Navigation Menu
-
-
Notifications
You must be signed in to change notification settings - Fork 2.2k
Releases: fish-shell/fish-shell
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.
Assets 8
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.
Assets 6
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.
Assets 8
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.
Assets 7
fish 4.1.0
This release comprises 1396 commits since 4.0.9, contributed by 126 authors, 70 of which are new committers.
Notable improvements and fixes
- Compound commands (
begin; echo 1; echo 2; end) can now be written using braces ({ echo1; echo 2 }), like in other shells. - fish now supports transient prompts: if
fish_transient_promptis set to 1, fish will reexecute prompt functions with the--final-renderingargument before running a commandline (#11153). - Tab completion results are truncated up to the common directory path, instead of somewhere inside that path. E.g. if you complete โshare/functionsโ, and it includes the files โfoo.fishโ and โbar.fishโ, the completion pager will now show โโฆ/foo.fishโ and โโฆ/bar.fishโ (#11250).
- Self-installing builds as created by e.g.
cargo installno longer install other files, see below. - Our gettext-based message-localization has been reworked, adding translations to self-installing builds; see below.
Deprecations and removed features
set_color --background=COLORno longer implicitly activates bold mode. If your theme is stored in universal variables (the historical default), some bold formatting might be lost. To fix this, we suggest updating to the latest version of our theme, to explicitly activate bold mode, for example usefish_config theme save "fish default".{echo,echo}or{ echo, echo }are no longer interpreted as brace expansion tokens but as compound commands.- Terminfo-style key names (
bind -k nul) are no longer supported. They had been superseded by fishโs own key names since 4.0 (#11342). - fish no longer reads the terminfo database, so its behavior is generally no longer affected by the
TERMenvironment variable (#11344). For the time being, this change can be reversed via theignore-terminfofeature flag. To do so, run the following once and restart fish:set -Ua fish_features no-ignore-terminfo - The
--installoption when fish is built as self-installing is removed, see below. set_color ff0000now outputs 24-bit RGB true-color even ifCOLORTERMis unset. One can override this by settingfish_term24bitto 0 (#11372).- fish now requires the terminal to respond to queries for the primary device attribute. For now, this can be reversed via a feature flag, by running (once)
set -Ua fish_features no-query-termand restarting fish. - Users of GNU screen may experience minor glitches when starting fish.
Scripting improvements
- The argparse builtin has seen many improvements, see below.
- The string pad command now has a
-C/--centeroption. - The psub command now allows combining
--suffixwith--fifo(#11729). - The read builtin has learned the
--tokenize-rawoption to tokenize without quote removal (#11084).
Interactive improvements
- Autosuggestions are now also provided in multi-line command lines. Like
ctrl-r, these operate only on the current line. - Autosuggestions used to not suggest multi-line command-lines from history; now autosuggestions include individual lines from multi-line command-lines.
- The history pager search now preserves ordering between
ctrl-sforward andctrl-rbackward searches. - Instead of highlighting events by flashing all text to the left of the cursor, failing history token search (
alt-.) flashes the associated token, failing tab-completion flashes the to-be-completed token (#11050), deleting an autosuggestion (shift-delete) flashes the suggestion, and all other scenarios flash the full command line. - Pasted commands are now stripped of any
$ยcommand prefixes, to help pasting code snippets. - Builtin help options (e.g.
abbr --help) now usemandirectly, meaning that variables likeMANWIDTHare respected (#11786). funcedwill now edit copied functions directly, instead of the file wherefunction --copywas invoked. (#11614)- Added a simple
fish_jj_promptwhich reduces visual noise in the prompt inside Jujutsu repositories that are colocated with Git.
New or improved bindings
- On non-macOS systems,
alt-left,alt-right,alt-backspaceandalt-deleteno longer operate on punctuation-delimited words but on whole arguments, possibly including special characters like/and quoted spaces. On macOS, the correspondingctrl-prefixed keys operate on whole arguments. Word operations are still available via the other respective modifier, just like in most web browsers. ctrl-z(undo) after executing a command will restore the previous cursor position instead of placing the cursor at the end of the command line.- The
alt-sbinding will now also userun0if available. - Some mouse support has been added: the OSC 133 prompt marking feature has learned about kittyโs
click_events=1flag, which allows moving fishโs cursor by clicking in the command line, and selecting pager items (#10932). - Before clearing the screen and redrawing,
ctrl-lnow pushes all text located above the prompt to the terminalโs scrollback, via a new special input function scrollback-push. For compatibility with terminals that do not implement ECMA-48โs SCROLL UP command, this function is only used if the terminal advertises support for that via XTGETTCAP. - Vi mode has learned
ctrl-a(increment) andctrl-x(decrement) (#11570).
Completions
gitcompletions now show the remote URL as description when completing remotes.systemctlcompletions no longer print escape codes ifSYSTEMD_COLORShappens to be set (#11465).- Added and improved many completion scripts, notably
tmux.
Improved terminal support
- Support for double, curly, dotted and dashed underlines, for use in
fish_color_*variables and the set_color builtin (#10957). - Underlines can now be colored independent of text (#7619).
- New documentation page Terminal Compatibility (also accessible via
man fish-terminal-compatibility) lists the terminal control sequences used by fish. - fish now requires the terminal to respond to queries for the primary device attribute. For now, this can be reversed via a feature flag, by running (once)
set -Ua fish_features no-query-term.
Other improvements
- Updated Chinese and German translations.
fish_indent --dump-parse-treenow emits simple metrics about the tree including its memory consumption.- We added some tools to improve development workflows, for example
build_tools/{check,update_translations,release}.shandtests/test_driver.py. In conjunction withcargo, these enable almost all day-to-day development tasks without using CMake.
For distributors
- Builtin commands that support the
--helpoption now require themanprogram. The direct dependency onmandocandnroffhas been removed. - fish no longer uses gettext MO files, see below. If you have use cases which are incompatible with our new approach, please let us know.
- The fish_indent and fish_key_reader programs are now also available as builtins. If fish is invoked via e.g. a symlink with one of these names, it will act like the given tool (i.e. itโs a multi-call binary). This allows truly distributing fish as a single file (#10876).
- The CMake build configuration has been simplified and no longer second-guesses rustup. It will run rustc and cargo via
PATHor in ~/.cargo/bin/. If that doesnโt match your setup, set the Rust_COMPILER and Rust_CARGO ...
Assets 7
fish 4.0.9
Another tiny patch release for the 4.0 series - this one exists mainly to fix a regression from 4.0.6 that affects users who configured WezTerm with enable_kitty_keyboard=true.
This release fixes:
- a regression in 4.0.6 causing shifted keys to not be inserted on some terminals (#11813).
- a regression in 4.0.6 causing the build to fail on systems where
charis unsigned (#11804). - a regression in 4.0.0 causing a crash on an invalid bg invocation.
Download links: To download the source code for fish, we suggest the file named โfish-4.0.9.tar.xzโ. The file downloaded from โSource code (tar.gz)โ will not build correctly.
The files called fish-4.0.9-linux-*.tar.xz are experimental packages containing a single standalone fish binary for any Linux with the given CPU architecture.
Assets 7
fish 4.0.8
This release fixes a regression in 4.0.6 that caused user bindings to be shadowed by either fishโs or a pluginโs bindings (#11803).
Download links: To download the source code for fish, we suggest the file named "fish-4.0.8.tar.xz". The file downloaded from "Source code (tar.gz)" will not build correctly.
The files called fish-4.0.8-linux-*.tar.xz are experimental packages containing a single standalone fish binary for any Linux with the given architecture.
Assets 7
fish 4.0.6
This release of fish fixes a number of issues identified in fish 4.0.2:
- fish now properly inherits $PATH under Windows WSL2 (#11354).
- Remote filesystems are detected properly again on non-Linux systems.
- the printf builtin no longer miscalculates width of multi-byte characters (#11412).
- For many years, fish has been โrelocatableโ -- it was possible to move the entire
CMAKE_INSTALL_PREFIXand fish would use paths relative to its binary.
Only gettext locale paths were still determined purely at compile time, which has been fixed. - the commandline builtin failed to print the commandline set by a
commandline -Cinvocation, which broke some completion scripts.
This has been corrected (#11423). - To work around terminals that fail to parse Operating System Command (OSC) sequences, a temporary feature flag has been added.
It allows you to disable prompt marking (OSC 133) by running (once)set -Ua fish_features no-mark-promptand restarting fish (#11749). - The routines to save history and universal variables have seen some robustness improvements.
- builtin status current-command no longer prints a trailing blank line.
- A crash displaying multi-line quoted command substitutions has been fixed (#11444).
- Commands like
set fish_complete_path ...accidentally disabled completion autoloading, which has been corrected. nmclicompletions have been fixed to query network information dynamically instead of only when completing the first time.- Git completions no longer print an error when no git-foo executable is in
$PATH. - Custom completions like
complete foo -l long -xa ...that use the output ofcommandline -t.
on a command-line likefoo --long=have been invalidated by a change in 4.0; the completion scripts have been adjusted accordingly (#11508). - Some completions were misinterpreted, which caused garbage to be displayed in the completion list. This has been fixed.
- fish no longer interprets invalid control sequences from the terminal as if they were
alt-[oralt-okey strokes. - bind has been taught about the
printscreenandmenukeys. alt-deletenow deletes the word right of the cursor.ctrl-alt-herases the last word again (#11548).alt-leftalt-rightwere misinterpreted because they send unexpected sequences on some terminals; a workaround has been added. (#11479).- Key bindings like
bind shift-Aare no longer accepted; usebind shift-aorbind A. - Key bindings like
bind shift-atake precedence overbind Awhen the key event included the shift modifier. - Bindings using shift with non-ASCII letters (such as
ctrl-shift-รค) are now supported. - Bindings with modifiers such as
bind ctrl-wwork again on non-Latin keyboard layouts such as a Russian one.
This is implemented by allowing key events such asctrl-ัto match bindings of the corresponding Latin key, using the kitty keyboard protocolโs base layout key (#11520). - Vi mode: The cursor position after pasting via
phas been corrected. - Vi mode: Trying to replace the last character via
rno longer replaces the last-but-one character (#11484),
Download links: To download the source code for fish, we suggest the file named "fish-4.0.6.tar.xz". The file downloaded from "Source code (tar.gz)" will not build correctly.
There is no GPG signature because we haven't yet decided how to integrate signing into the new release automation.
macOS packages will be uploaded shortly.
The files called fish-4.0.6-linux-*.tar.xz are experimental packages containing a single standalone fish binary for any Linux with the given architecture.
Assets 7
fish 4.0.2 (released April 20, 2025)
This release of fish fixes a number of issues identified in fish 4.0.1:
- Completions are quoted, rather than backslash-escaped, only if the completion is unambiguous. Continuing to edit the token is therefore easier (#11271). This changes the behavior introduced in 4.0.0 where all completions were quoted.
- The warning when the terminfo database canโt be found has been downgraded to a log message. fish will act as if the terminal behaves like xterm-256color, which is correct for the vast majority of cases (#11277, #11290).
- Key combinations using the super (Windows/command) key can now (actually) be bound using the
super-prefix (#11217). This was listed in the release notes for 4.0.1 but did not work correctly. - function is stricter about argument parsing, rather than allowing additional parameters to be silently ignored (#11295).
- Using parentheses in the test builtin works correctly, following a regression in 4.0.0 where they were not recognized (#11387).
deletein Vi mode when Num Lock is active will work correctly (#11303).- Abbreviations cannot alter the command-line contents, preventing a crash (#11324).
- Improvements to various completions, including new completions for
wl-randr(#11301), performance improvements forcargocompletions by avoiding network requests (#11347), and other improvements forbtrfs(#11320),cryptsetup(#11315),git(#11319, #11322, #11323),jj(#11046), andsystemd-analyze(#11314). - The Mercurial (
hg) prompt can handle working directories that contain an embedded newline, rather than producing errors (#11348). - A number of crashes have been fixed. Triggers include prompts containing backspace characters (#11280), history pager search (#11355), invalid UTF-8 in read (#11383), and the
kill-selectionbinding (#11367). - A race condition in the test suite has been fixed (#11254), and a test for fish versioning relaxed to support downstream distributorsโ modifications (#11173).
- Small improvements to the documentation (#11264, #11329, #11361).
Download links: To download the source code for fish, we suggest the file named "fish-4.0.2.tar.xz". The file downloaded from "Source code (tar.gz)" will not build correctly. The SHA-256 sum of this file is 6e1ecdb164285fc057b2f35acbdc20815c1623099e7bb47bbfc011120adf7e83. A GPG signature from David Adam (key ID 0x7A67D962D88A709A is available as "fish-4.0.2.tar.xz.asc".
The files called fish-static-* are experimental, statically linked builds, for any Linux with the given architecture. Extract and run, and they will extract their data files as needed.
Assets 8
fish 4.0.1 (released March 12, 2025)
This release of fish includes the following improvements compared to fish 4.0.0:
- Key combinations using the super (Windows/command) key can be bound using the
super-prefix (#11217). - Konsoleโs menu shows the โOpen folder withโ option again (#11198).
$fish_color_search_matchwill now only be applied to the foreground color if it has an explicit foreground. For example, this allows setting:
set -g fish_color_search_match --reverse- Cursor shape commands (
\e[2 q) are no longer sent in non-interactive shells or in redirections (#11255). - status gained a
is-interactive-readsubcommand, to check whether the script is being called from an interactive read invocation. - fishโs background tasks are now started in a way that avoids an error on macOS Terminal.app (#11181).
- Using key combinations within qemu should work correctly.
- Prompts containing control characters no longer cause incorrect display of command lines (#11252).
- Cancelling the command-line in Vi mode displays correctly again (#11261).
- The acidhub prompt properly displays the git branch again (#11179).
- Completions for
winecorrectly include files again (#11202). - On macOS, paths from
/etc/pathsand/etc/manpathscontaining colons are handled correctly (#10684). This functionality was included in the 4.0.0 release notes but was missing from the source code. - The XTerm
modifyOtherKeyskeyboard encoding is no longer used under WezTerm, as it does not work correctly in all layouts (#11204). option-leftand other similar keys should now work in iTerm versions before 3.5.12; the kitty keyboard protocol is now disabled on these versions (#11192).- The kitty keyboard protocol is no longer used under Midnight Commander, as it does not work correctly (#10640).
- fish now sends the commandline along with the OSC 133 semantic prompt command start sequence. This fixes a test in the kitty terminal (#11203).
- Git completions for third-party commands like โgit-absorbโ are completed correctly again (#11205).
- Completions for
diskutilno longer produce an error (#11201). - The output of certain error messages no longer prints newlines to standard output (#11248).
- A number of crashes have been fixed, including file names longer than 255 bytes (#11221), using fish on a btrfs filesystem (#11219), history files that do not have the expected format (#11236), and pasting into an empty command line (#11256).
Download links: To download the source code for fish, we suggest the file named "fish-4.0.1.tar.xz". The file downloaded from "Source code (tar.gz)" will not build correctly. The SHA-256 sum of this file is 4ed63a70207283e15cf21fc5f21db4230421e4f98d4826b5b1c8254d69c762b5. A GPG signature from David Adam (key ID 0x7A67D962D88A709A is available as "fish-4.0.1.tar.xz.asc".
The files called fish-static-* are experimental, statically linked builds, for any Linux with the given architecture. Extract and run, and they will extract their data files as needed.