Skip to content

Releases: jorgebucaran/fisher

3.1.1

20 Jan 18:30
3.1.1
e9925f4
Compare
Choose a tag to compare
  • Show error if plugin being removed was not found (#478).
  • Improved readability / indentation inside _fisher_commit.
  • Renamed seen to seen_pkgs.
  • Changed regular expression to remove everything before ***github.com/foo/bar.

3.1.0

17 Oct 09:15
3.1.0
ddf7334
Compare
Choose a tag to compare
  • Added user key bindings autoloading for legacy Fish; related to (#465, jethrokuan/fzf/pull/85).
    • To enable running code on shell startup, we now create a configuration snippet for Fisher. This file is located in $fisher_path/conf.d/fisher.fish. This file is only created if a version of Fish older than 3.0 is detected or if you are using a development/untagged release. If you upgrade to version 3.0 after using an older version and we know that we've created this file prior to this point, we'll remove the file as it's no longer needed.
    • To support plugins that add key bindings, we make a copy of the user's fish_user_key_bindings function (if it exists) and create a new function that, when called, will source every *_key_bindings.fish file inside $fisher_path/conf.d. Any key bindings defined in those files will be correctly registered at this point. When we're done, we'll run our saved copy of the user's fish_user_key_bindings to preserve any user-defined key bindings in it.
  • Fixed legacy Fish instructions; improved punctuation and grammar.
  • Added more information to the help command; related to (#474).
    • Command line usage help now informs you that running fisher will update installed plugins.
    • Running fisher also commits Fishfile changes, but all the words couldn't fit on the same line.
  • Implemented copying files from subdirectories (#468).
    • Supporting nested directories is an anti-feature.
    • It exists only so that we can install certain plugins that are structured that way.
    • All functions share the same scope and location.
  • Normalized plugin id in Fishfile format script.

3.0.9

17 Oct 08:26
3.0.9
45e556a
Compare
Choose a tag to compare
  • Do not strip github.com from local paths (#472).
  • Avoid hardlinking (#470).
  • Allow installation of self-hosted plugins via ssh+git (#464).
  • Display the correct time on Linux (#463).
  • Enhanced the visibility of the migration guide (#450).
  • Enhanced the plugin fetch error message.
  • Improved the readability of the status report generator.
  • Refined the fishfile prettify/normalize regex.

3.0.8

08 Oct 13:00
3.0.8
68e4ee6
Compare
Choose a tag to compare
  • Mention that packages can be installed from a commit-ish.
  • Simplify the parsing script for the built-in jobs.
  • Use $__fish_data_dir if available.

3.0.7

08 Oct 12:55
3.0.7
0898825
Compare
Choose a tag to compare
  • Make the trailing slash optional in $fisher_config (#462).
  • Use basename to remove the path prefix more reliably (#462).
  • Do not create a new fishfile (except for the first time) (#460).
  • Do not expect https:// to start lines in the fishfile.

3.0.6

08 Oct 12:54
3.0.6
785fa47
Compare
Choose a tag to compare
  • Use the real target if the fishfile is a symbolic link (#460).
  • Do not use functions -q $filename as a loose check for a .fish file; instead, use a string match (#459).

3.0.5

08 Oct 12:40
3.0.5
60d3c4c
Compare
Choose a tag to compare
  • Do not download packages already downloaded.
  • Enhance error message when attempting to install a package without a prefix.

3.0.4

08 Oct 12:37
3.0.4
543e97d
Compare
Choose a tag to compare
  • Use Perl for epoch exclusively on FreeBSD and Darwin (#458).
  • Copy non-fish files into $fisher_path (#456).
  • Enhance commit error message when the fishfile is not empty.
  • Dry-run self-uninstall; include a farewell message.
  • Display version and help information in CI.
  • Added upgrading instructions and link to the migration guide (#450).

3.0.3

06 Oct 00:22
3.0.3
8c348f4
Compare
Choose a tag to compare
  • Prevent failglob error when $fisher_config is empty (#455).
  • Don't try to install a package from an invalid specifier (#454).
  • Create fishfile automatically (#451).
    • Create fishfile if one doesn't already exist.
    • Only read from stdin when using add or rm commands.
    • Show help if an unknown command is entered.
    • Show error message when fishfile is empty and no packages were added, removed or updated.
  • Added upgrading instructions and link to migration guide (#450).

3.0.0

05 Oct 11:44
3.0.0
4e4c2a9
Compare
Choose a tag to compare

Fisher 3 is the continuation of and successor to Fisherman. For historical background on this work, see the original V3 proposal (#307) and later discussion about the future of the project (#443).

Installing Packages

  • The install command has been renamed to add.
    • Installing from a gist is no longer supported (but it might come back in a future release).
    • To install a package from a tag, branch, or commit-ish, use an @ symbol followed by the git ref; the colon : symbol has been deprecated.
    • Both .fish files provided by your package will be copied to $fisher_path.
      • .fish files in the top-level directory and files of any extension inside functions, completions, and conf.d directories will be copied to your $fisher_path.

Updating Packages & Self-Update

  • A new self-update command has been added, which can be used to update Fisher itself within the same shell session.
    • Fisher will be updated only if a new version is available.
  • The update command has been removed; to update all your installed packages, just run fisher.
    • Every time you run fisher, fisher add, or fisher rm, every package currently installed on your system is installed again from scratch, ensuring you are always up-to-date.
      • To lock a specific package version, use the @ symbol followed by a git tag, branch, or commit-ish, e.g., mypkg/[email protected], mypkg/bazbam@fdc5ce1.

Listing Packages

  • The ls and rm commands are still available, with a few minor differences.
    • ls followed by a package name does not list specific package information (but it might come back in a future release).
    • The ls output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier.
      • For local packages, the full path is shown instead.
      • I'm considering adding a new --tree flag to display packages in a tree-like format.
  • ls-remote has been removed, as there is no longer a preferred organization for finding packages.

Uninstalling Fisher

  • To uninstall Fisher from your system, use self-uninstall; no warnings, use with caution.
    • Unlike V2, this command will first remove all the packages currently installed, then proceed to remove Fisher itself.

Environment Variables

  • $fish_path has been renamed to $fisher_path to clarify that this variable is Fisher-specific, not part of your shell's.
    • This variable controls the prefix location where functions, completions, and configuration snippets will be copied when installing a package.
    • Unlike V2, the fishfile is always inside your Fish configuration directory (XDG_CONFIG_HOME/fish).

Compatibility with Oh My Fish!

  • Oh My Fish! packages are still largely supported, but 100% compatibility is not a goal.
    • Packages with init.fish, uninstall.fish, key_bindings.fish, or recursive directories should work out of the box.
    • init_ events, hooks, Oh My Fish! core library functions, and Oh My Fish! environment variables such as $OMF_PATH, $package, $path, and $dependencies are not currently supported.
      • If you tried to install an Oh My Fish! package and it didn't work as expected, please open an issue, and I'll look into it.

System Requirements

  • Fisher is compatible with Fish 2.0 and later versions.
    • For optimal functionality, including the use of the string builtin and configuration snippets, upgrading to Fish 2.3 or higher is recommended. However, Fisher does not mandate any specific version of Fish.
  • The curl utility is necessary to download packages.
  • While git is not a mandatory dependency, it is useful for retrieving self-hosted packages. Without git, Fisher directly downloads package tarballs from platforms like GitHub, GitLab, and Bitbucket.
    • Support for additional hosting platforms may be considered in the future based on user feedback and requirements.