Repository navigation
Releases: fish-shell/fish-shell
Release list
fish 4.9.3
This release fixes another macOS issue where dead keys, for example the two-key sequence ",space on the US International keyboard layout would incorrectly insert space (#12979).
A GPG signature for fish-4.9.3.tar.xz using this key is available as fish-4.9.3.tar.xz.asc.
The files called fish-4.9.3-linux-*.tar.xz contain standalone fish binaries for any Linux with the given CPU architecture.
fish 4.9.2
This release corrects the fix for macOS terminals from 4.9.1 (#12973)
A GPG signature for fish-4.9.2.tar.xz using this key is available as fish-4.9.2.tar.xz.asc.
The files called fish-4.9.2-linux-*.tar.xz contain standalone fish binaries for any Linux with the given CPU architecture.
fish 4.9.1
This release fixes the following problems identified in fish 4.9.0:
- On non-default keyboard layouts, fish executed bindings for physical keys instead of only bindings for the layout’s key. For example, on the Dvorak layout, typing
swould insert;because there is a default binding for;(#12968). - When typing
spaceto accept a character entered via certain IMEs, fish would insert a space instead of the desired character, which has been fixed (#12974). - On macOS terminals, keys like
option-lwould execute bindings foralt-linstead of the historical behavior of inserting a character (like@on a German layout) (#12973).
A GPG signature for fish-4.9.1.tar.xz using this key is available as fish-4.9.1.tar.xz.asc.
The files called fish-4.9.1-linux-*.tar.xz contain standalone fish binaries for any Linux with the given CPU architecture.
fish 4.9.0
This release exists mainly to work around an issue with the Konsole terminal which would cause shift-pageup to stop working.
This release brings 151 new commits since 4.8.1, contributed by 26 authors, 18 of which are new faces.
Interactive improvements
- To mitigate issues in Konsole version v26.07.80’s implementation of the kitty keyboard protocol, fish no longer requests that protocol on Konsole. The
omit-term-workaroundsfeature flag can be turned on to enable the kitty keyboard protocol on Konsole again (#12948). - On some terminals like kitty, keys like
shift-spaceandspacecan now be mapped independently (#12898). - Fixed slow tab completion in directories that contain slow-to-resolve symlinks (e.g. links to network-mounted files) (#12905).
- Abbreviations can now be given a description, which will be displayed in the completion pager (#11291).
- Vi mode commands like
cFandcTnow work correctly (#12947).
Scripting improvements
- List indexing can now be nested in more cases; for example
$foo[$bar[1] 2]is now allowed (#12903). - Escaped square brackets (e.g.
\133for[) are no longer considered a slicing operator (#7969). - Variables containing a closing square brackets and used to index into another variable will no longer close the slice early (#12819).
- Builtin help pages now respect an override of the
manfunction (#12886). - Commands like
status=123 echo $statusnow throw an error instead of silently ignore the variable override (#7790).
Regression fixes:
- (From 4.6.0) Chinese and Japanese translation of error messages owned by the C library were broken (#12895).
- (From 4.3.2) Erasing read-only variables with
set --erasewas accidentally allowed. - (From 4.0.0) Builtin
fgwas not working on NetBSD (#12929).
Thanks to everyone who contributed through issue discussions, code reviews, or code changes.
Welcome our new committers: AbhinavMir, Aelin, Alex Le Blanc, Alexia, Guflly, MeGaurav4, Philipp Jungkamp, SR0725, Tommi Virtanen, Vaibhav Srivastava, Valentyn Yefimov, avbest, developic, hazel, nekoside, orpheus6678, tianrking, yakakay
Welcome back our returning committers: David Adam (zanchey), Fabian Boehm, Ilya Grigoriev, Johannes Altmanninger, Michael Jarvis, Nahor, Peter Ammon, Wes Higbee
A GPG signature for fish-4.9.0.tar.xz using this key is available as fish-4.9.0.tar.xz.asc.
The files called fish-4.9.0-linux-*.tar.xz contain standalone fish binaries for any Linux with the given CPU architecture.
fish 4.8.1
This release serves primarily to fix some regressions from 4.8.0 and other bugs.
Interactive improvements
- On non-macOS platforms,
alt-backspace,alt-delete,alt-leftandalt-rightoperate on words again instead of tokens (#12122) eliminating cross-platform differences in input handling. - Builtin and function commands can now be colored separately via new variables
fish_color_builtinandfish_color_function(#12837). - Add fish_darcs_prompt for Darcs repository status.
- Fixed a crash in
commandline --current-processwhen the cursor is inside a&|pipe (#12868). - Since prompt marking (via OSC 133) causes an issue in Konsole’s default configuration, prompt marking had been disabled for Konsole in 4.8.0. Now the
omit-term-workaroundsfeature flag can be enabled to enable prompt marking on Konsole again (#12859).
Regression fixes:
- (From 4.8.0)
abbr --position=anywherecompletions are no longer offered in argument position, to avoid cluttering the completion pager (#12838). - (From 4.8.0)
pacman -Qshort option completions (#12857).
A GPG signature for fish-4.8.1.tar.xz using this key is available as fish-4.8.1.tar.xz.asc.
The files called fish-4.8.1-linux-*.tar.xz contain standalone fish binaries for any Linux with the given CPU architecture.
fish 4.8.0
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. For now, GNU gettext continues to be used for translating messages defined in fish scripts. 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
fish 4.7.1
This release fixes a regression in 4.7.0 that caused the web config (fish_config) to fail to start (#12717).
Download links: To download the source code for fish, we suggest the file named fish-4.7.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.7.1.tar.xz.asc.
The files called fish-4.7.1-linux-*.tar.xz contain standalone fish binaries for any Linux with the given CPU architecture.
fish 4.7.0
This release brings 198 new commits since 4.6.0, contributed by 21 authors, 12 of which are new faces.
Deprecations and removed features
- The default theme (i.e. the
fish_color_*variables) is no longer set in non-interactive shells.
Interactive improvements
- prompt_pwd now strips control characters.
- Repaint events (as triggered by changes to color variables or by event handlers running
commandline -f repaint) no longer reset the completion pager and other transient UI states (#12683). fish_color_valid_pathnow respects background and underline colors (#12622).- funced will no longer lose work if there are parse errors multiple times without new changes to the file.
- Fixed a case where directory completions were sorted in a surprising order (#12695).
- When at the command token, the
alt-obinding will now open read-only files too (#12671). - Private mode in-memory history (
set fish_history) is no longer shared with builtin read (#12662).
Other improvements
- History is no longer corrupted with NUL bytes when fish receives SIGTERM or SIGHUP (#10300).
- fish_update_completions now handles groff
\X'...'device control escapes, fixing completion generation for man pages produced by help2man 1.50 and later (such as coreutils 9.10). - Removing history entries via the web-based config is more intuitive.
- If
XDG_DATA_DIRSis empty, the default value is assumed, which means that fish will now also use configuration from paths like$PREFIX/share/fish/vendor_completions.d(#11349). - Some internal file descriptors were moved to number 10 or higher, to reduce risk of clashes with those used by the user in scripts.
- The wording of error messages has been made consistent, especially for builtin subcommands (#12556).
For distributors and developers
- When the default global config directory (
$PREFIX/etc/fish) exists but has been overridden via-DCMAKE_INSTALL_SYSCONFDIR, fish will now respect that override (#10748). build_tools/update_translations.fishhas been replaced bycargo xtask gettext {check,new,update}(#12676).cargo xtask shellcheckto lint shell-scripts.
Regression fixes:
- (from 4.6) Vi mode
dl(#12461). - (from 4.6) Backspace after newline (#12583).
- (from 4.3.3) Long options were spuriously completed after typing short options (85e76ba).
- (from 3.2)
nosuchcommand || echo helloexecutes the right hand side again (#12654).
Thanks to everyone who contributed through issue discussions, code reviews, or code changes.
Welcome our new committers: Armandas Jarušauskas, Daniel D. Beck, Dennis Yildirim, Jaakko Koivisto, Kayce Basques, Nathaniel, Saúl Nogueras, Vishrut Sachan, Yakov Till, cunlem, joveian, r-vdp
Welcome back our returning committers: Bacal Mesfin, Branch Vincent, Daniel Rainer, David Adam, Johannes Altmanninger, Nahor, Peter Ammon, Remo Senekowitsch, xtqqczze
Download links: To download the source code for fish, we suggest the file named fish-4.7.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.7.0.tar.xz.asc.
The files called fish-4.7.0-linux-*.tar.xz contain standalone fish binaries for any Linux with the given CPU architecture.
fish 4.6.0
This release brings 100 new commits since 4.5.0, contributed by 27 authors, 15 of which are new committers.
Notable improvements and fixes
Deprecations and removed features
- The default width for emoji is switched from 1 to 2, improving the experience for users connecting to old systems from modern desktops. Users of old desktops who notice that lines containing emoji are misaligned can set
$fish_emoji_widthback to 1 (#12562).
Interactive improvements
- The tab completion pager now left-justifies the description of each column (#12546).
- fish now supports the
SHELL_PROMPT_PREFIX,SHELL_PROMPT_SUFFIX, andSHELL_WELCOMEenvironment variables. The prefix and suffix are automatically prepended and appended to the left prompt, and the welcome message is displayed on startup after the greeting. These variables are set by systemd’srun0for example (#10924).
Improved terminal support
set_coloris able to turn off italics, reverse mode, strikethrough and underline individually (e.g.--italics=off).set_colorlearned the foreground (--foregroundor-f) and reset (--reset) options.- An error caused by slow terminal responses at macOS startup has been addressed (#12571).
Other improvements
- Signals like
SIGWINCH(as sent on terminal resize) no longer interrupt builtin output (#12496). - For compatibility with Bash, fish now accepts
|&as alternate spelling of&|, for piping both standard output and standard error (#11516). fish_indentnow preserves comments and newlines immediately preceding a brace block ({ }) (#12505).- A crash when suspending certain pipelines with
ctrl-zhas been fixed (#12301).
For distributors and developers
cargo xtasksubcommands no longer panic on test failures.
Regression fixes:
- (from 4.5.0) Intermediate
⏎artifact when redrawing prompt (#12476). - (from 4.4.0)
historyhonors explicitly specified--color=again (#12512). - (from 4.4.0) Vi mode
dlanddh(#12461). - (from 4.3.0) Error completing of commands starting with
-(#12522).
Thanks to everyone who contributed through issue discussions, code reviews, or code changes.
Welcome our new committers: Aditya Giri, Daan De Meyer, Daniel Danner, Helen Chong, Janne Pulkkinen, Julien Gautier, Lieuwe Rooijakkers, Mike Yuan, Noah Hellman, Remo Senekowitsch, Rodolfo Gatti, Steffen Winter, rohan436, t4k44
Welcome back our returning committers: Daniel Rainer, David Adam, Delapouite, Fabian Boehm, JANMESH ARUN SHEWALE, Johannes Altmanninger, Julio Napurí, Nahor, Peter Ammon, Volodymyr Chernetskyi, exploide, xtqqczze
Download links: To download the source code for fish, we suggest the file named fish-4.6.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.6.0.tar.xz.asc.
The files called fish-4.6.0-linux-*.tar.xz contain standalone fish binaries for any Linux with the given CPU architecture.
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.