zoxide/CHANGELOG.md
alaviss 0dfe1c4073
fix(elvish): before-chdir should assign to oldpwd upvalue (#818)
elvish uses lexical scoping for closure capture, as such all `oldpwd`
references within the script refers to the `oldpwd` defined at the top.
However, before-chdir hook is trying to assign to `oldpwd` within the
editor scope, which is not used by this script.

This manifested as a bug in which:

```
~
> mkdir -p /tmp/another

~
> z /tmp

/tmp
> z another

/tmp/another
> z -

~
> # The previous dir should be /tmp not ~!
```

Because the hook was updating a variable that was not used.

Fix the hook so that before-chdir assign to the proper upvalue.
2024-05-29 15:06:28 +05:30

13 KiB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Unreleased

Fixed

  • zsh: Space-Tab completion repeating output multiple times when matching single directory
  • fish: detect infinite loop when using alias cd=z.
  • fish / Nushell / PowerShell: handle queries that look like args (e.g. z -x).
  • zsh: better cd completions.
  • elvish: z - now work as expected.
  • Lazily delete excluded directories from the database.

0.9.4 - 2024-02-21

Changed

  • zsh: improved Space-Tab completions.

0.9.3 - 2024-02-13

Added

  • Nushell: support for v0.89.0.

0.9.2 - 2023-08-04

Added

  • Short option -a for zoxide query --all.

Fixed

  • PowerShell: use global scope for variables / functions.

0.9.1 - 2023-05-07

Added

  • Fish/Zsh: aliases on __zoxide_z will now use completions.
  • Nushell: support for v0.78.0.
  • Fish: plugin now works on older versions.
  • PowerShell: warn when PowerShell version is too old for z - and z +.
  • PowerShell: support for PWD hooks on all versions.

Fixed

  • Fish: not providing cd completions when there is a space in the path.
  • Bash/Fish/Zsh: providing z completions when the last argument starts with z!.
  • Bash/Fish/Zsh: attempting to cd when the last argument is z!.

0.9.0 - 2023-01-08

Added

  • edit subcommand to adjust the scores of entries.

Fixed

  • Zsh: completions clashing with zsh-autocomplete.
  • Fzf: 'invalid option' on macOS.
  • PowerShell: handle UTF-8 encoding correctly.
  • Zsh: don't hide output from chpwd hooks.
  • Nushell: upgrade minimum supported version to v0.73.0.
  • Zsh: fix extra space in interactive completions when no match is found.
  • Fzf: various improvements, upgrade minimum supported version to v0.33.0.
  • Nushell: accidental redefinition of hooks when initialized twice.

Removed

  • remove -i subcommand: use edit instead.

0.8.3 - 2022-09-02

Added

  • Nushell: support for z -.
  • Nushell: support for PWD hooks.

Changed

  • Fish: change fuzzy completion prefix to z!.
  • Zsh: allow z to navigate dirstack via +n and -n.
  • Fzf: improved preview window.

Fixed

  • Bash: double forward slash in completions.

0.8.2 - 2022-06-26

Changed

  • Fzf: show preview window below results.

Fixed

  • Bash/Fish/POSIX/Zsh: paths on Cygwin.
  • Fish: completions not working on certain systems.
  • Bash: completions not escaping spaces correctly.

0.8.1 - 2021-04-23

Changed

  • Manpages: moved to man/man1/*.1.
  • Replace --no-aliases with --no-cmd.
  • Elvish: upgrade minimum supported version to v0.18.0.
  • Nushell: upgrade minimum supported version to v0.61.0.

Fixed

  • Bash/Zsh: rename _z completion function to avoid conflicts with other shell plugins.
  • Fzf: added --keep-right option by default, upgrade minimum supported version to v0.21.0.
  • Bash: only enable completions on 4.4+.
  • Fzf: bypass ls alias in preview window.
  • Retain ownership of database file.
  • zoxide query --interactive should not conflict with --score.

0.8.0 - 2021-12-25

Added

  • Zsh: completions for z command.

Changed

  • Fzf: better default options.
  • Fish: interactive completions are only triggered when the last argument is empty.
  • PowerShell: installation instructions.

Fixed

  • PowerShell: use global scope for aliases.
  • Zsh: fix errors with set -eu.
  • Fzf: handle early selection.
  • PowerShell: correctly handle escape characters in paths.
  • Parse error on Cygwin/MSYS due to CRLF line endings.
  • Fzf: handle spaces correctly in preview window.
  • Bash: avoid initializing completions on older versions.
  • Fzf: avoid launching binary from current directory on Windows.

0.7.9 - 2021-11-02

Changed

  • Bash/Fish: improved completions for z command.

Fixed

  • Fish: error erasing completions on older versions.
  • PowerShell: enable --cmd cd to replace the cd command.

0.7.8 - 2021-10-21

Added

  • Auto-generated completions for Fig.

Fixed

  • Compile error with clap v3.0.0-beta.5.

0.7.7 - 2021-10-15

Fixed

  • PowerShell: hook not initializing correctly.

0.7.6 - 2021-10-13

Changed

  • Nushell: upgrade minimum supported version to v0.37.0.

Fixed

  • Xonsh: error messages in zi.
  • Xonsh: configuration environment variables not being handled correctly.

0.7.5 - 2021-09-09

Added

  • Bash/Elvish: completions for z command.

Changed

  • Nushell: upgrade minimum supported version to v0.36.0.
  • Nushell: easier installation instructions.

Fixed

  • Elvish: unable to z into directories by path.
  • Elvish: don't show traceback when z or zi fails.
  • Elvish: nested shells do not initialize correctly.

0.7.4 - 2021-08-15

Fixed

  • Compile error with clap v3.0.0-beta.4.

0.7.3 - 2021-08-05

Added

  • zoxide add and zoxide remove now accept multiple arguments.

Fixed

  • Nushell: errors on 0.33.0.
  • PowerShell: errors when initializing in StrictMode.
  • Bash/POSIX: remove conflicting alias definitions when initializing.
  • Bash: remove extra semicolon when setting $PROMPT_COMMAND.
  • Xonsh: use shell environment instead of os.environ.

0.7.2 - 2021-06-10

Fixed

  • zoxide -V not printing version.

0.7.1 - 2021-06-09

Added

  • Auto-generated shell completions.
  • zoxide query --all for listing deleted directories.
  • Lazy deletion for removed directories that have not been accessed in > 90 days.
  • Nushell: support for 0.32.0+.

Fixed

  • Nushell: avoid calling __zoxide_hook on non-filesystem subshells.
  • Fish: alias cd=z now works, but it must be done after calling zoxide init.
  • PowerShell: avoid calling __zoxide_hook on non-filesystem providers.
  • Fish: avoid calling __zoxide_hook in private mode.

0.7.0 - 2021-05-02

Added

  • Manpages for all subcommands.
  • Default prompt for Nushell.

Changed

  • zoxide remove -i now accepts multiple selections.
  • zoxide add no longer accepts zero parameters.
  • $_ZO_EXCLUDE_DIRS now defaults to "$HOME".
  • Binary releases now use .zip on Windows, .tar.gz otherwise.

Fixed

  • cd - on fish shells.
  • __zoxide_hook no longer changes value of $? within $PROMPT_COMMAND on bash.

Removed

  • GitHub install script.
  • Release binaries built with glibc, use musl instead.

0.6.0 - 2021-04-09

Added

Changed

  • z now excludes the current directory from search results.

Fixed

  • Removed backtraces on Rust nightly.
  • Generated shell code avoids using aliased builtins.
  • Handle broken pipe errors gracefully when writing to streams.
  • NUL file appearing in working directory on Windows.
  • Accidental redefinition of hooks when initialized twice on some shells.
  • zoxide unable to find itself on Xonsh shells.

Removed

  • Aliases: za, zq, zqi, zr, zri. These are trivial aliases that can easily be defined manually, and aren't very useful to most users.

0.5.0 - 2020-10-30

Added

  • $_ZO_EXCLUDE_DIRS now supports globs.
  • zoxide init now defines __zoxide_z* functions that can be aliased as needed.
  • Support for the xonsh shell.
  • zoxide import can now import from Autojump.

Changed

  • zoxide init --no-aliases no longer generates z or zi.

Fixed

  • Clobber conflicting alias definitions in bash/fish/zsh/POSIX shells.

Removed

  • Deprecated PWD hooks for POSIX shells.
  • Lazy deletion for inaccessible directories.

0.4.3 - 2020-07-04

Fixed

  • Bug in Fish init script

0.4.2 - 2020-07-03

Added

  • $_ZO_FZF_OPTS to specify custom options for fzf
  • zoxide query --list to list all matches
  • zoxide query --score to show score along with result

Changed

  • Increased default value of $_ZO_MAXAGE to 10000.
  • Symlinks are treated as separate directories by default, this can be changed by setting _ZO_RESOLVE_SYMLINKS=1.

Removed

  • Help menus for z and zri.
  • zoxide remove -i is replaced with zri.

0.4.1 - 2020-05-25

Added

  • Support for powershell.

Removed

  • Backward compatibility with v0.2.x databases.
  • Support for paths with invalid UTF-8.

0.4.0 - 2020-05-03

Added

  • Interactive mode for removing entries (zoxide remove -i).
  • Aliases for interactive query and remove (zqi and zri respectively).
  • PWD hooks for POSIX shells.

Changed

  • zoxide remove now throws an error if there was no match in the database.
  • Interactive mode in zoxide no longer errors out if fzf exits gracefully.
  • Canonicalize to regular paths instead of UNC paths on Windows.
  • zoxide init now uses PWD hooks by default for better performance.
  • $_ZO_ECHO now only works when set to 1.
  • Using the --z-cmd flag now also renames the associated aliases.
  • The --z-cmd flag has been renamed to --cmd.
  • The --no-define-aliases flag has been renamed to --no-aliases.

Fixed

  • fish no longer cds to the user's home when no match is found.

0.3.1 - 2020-04-03

Added

  • Version output displays git revision information.
  • --z-cmd flag for zoxide init to rename the z command to something else.

Changed

  • zoxide query output no longer has the query: prefix.

Fixed

  • Queries now also include checks for if the top level directory matches.

0.3.0 - 2020-03-30

Added

  • Automatic migration from v0.2.x databases.
  • $_ZO_EXCLUDE_DIRS to prevent directories from being added to the database.
  • Support for POSIX-compliant shells.

Changed

  • Database location defaults to user's local data directory.
  • Database schema now includes a version number.
  • migrate subcommand renamed to import.

Fixed

  • Thread safety using unique tempfile names for each zoxide instance.
  • Incomprehensive "could not allocate" message on database corruption.

0.2.2 - 2020-03-20

Fixed

  • Incorrect exit codes in z command on fish.

Removed

  • File locks on database.

0.2.1 - 2020-03-16

Added

  • $_ZO_ECHO to echo match before cding.
  • Minimal ranger plugin.
  • PWD hook to only update the database when the current directory is changed.
  • Support for bash.
  • migrate subcommand to allow users to migrate from z.

Fixed

  • Interactive queries causing other open shells to hang.

0.2.0 - 2020-03-11

Added

  • init subcommand to remove dependency on shell plugin managers.
  • Support for z - command to go to previous directory.
  • Cargo.lock for more reproducible builds.
  • Support for the fish shell.

Fixed

  • _zoxide_precmd overriding other precmd hooks on zsh.

0.1.1 - 2020-03-08

Added

  • Install script for Linux/macOS users.
  • Aging algorithm to remove stale entries.

Changed

  • Database schema now uses f64 values for rank instead of i32.

Fixed

  • Multiple hooks being added upon initializing zoxide multiple times.

0.1.0 - 2020-03-05

Added

  • GitHub Actions pipeline to build and upload releases.
  • Support for zsh.