Skip to content

Changelog

Note

All notable changes to this project are documented below. This changelog is automatically generated from GitHub Releases.

v4.15.0: Option to display exit pipe status

2026-01-07

List Exit Statuses

State Preview
Enabled (list exit statuses) light-pure_show_exit_status=true
Enabled (convert statuses to signals) light-pure_show_exit_status=true,pure_convert_exit_status_to_signal=true
Option Default Description
pure_show_exit_status false true: Show list of status codes if the last command failed
pure_convert_exit_status_to_signal false true: Convert statuses 129 and up to their signal names
pure_symbol_exit_status_prefix \| Prefix when the last command failed
pure_symbol_exit_status_separator \| Separator between statuses in a pipeline

New Contributors

Full Changelog: https://github.com/pure-fish/pure/compare/v4.14.1...v4.15.0


v4.14.0: πŸ‘‹ Being polite

2025-12-04

What's Changed

We do our best to clean up after ourselves and provides information on the version installed or updated.

Plugin Fresh Install

screenshot _pure_install

Plugin Update

screenshot _pure_install

Full Changelog: https://github.com/pure-fish/pure/compare/v4.13.0...v4.14.0


v4.13.0: Support Transient prompt

2025-12-03

What's Changed

Features

βœ‚ Transient Prompt

Simplify previous prompts in scrollback history (Fish 4.1.0+)

Option Default Description
fish_transient_prompt - Fish built-in variable. Set to 1 to enable transient prompt.

Shows a simplified prompt (just the prompt symbol) for previous commands, keeping your scrollback clean while maintaining full context on the current prompt. When enabled, Fish re-runs the prompt with --final-rendering before executing a command.

Transient prompt works best with single line prompt enabled:

set --universal fish_transient_prompt 1
set --universal pure_enable_single_line_prompt true
Preview
Enabled
(simplified previous prompts, single line)
Disabled
(full prompts in scrollback)
screenshot fish_transient_prompt=1,pure_enable_single_line_prompt=true screenshot fish_transient_prompt=0,pure_enable_single_line_prompt=true

Changes

πŸ‘‹ Customizing Fish Greeting

Since version β‰₯4.13.x, pure does not override your fish_greeting function anymore, allowing you to use your own custom greeting.

To configure your Fish's greeting, edit $__fish_config_dir/functions/fish_greeting.fish function or the related variable:

Check for new release

Add the following to call pure_check_for_new_release on each new shell (i.e., when a new terminal session or tmux tab starts):

function fish_greeting
    _pure_check_for_new_release
end
Void fish_greeting function

Voiding the fish_greeting.fish function will stop printing any greeting:

function fish_greeting
    # remove content to disable greeting
end
Empty fish_greeting variable

Or set the greeting to an empty string to stop printing any greeting:

set --universal fish_greeting

Screenshots Automation for the Documentation

We automated the tedious task of taking screenshots of the prompt features and build the documentation. Thus, we have always-up-to-date features screenshots! πŸ“Έ

screenshot-automation-preview

Dedicated project

This feature has been extracted to a dedicated repo pure-fish/docker-terminal-screenshot to allow a maximum of people to use it πŸ’–

Pre-built Docker image with OmarTawfik/terminal-screenshot!11 for automated terminal screenshot generation.

image

New Contributors

  • @Copilot made their first contribution in pure-fish/pure!387 IA congratulating itself 🀣 (nice help bootstrapping PR, but still need human touch)

Full Changelog: https://github.com/pure-fish/pure/compare/v4.12.0...v4.13.0


v4.12.0: Shows git stash, commits ahead/behind count next to indicator

2025-09-23

What's Changed

πŸ”’ Numbered git stash, commits ahead/behind indicator

❯ set --universal pure_show_numbered_git_indicator false # default
❯ set --universal pure_show_numbered_git_indicator true

Default (disabled) | Feature enabled | --- | --- image | nothing next to stash, pull/push indicator image | count of stash entries, commit ahead/behind next to indicators

CI/Tests

  • Test jobs now show fish version used ;
  • update NixOS image to 2.31.2 ;
  • Fix all test on NixOS due to missing package ;
  • Add AGENTS.md file to project ;
  • support pre-release version number when bumping version (used in PR tests)

New Contributors

Full Changelog: https://github.com/pure-fish/pure/compare/v4.11.4...v4.12.0


v4.11.4: Improve VS Code Shell integration and NixOS tests

2025-09-22

What's Changed

Use source in NixOS

We use pure current source code when running the tests instead of the package from Nix repository. This way, tests are relevant to what is being developed (not was is already published).

Improve VS Code Shell integration

Prevent vscode from adding extra line

Before After
Image Image

New Contributors

πŸ‘ Thanks

  • @Perlence for raising the issue, providing insight and feedback before release

Full Changelog: https://github.com/pure-fish/pure/compare/v4.11.3...v4.11.4


v4.11.3: NixOS fix sourcing from vendor directory

2025-06-06

What's Changed

πŸ‘ Thanks

Full Changelog: https://github.com/pure-fish/pure/compare/v4.11.2...v4.11.3


v4.11.2

2025-05-20

What's Changed

New Contributors

Full Changelog: https://github.com/pure-fish/pure/compare/v4.11.1...v4.11.2


v4.11.1

2025-05-19

What's Changed

Full Changelog: https://github.com/pure-fish/pure/compare/v4.11.0...v4.11.1


v4.11.0: πŸ“– New Doc! ✨ AWS Profile Support and πŸ€– tests on MacOS

2024-02-16

What's Changed

πŸ“– New Documentation

  • a better User eXperience (UX)
  • a dedicated site,
  • searchable content (thanks to mkdocs)
  • screenshot of prompt with/without feature enabled (thanks to terminal-screenshot)
  • a better organization for options
  • linkable content you can share/bookmark

image

✨ rAWS Profile

Option Default Description
pure_enable_aws_profile true Show AWS profile name (based on AWS_VAULT or AWS_PROFILE).
pure_symbol_aws_profile_prefix Prefix when a AWS profile is activated (default: undefined)
with a AWS Vault with a AWS Profile
image image

πŸ€– Test against MacOS in CI

We use brew to install Fish.

New Contributors

Full Changelog: https://github.com/pure-fish/pure/compare/v4.10.1...v4.11.0


v4.10.1: Add support for Nix build environment

2024-01-25

What's Changed

Nix develop Shell activation

Option Default Description
pure_enable_nixdevshell false Indicate if a nix develop shell is activated (based on IN_NIX_SHELL).
pure_symbol_nixdevshell_prefix ❄️ otherwise nerdfonts: '󱄅' or 'οŒ“'
pure_color_nixdevshell_prefix pure_color_info prefix color
pure_color_nixdevshell_symbol pure_color_mute symbol color

Usage

set --universal pure_enable_nixdevshell true

New Contributors


v4.9.0: Truncate prompt current_directory and title to keep last components

2024-01-23

What's Changed

Config

πŸ’» Prompt shortening

Option Default Description
pure_truncate_prompt_current_directory_keeps 0 Truncate working directory path in prompt, but keeps the last to n components (0 full path in current directory)

set --universal pure_truncate_prompt_current_directory_keeps 2
image

πŸͺŸ Window's title shortening

Option Default Description
pure_truncate_window_title_current_directory_keeps 0 Truncate working directory path in window title, but keeps the last to n components (0 keep full path in window title)
set --universal pure_truncate_window_title_current_directory_keeps 2

πŸ‘ Thanks

Full Changelog: https://github.com/pure-fish/pure/compare/v4.8.3...v4.9.0


v4.8.2: fix k8s context checking

2023-12-01

What's Changed

Default when no namespace set

image

New Contributors

Full Changelog: https://github.com/pure-fish/pure/compare/v4.8.1...v4.8.2


v4.8.1: Add color customization to kubernestes symbol

2023-09-26

What's Changed

  • refactor k8s support #330

🎨 New config in conf.d/pure.fish

_pure_set_default pure_color_k8s_symbol pure_color_dark

Usage

set --universal pure_enable_k8s true # enable the featyre
set --universal pure_color_k8s_symbol cyan # customize color

Preview

image

πŸ‘ Thanks

  • @bobsoppe for spotting the gap and submitting the PR

v4.8.0: NixOS support

2023-08-30

What's Changed

NixOS Support

Some of the tests and test utils assumed they were ran by $USER=nemo. This is not the case in NixOS and probably other distros as well. We fixed the tests for NixOS, but there is still work to do ensure

CI

NixOS Job

We added a job to run the test again NixOS 2.17.0 using Fish 3.6.1 only

image

Dropping Versions Support

The following versions have been dropped, following our Versions Support Strategy

- Fish: 3.0.2
- Fish: 3.1.2
- Fish: 3.2.2
- Fish: 3.3.1

Mocks

We recently introduced a set of helpers functions to mock and spy system or pure's function. Here is a summary, but be sure to check the content of https://github.com/pure-fish/pure/tree/master/tests/mocks for implementation details.

Mocking

  • _mock: Mock a function using the mock in tests/mocks/
  • function_name: name of the method to mock
  • _mock_exit_status: Mock a response exit status for a mock function
  • function_name: name of the method to mock
  • status_code: response to return
  • _mock_response: Mock a response for a mock function
  • function_name: name of the method to mock
  • response: response to return
  • _clean_mock: Clean a mock function (warning: erase the function)
  • function_name: name of the method to mock

Spying

  • _spy: Create a spy method so, you can check it's been called with _has_called
  • function_name: name of the method to spy
  • _has_called: check spy method has been called, i.e has written to the /tmp/$function_name.mock_calls
  • function_name: name of the that have been spied on
  • function_args # arguments to passed to the spy

Cleaning

  • _clean_all_mocks: Clean all mock functions created by _mock
  • _pure_unmock: Restore a pure function by reloading its source
  • function_name: name of the method to mock
  • _clean_all_spy_calls: Clean all spy calls created by _spy

⬇ Installation

fisher update pure-fish/pure; or fisher install pure-fish/pure

πŸ‘ Thanks

  • @pacien for spotting the issue, providing feedback about NixOS and his patience

Full Changelog: https://github.com/pure-fish/pure/compare/v4.7.1...v4.8.0


v4.7.1

2023-08-29

What's Changed

Full Changelog: https://github.com/pure-fish/pure/compare/v4.7.0...v4.7.1


v4.7.0: Virtualenv feature flag and customization symbol

2023-08-22

What's Changed

🐍 Add feature flag and customization symbol for Virtualenv

Preview

image

Configuration

Option Default Description
pure_symbol_virtualenv_prefix Prefix when a Python virtual env is activated (default: undefined)
pure_enable_virtualenv true Show virtual env name (based on VIRTUAL_ENV or CONDA_DEFAULT_ENV).

Default Behaviour: true

❯ set --universal pure_enable_virtualenv true

Feature Enable: true

❯ set --universal pure_enable_virtualenv true
❯ set --universal pure_symbol_virtualenv_prefix "🐍 "

Then activate a virtualenv or simulate one:

❯ set VIRTUAL_ENV /home/test/fake/project/ # simulate virtualenv
~/projects/contributions/pure master ≑
🐍 project ❯

pure_enable_virtualenv.webm

⬇ Installation

fisher install pure-fish/pure

πŸ‘ Thanks

Full Changelog: https://github.com/pure-fish/pure/compare/v4.6.4...v4.7.0


v4.6.4

2023-08-21

What's Changed

Full Changelog: https://github.com/pure-fish/pure/compare/v4.6.3...v4.6.4


v4.6.3

2023-08-21

What's Changed

New Contributors

Full Changelog: https://github.com/pure-fish/pure/compare/v4.6.2...v4.6.3


v4.6.2

2023-08-21

What's Changed

  • improve _pure_prompt_git_dirty #286 thanks to @spthm

Full Changelog: https://github.com/pure-fish/pure/compare/v4.6.1...v4.6.2


v4.6.1

2023-08-21

What's Changed

  • fix/tests by @edouard-lopez in pure-fish/pure!324
  • Add test helpers function: _spy, _has_called, _cleanup_spy_calls
  • renaming: setup β†’ before_all, teardown β†’ after_all

Full Changelog: https://github.com/pure-fish/pure/compare/v4.6.0...v4.6.1


v4.6.0: Kubernetes context and namespace, message warn missing requirement, pull request template

2023-08-16

What's Changed

☸ Kubernetes Context and Namespace

Configuration

Option Default Description
pure_symbol_k8s_prefix ☸ Prefix when being connected to Kubernetes/K8s
pure_enable_k8s false true: shows kubernetes context and namespace.

Default Behaviour: false

❯ set --universal pure_enable_k8s false
~/projects/contributions/pure master ≑

Feature Enable: true

❯ set --universal pure_enable_k8s true
~/projects/contributions/pure master ≑ ☸ int-infra-eks-cluster-eu-west-3/qraft

πŸ’‘ Warning Message When Command Required by Feature is Missing

For now, this mechanism is only on the k8s feature, but that's something I would like to add to other features.

pure-k8s-feature.webm

The detection behaviour is implemented in _pure_check_availability function & tests and it's used like:

_pure_check_availability <feature_name> <cmd>
Where feature_name is the feature that requires the command/function cmd

Pull request template

Link to resources and how-tos to give contributors autonomy. See .github/pull_request_template.md for full content.

Preview

pure-pull-request-template

⬇ Installation

fisher install pure-fish/pure

πŸ‘ Thanks

  • @dwt for initiating the conversation #291

4.5.0: Custom window's and prompt's title shortening flag

2023-08-01

fish_title: add setting to configure pwd dir length

Add new pure_title_dir_length setting (default to 0) to configure the pwd dir length. 0 means complete directory name.

πŸ’» Prompt shortening

Option Default Description
pure_shorten_prompt_current_directory_length 0 Shorten every prompt path component but the last to X characters (0 do not shorten)

No shortening with 0

❯ set --universal --export pure_shorten_prompt_current_directory_length 0
~/projects/contributions/pure master ≑ ⇑

Custom shortening

❯ set --universal --export pure_shorten_prompt_current_directory_length 1
~/p/c/pure master ≑ ⇑
❯ set --universal --export pure_shorten_prompt_current_directory_length 2
~/pr/co/pure master ≑ ⇑

πŸͺŸ Window's title shortening

Option Default Description
pure_shorten_window_title_current_directory_length 0 Shorten every window title path component but the last to X characters (0 do not shorten)

No shortening with 0

❯ set --universal --export pure_shorten_window_title_current_directory_length 0
image

Custom shortening

❯ set --universal --export pure_shorten_window_title_current_directory_length 1
image

⬇ Installation

fisher install pure-fish/pure

πŸ‘ Thanks


v4.4.4: Fish 3.6.1 and fix container detection default behavior

2023-06-29

πŸ› Remove user@host information by default

The prompt behaviour was inconsistent with the pure_enable_container_detection flag. The component user@host was shown when it was not supposed to be (cf. #319).

Now, you need to enable the feature to see the prompt when inside container:

set --universal pure_enable_container_detection true

⬇ Installation

fisher install pure-fish/pure

Thanks

@broizter WSL 1 shows user@hostname #319

🌱 Fish 3.6.1 is supported

I updated the CI to test against 3.6.1 using pure-fish/docker-fish image.


v4.4.2: Restore fish_prompt to default content after _pure_uninstall run #316

2023-06-29

πŸ› Restore fish_prompt to default content after _pure_uninstall run

pure-related variables were erased, but the fish_prompt file was still calling pure functions and throwing a lot of errors.

To mitigate this, we replace fish_prompt.fish from the user ($__fish_config_dir) by the default one (__fish_data_dir)

πŸ‘ Thanks

⬇ Installation

fisher install pure-fish/pure

What's Changed

Full Changelog: https://github.com/pure-fish/pure/compare/v4.4.1...v4.4.2


v4.4.1: Fix The path part doesn't show

2023-01-31

πŸ› The path part doesn't show

When git is missing from the system, we incorrectly aborted the whole prompt, and we even had a test case for that πŸ˜† So now, we simply skip git-related features when it is missing and carry on (cf. #313).

πŸ‘ Thanks

⬇ Installation

fisher install pure-fish/pure

πŸ“¦ v4.4.0: Add SSH and container symbol customization

2022-12-14

As for previous features, the customization is opt-in, and it's up to the user to configure it.

πŸ‹ Container detection and prefix

The container detection is enabled by default, but you need to be inside a container to see its effect:

setting container prefix

Default settings

pure_enable_container_detection true
pure_symbol_container_prefix "" # suggestion: 'πŸ‹' or 'πŸ“¦'

Usage

The default symbol is an empty string, you will need to set what you want like:

❯ set --universal pure_symbol_container_prefix 'πŸ‹'

πŸ’» SSH detection and prefix

The SSH detection is enabled by default, but you need to be inside a container to see its effect: preview-v4 4 0-ssh

Default settings

_pure_set_default pure_symbol_ssh_prefix "" # suggestion: 'ssh:/' or 'πŸ”—πŸ”πŸ”’πŸŒ'

Usage

The default symbol is an empty string, you will need to set what you want like:

❯ set --universal pure_symbol_ssh_prefix 'ssh:/'

⬇ Installation

fisher install pure-fish/pure

v4.3.1: Fix SSH prompt

2022-10-18

πŸ› Remove unwanted character

  • [x] fix(prompt): remove unwanted characters in my prompt #305

⬇ Installation

fisher install pure-fish/pure

πŸ‘ Thanks


v4.3.0: Add flag to disable container detection

2022-10-18

πŸ› Remove unwanted character

  • [x] fix/301 voidlinux container detection #302

🏴 Add flag to disable container detection

Let user disable container detection as detecting this is not an exact science.

Option Default Description
pure_enable_container_detection true false: Do not check if run in container (e.g. docker, podman, LXC/LXD, etc.).
⚠ Detection is a bit [tricky across OSes][container-detection].

Enable feature

❯ set --universal pure_enable_container_detection true

⬇ Installation

fisher install pure-fish/pure

πŸ‘ Thanks


v4.2.3: Skip Linux-only methods to detect container on MacOS

2022-10-08

πŸ› Fix: Linux-only methods to detect container on MacOS

Issue #295 was caused by functions that expected /proc/ to exist on the system to be executed. However, those are Linux-only approach. So, running them only for Linux declared OS (cf. uname -s) fixed the issue in #298 .

### ⬇ Installation The project has a new home, thanks to @rafaelrinaldi. It's now under pure-fish organization:

fisher install pure-fish/pure

πŸ‘ Thanks


v4.2.2: Fix MacOS container detection #295

2022-10-06

Fix MacOS container detection

Detecting if we run inside a container or a bare OS require hacks specific to OS. The _pure_detect_container_by_pid_method isn't compatible with MacOS, as it's based on /proc/ contains.

  • [x] warning: An error occurred while redirecting file '/proc/1/cgroup' #295

⬇ Installation

The project has a new home, thanks to @rafaelrinaldi. It's now under pure-fish organization:

fisher install pure-fish/pure

πŸ‘ Thanks