Software 44344 Published by

Fish Shell 4.7.0 finally patches the exact bugs that make terminal work feel like a chore, including history corruption from abrupt shutdowns and theme variables leaking into background scripts. Interactive users will notice smoother completion paging, properly sorted directory lists, and private mode history that actually stays isolated. Developers get cleaner config path handling, modernized translation workflows, and fixed man page completions for newer coreutils versions. Long-standing regressions like broken vi mode editing and double command execution on failures finally disappear, making the upgrade worth the restart.



Fish Shell 4.7.0 Brings Smarter Completions and Fixes That Actually Matter

Fish Shell 4.7.0 lands with nearly two hundred commits, and this time the changes target the exact friction points that make terminal work feel like a chore. The update strips out legacy theme variables for background scripts, fixes history corruption bugs, and finally gets directory sorting right. Users upgrading from older versions will notice fewer crashes during abrupt shutdowns and smoother completion workflows across the board.

Interactive Tweaks That Remove Daily Friction

The completion pager used to reset every time the shell repainted itself after a color change or an event handler fired. This release keeps that state intact, which means scrolling through long directory lists no longer jumps back to the top mid workflow. Directory sorting also gets a proper fix instead of relying on locale quirks that made alphabetical order feel completely random. The alt-o binding now opens read-only files without throwing permission errors at the command token, and private mode history stays properly isolated from builtin read. These changes matter because terminal workflows break when transient UI states reset or when background scripts accidentally leak into interactive sessions.

Scripting Stability and Background Cleanup

Non-interactive shells no longer load the default theme variables like fish_color_*. System administrators often watch background automation scripts fail silently when color variables leak into environment dictionaries on headless servers. This release stops that pollution by skipping theme initialization entirely for non-interactive shells. History corruption from NUL bytes during SIGTERM or SIGHUP signals gets patched, which prevents the dreaded broken history file that forces users to delete their config and start over. Internal file descriptors shift to number ten or higher to stop clashing with user scripts that open custom handles. The wording across error messages also gets standardized, so troubleshooting missing subcommands stops feeling like decoding a different language.

Developer Tools and Distribution Updates

Package maintainers get better control over installation paths when CMAKE_INSTALL_SYSCONFDIR overrides the default global config directory. The translation build scripts swap out for cargo xtask commands, which speeds up localization workflows and removes legacy dependencies. A new shellcheck linting task catches syntax drift before it hits stable releases. Completions generated from man pages now handle groff device control escapes properly, fixing broken output for coreutils 9.10 and help2man 1.50+. The web-based config interface also makes removing history entries more intuitive instead of forcing users to hunt through raw JSON files.

Regression Fixes That Restore Sanity

Several older bugs finally get patched after lingering across multiple minor releases. Vi mode command line editing stops breaking on certain key sequences, and backspacing after a newline no longer leaves stray characters in the input buffer. Long options used to trigger spurious completions right after typing short flags, which confused tab completion for anyone managing complex build commands. The nosuchcommand || echo hello pattern also executes correctly now instead of running the fallback twice when a command fails. These regressions mattered because they broke established workflows that users relied on daily.

Release 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.

Release fish 4.7.0 ยท fish-shell/fish-shell

Upgrade when ready and test any custom themes or background automation scripts. The shell handles itself better now, so terminal sessions should feel noticeably steadier across the board.