gitui/CHANGELOG.md
2024-02-19 17:15:03 +01:00

46 KiB
Raw Blame History

Changelog

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.

Unreleased

Changes

** multiline text editor **

multiline editor

Breaking Change

The Commit message popup now supports multiline editing! Inserting a newline defaults to enter. This comes with a new default to confirm the commit message (ctrl+d). Both commands can be overwritten via newline and commit in the key bindings. see KEY_CONFIG on how. These defaults require some adoption from existing users but feel more natural to new users.

Added

  • theme.ron now supports customizing line break symbol (#1894)
  • add confirmation for dialog for undo commit [@TeFiLeDo] (#1912)
  • support prepare-commit-msg hook (#1873)
  • support for new-line in text-input (e.g. commit message editor) [@pm100] (#1662).
  • new style block_title_focused to allow customizing title text of focused frame/block (#2052).

Changed

Fixes

  • stash window empty after file history popup closes (#1986)
  • allow push to empty remote (#1919)

[0.24.3] - 2023-09-09

Fixes

  • log: major lag when going beyond last search hit (#1876)

Changed

  • parallelise log search - performance gain ~100% (#1869)
  • search message body/summary separately (#1875)

[0.24.2] - 2023-09-03

Fixes

  • 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)

[0.24.1] - 2023-08-30

Fixes

  • fix performance problem in big repo with a lot of incoming commits (#1845)
  • fix error switching to a branch with '/' in the name (#1851)

[0.24.0] - 2023-08-27

search commits

commit-search

visualize empty lines in diff better

diff-empty-line

Breaking Changes

  • 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

Added

Fixes

  • 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 ~ in commit.template (#1745)
  • fix hunk (un)staging/reset for # of context lines != 3 (#1746)
  • fix delay when opening external editor (#1506)
  • fix ordering of commits in diff view [@Joshix-1](#1747)

Changed

[0.23.0] - 2023-06-19

reset to commit

reset

reword commit

reword

fuzzy find branch

fuzzy-branch

Breaking Change

  • focus_XYZ key bindings are merged into the move_XYZ set, so only one way to bind arrow-like keys from now on (#1539)

Added

Fixes

  • 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)

Changed

  • minimum supported rust version bumped to 1.65 (thank you time crate)

[0.22.1] - 2022-11-22

Bugfix followup release - check 0.22.0 notes for more infos!

Added

  • new arg --polling to use poll-based change detection and not filesystem watcher (use if you see problems running into file descriptor limits)

Fixes

  • 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)

[0.22.0] - 2022-11-19

submodules view

submodules

commit message history

commit-history

Added

  • 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 and regex-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)

Fixes

  • remove insecure dependency ansi_term (#1290)
  • use filewatcher instead of polling updates (#1)

[0.21.0] - 2022-08-17

popup stacking

popup-stacking

termux android support

termux-android

Added

Fixed

  • 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)

Changed

  • minimum supported rust version bumped to 1.60 (#1279)

[0.20.1] - 2022-01-26

This is was a immediate followup patch release to 0.20 see release notes for the whole list of goodies in 0.20.

Added

  • support proxy auto detection via env's like HTTP_PROXY (#994)

Fixed

  • severe performance regression in 0.20 (#1102)
  • several smaller performance improvements via caching (#1104)
  • windows release deployment via CD broken

[0.20] - 2022-01-25 - Tag Annotations

support tag annotations

tag-annotation

delete tag on remote

delete-tag-remote

revert commit from rev log

revert-commit

Added

  • 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)

Fixed

  • 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)

Key binding notes

  • added gg/G vim bindings to vim_style_key_config.ron (#1039)

[0.19] - 2021-12-08 - Bare Repo Support

finder highlighting matches

fuzzy-find

Breaking Change

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

Added

  • 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 and end 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)

Fixed

  • 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)

[0.18] - 2021-10-11

rebase merge with conflicts

rebase-merge

Added

  • 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)

Fixed

  • 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)

[0.17.1] - 2021-09-10

fuzzy find files

fuzzy-find

emojified commit message

emojified-commit-message

Added

  • 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)

Fixed

  • 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)

Key binding notes

  • new keys: rebase_branch [R], file_find [f]

see vim_style_key_config.ron for their default vim binding

[0.17.0] - 2021-08-21

compare commits

compare

options

options

drop multiple stashes

drop-multiple-stashes

branch name validation

name-validation

Added

  • 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)

Fixed

  • 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)

[0.16.2] - 2021-07-10

undo last commit

undo-last-commit

mark local tags

tag-remote-marker

Added

  • 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)

Fixed

  • 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)

[0.16.1] - 2021-06-06

Added

  • 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)

msg-len

Fixed

  • 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)

Internal

[0.16.0] - 2021-05-28

merge branch, merge commit

merge-commit

tag list popup

tagslist

revision file tree

filetree

commit subject length warning

warning

Added

  • 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)

Changed

  • 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)

Fixed

  • selected-tab color broken in light theme [@Cottser] (#719)
  • proper tmp file location to externally edit commit msg (#518)

[0.15.0] - 2021-04-27

file blame

blame

Added

Fixed

  • 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)

Internal

[0.14.0] - 2021-04-11

Added

  • [w] key to toggle between staging/workdir [@terhechte] (#595)
  • view/checkout remote branches (#617)

checkout-remote

Changed

stash_pop

Fixed

  • 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)

[0.13.0] - 2021-03-15 - Happy Birthday GitUI 🥳

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

by-line-ops

push tags

push-tags

Changed

  • [s] key repurposed to trigger line based (un)stage
  • cleanup status/diff commands to be more context sensitive (#572)

Added

  • 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)

Fixed

  • keep diff line selection after staging/unstaging/discarding (#583)
  • fix pull deadlocking when aborting credentials input (#586)
  • error diagnostics for config loading (#589)

[0.12.0] - 2021-03-03

pull support (ff-merge or conflict-free merge-commit)

pull

more info in commit popup

chars-branch-name

Breaking Change

  • MacOS config directory now uses ~/.config/gitui [@remique] (#317)

Added

  • 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)

Fixed

  • 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)
  • dont fail if user.name is not set [@cruessler] (#79) (#228)

[0.11.0] - 2021-12-20

Added

push

  • number of incoming/outgoing commits to upstream (#362)
  • new branch list popup incl. checkout/delete/rename [@WizardOhio24] (#303) (#323)

branches

tree

Changed

  • upgrade dirs to dirs-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) or clip(win) [@cruessler] (#262)

Fixed

  • 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)

[0.10.1] - 2020-09-01

Fixed

  • static linux binaries broke due to new clipboard feature which is disabled on linux for now (#259)

[0.10.0] - 2020-08-29

Added

scrolling

select-copy

  • scrollbar in long diffs (#204)

scrollbar

  • allow creating new branch (#253)

Fixed

  • selection error in stashlist when deleting last element (#223)
  • git hooks broke ci build on windows [@dr-BEat] (#235)

[0.9.1] - 2020-07-30

Added

Changed

  • async fetching tags to improve reactivity in giant repos (#170)

Fixed

  • 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)

[0.8.1] - 2020-07-07

Added

Fixed

  • switch deprecated transitive dependency net2->socket2 in crossterm->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)

[0.8.0] - 2020-07-06

Added

Changed

  • 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:

Fixed

  • 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)

[0.7.0] - 2020-06-15

Added

  • Inspect stash commit in detail (#121)
  • Support reset/revert individual hunks (#11)
  • Commit Amend (ctrl+a) when in commit popup (#89)

Changed

  • 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 from XDG_CACHE_HOME to XDG_CONFIG_HOME [@jonstodle](<#98>)

Fixed

  • 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)

[0.6.0] - 2020-06-09

Changed

  • 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

Added

  • 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)

Fixed

  • app closes when staging invalid file/path (#108)
  • shift+tab not working on windows [@MCord](#111)

[0.5.0] - 2020-06-01

Changed

  • support more commands allowing optional multiline commandbar (#83)

Added

  • 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)

Fixed

  • error when diffing huge files (#96)
  • expressive error when run in bare repos (#100)

[0.4.0] - 2020-05-25

Added

  • stashing support (save,apply,drop) (#3)

Changed

  • 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>)

Fixes

  • panic on small terminal width (#72)

[0.3.0] - 2020-05-20

Added

  • support color themes and light mode [@MCord](#28)

Changed

  • more natural scrolling in log tab (#52)

Fixed

  • crash on commit when git name was not set (#74)
  • log tab shown empty in single commit repos (#75)

[0.2.6] - 2020-05-18

Fixed

  • fix crash help in small window size (#63)

[0.2.5] - 2020-05-16

Added

  • introduced proper changelog
  • hook support on windows [@MCord](#14)

Changed

  • 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

Fixed

  • support multiple tags per commit in log (#61)

[0.2.3] - 2020-05-12

Added

  • support more navigation keys: home/end/pageUp/pageDown (#43)
  • highlight current tab a bit better

[0.2.2] - 2020-05-10

Added

  • show tags in commit log (#47)
  • support home/end key in diff (#43)

Changed

  • close application shortcut is now the standard ctrl+c
  • some diff improvements (#42)

Fixed

  • document tab key to switch tabs (#48)