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.
theme.ron
now supports customizing line break symbol (#1894)- add confirmation for dialog for undo commit [@TeFiLeDo] (#1912)
- support
prepare-commit-msg
hook (#1873)
- stash window empty after file history popup closes (#1986)
- log: major lag when going beyond last search hit (#1876)
- parallelise log search - performance gain ~100% (#1869)
- search message body/summary separately (#1875)
- fix commit log not updating after branch switch (#1862)
- fix stashlist not updating after pop/drop (#1864)
- fix commit log corruption when tabbing in/out while parsing log (#1866)
- fix performance problem in big repo with a lot of incoming commits (#1845)
- fix error switching to a branch with '/' in the name (#1851)
search commits
visualize empty lines in diff better
-
Do you use a custom theme?
The way themes work got changed and simplified (see docs for more info):
- The format of
theme.ron
has changed: you only specify the colors etc. that should differ from their default value - Future additions of colors etc. will not break existing themes anymore
- The format of
- search commits by message, author or files in diff (#1791)
- support 'n'/'p' key to move to the next/prev hunk in diff component [@hamflx] (#1523)
- simplify theme overrides [@cruessler] (#1367)
- support for sign-off of commits [@domtac](#1757)
- switched from textwrap to bwrap for text wrapping [@TheBlackSheep3] (#1762)
- more logging diagnostics when a repo cannot be opened
- added to anaconda [@TheBlackSheep3] (#1626)
- visualize empty line substituted with content in diff better (#1359)
- checkout branch works with non-empty status report [@lightsnowball] (#1399)
- jump to commit by SHA [@AmmarAbouZor] (#1818)
- fix commit dialog char count for multibyte characters (#1726)
- fix wrong hit highlighting in fuzzy find popup [@UUGTech] (#1731)
- fix symlink support for configuration files [@TheBlackSheep3] (#1751)
- fix expansion of
~
incommit.template
(#1745) - fix hunk (un)staging/reset for # of context lines != 3 (#1746)
- fix delay when opening external editor (#1506)
- Copy full Commit Hash by default [@AmmarAbouZor] (#1836)
reset to commit
reword commit
fuzzy find branch
focus_XYZ
key bindings are merged into themove_XYZ
set, so only one way to bind arrow-like keys from now on (#1539)
- allow reset (soft,mixed,hard) from commit log (#1500)
- support reword of commit from log (#829)
- fuzzy find branch [@UUGTech] (#1350)
- list changes in commit message inside external editor [@bc-universe] (#1420)
- allow detaching HEAD and checking out specific commit from log view [@fralcow] (#1499)
- add no-verify option on commits to not run hooks [@dam5h] (#1374)
- allow
fetch
on status tab [@alensiljak] (#1471) - allow
copy
file path on revision files and status tree [@yanganto] (#1516) - print message of where log will be written if
-l
is set (#1472) - show remote branches in log [@cruessler] (#1501)
- scrolling functionality to fuzzy-find [@AmmarAbouZor] (#1732)
- fixed side effect of crossterm 0.26 on windows that caused double input of all keys [@pm100] (#1686)
- commit msg history ordered the wrong way (#1445)
- improve help documentation for amend cmd (#1448)
- lag issue when showing files tab (#1451)
- fix key binding shown in bottom bar for
stash_open
(#1454) --bugreport
does not require param (#1466)edit
-file command shown on commits msg (#1461)- crash on branches popup in small terminal (#1470)
edit
command duplication (#1489)- syntax errors in
key_bindings.ron
will be logged (#1491) - Fix UI freeze when copying with xclip installed on Linux (#1497)
- Fix UI freeze when copying with wl-copy installed on Linux (#1497)
- commit hooks report "command not found" on Windows with wsl2 installed (#1528)
- crashes on entering submodules (#1510)
- fix race issue: revlog messages sometimes appear empty (#1473)
- default to tick-based updates [@cruessler] (#1444)
- add support for options handling in log and stashes views [@kamillo] (#1661)
- minimum supported rust version bumped to 1.65 (thank you
time
crate)
Bugfix followup release - check 0.22.0
notes for more infos!
- new arg
--polling
to use poll-based change detection and not filesystem watcher (use if you see problems running into file descriptor limits)
- improve performance by requesting branches info asynchronous (92f63d1)
- fix app startup delay due to using file watcher (#1436)
- make git tree file fetch async (#734)
submodules view
commit message history
- submodules support (#1087)
- remember tab between app starts (#1338)
- repo specific gitui options saved in
.git/gitui.ron
(#1340) - commit msg history (#1345)
- customizable
cmdbar_bg
theme color & screen spanning selected line bg [@gigitsu] (#1299) - word motions to text input [@Rodrigodd] (#1256)
- file blame at right revision from commit-details [@heiskane] (#1122)
- dedicated selection foreground theme color
selection_fg
(#1365) - add
regex-fancy
andregex-onig
features to allow building Syntect with Onigumara regex engine instead of the default engine based on fancy-regex [@jirutka] - add
vendor-openssl
feature to allow building without vendored openssl [@jirutka] - allow copying marked commits [@remique] (#1288)
- feedback for success/failure of copying hash commit [@sergioribera](#1160)
- display tags and branches in the log view [@alexmaco] (#1371)
- display current repository path in the top-right corner [@alexmaco](#1387)
- add Linux targets for ARM, ARMv7 and AARCH64 [@adur1990] (#1419)
- display commit description in file view [@alexmaco] (#1380)
- allow launching editor from Compare Commits view (#1409)
popup stacking
termux android support
- stack popups (#846)
- file history log [@cruessler] (#381)
- termux support on andriod [@PeroSar] (#1139)
- use
GIT_DIR
andGIT_WORK_DIR
from environment if set (#1191) - new FAQs page
- mention macports in install section [@fs111](#1237)
- support copy to clipboard on wayland [@JayceFayne] (#397)
- opening tags list without remotes (#1111)
- tabs indentation in blame [@fersilva16] (#1117)
- switch focus to index after staging last file (#1169)
- fix stashlist multi marking not updated after dropping (#1207)
- exact matches have a higher priority and are placed to the top of the list when fuzzily finding files (#1183)
- support horizontal scrolling in diff view (#1017)
- minimum supported rust version bumped to 1.60 (#1279)
This is was a immediate followup patch release to 0.20
see release notes for the whole list of goodies in 0.20
.
- support proxy auto detection via env's like
HTTP_PROXY
(#994)
- severe performance regression in
0.20
(#1102) - several smaller performance improvements via caching (#1104)
- windows release deployment via CD broken
support tag annotations
delete tag on remote
revert commit from rev log
- support
core.hooksPath
(#1044) - allow reverting a commit from the commit log (#927)
- disable pull cmd on local-only branches (#1047)
- support adding annotations to tags (#747)
- support inspecting annotation of tag (#1076)
- support deleting tag on remote (#1074)
- support git credentials helper (https) (#800)
- Keep commit message when pre-commit hook fails (#1035)
- honor
pushurl
when checking credentials for pushing (#953) - use git-path instead of workdir finding hooks (#1046)
- only enable remote actions (fetch/pull/push) if there are remote branches (#1047)
- added
gg
/G
vim bindings tovim_style_key_config.ron
(#1039)
finder highlighting matches
Have you used key_config.ron
for custom key bindings before?
The way this works got changed and simplified (See docs for more info):
- You only define the keys that should differ from the default.
- The file is renamed to
key_bindings.ron
- Future addition of new keys will not break anymore
- add fetch/update command all remote branches (#998)
- add
trace-libgit
feature to make git tracing optional [@dm9pZCAq] (#902) - support merging and rebasing remote branches [@R0nd] (#920)
- add highlighting matches in fuzzy finder [@Mifom] (#893)
- support
home
andend
keys in branchlist (#957) - add
ghemoji
feature to make gh-emoji (GitHub emoji) optional [@jirutka] (#954) - allow customizing key symbols like
⏎
&⇧
(see docs) (#465) - simplify key overrides (see docs) (#946)
- dedicated fuzzy finder up/down keys to allow vim overrides (#993)
- pull will also download tags (#1013)
- allow editing file from filetree (#989)
- support bare repos (new
workdir
argument) (#1026)
- honor options (for untracked files) in
stage_all
command (#933) - improved file diff speed dramatically (#976)
- blaming files in sub-folders on windows (#981)
- push failing due to tracing error in upstream (#881)
rebase merge with conflicts
- support rebasing branches with conflicts (#895)
- add a key binding to stage / unstage items [@alessandroasm] (#909)
- switch to status tab after merging or rebasing with conflicts (#926)
- fix supported checkout of hierarchical branchnames (#921)
- appropriate error message when pulling deleted remote branch (#911)
- improved color contrast in branches popup for light themes [@Cottser] (#922)
- use git_message_prettify for commit messages (#917)
fuzzy find files
emojified commit message
- add supporting rebasing on branch (if conflict-free) (#816)
- fuzzy find files (#891)
- visualize progress during async syntax highlighting (#889)
- added support for markdown emoji's in commits [@andrewpollack] (#768)
- added scrollbar to revlog [@ashvin021] (#868)
- fix build when system level libgit2 version was used (#883)
- fix merging branch not closing branch window [@andrewpollack] (#876)
- fix commit msg being broken inside tag list (#871)
- fix filetree file content not showing tabs correctly (#874)
- new keys:
rebase_branch
[R
],file_find
[f
]
see vim_style_key_config.ron
for their default vim binding
compare commits
options
drop multiple stashes
branch name validation
- allow inspecting top commit of a branch from list
- compare commits in revlog and head against branch (#852)
- new options popup (show untracked files, diff settings) (#849)
- mark and drop multiple stashes (#854)
- check branch name validity while typing (#559)
- support deleting remote branch [@zcorniere] (#622)
- mark remote branches that have local tracking branch [@jedel1043] (#861)
- error viewing filetree in empty repo (#859)
- do not allow to ignore .gitignore files (#825)
- crash in shallow repo (#836)
- fixed performance regression in revlog (#850)
- fixed performance degradation when quitting on Windows (#823)
undo last commit
mark local tags
- taglist: show arrow-symbol on tags not present on origin [@cruessler] (#776)
- new
undo-last-commit
command [@remique] (#758) - new quit key
[q]
(#771) - proper error message if remote rejects force push (#801)
- openssl vendoring broken on macos (#772)
- amend and other commands not shown in help (#778)
- focus locked on commit msg details in narrow term sizes (#780)
- non-utf8 file/path names broke filetree (#802)
- honor
config.showUntrackedFiles
improving speed with a lot of untracked items (#752) - improve performance when opening filetree-tab (#756)
- indicator for longer commit message than displayed (#773)
- wrong file with same name shown in file tree (#748)
- filetree collapsing broken on windows (#761)
- unnecessary overdraw of the spinner on each redraw (#764)
merge branch, merge commit
tag list popup
revision file tree
commit subject length warning
- merging branches, pull-merge with conflicts, commit merges (#485)
- tags-list-popup (delete-tag, go to tagged commit) [@cruessler] (#483)
- inspect file tree tab (#743)
- file tree popup (for a specific revision) (#714)
- warning if commit subject line gets too long (#478)
--bugreport
cmd line arg to help diagnostics [@zcorniere] (#695)
- smarter log timestamps (#682)
- create-branch popup aligned with rename-branch [@bruceCoelho] (#679)
- smart focus change after staging all files (#706)
- do not allow to commit when
gpgsign
enabled (#740)
- selected-tab color broken in light theme [@Cottser] (#719)
- proper tmp file location to externally edit commit msg (#518)
file blame
- blame a file [@cruessler] (#484)
- support commit.template [@wandernauta] (#546)
- debug print when adding a file to ignore
- fix scrolling long messages in commit details view (#663)
- limit log messages in log tab (#652)
- fetch crashed when no upstream of branch is set (#637)
enter
key panics in empty remote branch list (#643)
- cleanup some stringly typed code [@wandernauta] (#655)
- introduce EventState enum (removing bool for even propagation) [@tisorlawan] (#665)
[w]
key to toggle between staging/workdir [@terhechte] (#595)- view/checkout remote branches (#617)
- ask to pop stash by default (apply using
[a]
now) [@brunogouveia] (#574)
- push branch to its tracking remote (#597)
- fixed panic when staging lines involving missing newline eof (#605)
- fixed pull/fetch deadlocking when it fails (#624)
Thanks for your interest and support over this year! Read more about the 1 year anniversary reflections of this project on my blog.
stage/unstage/discard by line
push tags
[s]
key repurposed to trigger line based (un)stage- cleanup status/diff commands to be more context sensitive (#572)
- support pull via rebase (using config
pull.rebase
) (#566) - support stage/unstage selected lines (#59)
- support discarding selected lines (#59)
- support for pushing tags (#568)
- visualize conflicted files differently (#576)
- keep diff line selection after staging/unstaging/discarding (#583)
- fix pull deadlocking when aborting credentials input (#586)
- error diagnostics for config loading (#589)
pull support (ff-merge or conflict-free merge-commit)
more info in commit popup
- support for pull (fetch + simple merging) (#319)
- show used char count in input texts (#466)
- support smoother left/right toggle/keys for commit details (#418)
- support force push command [@WizardOhio24] (#274)
- don't close branchlist every time (#550)
- fixed key binding for external exitor in vim key bindings [@yanganto] (#549)
- fix some potential errors when deleting files while they are being diffed (#490)
- push defaults to 'origin' remote if it exists (#494)
- support missing pageUp/down support in branchlist (#519)
- don't hide branch name while in commit dialog (#529)
- don't discard commit message without confirmation (#530)
- compilation broken on freebsd (#461)
- don’t fail if
user.name
is not set [@cruessler] (#79) (#228)
- number of incoming/outgoing commits to upstream (#362)
- new branch list popup incl. checkout/delete/rename [@WizardOhio24] (#303) (#323)
- compact treeview [@WizardOhio24] (#192)
- scrollbar in long commit messages [@timaliberdov] (#308)
- added windows scoop recipe (#164)
- added gitui to chocolatey on windows by @nils-a
- added gitui gentoo instructions to readme [@dm9pZCAq] (#430)
- added windows installer (msi) to release [@pm100] (#360)
- command to copy commit hash [@yanganto] (#281)
- upgrade
dirs
todirs-next
/ remove cfg migration code (#351) (#366) - do not highlight selection in diff view when not focused (#270)
- copy to clipboard using
xclip
(linux),pbcopy
(mac) orclip
(win) [@cruessler] (#262)
- crash when changing git repo while gitui is open (#271)
- remove workaround for color serialization [@1wilkens] (#149)
- crash on small terminal size (#307)
- fix vim keybindings uppercase handling [@yanganto] (#286)
- remove shift tab windows workaround [@nils-a] (#112)
- core.editor is ignored [@pm100] (#414)
- static linux binaries broke due to new clipboard feature which is disabled on linux for now (#259)
- fully customizable key bindings (see KEY_CONFIG.md) [@yanganto] (#109) (#57)
- support scrolling in long commit messages [@cruessler](#208)
- copy lines from diffs to clipboard [@cruessler](#229)
- scrollbar in long diffs (#204)
- allow creating new branch (#253)
- selection error in stashlist when deleting last element (#223)
- git hooks broke ci build on windows [@dr-BEat] (#235)
- move to (un)staged when the current selection is empty [@jonstodle](#215)
- pending load of a diff/status is visualized (#160)
- entry on git-scm.com in the list of GUI tools [@Vidar314] (see PR)
- commits can be tagged in revlog [@cruessler](#103)
- async fetching tags to improve reactivity in giant repos (#170)
- removed unmaintained dependency
spin
(#172) - opening relative paths in external editor may fail in subpaths (#184)
- crashes in revlog with utf8 commit messages (#188)
add_to_ignore
failed on files without a newline at EOF (#191)- new tags were not picked up in revlog view (#190)
- tags not shown in commit details popup (#193)
- min size for relative popups on small terminals (#179)
- fix crash on resizing terminal to very small width (#198)
- fix broken tags when using a different internal representation (#206)
- tags are not cleanly seperated in details view (#212)
- open file in editor [@jonstodle](#166)
- switch deprecated transitive dependency
net2
->socket2
incrossterm
->mio
- crash diffing a stash that was created via cli (#178)
- zero delta file size in diff of untracked binary file (#171)
- newlines not visualized correctly in commit editor (#169)
- core homebrew formulae:
brew install gitui
[@vladimyr](<#137>) - show file sizes and delta on binary diffs (#141)
- external editor support for commit messages [@jonstodle](#46)
- use terminal blue as default selection background (#129)
- author column in revlog is now fixed width for better alignment (#148)
- cleaner tab bar and background work indicating spinner:
- clearer help headers (#131)
- display non-utf8 commit messages at least partially (#150)
- hooks ignored when running
gitui
in subfolder of workdir (#151) - better scrolling in file-trees [@tisorlawan](#144)
- show untracked files in stash commit details [@MCord](#130)
- in some repos looking up the branch name was a bottleneck (#159)
- some optimizations in reflog
- fix arrow utf8 encoding in help window [@daober](#142)
- Inspect stash commit in detail (#121)
- Support reset/revert individual hunks (#11)
- Commit Amend (
ctrl+a
) when in commit popup (#89)
- file trees:
arrow-right
on expanded folder moves down into folder - better scrolling in diff (#52)
- display current branch in status/log (#115)
- commit msg popup: add cursor and more controls (
arrow-left/right
,delete
&backspace
) [@alistaircarscadden](#46) - moved
theme.ron
fromXDG_CACHE_HOME
toXDG_CONFIG_HOME
[@jonstodle](<#98>)
- reset file inside folder failed when running
gitui
in a subfolder too (#118) - selection could disappear into collapsed folder (#120)
Files: loading
sometimes wrong (#119)
- changed hotkeys for selecting stage/workdir (Note: use
[w]
/[s]
to change between workdir and stage) and added hotkeys ([1234]
) to switch to tabs directly (#92) arrow-up
/down
on bottom/top of status file list switches focus (#105)- highlight tags in revlog better
- New
Stage all [a]
/Unstage all [a]
in changes lists (#82) - add
-d
,--directory
options to set working directory via program arg [@alistaircarscadden](#73) - commit detail view in revlog (#80)
- support more commands allowing optional multiline commandbar (#83)
- support adding untracked file/folder to
.gitignore
(#44) - support reverse tabbing using shift+tab (#92)
- switch to using cmd line args instead of
ENV
(-l
for logging and--version
) please convert your GITUI_LOGGING usage [@shenek](#88) - added missing LICENSE.md files in sub-crates [@ignatenkobrain](#94)
- stashing support (save,apply,drop) (#3)
- log tab refreshes when head changes (#78)
- performance optimization of the log tab in big repos
- more readable default color for the commit hash in the log tab
- more error/panic resiliance (
unwrap
/panic
denied by clippy now) [@MCord](<#77>)
- panic on small terminal width (#72)
- more natural scrolling in log tab (#52)
- fix crash help in small window size (#63)
- show longer commit messages in log view
- introduce propper error handling in
asyncgit
[@MCord](#53) - better error message when trying to run outside of a valid git repo (#56)
- improve ctrl+c handling so it is checked first and no component needs to worry of blocking it
- support multiple tags per commit in log (#61)
- support more navigation keys: home/end/pageUp/pageDown (#43)
- highlight current tab a bit better
- close application shortcut is now the standard
ctrl+c
- some diff improvements (#42)
- document tab key to switch tabs (#48)