Nish is a non-POSIX, multiplatform (tested on Linux and FreeBSD but should work on Windows too. With a lot of unixisms inside) command-line shell (similar to zsh, bash or fish), currently in the beta stage. It offers some features common for commands' shells, like Tab completion, syntax highlighting, variables or aliases. But it doesn't provide, for example, the own scripting language. Generally, think about it as a mix of Atuin and DirEnv projects, just written in Nim. :)
A long description:
All the shell's data, configuration, history, variables and aliases are stored in SQLite database. It allows adding some interesting features to the shell, like searching through its history.
The shell allows declaring not only standard aliases, which are available everywhere, but also aliases which available only in the selected directories. For example, you can declare alias build which in one directory will be executing make -j5 and in another nim release. Aliases can be declared for just one directory or for each subdirectory of the selected directory too.
There are available a few commands to manipulate the shell's commands' history, like show history or clear it. It is also possible to set the amount of commands to store in the shell's history, or the shell should store also invalid commands or not. When there is some text entered by the user, the history search only commands which starts with the entered text. The shell sorts the commands' history not only by most recently used, but also by most frequently used. Additionally, the command allows selecting the amount of commands to show, their sorting order and criteria. These settings cam be set as permanent in the shell's options or ad hoc for the one time. It is also possible to search for a command in the history with the separated shell command.
All shell's options can be previewed from the shell. Additionally, it is possible to set them inside the shell and reset options' values to the default values. Also, there are options which are read-only, like, for example, the current version of the shell's database schema.
Beside standard support for environment variables, with set and unset commands, the shell offers also ability to set environment variables only for the selected directories, in the same way how aliases set.
The shell's offers a very simple API which allows writing its plugins in any programming language. The communication between the shell and the plugin are made by standard input and output, where the API calls are sending as command line arguments. The plugins can reside in any location.
The whole content of the help is added to the local database of the shell. It
allows searching for help topics, but also to locally modify the help entries. The use can in any moment bring back the default content, or update the local with the new version, with the one command.