Releases: zulu-zsh/zulu
v1.5.0
Features
Adds a new --bare
option to Zulu init (#98)
This launches Zulu without loading any packages, aliases, functions or variables. This is useful when debugging issues on behalf of users, to rule out any environment-specific issues.
Adds support for global aliases (#99)
Running zulu alias add -g G ' | grep '
will now add G
as a global alias. These can be removed as before with zulu alias rm 'G'
.
IMPORTANT: Global aliases must be quoted when deleting, otherwise the contents of the aliases will be substituted into the command.
Enhancements
zulu update
now prints the names of packages which have been added/updated (#106)
Bugfixes
- Running
zulu theme
without arguments now prints the current theme (#103) - Errors when switching between
master
andnext
are now handled and reported (#100) - Fixes a rare parse error on install (#105, thanks @AdrieanKhisbe)
- Fixes an issue where package name was occasionally used in place of repository when installing a package as a dependency (#107)
Todo
- Update Documentation (zulu-zsh/www#10)
- Bump Version
v1.4.1
Bugfixes
- Fixes a whole host of bugs caused by user-defined aliases affecting Zulu functionality (#95)
- Fixes a bug that meant switching between
master
andnext
would not take effect until the shell was restarted. (f204e51) - Fixes a bug where keybindings for up/down/left/right would not work after zle-line-init (439ad54, zsh-users/zsh-history-substring-search#70)
v1.4.0
Features
- Installing a package will now display a warning if it collides with another installed package (#81)
Enhancements:
- Simplify the
zulu list
command internally (e7b1f37) - Improve performance of
zulu list
(#84) - Ensure alphabetical order of packagefile is maintained when installing packages (0ba9cbc)
- Add
--branch
and--tag
options tozulu list
(c0378ef) zulu bundle --dump
now prints branch and tag information in packagefile (c0378ef)zulu bundle
now installs the correct branch or tag (5725551)
Bugfixes
v1.3.0
We love the ZSH community, and we rely on Zulu users for bug reports, feature requests and suggestions to help us make Zulu better. To that end, in this release we've added some great new features to help you to help us.
Announcing Zulu Next
We're pleased to announce the release of Zulu Next. This is a new beta channel of Zulu that will receive more regular updates, so If you like being at the cutting-edge of things, you can switch to Zulu Next to try out new features before they make it into the main release. To use Zulu Next, all you need to do is add the --next
flag to the zulu init
call in your .zshrc
:
zulu init --next
If you do decide to switch to Zulu Next, we'd love it if you could give us some feedback on new features, and report any bugs you find. You can do that in our issue tracker. Issues referring to features in the next
branch will be tagged with the next label. You can find the documentation for Zulu Next at https://next.zulu.sh.
To be able to make this work, and to make updating more seamless, Zulu will now carefully enforce the branch that its core repository has checked out - master
if you call zulu init
in your .zshrc
, and next
if you call zulu init --next
. If you are working on Zulu itself and have uncommitted changes in ~/.zulu/core
they will be lost when the shell session restarts. You can avoid this by turning on dev mode, which will disable the branch check on startup. Just add zulu init --dev
to your .zshrc
.
NOTE: Whilst this version is in beta, you'll need to switch to the next branch manually, as the
--next
flag does not yet exist in master. You can do that by running the following commands, then restarting your terminal session:
cd ~/.zulu/core
git fetch origin
git checkout next
./build.zsh
Using Different Versions of Packages
A new zulu switch
command has been added, which will allow you to specify a different branch, tag or commit to checkout for a specific package.
# Switch to the next branch for the zunit package
zulu switch --branch next zunit
# Switch to the tag v0.7.0 for the zunit package
zulu switch --tag v0.7.0 zunit
The --branch
and --tag
options have also been added to zulu install
, so that you can specify the version when installing a package.
Analytics
As well as Zulu Next, we've added some anonymous usage analytics into Zulu core, to help us better understand the features which are important to our users, and how they use them. If you wish to opt-out of this feature, just run the following command after updating to v1.3.0:
zulu config set analytics false
Zulu Configuration File
We've added a new configuration file at ~/.config/zulu/config.yml
and a command zulu config
to manage it, which will let you change the way Zulu works. There aren't many options yet, (just the analytics opt-out you can see above), but the number of available options will grow as Zulu evolves, allowing you to have much more control over how your environment operates.
Syncing
We know many of our users use multiple computers, so we've added a really easy way to sync your Zulu configuration across machines. All you'll need is a git repository, hosted on Github, Gitlab, Bitbucket or a similiar service. Just run zulu sync
to get started, and follow the instructions.
New Default Theme
The old default theme filthy was quite feature-rich, and overkill for the majority of users. The new default theme is much simpler, and is available in the package index now as zulu-theme
.
Full Breakdown of Changes in v1.3.0
New Features
- Add new config file at
~/.config/zulu/config
(#69) - Add new
zulu config
command to manage config values (#69) - Adds new
zulu sync
command for syncing environment in a separate git repository. (#71) - Adds new
--next
flag tozulu init
to use the bleeding-edgenext
branch. (#74) - Adds new
--branch
and--tag
options tozulu install
to checkout different package versions. (#75) - Adds new
zulu switch
command to change the version of an installed package, which accepts--branch
and--tag
options. (#75)
Other
- Zulu now collects a small amount of anonymous usage data to support development efforts. You can opt-out of this by running
zulu config set analytics false
. (#70)
v1.2.1
v1.2.0
Features
- Adds a new
zulu manpath
command for adding/removing directories from$manpath
(#48) - Allows packages to specify a
post_install
script in their index file, which will be run during linking (#58) - The progress spinner can be disabled globally by setting
$ZULU_NO_PROGRESS=1
. This is helpful when running zulu commands within a script. (6f5bddf) - Adds new
-p
,--private
options tozulu var add
, which stores private variables in a separate file, allowing you to exclude them from version control. Just add~/.config/zulu/env.private
to your.gitignore
file. (#62) - Adds new
-y
,--no-confirmation
options tozulu ugprade
, which will stop the script asking for confirmation before upgrading packages. (93cb2fd) - Adds new
-t
,--type
option tozulu list
, to allow filtering of packages by their type, e.g.zulu list --type theme
. (d6def7b) - Adds autocompletion for the
zulu theme
command. (55a0cc5) - Adds a new
--dev
option tozulu init
for Zulu developers. When enabled, Zulu will load the source for a command when it is executed, preventing the need to rebuild Zulu and reload the environment between changes. (#64)
Improvements
- The
zulu self-update
,zulu update
andzulu upgrade
commands have been rewritten so that updates will are more likely to succeed on branches other thanmaster
. Local changes in the respective repositories are also now preserved between updates. (9b7191b, fea7606 and 12503d3) - Package installation is now faster, as commit histories are not downloaded. (#57)
- Startup update checks are now done asynchronously for better startup times (#51)
- If you use zvm, the
ZVM_AUTO_USE
environment variable is unset before doing package upgrades to prevent the ZSH version being changed (#50) - Huge changes made to the way Zulu and its packages are loaded in order to dramatically increase startup performance. (#56)
- Source is now moved into
src
directory, and the scriptbuild.zsh
has been added to the repository, which concatenates all the source files into a single script with comments removed for speed. - The
self-update
command has been modified to run thebuild.zsh
script once it has finished downloading updates. - Adds a new
compile
command, which runszcompile
on Zulu itself, all files in~/.zulu/{bin,share,init}
, the completion cache and the following files in the user's$ZDOTDIR
:.zlogin
.zshenv
.zprofile
.zshrc
.zlogout
The end result is a massive increase in startup speed.
zulu compile
is run in the background to compile sources on startup. A new--no-compile
option has been added tozulu init
to avoid this.
- Source is now moved into
Bugfixes
- Fix array assignment errors in ZSH 5.0 within the
zulu cdpath
command - These had already been fixed forpath
andfpath
. (b98d5af) - Ensure that the contents of
$path
,$fpath
and$cdpath
are always unique. (212ca93) (Also fixed in the install script in commit e70cf7b). - Fixes a bug with the
zulu theme
command which would store a theme name, even if the theme did not exist and the command returned an error. (6faa801) - Fixes a typo in Zulu's completion script which prevented results from being cached properly. (76c2b7c)
- The
zulu install
andzulu uninstall
commands are now far better at catching and reporting errors. (3e24dab and 29a192a) $IFS
is handled safely in a number of places where it was previously being reassigned globally.- A few internal functions were checking if they were already defined before being registered, meaning that after an update the older definition would not be replaced with the newer one, causing unexpected behaviour until the shell was restarted. This has been resolved. (5a4c399)
- The
zulu func
command would fail if the value of$EDITOR
included spaces (e.g.EDITOR='cat -e'
). This has now been resolved. (de6b454)
Other
- Most of Zulu's functionality is now covered by unit tests (#47)
- Documentation has been updated (zulu-zsh/www#1)