Releases: ll-nick/leadr
v2.8.5
This release contains the following changes:
Fix release artifacts
This change the order of the repo clone and the artifact download in the release workflow fixing an issue where no release artifacts where found.
Prepare release
This bumps the version and updates the contribution section to prepare the new release.
Enforce formatting and linting, improve code quality
This adds a formatting and a linting step to the workflow that's run at every push and renames it to run_checks. Coincidentally, this PR fixes some issues that clippy brought up improving the overall code quality.
Improve keybind parsing for fish shell
The generated bind command now uses proper fish-specific parsing as opposed to the ansi escape codes used previously. That improves the generated fish init script and closes #48.
Thanks @johnstegeman for your contribution!
Improve release workflow
This improves the release workflow by:
- Making sure the lock file has been updated to the correct version (the Cargo.toml file has been verified already)
- Making builds more reproducible by running builds using the
--lockedflag - Auto-generating some release notes using all merge commits since the last tag
Merge pull request #51 from ll-nick/update-lock-file
Update version in lockfile
v2.8.4
This simplifies the install of leadr in particular for the macOS crowd. Aside from adding the missing aarch64 binary to the release assets from now on, there is now also a homebrew tap allowing a simple brew install. The tap is automatically updated on each release meaning it will always be up-to-date.
Thanks @ltaupiac for kicking this off and setting up the homebrew formula!
v2.8.3
Merge pull request #45 from ll-nick/fix-macos-for-realsies Closes #42 - for good this time. This fixes an issue experiences by macOS users. The fact that `leadr` is invoked via a shell script (meaning stdin/stdout are redirected) requires a special feature flag in the `crossterm` crate on macOS systems, see e.g. [this issue](https://github.com/crossterm-rs/crossterm/issues/939) for reference. Thanks @bjohnso5 for reporting this and testing out the solution.
v2.8.2
Merge pull request #44 from ll-nick/improve-error-msgs This switches the error handling crate from `thiserror` to `color-eyre`. While there is nothing wrong with the prior, the latter is a lot more suitable for this use case and prints very nice messages including a backtrace and the source file location. This should be very helpful in current and future debugging endeavors.
v2.8.1
Merge pull request #43 from ll-nick/fix-cursor-query This patches an issue with querying the terminal for the cursor position which failed on macOS breaking the keymapping panel. Thanks @johnallen3d for pointing this out and helping to find and test the solution on macOS! Closes #42
v2.8.0
Merge pull request #41 from ll-nick/feat/fish This adds support for yet another shell. This time, we are talking about fish shell 🐟. Thanks @Banh-Canh for contributing the integration!
v2.7.1
Merge pull request #40 from ll-nick/query_cursor_in_rust This fixes a small annoyance in querying the terminal for the cursor position. Some technical details: The line that the cursor is currently on must be known inside the rust application in order to compute the amount of scroll-up required to draw the panel without overlapping the current prompt. Due to this issue in the crossterm crate and the fact that stdin/stdout is always piped inside the shell integrations, it is not currently possible to simply call crossterm::cursor::position. Previously this was solved a little hacky: Each shell integration queried the current cursor position and passed it to the rust application via an environment variable. While that works, it requires re-implementing the same features for each shell and querying the terminal is not the most straight-forward thing to do. Therefore, this PR changes that and queries the cursor position from inside the rust application itself by directly querying the controlling terminal via /dev/tty. Additionally, ad1817b tidies up the shell integration tests that had not been adapted to the changes introduced in v2.7.0. Whoopsie.
v2.7.0
Merge pull request #39 from ll-nick/feat/nushell This brings leadr with all its features to nushell 🔥 Some implementation details: In order to enable/simplify the integration of additional shells, the way the shell specific init scripts are generated is slightly adjusted. Instead of replacing only the key code for the keybinding in a template script, leadr just appends the entire code to bind the desired leadr key binding to the corresponding init script. This simplifies the integration of the vastly different syntax utilized by different shells. As a side effect, the init.* scripts are now valid shell scripts. So a user could also source the script and then manually bind the wrapper function or do whatever with it. Since the whole keybinding logic grew quite a bit since the project started, it is now split across several submodules for easier maintenance and potential future shell integrations.
v2.6.1
Merge pull request #38 from ll-nick/fix-cursor-positioning This is a minor bug fix regarding the cursor positioning for insert mappings in zsh. The previously merged shell test helpers allowed a more structured approach to test all the mapping types which uncovered this bug. Additionally, the surround cursor positon has been adjusted in both bash and zsh to keep the cursor where it was before. I believe that is the expected behavior and also more in line with what the other insert types do when no explicit cursor position was defined.
v2.6.0
Merge pull request #32 from ll-nick/improve-demo This replaces the current demo with a newer version which (hopefully) improves some aspects of the previous one. Aside from some fixes that have happened since the last recording (most notably the mapping panel), this version also significantly reduces the pace by using a typing effect while printing the explanations. I also opted for keeping a video version rather than a gif to make it possible to play and pause and added all the files I used to create the demo to the repository.