------------------------------------------------------------------- Wed Sep 17 19:26:26 UTC 2025 - Scott Bradnick - Update to version 0.55.1+git20250917.3de12b7fd: * Fix staging when using the new useExternalDiffGitConfig config * Don't hide keybindings that match the confirmMenu key in the keybindings menu ------------------------------------------------------------------- Sun Sep 07 00:19:47 UTC 2025 - Scott Bradnick - Update to version 0.55.0+git20250906.0d5a4101: * Update README.md * Update README.md * Update README.md * README.md: Update Sponsors * Update README.md * Update translations from crowdin * Remove keybindings for menu items that are the same as the menu confirm key * Add separate keybindings for confirmMenu and confirmSuggestion * Hard-code "enter" for adding lines in integration tests * Fix keybinding for switching to a worktree * Hard-code "enter" for search prompt * Hard-code "enter" for editable prompts * Update cheatsheets for the previous commit * Refactor: add a separate Prompt view * Bump git-todo-parser * docs(VISION): fix "Dicoverability" typo * Log hashes when dropping/popping stashes * Fix command log for stash commands * Add hash field to models.StashEntry * Cleanup: bring stash loader test up to date * Fix dropping a range of stashes in filtered mode * Add test demonstrating problem with dropping stashes in filtering mode * Cleanup: remove unnecessary ToggleRangeSelect * Don't auto-forward branches that are checked out by another worktree * Add test for auto-forwarding branches that are checked out by another worktree * Add a user config for using git's external diff command for paging * Add breaking changes notice about git.paging.useConfig option * Remove the git.paging.useConfig option * Use external diff command in stashes panel * Run label check workflow only on label events and open pr event * Enhance PR/Issue templates readability * Run `go generate ./...` * Add "CopyToClipboard" command to `ConfirmationController` * Cleanup: remove unnecessary code in test * Update donation wording so that it's clear there's no strings attached * Add a breaking changes notice for the changed keybinding * Update cheatsheets, config docs, and schema * Implement suspending the app using ctrl-z * Extract methods suspend/resume on Gui struct * Rebind redo from to Z * Cleanup: remove stale comment * Clean up build tags * Don't append "Disabled: " to menu tooltip if disabled reason is empty * Show "Close/Cancel: " for menus like we do for confirmations * Show context-specific labels for in staging and patch building view * Show escape binding for staging and patch building in the status bar * Move global escape handler to before the keybindings menu handler * Show context-specific labels for the global binding * Rename ModeStatus.Description to InfoLabel * Avoid showing in options map when it doesn't do anything * Cleanup: remove dead code * Avoid duplicate key bindings in options map * Show "Exit back to side panel" in options status bar for focused main view * fix(hosting_service): support Azure DevOps vs-ssh.visualstudio.com SSH remotes * test: TDD - support Azure DevOps vs-ssh.visualstudio.com SSH remotes * Allow filterable contexts to customize the filter label * Allow filtering for keybindings by prepending filter string with '@' * Allow filtered lists to preprocess the filter string * Strengthen text expectation * Fix right-alignment of divergence from base branch for branch checked out in a worktree * docs: Add installation with gah * Pass only Git-tracked Go files to gofumpt ------------------------------------------------------------------- Mon Aug 11 16:58:27 UTC 2025 - Scott Bradnick - Update to version 0.54.2+git20250811.b1382da9: * Improve CPU usage when flicking through large diffs * Fix delay with flicking through files or commits when git diff is very slow * Cleanup: move UpdateWindowTitle to platform-specific source files * Change color of github tag and homebrew badges to blue * Update github tag badge * Update homebrew link * Update the badge of golangci-lint in `README.md` * Update `CONTRIBUTING.md` to clarify translation contribution process * Trim trailing newlines when showing confirmations * Cleanup: remove duplicate test case * Fix the useHunkModeInStagingView hint in the breaking changes message * Stop bumping our homebrew formula ------------------------------------------------------------------- Wed Aug 06 14:19:26 UTC 2025 - Scott Bradnick - Update to version 0.54.1+git20250806.c08903e3: * Stop updating Jesse's homebrew tap * Create a user-specific temp dir to avoid permission problems on multi-user machines * Updated Fedora section in the README.md file. ------------------------------------------------------------------- Mon Aug 04 15:44:10 UTC 2025 - Scott Bradnick - Update to version 0.54.0+git20250802.5175798c: * README.md: Update Sponsors * Update translations from Crowdin * Add breaking changes notice about hunk mode being the default now * Cleanup: whitespace * Show hint about hunk staging mode being the default now, and how to switch to line mode * Cleanup: rely on zero values for initialization * Enable hunk staging mode by default * Change the "toggle hunk selection" binding description to be dynamic * Add support for dynamic binding descriptions * Add a GetShortDescription() method to Binding * Cleanup: better receiver name * Remove the kill package dependency * Close the pty instead of killing the process for runAndDetectCredentialRequest * Don't kill processes in RunAndProcessLines * Don't kill tasks when we no longer need them * Close a task's stdout pipe when we are done with it * Create temp directories inside a "lazygit" folder rather than top-level in /tmp * Don't exit after handling daemon mode * Improve .gitignoring debug executables * Use a better approach for determining pushed and merge statuses * Change GetCommitsOptions.RefForPushedStatus to a models.Ref * Move the Ref interface from gui/types to models * Cleanup: remove the ignoringWarnings hack from GetMergeBase * Draw divergence from base branch right-aligned in branches view * refactor: use slices.Equal to simplify code * Stage only tracked files when staging all in filter-by-tracked-files view * Add test demonstrating the problem * Make the minimum required git version a placeholder in the error text * Revert "Add IsAnnotated field to models.Tag struct" * Use a different way to check if a tag is annotated * Add tests for tag information rendering * Fix index out of bounds panic when repository has massive tag lists * Move parentHashes and divergence fields before extraInfo in git log format * Cleanup: use nil for empty slice * Allow rewording and dropping commits in filtering mode * Extract helper function for integration test * Inline the OutsideFilterMode guard into every binding * Show the key for focusing the main view ("[0]" by default) in the main view title prefix * Fix display of panel jump keys for disabled bindings * Allow focusing the main view for the status panel * Move the "Focus main view" command to the global section of the keybindings menu * Make LabelFromKey return an empty string for unset keys * Include commands without keybinding in options menu * Don't use hunk mode for added or deleted files * Add a test case for a deleted file to TestParseAndFormatPlain * Fix showing range diff across a rename when filtering by path * Add test for range diff across rename * Fix showing diffs for renamed file when filtering by path * Refactor commit loading and reflog commit loading to extract shared code * Always append -- to git show command * Remove unnecessary setSubCommits indirection * Fix showing only filtered reflog entries when filtering by path * Use the non-filtered reflog for undoing * Don't get reflog commits twice unnecessarily in filtering mode * Cleanup: simplify git arguments for reflog loading * Add test that demonstrates problem with showing filtered history of file with renames * Make stash filtering work when filtering on a folder * Make stash loading work in filtering mode * Revert "chore: use null char as a stash entries divider during loading" * Add integration test for filtering the stashes list by file path * Refresh all affected scopes when entering/exiting filtering * Allow passing SUB_COMMITS scope to Refresh when no subcommits view is showing * Fix visual regression when exiting filtering mode * Remove unnecessary golangci-lint install step from dev-container Dockerfile * Remove unused script lint.sh * Use a better way of pinning the version of golangci-lint * Support Alt+Backspace for word deletion in text areas * Fix `--amend` when the commit message is empty * Add confirmation for nuking the working tree * Fix `last branch` to `previous branch` in `TranslationSet.CheckoutByNameTooltip` * Update cheatsheets and schema * Add new command "Checkout previous branch" * Fix search results being off by two lines during rebase or in divergence view * Make prepareConversionArrays a little more concurrency safe * Allow double-clicking suggestions * Allow switching between confirmation and suggestions by clicking * Extract helper function * Allow scrolling background views with the mouse wheel when a popup is showing * Cleanup: use FocusedView property for mouse bindings * Make conditions easier to understand * Exclude "." from file path suggestions * Remove outdated comment * Add proper double-click handling for list views * Assert that only one controller can set click or render functions on a BaseContext * Allow more than one controller to attach OnFocus/OnFocusLost functions * Cleanup: use nil for empty slice * Remove GetOnRenderToMain, GetOnFocus, and GetOnFocusLost from BaseContext * Bump gocui * Fix more unstable tests * Fix stale main view content when entering/exiting filtering view * Fix unstable tests * Add a prompt for the sort order menus for branches * Add tooltips for commit log menu * Add configuration hints to existing tooltips * Add breaking changes entry for the changed sort order for branches * Add enum validation for Git.Log.Order and Git.Log.ShowGraph * Un-deprecate UserConfig.Git.Log.Order and ShowGraph * Move LocalBranchSortOrder and RemoteBranchSortOrder to user config * Add missing validation tests * Move DiffContextSize and RenameSimilarityThreshold to user config * Move IgnoreWhitespaceInDiffView to user config * Fix keybinding display for local branches sort order to indicate it's a menu * Remove git version specific code for versions we no longer support * Remove obsolete git version restrictions * Remove obsolete tests * Bump minimum required git version to 2.32 * Remove obsolete git version restriction in test * Add confirmation for hard reset when there are uncommitted changes * Use ConfirmIf where applicable * Add convenience function ConfirmIf * Remove deprecated edit configs * Use non-deprecated 'OS.Open' config in OpenFile test on Windows * Remove unused TranslationSet fields * Fix wrong text being used in error message * Remove some unused code * Fix scrolling hunk into view when selecting next hunk * Cleanup: remove unused method Focus from PatchExplorerContext * Cleanup: fix comment * Bring back files from vendor directory that we accidentally excluded * Clean up .gitignore * Remove the homebrew tap from the readme * Make it run at 8am instead of in the middle of the night * Create annotated tags * Make the release workflow run only from stefanhaller's fork * Set a default shell for all jobs * Update goreleaser to v2 * README.md: Update Sponsors * Remove redundant curlies * Properly use sponsors PR token * Use fine-grained sponsors PR token * Try using PAT on sponsors CI * Update the peter-evans/create-pull-request action to v7 * Move `if` to job level so that the entire thing doesn't run in forks * Raise sponsors PRs as a draft * fix: broken markdown by replace \n into ------------------------------------------------------------------- Sat Jul 05 06:20:45 UTC 2025 - Scott Bradnick - Update to version 0.53.0+git20250704.bc4b50f8: * Escape out of hunk mode only if it was turned on by the user * Add user config to use hunk mode by default when entering staging view * Cleanup: rename a badly named function * In hunk staging mode, select blocks of changes rather than actual hunks * Don't generate test list before running integration test * Update translations from Crowdin * Collapse selection after deleting a range of stashes * Collapse selection after deleting a range of remote branches * Fix collapsing the range selection after deleting branches * Move to next stageable line after adding a line to a custom patch * Toggle only added/deleted lines in patch building view * Export PatchLine.isChange * Render only + and - lines as included in a patch * Auto-stash if necessary when reverting commits * Remove unnecessary refresh * Adjust selection after cherry-picking commits * Add selection assertions to cherry-pick tests * Use sync waiting status for cherry-picking * Auto-stash if necessary when cherry-picking commits * Remove unused text StashPrefix * Use a better name for the auto-stash for moving a custom patch to index * Use a better name for the auto-stash for creating a new branch * Use a better name for the auto-stash for checking out a branch * Use a better name for the auto-stash for undo * Use abbreviated hash in undo confirmations * Exclude vendor directory from linting * Stage affected unstaged files when applying or reverting a patch * Add tests for applying a patch when there's a modified file * Drop stash when successfully unstashing files after moving patch to index * Add test for moving patch to index when there's a modified file * Cleanup: implement AllFilesInPatch using lo.Keys * Show stash title in main view for selected stash entry * Cleanup: add NewRunPtyTaskWithPrefix funxtion instead of setting Prefix manually * Use async refresh rather than manual OnWorker call * Change Refresh to not return an error * Remove another unnecessary refresh * Remove unnecessary refresh * Cleanup: remove pointless error handling * Fix formatting of a keyboard shortcut in the README.md * Enable revive linter, and fix a bunch of warnings * Enable errorlint linter, and fix warnings * Enable intrange linter, and fix warnings * Enable nolintlint linter, and fix warnings * Update VS Code settings to enable staticcheck linter * Update VS Code settings to use golangci-lint v2 * Update .golangci.yml to use version 2 * Fix warning QF1003: could use tagged switch * Fix warning QF1004: could use strings.ReplaceAll instead * Make stashEntryFromLine a free-standing function * Fix warning ST1016: methods on the same type should have the same receiver name * Fix warning ST1016: methods on the same type should have the same receiver name * Provide a script to lint the whole working copy, and update make lint to use it * Show tag information for selected tag * Add IsAnnotated field to models.Tag struct * Fix the CurrentBranchName function * Cleanup: turn around error condition * Add a test showing undesired branch icon at head commit * Bump github.com/cloudflare/circl from 1.6.0 to 1.6.1 * fix: show GPG error before entering commit editor * Add credential prompts for PKCS11-based SSH keys * Fix DEFAULT_REMOTE_ICON character code * Fix moving a custom patch from the very first commit of the history to a later commit * Instantiate other mutexes by value * Instantiate Mutexes's fields by value * add bold style for border * Add unambigious refs/ prefix to all stash references * Add option to disable warning when amending last commit ------------------------------------------------------------------- Sun Jun 08 02:38:38 UTC 2025 - Scott Bradnick - Update to version 0.52.0+git20250605.aa331e52: * Remove the pick vs. pull hack * Optionally pass disabled commands on to next handler * Cleanup: restructure code for clarity * Bump gocui and adapt lazygit code * Fix wrong inactive highlight when switching between repos * Add integration test for resetting to upstream branch with duplicate name * Use full refname instead of short to prevent disambiguation with tag * Add integration tests showing resetting to duplicate named tags and branches * Add FullRefName to all reset menus * Print default option when prompting to create a new git repo * Make PR template mention that PR titles will be used in release notes * Replace literal with ConfigFilename constant * Use branchPrefix on moving commits to a new branch * Add a function to suggest a branch name based on branchPrefix * Fix branch selection jumping back on background fetch * Kill background fetch when it requests a passphrase * Pass cmdObj instead of task to processOutput * Bump gocui * Add user config gui.addRootItemInFileTree * Pass common.Common to file trees instead of just the Log ------------------------------------------------------------------- Fri May 23 14:10:30 UTC 2025 - Scott Bradnick - Update to version 0.51.1+git20250523.da32b59e: * Use PTY also with credentialStrategy=FAIL ------------------------------------------------------------------- Thu May 22 13:42:38 UTC 2025 - Scott Bradnick - Update to version 0.51.0+git20250522.6705428a: * Add ContextMgr.NextInStack and use it to access side panel of focused main view * Cleanup: pass target context to focusMainView directly * Fix crash when clicking in the status view * Make home and end keys work in prompts * Bump gocui * Render the main view only for the side context that it belongs to * Include migration changes in the error message if we can't log them * Log a list of migration changes to the console * Make RenameYamlKey return a bool * Cleanup: remove redundant if statement * Print migration hints only when GUI hasn't started yet * Add tests for migrating null keybindings to * Add tests for migration of renamed keys * Cleanup: return didChange bool from computeMigratedConfig * Cleanup: fix formatting of test cases * Cleanup: flip conditions for less indentation * Cleanup: use assert.NoError * Bump generics dependency * Fix possible crash with auto-forwarding branches * Split behavior of rendering allBranchesLogCmd and switching to next cmd * Clear preserved commit message when entering CommitEditorPanel * Rename OnCommitSuccess to ClearPreservedCommitMessage * Remove the if statement from OnCommitSuccess * Remove the call to OnCommitSuccess from tag creation * Add an alternate keybinding (default ) for ConfirmInEditor * Make '>' first jump to the beginning of the branch, and only then to the first commit * Remove unused keybinding handler * Add custom patch command "Move patch into new commit before the original commit" * Use 'break' instead of 'edit' for BeginInteractiveRebaseForCommit with merge commit * Add test for rewording a merge commit * Regression test for moving custom patch to new commit from last commit of a stacked branch * Regression test for renaming the last commit of a stacked branch * Shorten commit hash in custom patch menu * Cleanup: remove unnecessary setup steps * reword documentation for git.autoForwardBranches * Migrate deprecated AllBranchesLogCmd to AllBranchesLogCmds * Move Loader to presentation package * Move NewDummyCommon to pkg/common * Add breaking change notice about 'stream: true' being converted to not use a pty any more * Combine customCommand's subprocess, stream, and showOutput fields into a single output enum * Add yaml_utils.RemoveKey * Remove unused function UpdateYamlValue * Add separate UsePty flag for CmdObj * Rename getCmdHandler to getCmdHandlerPty, and add getCmdHandlerNonPty * Remove ICmdObj interface * Validate custom commands in sub menus * Add test demonstrating missing validation for custom commands in sub menus * Add comments in tests to explain what they test ------------------------------------------------------------------- Sat May 03 18:06:56 UTC 2025 - Scott Bradnick - Update to version 0.50.0+git20250429.66caa25d: * Store fromPos/toPos as 16-bit ints, and reorder fields for better packing * Store TextStyle in Pipe struct as pointer * Store Pipe objects by value in slice of Pipes * Simplify equalHashes * Store fromHash/toHash in Pipe struct as pointers * Pack the models.Commit struct a little tighter * Store Commit.Parents in the pool too * Make Commit.Parents a getter for an unexported parents field * Store Commit.Hash by pointer (kept in a pool of hashes) * Make Commit.Hash a getter for an unexported hash field * Rewrite generateCommits to avoid write access to commit.Parents * Cleanup: use IsMerge instead of counting Parents * Simplify code and fix comment * Fix confusing variable name * Remove unused function * Modernize benchmarks * Bump git-todo-parser * fix wording of random tip * Strip the '+' and '-' characters when copying parts of a diff to the clipboard * Remove space after rebase todo * Disallow creating custom patches when the diff context size is 0 * Fix nvim-remote commands for fish shell * Fix race condition when starting several command tasks in quick succession * Allow closing issues via github actions * Add Debian installation instructions alongside Ubuntu * Allow changing diff context size and rename threshold when main view is focused * Update config docs and schema * Add new command "Move commits to new branch" * Add free-standing function IsWorkingTreeDirty * Remove MergeAndRebaseHelper's dependency on RefsHelper * Use Model().Branches[0] instead of refsHelper.GetCheckedOutRef() in MergeAndRebaseHelper * Cleanup: remove unnecessary indirection * Add a breaking changes hint for the new auto-forward behavior * Add config for auto-forwarding branches after fetching * Inline fetchAux into call site * Remove double Refresh * Re-render focused main view on refresh if needed * Allow clicking in the respective other main view to switch focus to it * Allow clicking in focused main view to go to staging * Allow clicking in main view to focus it * Read all lines from task when starting to search * Make the main view searchable * Read all lines from task when jumping to bottom * Use readLines channel only for command tasks * Add navigation keybindings to focused main view * Update keybindings, config docs, and schema * Allow focussing the main view * Add class MainContext * Always render diffs to the main/secondary context pair, even for files * Add IGuiCommon.GetViewBufferManagerForView * Remove utils.Clamp, use lo.Clamp instead * Bump gocui * Remove the "YOU ARE HERE" marker * Add section headers for rebase todos, cherry-picks, reverts, and actual commits * Add new commit status StatusCherryPickingOrReverting * Fix view selection running out of sync with list selection when view isn't focused * Support range selection for reverting commits * Inline afterRevertCommit * Remove the "Select parent commit" prompt when reverting a merge commit * Allow cherry-picking merge commits * Remove unused cherry-picking code in daemon * Use "git cherry-pick" for implementing copy/paste of commits * Reference original commits in CherryPicking mode instead of synthesizing new ones * Disallow any changes to commits or todos when cherry-picking or reverting * Fix the bug described in the previous commit * Add test demonstrating problem with revert (or cherry-pick) during a rebase * Add test to check that an "edit" entry correctly shows a conflict * Show todos (and conflicting commit) for cherry-pick and revert * Simplify the MergeRebasingCommits call in GetCommits (slightly) * Show original todo action instead of "conflict", and show `<-- CONFLICT` instead * Use commit.IsTODO instead of comparing Status against models.StatusRebasing * Remove unused enum entry StatusSelected * Add DisabledReason for rebase options when not rebasing or merging * Check for conflicts after reverting a commit * Add test for reverting a commit that conflicts * Mention which command is continued in PromptToContinueRebase * Make WorkingTreeState a struct, and add cherry-picking and reverting states * Move types/enums/enums.go to working_tree_state.go * Add test for a special situation in rebases involving empty commits * Centralize logic regarding WorkingTreeState close to its definition * Rename RebaseMode to WorkingTreeState * Simplify the RebaseMode enum * Use WorkingTreeState instead of RebaseMode in CommitLoader * Remove rebaseMode field from TestGetCommits scenario * Don't wait for debugger in daemon mode * Rerender views if necessary when scrolling horizontally * Fix truncating branches to the right edge of the view when scrolled to the left * README.md: Update Sponsors ------------------------------------------------------------------- Mon Apr 14 14:03:27 UTC 2025 - Scott Bradnick - Update to version 0.49.0+git20250414.5f809809: * Skip date check when release worfklow is manually invoked * Escape special characters when git-ignoring files * Add test that shows problems with git-ignoring files with special characters * Fix crash when dragging from below the end of the diff upwards and then staging the range * Refactor: extract function clampLineIdx * Update translation files from crowdin * fix: update vscode color to logo color * Add a command to select all commits of the current branch * Show "hooks disabled" in title bar of commit message editor * Cleanup: don't render the commit length when typing in the description * Prefill the commit subject with the skipHook prefix when pressing `w` * Use dario.cat/mergo instead of github.com/imdario/mergo * Bump go-git * Add `runCommand` function to Go template syntax * Move test from commit to branch * Print which git version we are using for running integration tests * Remove conditional code related to git earlier than 2.22 * Remove canUsePushTrack parameter of obtainBranches function * Bump minimum required git version to 2.22 * Provide conflict resolution dialogs for non-textual conflicts * Allow chaining of FileSystem methods * Better main view display for conflicing files * Fix the bug described in the previous commit * Add test demonstrating problem with main view display when pressing `e` in a stack of branches * Add pageUp/pageDown/top/bottom keybindings to focused command log panel * Add pageUp/pageDown/top/bottom keybindings to confirmation panel * Cleanup: remove unused interfaces for helpers * Cleanup: get rid of the variadic parameter of ContextMgr.Push * Enable AutoRenderHyperLinks for the tooltip view * Bump gocui * Update kidpix link in README to active url * Add a breaking changes entry for using shell aliases * Add config os.shellFunctionsFile * Reorder configs in OSConfig * Revert commits related to using an interactive shell for running shell commands * Update disabled message * Add integration test * Fix discarding submodule changes in nested folders * Cleanup: rename predicate params (test -> predicate) * Bump generics dependency * Fix display of renamed files * Add test showing problem with the display of renamed files * feat: Implement range stash drop * Fix race with PTYs in integration tests * Cleanup: remove pointless `if` statement * Corrected interactive rebase keybinds example in README.md * Add "Absolute path" item to the file view's copy menu * Fix the bug mentioned in the previous commit * Add test for checking out a file from a range selection of commits * Add test for checking out a file from a commit * Fix double '#' on hexadecimal colors * Let users to define custom icons and color for files on the config file * Add newlines for correct markdown * Allow passing refresh scope to WithGpgHandling * fix: Make tag operation use GPG helper to run signing in sub-process * refactor: Express WithGpgHelper with a config key parameter * refactor: Make commit.gpgSign match official capitalization * refactor: Rename UsingGpg to make room for Gpg Tag logic * Add in missing "deprecated" yaml tags * Remove deprecated configs from auto generated config.md * Include empty arrays and maps in the generated Config.md * Add comments with more information * Remove text that is now unused * Commit without pre-commit hooks is independent on prefix * feat(submodules): add method to bulk init and update submodules * Specify a go release minor version * Add a root item ("/") if files at top level have changed * Make Node.path private * Use Path directly instead of GetPath getter inside the filetree package * Use GetPath accessor outside of filetree package * Rename Name to Path in File and CommitFile * Cleanup: make integration test assertions for files panel more specific * Fix postFilterTest to actually do what it says * Add a "Content of selected file" entry to the copy menu for commit files * Drop the git config cache when getting focus * Cleanup: remove more unnecessary type arguments * Revert "Skip post-checkout hook when discarding changes" * Support home and end as alternatives to '<' and '>' * Commit only tracked files in tracked only filter view * Show staged but untracked files in tracked only filter view * Add hint to not copy the whole defaults section into the config file * Ignore commit prefixes with an empty pattern * URL encode gitlab brackets to make consistent with branch names * Add an integration test for a config with a negative refspec * Update to go 1.24 * Add acme editor preset * Fix release schedule again * Set tab titles after reloading user config * Set view titles in configureViewProperties rather than createAllViews * Cleanup: standardize on accessing translations via gui.c.Tr * Fix layout of options view for non-english languages * Use Rewording instead of Committing when rewording the head commit * Use a WithWaitingStatus for rewording a non-head commit * Avoid double Refresh when rewording the head commit * Don't call OnCommitSuccess in handleReword * Support fish when running shell command * Remove unnecessary type arguments * Remove unused functions ------------------------------------------------------------------- Sun Mar 02 19:25:03 UTC 2025 - scott.bradnick@suse.com - Update to version 0.48.0+git20250228.1b571f9e: * Validate properties of customCommand when commandMenu is used * Add commandMenu property to custom commands * Extract a method CustomCommand.GetDescription * Change customCommand fields to pointers * Don't set showOutput explicitly * Fix a small mistake in Custom_Command_Keybindings.md * Fix wrong comment * Migrate to only doing marshalling twice, and compare via deep copy * Set up benchmark on migration ------------------------------------------------------------------- Tue Feb 25 14:45:51 UTC 2025 - scott.bradnick@suse.com - Update to version 0.47.2+git20250225.4e38a941: * Fix release script once again * Fix release script * Remove obsolete filtering from setComment * Filter out [dev] comments earlier * Add launch config for debugging the schema generation * Skip post-checkout hook when discarding changes * Improve the error message when users have gpg signing turned on * Change side panel width calculation to work for larger numbers * Improve release workflow * Filter out [dev] comments when generating config doc * Use refs in jsonschema userconfig generator * Make commit prefixes migration only return true if it enters if statement * Change TestCommitPrefixMigrations to compare only strings * Change test to use named struct fields instead of positional fields * Use indentation of 2 when rewriting auto-migrated config file * docs: Add reference to confirmation key to intro message * Disable global keybinds while popups are active ------------------------------------------------------------------- Sat Feb 22 23:33:09 UTC 2025 - scott.bradnick@suse.com - Update to version 0.47.1+git20250222.b2fd6128: * Fix auto-release schedule * Fix race condition with reselecting the focused branch and rendering * Update README.md * Replace --include-untracked with -u in stash show command for compatibility and update failing tests * Add --include-untracked flag to stash show command * Validate keys of custom commands * Validate that Universal.JumpToBlock array has 5 elements * Validate keybindings * Add a few missing keybindings to docs/keybindings/Custom_Keybindings.md * Move labelByKey to config package * Add a gui.tabWidth config * Add a tabWidth parameter to WrapViewLinesToWidth to match gocui * Bump gocui * Add a "Copy to clipboard" menu to the Commit Files panel * Cleanup: simplify and tighten test expectations related to clipboard * Fix description of showFileTree * feat: Support multiple commit prefixes * Add option to copy commit message body ------------------------------------------------------------------- Sat Feb 15 17:59:21 UTC 2025 - scott.bradnick@suse.com - Update to version 0.46.0+git20250215.01eece37: * Use personal access token to push tag * Fix issue where latest tag wasn't obtained early enough in auto-release script * README.md: Update Sponsors * Suppress error logs when killing process on Windows * Don't try killing processes if we already know the command finished * Update translations from Crowdin * Change update_language_files.sh script to rename pt-PT to pt * Add some more information to pkg/i18n/translations/README.md * Fix json schema for context of CustomCommand * fix: properly detect icon for BAZEL and WORKSPACE files * Handle pasting multi-line commit messages * Bump gocui * Swap position of checkout-commit and checkout-branch menu items * go-deadlock version bump to fix crash with go 1.23 * Bump gocui * Fix possible crash when deleting a branch while filtering is active * Improve and adapt commit persistence test-cases * Implement reboot-resistant commit message persistence * Show filter state in top right corner of Files panel frame * Show current files filter as radio buttons * Allow user to switch filter when showing only conflicts * Allow user to filter the files view to only show untracked files * Fix incorrect stash diff after rename * Disable staging and unstaging lines or hunks when the diff context size is 0 * Fix tag truncated when copying to clipboard * Improve error reporting on config migration * Show confirmation menu when trying to amend changes while there are conflicts * Fix flicker when showing the status of a background fetch * Extract the inner part of WithWaitingStatus as a synchronous variant of it * Add option to delete local and remote tag * Rename NoTags to CommitHasNoTags * Integration tests for copy tags to clipboard * Add copy commit tags to clipboard toast message * Document copy tag keybinding * Copy Tags to clipboard * Show background fetch status in bottom line * Remove call to Render() * Expose {{.SelectedCommitRange}} to custom commands * Fix checking out a different branch while pushing a branch for the first time * Only avoid the blank line at end of view if view is not editable * Bump gocui * Add '--' to 'git rev-list' to disambiguate branch name from path ------------------------------------------------------------------- Fri Jan 17 18:14:45 UTC 2025 - scott.bradnick@suse.com - Update to version 0.45.2+git20250118.c03b8922: * Bump tcell to fix broken deployment * Improve undo action to restore files upon undoing a commit * Collapse/expand all files in tree * Bump gocui (and tcell) * Add ability to configure branch color patterns * Remove the automatic coloring of certain branch names ------------------------------------------------------------------- Sat Jan 11 22:09:56 UTC 2025 - scott.bradnick@suse.com - Update to version 0.45.0+git20250111.6da99a49: * Automatically cut release each month * Standardise on 'screen mode' name * Use interactive shell for running shell commands only if shell is bash or zsh * Fix `micro` editor preset * Add number of commits to cherry-pick confirmation prompt * README.md: Update Sponsors * Adjust line number for working copy when editing a line * Combine GetPathDiff and GetAllDiff into one command (GetDiff) * Add a test demonstrating the problem * Bump gocui * Bump gocui * Cleanup: use the upstream local variable consistently * Fix resetting or rebasing a branch to its upstream when the upstream branch name is different * Extend reset/rebase test to use upstream branch name that is different from local one * Show the keybinding at bottom of commit description view * Disable KeybindingsMenu using a DisabledReason when a panel is open * Don't show error toast for disabled keybindings if DisabledReason text is empty * Tweak file icons * docs: qlarify commit message prefix mechanics * provide section for openLink * Bump crypto and net packages * Fix typos * chore: use errors.New to replace fmt.Errorf with no parameters * Formatting the file with gofumpt * Revert unwanted change * Add worktree option to fast forwarding operation * Add worktree option to fast forwarding operation * update documentation to describe use of custom commands without keys specified. * Default to half-screen mode when filtering files or using the git-arg CLI arg * Add screen-mode command line argument * Update instructions for using OSC52 with tmux * Set repology table to 3 columns * Use HEX colors on file icons instead of C256 colors * Update chinese translation for pull requests * Allow on prem Azure DevOps Server pull request * Allow to switch branches in Commit View * Bump kill package * Stylize and correct the NixOS section in README.md * Add vision and design principles doc * Fix hang when returning from shell command ------------------------------------------------------------------- Thu Dec 26 21:53:24 UTC 2024 - scott.bradnick@suse.com - Update to version 0.44.1+git20241223.ec410b2a: * Don't preserve commit message when it's unchanged from initial message * Extend commitPrefix test to cancel without changing the commmit message * Cleanup: reformat to make the test setup code easier to read * Add user config to enable line wrapping in the staging view * Rewrap patch when view width changes * Handle wrapped lines in patch explorer state * Return arrays with line indices from WrapViewLinesToWidth * Extract helper function * Convert tabs to spaces in WrapViewLinesToWidth * Refactor: move wrapMessageToWidth to utils/lines.go * Fix: set state to nil when patch building view loses focus * Cleanup: remove unused log parameter of patch_exploring.NewState * Cleanup: remove unused method RangeStartLineIdx * Fix several bugs in wrapMessageToWidth * Bump gocui * Fix moving a commit across a branch boundary in a stack * Add test for moving a commit across a branch boundary in a stack * Fix moving a commit across an exec todo * Add tests for moving across an exec todo * Add tests for moving a commit across an update-ref todo * Allow deleting a merge commit * Simplify finding rebase todos * Make equalHash more correct * Disable dropping merge commits if it's not a single selection * Disable fixup/squash for merge commits * Disable moving merge commits * fix(config): allBranchesLogCmd description typo * reorder keybinds to main/down, main/up, secondary/down, secondary/up * remove duplicate secondary MouseWheelUp keybind * Add user config gui.showNumstatInFilesView * Fix opening links containing ampersands (&) in WSL * Fix opening files with explorer in WSL * add missing default sort order in commits panel * Respect the diff context size when showing a range diff * Cleanup: move adding --ignore-all-space arg to DiffCmdObj * Improve editing a commit * Extract helper methods * Filter out merge commits when generating todo changes in InteractiveRebase * Add test for editing several commits right after a merge commit * Add test to auto-amend a commit after pressing `e` on it * Add test for editing the last commit of a branch in a stack * Cleanup: remove a no-op Focus() call * Allow deleting a range selection of branches * Extract test helper function checkRemoteBranches * Pass a remote branch to ConfirmDeleteRemote * Extract variables * Fix mouse wheel scrolling of custom patch view * Remove unused texts * Remove unused field gui.IsNewRepo * Simplify startBackgroundFetch * Bump gocui and adapt lazygit code * Let schema/config.json end with a line feed * pkg/gui: Allow user to select remote and branch when creating a PR * use unsigned integer in test and fix CI/linter complaint * add test case for decreasing Diff Context length to zero * use an unsigned_64 for DiffContextSize and add saturated add/subtract * ci: update `upload-artifact` and `download-artifact` actions to v4 * Add new filter to only show tracked files in Files panel * Fixes to lazygit Ubuntu install instructions in README.md * Add config option to disable tab switching with jump keys * Fix installation for Ubuntu in README.md * Cleanup: remove isFocused parameter from GetContentToRender and related methods * Don't render staging view when it loses focus * Change NewRenderStringWith{out}ScrollTask to reuse the task key of the existing task * Fix pressing shift-down after clicking in diff view * Add test demonstrating a bug with clicking in the staging view * Fix clicking multiple times in an integration test * Allow pasting commits more than once * Wrap an overly long line * Get rid of error return value of PostRefreshUpdate and a few related ones * Add test to ensure that file icons are one rune * Fix many file icons * Fix ForEachLineInFile to not lose the last line if it doesn't end with a LF * Add regression test for resolving conflicts in a file without a trailing LF * Add test demonstrating problem with ForEachLineInFile * Extract helper function for easier testing ------------------------------------------------------------------- Fri Oct 11 14:33:05 UTC 2024 - scott.bradnick@suse.com - Update to version 0.44.1+git20240928.d11e11d1: * Use AutoRenderHyperLinks in confirmation view * Use AutoRenderHyperLinks in main views * Turn on AutoRenderHyperLinks in the Command Log panel * Bump gocui * Add a menu item to delete both local and remote branch at once * Better local branch delete confirmation * Fix bug with deleting remote branch whose name doesn't match local branch * Add test that demonstrates bug with deleting remote branch with different name * Add question marks to questions * Remove unused texts * Remove obsolete TODO comment * Fix copying commit author to clipboard * Add test for copying a commit author to the clipboard ------------------------------------------------------------------- Wed Sep 18 14:17:57 UTC 2024 - scott.bradnick@suse.com - Update to version 0.44.1+git20240918.a04ad24: * Add performance improvements section to release notes * Fix crash when viewing the divergence of a branch which is up to date with its upstream * Use map to quickly find children in BuildTreeFromFiles * Add options for disabling switching to the Files panel after popping or applying a stash * Create fixup commit at end of its branch when there's a stack of branches * Extract helper function for getting the hash of the last commit made * Add changeToFixup field to MoveFixupCommitDown * Generate keybindings * Update language files from Crowdin ------------------------------------------------------------------- Sat Sep 07 17:02:52 UTC 2024 - scott.bradnick@suse.com - Update to version 0.44.0+git20240906.2d0c7cb: * Switch to Files panel after popping a stash * Remove return value of OpenCommitMessagePanel * Remove return value of Alert/Confirm/Prompt * Remove return value of CreatePopupPanel * Remove return value of RefreshPatchBuildingPanel * Remove return value of IContextMgr.Push/Pop et. al. * Fix a lock that is held too long * Remove return value of Focus-related functions * Remove return value of IPatchExplorerContext.Render, RenderAndFocus, and NavigateTo * Remove return value of RenderToMainViews and some related functions * Remove return value of HandleRender * Bump gocui * Add Zed to user_config.go and schema * Add Zed to docs/Config.md * Add Zed support to editor_presets.go * Add integration tests for checkout/new branch with autostash * Offer autostash option when creating new branch * Simplify CheckoutRef * Don't allow opening a menu while the search or filter prompt is open * Ask to auto-stage unstaged files when continuing a rebase after resolving conflicts * Add config git.autoStageResolvedConflicts * Actually look for conflict markers in GetHasInlineMergeConflicts * Add a simple integration test for non-sticky range diff * Cleanup: remove now unused ListControllerTrait from SwitchToDiffFilesController * Use non-sticky range diff when entering commit files panel * Extract a method CommitFilesContext.ReInit * Show diff for range selection in commits and sub-commits panel * Add ShortRefName to Ref interface * Add --stat -p to diff args in diffing mode * Add prefix to main view diff when in diffing mode * Bugfix: properly set title of subcommits panel when refreshing * Bugfix: don't allow dropping patches from a custom patch that was made in diffing mode * Bugfix: more comprehensive check whether custom patch must be reset * Extract helper function currentFromToReverseForPatchBuilding * Cleanup: remove unnecessary viewFiles indirection * Cleanup: remove diffFilesContext field of SwitchToDiffFilesController * Cleanup: remove unused translated text * [DATALAD RUNCMD] run codespell throughout fixing typos automagically * [DATALAD RUNCMD] Do interactive fixing of some ambigous typos * Skip also for \nd * [DATALAD RUNCMD] Do interactive fixing of some ambigous typos * custom skips for codespell * Add rudimentary codespell config * Add github action to codespell master on push and PRs * Do not git ignore .codespellrc * Upgrade golangci-lint-action to latest version * Upgrade golang-ci to 1.60 * Remove error return value from functions that always return nil * Ignore return values of fmt.Scanln * Remove "double" formatting * Use print instead of printf when there are no arguments * Use format arguments instead of concatenating strings * Fix cancelled autostash resulting in stuck inline status * Add missing closing quote * Set main views to underline hyperlinks only on mouse hover * Bump gocui * Fix rendering regression introduced in #3839 * Fix loading customCommands from per-repo config file * Add a test that shows how per-repo config file replaces customCommands * Fix wrong test assertion text * Allow using `<`/`>` and `,`/`.` in sticky range select mode in patch explorer * Cleanup: move SetLineSelectMode into AdjustSelectedLineIdx * Don't return model search results for commits when we don't have columnPositions * Return nil columnPositions when not rendering anything * Fix early exit condition * Call ReApplySearch after layout * Make searching available in the filtered commits list * Scroll views up if needed to show all their content * Bump gocui * Use our new hyperlink support in the information view * Fix Decolorise to also strip hyperlinks * Remove now unused function handleGenericClick * Use our new hyperlink support in confirmations * Use our new hyperlink support in the status panel * Add function to render a hyperlink * Add documentation about delta --hyperlinks * Set an openHyperlink function on gocui * Bump gocui * Make it possible to scroll the commit description with the mouse wheel * Allow switching between commit message and description by clicking * Cleanup: use the right context for CommitDescriptionController.Context() * Bump gocui * Don't stage already staged deleted items * Improve fixup commits script ------------------------------------------------------------------- Tue Aug 20 14:03:35 UTC 2024 - scott.bradnick@suse.com - Update to version 0.43.1+git20240818.7679b10: * Specifying branch name source from refs/heads for fast forwarding * Add checkbox to PR template to make sure UserConfig entries can be hot-reloaded * Add dev documentation about using UserConfig * Add information about per-repo config files to Config.md * Show a confirmation when changing a config that can't be auto-reloaded * Reload changed user config files on terminal focus * Make custom commands reload when switching repos * Re-determine existing main branches if mainBranches config changed * Store Common instead of just the list of configured main branches in MainBranches * Make gui.commitLength hot-reloadable * Make gui.statusPanelView config hot-reloadable * Move initialization of global gocui properties to onUserConfigLoaded * Set custom author and branch colors and nerd font version after loading user config * Reinitialize gui.ShowExtrasWindow after loading user config * Initialize translation set after reading user config * Support per-repo config files * Make common.UserConfig an atomic.Pointer for safe concurrent access * Change direct access to Common.UserConfig to a getter * Save changed user config back to disk in integration tests * Introduce ConfigFile struct * Split createAllViews * Remove return value of Gui.setColorScheme * Remove pointless reloading of UserConfig * Make fields of AppConfig private * Use getters for AppState and UserConfig instead of accessing the fields directly * Cleanup: remove unused method AppConfig.ConfigFilename * Cleanup: remove unused field IsNewRepo * Cleanup: remove unused field DeafultConfFiles * Use filepath instead of path for file path operations * Bump gocui * Fix pressing escape after clicking in diff view * Set SelectedPath to SelectedCommitFilePath in CommitFiles context * Expose SelectedCommit to custom commands, deprecate Selected{Local,Reflog,Sub}Commit * Remove bool return value of GetParentContext() * Replace ActivateContext() with Context().Activate() * Rename ActivateContext/deactivateContext to Activate/deactivate * Replace IsCurrentContext() with Context().IsCurrent() * Replace CurrentPopupContexts() with Context().CurrentPopup() * Rename PopupContexts() to CurrentPopup() * Replace CurrentSideContext() with Context().CurrentSide() * Replace CurrentStaticContext() with Context().CurrentStatic() * Replace CurrentContext() with Context().Current() * Remove unused method RemoveContexts() * Replace ReplaceContext() with Context().Replace() * Replace PopContext() with Context().Pop() * Replace PushContext() with Context().Push() * Rename "Custom Command" to "Shell Command" * Add new integration tests folder "shell_commands" * Bump gocui * When using the panel jump keys and the target panel is already active, switch tabs * Use an interactive shell for running custom commands * Extract helper function quotedCommandString * Bump gocui * Allow rewording for last commit using GPG * Adding guard to not do reword under git_commands when using gpg * Fix lack of icon assignation when extension don't match capitalization * Ignore GetRepoPaths error when launching * Support multiple contexts within one command, add tests, update doc * Add a unit test case for global context * Add a readme file for the JSON files in pkg/i18n/translations ------------------------------------------------------------------- Sat Jul 13 14:47:33 UTC 2024 - scott.bradnick@suse.com - Update to version 0.43.1+git20240713.f598da0: * Extend check for fixups * Use extended regex rather than perl regex in the git call * Make checkout action work with forks * Reapply "Check for fixup commits on CI" * Fix language auto-detection * Add test that demonstrates bug with language auto-detection * README.md: Update Sponsors * Revert "Check for fixup commits on CI" * Support setting the similarity threshold for detecting renames * Check for fixup commits on CI * fixup! Add icons for some file names * fixup! Add icons for some file extensions * Add icons for some git remotes * Add icons for some file extensions * Add icons for some file names * Update link from unmaintained exa to maintained eza * Ensure branch name matches pattern before replace * Add initial test for non-matching branch name ------------------------------------------------------------------- Mon Jul 08 16:55:29 UTC 2024 - scott.bradnick@suse.com - Update to version 0.42.0+git20240707.b004b2e: * Optimize number of early calls to GetRepoPaths * README.md: Update Sponsors * Allow cycling between multiple log commands * Add Token credential request handling * docs: Add flox install * Simplify integration test * Add integration test * Fix multi selection stage/discard not working for files with substrings * Bump `actions/checkout`, `actions/setup-go`, `actions/cache/restore`, `actions/cache/save` * Allow setting a default name when creating new branches * fix formatting * Add bicep & bicepparam icons * Upgrade to Alpine Linux v3.19 * Update tracking behaviour for branches created from remote branches * Update translations from Crowdin * Add script to update translation files from Crowdin * Remove unused TranslationSet entries * Add missing english text * Re-add a vendor .gitattributes file * Add .gitattributes file * Normalize line endings of docs/README.md * Fix loading translation set json files on Windows * Make opening git difftool more consistent * feat: squash merge * Provide two config keys for configuring the author length in commits view * Revert "Add user config gui.commitAuthorFormat (#3625)" * Turn off the highlight of the suggestions panel when it loses focus * Extract helper function SuggestionsController.switchToConfirmation * Always reapply filters on filtered views, even inactive ones * Add test demonstrating a problem with updating the filter when the model changes * Stagger popup panels * Resize all open popup panels in layout, not just the topmost one * Remove return value from ResizeCurrentPopupPanel * Remove redundant calls to resize editable panels at creating time * Bump gocui * Remove redundant resizeConfirmationPanel() call at panel creating time * Remove duplicate function * Remove unused functions * Have only one of commit message and description on the context stack at a time * Fix clicking outside of the commit description panel or suggestions panel * Add command to paste commit message from clipboard * Add function os.PasteFromClipboard * Change script to write only the English translation set to JSON * Remove non-English translation sets, read them from JSON instead * Remove all empty strings * Convert the non-English translation sets to JSON files * Remove unused struct * Highlight inactive selection in bold * Clear highlight in HandleFocusLost * Use utils.StringWidth to optimize rendering performance * Rerender fewer views when their width changes * Don't redraw remote branches view when its width changes * Show radio buttons in the show log graph and commit sort order menus * Show radio buttons in the sort order menu for branches * Support showing checkboxes or radio buttons in menus * Always show the "Discard unchanged changes" menu item * Fix custom patch operations on added files * Introduce options struct for RenderPatchForFile * Add test for moving a patch from an added file to an earlier commit * Add test for moving a patch from a deleted file to a new commit * Remove unneccesary test actions * Run PTY tasks after layout so that they get the correct view size * Fix possible off-by-one error wrt PTY size * Add prompt to the remote branch checkout menu * Add menu prompt * Extract function wrapMessageToWidth * Clear keybinding functions in resetHelpersAndControllers * Add a test demonstrating the bug * Fix truncation of long branch names containing non-ASCII characters * Add test demonstrating wrong truncation of branch names containing non-ASCII characters * Use actual ellipsis character instead of ... to truncate strings * Render the view when scrolling with the wheel * Only render visible portion of the screen for commits view * Simplify ListContextTrait.FocusLine * Bump gocui * Log memory usage every 10s * Use model searching in commits (and sub-commits) view * Assert that the search status view is visible * Add type assertions for all searchable contexts * Cleanup: remove outdated comment * Fix searching in the divergence (left/right) view * Cleanup: reduce some code duplication * Add user config gui.commitAuthorFormat * Fix reporting of unexpected selections in integration tests * Suspend lazygit when continuing a rebase with exec todos * Show "exec" todos in the list of rebase todos * Disregard master commits when finding base commit for fixup * Don't reference Model().Commits multiple times * Add test demonstrating the desired behavior * feat: support range selection for commit attributes amend * feat: let the staging secondary panel change view mode * fix: typo in `IsVisible` assertion string * Include demos when running integration tests with go test * Don't wait in integration tests when running in headless mode * fix: update rebase_onto demo test to match new rebase menu title * Add some developer documentation about profiling * Add -profile command line flag * Add command "Rebase onto base branch" to rebase menu * Remove target branch from title of rebase menu * Always show rebase menu, even when rebasing is not possible * Make "Rebase" show up with "..." in the keybindings menu * Fix typo * Add command "View divergence from base branch" * Show divergence from base branch in branches list * Remove ColoredBranchStatus and branchStatusColor * Add GetBaseBranch function * Make GetMergeBase a method of ExistingMainBranches * Factor out CommitLoader.mainBranches into its own class, and store it in Model * Remove the cache invalidation logic from getMergeBase * More explicit test of status panel content * Add HEAD: when referencing upstream branch * Update user doc * Add design document for "Find base commit for fixup" * Make "Find base commit for fixup" work with hunks with only added lines * Extract a function findCommit * Return errors from blameDeletedLines instead of just logging them * Also return hunks with only added lines from parseDiff * Make parseDiff a non-member function so that we can test it more easily * Rename deletedLineInfo to hunk * Add user config `expandedSidePanelWeight` * Add test for ExpandFocusedSidePanel config * Add integration test for pushing when the remote is not stored locally * Use --force instead of --force-with-lease when remote is not stored locally * Rename Force to ForceWithLease * Ask to force push if server rejected the update, if remote not stored locally * Don't force-push if the remote branch is not stored locally * Fix boolean config keys not appearing in the generated Config.md * Remove an outdated comment * Refresh branches and reflog independently when sorting branches by date * Fix out-of-date comment * Pin golangci version to 1.58 * Fix tooltip of fixup command * Fix calculation of tooltip height * Update readme * Delete the TODO comment about enabling `goconst` in the future from `.golangci.yml` * Add `lint` to make target * Add `copyloopvar` to enabled linters * Add property outputTitle to CustomCommand * feat: focus on local commits view after moving code into new commit * Remove hint about Config.md from PR template * Update README.md ------------------------------------------------------------------- Sun May 19 17:54:25 UTC 2024 - scott.bradnick@suse.com - Update to version 0.42.0+git20240519.b75c177: * Make Keybindings definition in UserConfig struct last * Add default lazygit config generator for Config.md from JSON schema * Set default value for WindowSize config to pass validation * Remove unnecesary schema validations in user config * Correctly request force-pushing in triangular workflows * Add ahead/behind information for @{push} * Rename Pushables/Pullables to AheadForPull/BehindForPull * Add test demonstrating the problem with force-pushing in a triangular workflow * Rename PushBranch to PushBranchAndSetUpstream * Create shims for all model classes in SessionStateLoader * Remove redundant variable dedeclarations * Bump go version to 1.22 * README.md: Update Sponsors * Show delete/edit keybindings in suggestions subtitle if available * Allow editing a custom command from the suggestions list by pressing 'e' * Support deleting items from the custom commands history * improve `nvim-remote` mode * Attempt #2 at preventing codacy coverage step from running on forks * Only run code coverage report on non-fork branches * Fix stashing partialy staged files for git version >= 2.35.0 * Use ScanLinesAndTruncateWhenLongerThanBuffer instead of bufio.ScanLines * Put subject last in git log's prettyFormat * Implement ScanLinesAndTruncateWhenLongerThanBuffer * Handle scanner error in RunAndProcessLines * Add tests for clicking in status side panel * Fix clicking in status side panel * Fix deadlock reporting * Add commitPrefix for defining a prefix for any project * Enable the commit graph in the divergence view * chore: fix some comments and typos * Refactor `pkg/gui/presentation/commits.go` slightly to be consistent * Add config option for length of commit hash displayed in commits view * Support external diff command in diffing mode * Use git.paging.colorArg in diffing mode diff * Cleanup: use separate Arg calls for unrelated arguments * chore: use errors.New to replace fmt.Errorf with no parameters. * Drop update-ref commands at the top of the rebase-todo file * Add tests demonstrating undesired behavior with update-ref todos for copied branches * Switch git-todo-parser from fsmiamoto original repo to stefanhaller's fork * Remove TODO.* from .gitignore * Fix amend to operation not working with non-HEAD merge commit * pkg: fix some typos * Remove ErrorMsg * Rename Error() to ErrorHandler() * Return error from RefreshOptions.Then * Log errors from refresh instead of showing them in a panel * Make OnWorker callback return an error * Clean up error handling of WithWaitingStatus and WithWaitingStatusSync * Remove calls to Error() * Set ErrorHandler * Bump gocui * Remove PopupHandler index and mutex * README.md: Update Sponsors * exclude sponsors PRs from release notes * sponsors.yml: Create PR instead of trying to push to a protected branch * Support both Sha and Hash on commits in custom commands * Add integration test that accesses commit properties in a custom command * improve korean translation * rename sha to hash 10, last remaining sha (hopefully) * rename sha to hash 9, case: Sha * rename sha to hash 8, update some log and comment * rename sha to hash 7, language translate * rename sha to hash 6, update short hash * rename sha to hash 5 * rename sha to hash 4 * rename sha to hash 3 * rename sha to hash 2 * rename sha to hash * renaming variable to CommitHash * standardize 'Commit Sha' to 'Commit Hash' * Dynamic copyright year * UserConfig validation * Add StatusPanelView config * Fix stderr redirection * TERM: remove TERM variable hard-coded value set * Replace min/max helpers with built-in min/max * pkg: fix some comment * Add `SpinnerConfig` * fixup! Introduce a yaml_utils.Walk function * Remove our yaml fork * Migrate null keybindings to "" * Introduce a yaml_utils.Walk function * Underline links in confirmation panels * Make links clickable in confirmation panels * Make HandleGenericClick a little smarter * Extract a function HandleGenericClick * Cleanup: don't mess with globals in tests without resetting them * Fix schema link in Config.md * Fix rewording signed commits when the log.showsignature git config is true * Fix the "Add to .git/info/exclude" command in submodules or worktrees * Add a test that demonstrates the problem * Cleanup: simplify return statements * Cleanup: remove pointless condition and error message * Keep the same commit selected when exiting filtering mode * Fix crash when filtering the keybindings menu * Update Busy.md * Fix deleting update-ref todos * Cleanup: update outdated comment * Extend delete_update_ref_todo test to actually test what it was supposed to * Cleanup: fix typo in test comment * Set the `TERM` env variable ------------------------------------------------------------------- Sat Mar 23 14:03:37 UTC 2024 - scott.bradnick@suse.com - Update to version 0.41.0+git20240323.e1c3ef6: * Update README.md * Update README.md * Update README.md * Fix inline status removal when recording demos * Update interactive rebase demo * Fix container detection * Change CopiedToClipboard text to start lower-case * Change toast for copying sha to clipboard to include what was copied * Change log message for copying sha to the clipboard to include "full" * Add config to truncate commit hashes when copying them to the clipboard * Make it easy to create "amend!" commits * Remove CreateFixupCommitDescription as it's identical to CreateFixupCommit * Support editing multiple files at once using range selection * When creating a new remote, select it and fetch it * Make links in status view clickable, and underline them * Make the links in the status panel point to the current version rather than master * Always prompt to return from subprocess if there was an error * Add NixOs installation instructions README.md * Fix indentation * Improve translations for zh_TW * Fix disabling the switch-to-editor menu item if unavailable * Always show the "Press to open menu" help text in the commit panel * Add missing translations for polish * Get rid of the retain-sort-order-when-filtering logic again * Rename FuzzySearchFunc to FilterFunc * Rename FuzzySearch to FilterStrings * Default to substring filtering, add option to go back to fuzzy filtering * Don't sort the results of fuzzy.Find * Refresh after creating local branch, before checking it out * Show inline waiting status when checking out a local branch * Show the same menu when pressing space on a remote branch * When checking out a remote branch by name, ask the user how * Don't ask to force-push if the remote rejected updates * Set mode to none when calling SetSelectionRangeAndMode with empty non-sticky range * Allow deleting update-ref todos * Extract a findTodo helper function * Allow moving update-ref todos up/down * Store full ref in Name field of update-ref commits * Refactor: pass Todo to moveTodoUp/Down instead of Sha and Action * Handle mouse-wheel scrolling in confirmation panel * Show popup message with breaking changes on startup * Add integration test * Add commit menu entry "Add co-author" * Add a commit menu to the commit message panel * Extract functions AddCoAuthorToMessage and AddCoAuthorToDescription * Make test assertion more specific * Make keybindings for the "Amend attribute" menu configurable * Internationalize the tooltips of the "Amend commit attributes" menu * Add forgotten keybindings to Config.md * Update sponsors in readme * Add integration test * Remove hard line breaks when rewording commits * Replace DOS linefeeds with Unix line feeds when loading a commit message * Save and restore the unwrapped description * Add config for soft-wrapping the commit message body * Bump gocui * Keep the same line selected after squashing fixup commits * Extract common code to a helper method * Move selection down by one after creating a fixup commit * Extend squash_fixups_in_current_branch test to check the selection * Add test for creating a fixup commit and squashing fixups * Support setting a range of commits to "edit" outside of a rebase * Show all submodules recursively * Pass entire submodule to UpdateUrl instead of name and path separately * Fix deleting submodule where name and path are different * Add test to check that the git dir for a deleted submodule was removed * Extend submodule tests to use a submodule where name and path are different * Don't strike out reserved keys in menus * Bump gocui * Remove support for old-style non-interactive rebases * Break git.merging.args config into separate arguments on whitespace * Add a test that demonstrates a bug with multiple args in git.merging.args config * Don't show branch head on rebase todos if the rebase.updateRefs config is on * Rename showBranchMarkerForHeadCommit parameter to hasRebaseUpdateRefsConfig * Add test demonstrating the current (undesired) behavior * Provide two helix presets, one for "helix" and one for "hx" * Make ctrl-f available in staging view * Fix linter warnings * Bump gocui * Add author filtering to commit view * Add tooltips for reset menu items * Change "git reset" default to --mixed * Update Config.md * Change log path to state dir * Use $XDG_STATE_DIR for state.yml * Switch to github.com/adrg/xdg * Add integration test * Set diff.noprefix=false for all other diff commands too * Fix problems with patches if `git diff` was customized with config. * Don't omit section headers when filtering the keybindings menu * Optionally keep sort order stable when filtering lists * Bump required go version to 1.21 * Fix number of lines to read from a task initially for the right scroll bar size * Fix order problems when saving custom commands history * Simplify saving app state * Redraw commits view when showGraph setting changes * Deprecate git.log.showGraph and git.log.order config * Avoid crash when hitting enter on an update-ref todo * Fix a problem with refreshing while an update-ref todo is selected * Fix range select bug * Clean up test case * Cleanup * Support range select removing files from a commit * Change default of git.log.showGraph to 'always' * Disallow cherry-picking merge commits * Disallow cherry-picking update-ref todos * Cleanup: remove unused method * Fix cherrypick demo * Clear cherry-picked commits after pasting ------------------------------------------------------------------- Mon Jan 29 21:53:44 UTC 2024 - scott.bradnick@suse.com - Update to version 0.40.2+git20240130.761c77f: * Use slimmer scrollbars * Add command to squash all fixups in the current branch * Fix main view refresh after adding the first file to a custom patch * Fix typo * Support selecting file range in patch builder * Warn users when attempting to cherry pick with old key * Reduce the chance of race condition with list cursor * Display more keybindings on-screen * Show mode-specific keybinding suggestions * Ensure file view length is never returned as -1 * Improve keybinding descriptions * Render keybinding cheatsheet as markdown table * Keep same selection range when quick-starting an interactive rebase * Add tests for preserving the selection when pressing 'i' * Rename MinMax to SortRange * Add shortcuts for filtering files by status * Remove unused text FetchingRemoteStatus * Use inline status for fetching remotes * Pass absolute file paths to all editor commands * Fix error message for selected lines * Support range select for staging/discarding files * Move file discard action into files controller * Refactor repo_paths.go to use git rev-parse * Make range selections created with the mouse non-sticky * Updated README.md * Disallow updating non-standard TODO lines when rebasing * Support range select in rebase actions * Better assertion logic for line selection * Set groundwork for better disabled reasons with range select * Add config setting to suppress showing file icons * Updated README.md * Show unstaged file names in default colour * Keep same branch selected when refreshing branches * Add test showing how branch should stay selected after fetching (but doesn't yet) * Updated README.md * Show unacknowledged toast message upon integration test failure * Disable range-select in menu and suggestions view * Enforce single-item selection in various actions * Support select range for cherry pick * Add SetSelection function for list contexts and use it in most places * Remove 'v' menu keys * Clear range select upon pressing 'escape' * Standardise display of range selection across views * Support non-sticky range selection in patch explorer views * Add range selection ability on list contexts * Stop hiding debug vscode launch tasks * Updated README.md * Fix exit code of run_integration_tests.sh when capturing code coverage data * Don't try to shorten branch names that are already 3 characters or less * Do not include keybindings from another view in keybindings menu * Updated README.md * Double the duration of error toasts * Allow showing Disabled errors as error panel instead of toast * Make DisabledReason a struct * Use ErrorToast instead of error panel when invoking a disabled command * Add ErrorToast function * Make it mandatory to acknowledge toasts in tests * Make it possible to handle toasts in integration tests * Do not perform IO work when getting disabled reason with local commits * Update README to add backticks to key * Update codebase guide * Add ability to start an interactive rebase onto an appropriate base * Pass -f as single arg in integration test * Set working directory in lazygit test command * Update codebase guide * Add codebase guide * Bump gocui * Obtain remote URL by calling "ls-remote --get-url" instead of using git config * Allow multiple fetch commands (or fetch and pull) to run concurrently * Extract a function fetchCommandBuilder * Add a method GitVersion.IsAtLeast * Updated README.md * Warn when there are hunks with only added lines * Add command to find base commit for creating a fixup * Add config setting for side panel location (left or top) in half screen mode * Preserve the commit message correctly even if the description has blank lines * Add test demonstrating a bug with preserving the commit message * Remove unused function * Simplify GetCommitMessage * Updated README.md * Update cheat sheets and json schema * Add command to open git difftool * Remove unused function * Fix checking out a tag when a branch with the same name exists * Add test demonstrating the problem * Updated README.md * Replace copy SHA with copy subject on commit 'y s' * Update error message * Show a friendly error message when starting lazygit from a non-existent cwd * Add integration test for local branch sort order * Add a sort order menu for local branches * Updated README.md * chore: use null char as a stash entries divider during loading * feat: add age on stash lines * Updated README.md * Add integration test for remote branch sort order * Implement a sort order menu for remote branches * Updated README.md * fix(config): add yaml struct tag to `CustomCommandPrompt.[]Options` * Updated README.md * Fall back to WithWaitingStatus if item is scrolled out of view * Fall back to WithWaitingStatus if view showing the item is not visible * Return only visible views from TopViewInWindow * Updated README.md * Add WithWaitingStatusSync for reverting commits * Use WithWaitingStatusSync for move commit up/down * Add WithWaitingStatusSync * Bump gocui * Add tests for window arrangement code * Refactor window arrangement helper to use pure function * Layout the bottom line view using spacer views * Fix an incorrect comment * fix: MacOS default path misspelling * Updated README.md * chore: update jsonschema * chore: update cheatsheets * feat: introduce a copy menu into the file view * Updated README.md * Add UserConfig jsonschema generation script * Add invopop/jsonschema fork * Update cheatsheets * Updated README.md * Update README.md * Updated README.md * Add coverage arg for integration tests * Use args struct for RunTests * Use a PTY when calling external diff command * Updated README.md * Add "go mod tidy" check to CI * Fix go.mod file (go-difflib dependency should be indirect) * Update README.md to contain new information to install it on gentoo * Fix unsetting upstream when it doesn't exist * Introduce failing "UnsetUpstream" test * Rename integration test "ResetUpstream" * fixed typo in test description * adjust the text to received review comments * commmit - enhance docs for keybinding 'c' for local branch ------------------------------------------------------------------- Tue Nov 07 19:33:46 UTC 2023 - scott.bradnick@suse.com - Update to version 0.40.2+git20231027.1d1b8cc: * Updated README.md * Add Warp link to readme * Updated README.md * Add Codacy badge * Updated README.md * Update Stacked_Branches.md * Updated README.md * Advise against raising pull requests from master branch * create iconProperties struct and convert iconMaps to use iconProperties * Updated README.md * Advise developers to use a nerd font in their editor * Truncate long branch names to make branch status visible * Make the window a little wider for headless integration tests * Make it possible to set the nerd fonts version to "off" * Pass "now" into utils.Loader * Remove special code to rerender views on screen mode change * Rerender certain views when their width changes * Updated README.md * Add 'lvim' editor preset for lunarvim * When refreshing models, re-apply active filter for the corresponding view * Fix crash when trying to filter the list of remotes * Update wording in disable keybindings test * Add disabled compat for user config (#2833) * Avoid rendering branches view twice when refreshing * Remove sync mutex * Disallow pulling/pushing a branch while the branch is pushed or pulled * Disallow checking out another branch while the current one is being pulled * Add inline status for pushing tags and deleting remote tags * Add inline status for pushing/pulling/fast-forwarding branches * Add WithInlineStatus helper function * Add GetItemOperation/SetItemOperation/ClearItemOperation to IStateAccessor * Don't report errors from within a WithWaitingStatus * Updated README.md * Remove redundant `len` check * Updated README.md * Add Micro editor preset * Updated README.md * Band-aid fix for submodule/reset.go test failure * Updated README.md * Add ability to force portrait mode * add gofumpt to workspace settings * Update PR template to use go generate command * Ignore deprecation checks in linter * Add comments in user config struct * Change Makefile to build non-optimized * Updated README.md * Make test_list_generator.go print what it's doing * Use go:generate for generating cheatsheets * Generalize the CI check for the test list to all auto-generated files * Updated README.md * Disable deadlock reporting when debugging an integration test * Disable the 40-second timeout for integration tests when debugging * Use constant for WAIT_FOR_DEBUGGER env var * Build lazygit without optimizations and inlining when debugging * respect and env vars * Pass MAKECMDGOALS to make integration-test-tui * Print race detector logs after running a test with -race * Support -race arg when running integration tests to turn on go's race detector * Allow passing multiple flags to the cli runner * Fix minor resource leak in runCmdHeadless * Don't select current search result when showing search status * Updated README.md * feat: add a menu to rebase current branch to a target branch upstream * chore: rename branch upstream view options method * Shorten the waiting status for fast-forwarding a branch * Remove unused WithLoaderPanel code * Use WithWaitingStatus instead of WithLoaderPanel for pull/push/fetch * Add constant for LoaderAnimationInterval * Remove unused class FakePopupHandler * Add integration test for deleting a remote branch with credentials prompt * When pausing a task during a waiting status, hide the status while paused * Extract WaitingStatusHandle * Extract StatusManager.addStatus method * Updated README.md * Add search history * Allow cherry-picking commits during a rebase * Add StatusCommands.IsInNormalRebase and IsInInteractiveRebase * Disabled paste when there are no copied commits * Use DisabledReason for commits panel commands * Use DisabledReason for rebasing a branch onto itself * Add Enabled func to Binding * Use DisabledReason for upstream options items * Use DisabledReason when deleting branches is not possible * Add DisabledReason field to MenuItem * Updated README.md * Use UpstreamBranch for opening pull requests * Rename test/results to test/_results * Updated README.md * fix: use `Error` method to handle the commit url copy from unknown service * Provide a simple way to debug an integration test * Add debug configuration to attach to a running lazygit process * Change "make run" to do a build and then launch lazygit * Hide system goroutines in callstack * Format launch.json with Prettier * Add coauthor (#2) * Change the default of the "gui.borders" config to "rounded" * feat: add jump-to-panel label setting * Bump gocui * Updated README.md * Updated README.md * feat: add a menu to reset current branch to a target branch upstream * chore: rename "Set/Unset upstream" menu to "Upstream Options" * Replace whitespace with '-' when renaming a branch * Updated README.md * Move diff context size from UserConfig to AppState * Load defaults for AppState before reading from yaml * Extract a SaveAppStateAndLogError function * Don't pass ignoreWhitespace to git commands * Add AppState to common.Common * Updated README.md * Fix keybinding for editing config file * Add support for external diff commands (e.g. difftastic) * Add explicit --no-ext-diff arg to CommitCommands.ShowCmdObj * Updated README.md * Improve prompts when amending commits * Updated README.md * Fix escape not cancelling filter mode, but closing the menu instead * Updated README.md * Don't show toasts when running integration tests * Ensure committable files for "amend to" and "create fixup commit" * Extract a WithEnsureCommitableFiles function * Add integration test for the new divergence log * Add DoesNotContainAnyOf matcher * Add "Show divergence from upstream" entry to Upstream menu in branches panel * Extract a SubCommitsHelper from SwitchToSubCommitsController * Remove sub_commits_context's Title method * Add option RefToShowDivergenceFrom to GetCommitsOptions * Don't return commits from setCommitMergedStatuses * Remove the magenta color on menu items that open a menu * Add sections (local, global) to the keybindings menu * Add option to add sections to menus * Add a mechanism to insert non-model items into list contexts * Make columnPositions include entries for removed columns * Make RenderDisplayStrings return the column positions * Take removed columns into account when applying column alignments * Add failing test demonstrating bug with column alignments and removed columns * Change RenderDisplayStrings to return a slice of strings * Cleanup: use slices.Delete to delete elements from a slice * Add tests for renderLines * Extract a ListRenderer struct * Call getDisplayStrings with a valid range of model indices * Extract a renderLines function * Change length parameter of getDisplayStrings to endIdx * Updated README.md * Add instruction in PR template to start PRs with an imperative * Add Winget to installation guide * Add Winget to installation guide * Update docs * Support custom keybindings for confirm discard * Select same commit again after pressing "e" to edit a commit * Call Then function only after everything is done * Panic when trying to use RefreshOptions.Then with mode ASYNC * Add assertion to show the problem * Allow port in webDomain for services config values * upgrade golangci/golangci-lint-action to v3.7.0 * upgrade actions/setup-go to v4 and remove actions/cache for go cache * upgrade goreleaser/goreleaser-action to v4 * upgrade JamesIves/github-sponsors-readme-action to v1.2.2 * Add integration test * Mention ctrl+o binding in commit message sub title * Add key binding for switching from the commit message panel to an editor * Remove obsolete comment * Add scrollOffEnabled config * Pass UserConfig to checkScrollUp/Down instead of just the scrollOffMargin * Add tests for scroll-off margin of zero * Fix section levels * Add git flow description in readme * Updated README.md * Fix the commit graph display after selection jumps in commits view * Fix test * Add unit test * Fix arg order to asserts * Clean before convertion? * Stylistic changes * Clean path * Improve error message * Fix yellow/red coloring while rebasing * Fix the blue sha color of todo commits while rebasing * Add Makefile * Add emacs-keybinds for word navigation * Updated README.md * Add ScrollOffMargin user config * Stop cycling hunks when reaching the end * If selected line is outside, move it to the middle of the view * Fix typo in comment * Bump gocui * Add features to table of contents * Add demo for diffing two commits * Factor out common config setup functions in demo package * Show commit mark before showing extra info * Updated README.md * Add commit graph demo * Add rebase from marked base commit test * Add undo demo * Allow deleting remote tags/branches from local tag/branch views (#2738) * Fix bug in LineNumberOfLine * Add test case for LineNumberOfLine() * Updated README.md * If OpenLink errors, show a dialog instead * use 'suspend' instead of 'editInTerminal' internally * Use soft wrapping in config doc * Add nvim-remote editor preset * Honour editInTerminal value when opening a worktree folder * Reset origin when clearing view * Add a Click() primitive to the integration test library * Add zh-TW to docs/Config.md * feat(doc): better JSON schema usage explanation * feat(doc): mention JSON schema * added termux installation * added svelte and mdx * Corrected 'zh' to 'zh-CN' in lazygit docs for proper localization * Add instructions for openSUSE ------------------------------------------------------------------- Mon Aug 07 15:11:15 UTC 2023 - scott.bradnick@suse.com - Update to version 0.40.2+git20230807.5e388e2: * Updated README.md * Fix seg-fault when opening submodule in nested folder * Support bare worktrees where worktree does not have its own .git file * Test bare repos with dotfile setup * Use nerdfont version 3 * Don't run the check-required-label check on master * Updated README.md * 👽️ update worktree icons for NerdFont V3 * Bump gocui * Updated README.md * Fix README.md typo backkground -> background ------------------------------------------------------------------- Sat Aug 05 16:21:43 UTC 2023 - scott.bradnick@suse.com - Update to version 0.40.0+git20230805.7847203: * Updated README.md * Fix confirmation view sizing * Add custom patch demo * Add worktree demo * Add custom command demo * Add undo/redo demo * Add filter demo to README * Move features to top of readme * Point to new demos * Add demo for staging lines * Add demo for amending old commit * Add demo for filtering branches * Support mp4 videos for demos * Remove file watcher code * Refresh when the terminal window gets the focus * Bump gocui * Point tcell at stefanhaller's fork * Appease linter * Increase timeout for linter * Fix focus issue * Update README.md * Update README.md * Wait in demo after setting caption * Add explosion animation when nuking working tree * Output correct path in demo record script * Start in fullscreen when passing a git arg * Updated README.md * Update README.md * Adds EditRebaseFromBaseCommit log message to i18n * Wraps rebase func with WithWaitingStatus to show loader when rebasing * Moves log related translations into its own Tr.Log. namespace * Moves hard coded strings for LogCommand to i18n. * Updated README.md * Create demo output dir if it doesn't already exist * Update README.md * Add demo test variant * Update README.md * Update README.md * Update README.md * Log error when saving app state fails after showing/hiding command log * Move IgnoreWhitespaceInDiffView to AppState, and persist it when it changes * Show correct keybindings in force-push prompt * Allow force-tagging if tag exists * Add a "Mark commit as base commit for rebase" command * Cleanup: remove extra OutsideFilterMode guard * Add documentation for working with stacked branches * Don't show branch marker for head commit unless updateRefs config is on * Don't show branch heads in reflog subcommits * Visualize local branch heads in commits panel * Store full sha in branch model * Add CheckedOutBranch to Model struct * Make bisect/basic.go test more concrete * Add author short names to commits in test * Improve updateRef test * Remove the old experimentalShowBranchHeads mechanism and config * Fix merge status of commits when update-ref command is present * Add tests for setCommitMergedStatuses * Make setCommitMergedStatuses a non-member function * Remove secureexec package * Standardise on using lo for slice functions * Updated README.md * fix go mod * Use double dash for disambuating path in editor templates * Fix flakey worktree tests * rename files * Write unit tests with the help of afero * Fix bug where worktree view would take over window upon switching branches * Use forward-slashes on windows * Add section in integration readme about testing against old git versions * Add more i18n for worktrees * Use fields rather than methods on worktrees * Centralise logic for obtaining repo paths * Remove IO logic from presentation code for worktrees * Add test for opening lazygit in the worktree of a bare repo * Remove dead function * Fix test by making branches appear deterministically * Allow entering a submodule by pressing space * Allow entering a worktree by pressing enter * Update repo switch logic * Add test for retained context focus when switching worktrees * Support fastforwarding worktree * Add more worktree tests * Add worktree tests for removing/detaching * Add worktree integration tests * Update cheatsheets * Remove worktree version guards * Fix unit tests * Show loader when switching worktrees * Support older versions of git when fetching worktrees * Fix tests * Fix tests * Safer fetching of linked worktree paths * Move worktrees tab to files window * Change directory to worktree if given as an argument * Support opening worktree in editor * Properly render worktrees in files panel * Better logic for knowing which repo we're in * Only show worktree in status panel if not the main worktree and worktrees are supported * Hide worktree functionality on old git versions * Associate branches with worktrees even when mid-rebase * Assume that the base of a worktree can be checked out * i18n for worktrees * Don't quit on error * Allow opening worktree in editor * Show base ref suggestions when creating worktree * Refresh work trees when discarding file changes * Checkout worktree when creating from worktree view * Use 'M' for months in branches panel * Fix filtering logic in worktrees view * Support creating worktrees from refs * Fix wording * Log when directory is changed * Handle deleting branch attached to worktree * Update wording * Don't touch repo stack when switching worktrees * Move status panel presentation logic into presentation package * Land in the same panel when switching to a worktree * Move current worktree to top of list * Prompt to switch to worktree when branch is checked out by other worktree * Use git lingo * Improve name handling * Use sentence case * Refactor * Update worktree model * Alert when attempting to enter the current worktree * Remove comment * Address PR comments * Basic support for adding a worktree * Put all worktree i18n strings together Use tabwriter to align worktree panel contents * Improve worktree panel * Style missing worktree as red and display better error when trying to switch to them Use a broken link icon for missing worktrees * Hide worktrees in the worktree panel if they point at a non-existing filesystem location. Remove unneeded check when filtering out branches from non-current worktrees from the branch panel. Add link icon for linked worktrees * Update status to differentiate the main vs linked worktrees * Support for deleting a worktree * Initial addition of support for worktrees * When bisecting, always mark the current commit as good/bad, not the selected * Add bisect menu entry that lets you choose bisect terms * feat: add os.copyToClipboardCmd to allow for a custom command * Fix the x/exp dependency * Updated README.md * Support random order of command execution in unit tests Now that we run code concurrently in our loaders, we need to handle that in our tests. We could enforce a deterministic ordering by mocking waitgroup or something like that, but I think it's fine to let our tests handle some randomness given that prod itself will have that randomness. * Have staging refresh wait for files to refresh first * Speed up refresh using concurrency and wait groups * Refactor reflog commit loader * Speed up remote loader * Use wait groups to speed up commit loading * Log duration of post-refresh-update call * Log duration of commands * Log duration of refresh * Show error when trying to open patch menu with an empty patch * bring back yaml library fork ------------------------------------------------------------------- Mon Jul 24 14:31:58 UTC 2023 - scott.bradnick@suse.com - Update to version 0.39.4+git20230724.35c430c: * Updated README.md * Revert "Fix flakey pull_merge_conflict test" * README.md: Add Gentoo installation documentation * Could not type special characters on non-english keyboards ------------------------------------------------------------------- Sun Jul 23 16:31:37 UTC 2023 - scott.bradnick@suse.com - Update to version 0.39.3+git20230723.7c44b76: * Prompt for commit message when moving a custom patch to a new commit * Fix crash caused by simultaneous read/write of scanner buffer * Better word wrap * Update README.md * Update README.md * Better tag creation UX * Use fuzzy search when filtering a view * Keep track of authors across local commits and branch commits for suggestions ------------------------------------------------------------------- Fri Jul 21 23:38:22 UTC 2023 - scott.bradnick@suse.com - Update to version 0.39.2+git20230722.a7969ae: * Fix rendering to main view on windows ------------------------------------------------------------------- Fri Jul 21 13:31:03 UTC 2023 - scott.bradnick@suse.com - Update to version 0.39.1+git20230721.39c900c: * Fix goreleaser * Only apply right-alignment on first column of keybindings menu * Add test for crashing on empty menu * Fix crash on empty menu * Add missing label to label checker * Update release notes config and add CI check * Add release config for generating release notes * Add integration test for accordion mode * Properly fix accordion issue * Fix accordion issue * Updated README.md * Fix crash when a background fetch prompts for credentials * Fix populating the Commit.Tags field * Extend commit_loader test to show how the Tags field is populated * Fix potentially wrong help text in commit message panel * Updated README.md * Add test for cmd obj cloning * config: rely on .gitconfig for verbose commit messages * Allow checking for merge conflicts after running a custom command * Updated README.md * Do not quote initial branch arg when creating repo * Run integration tests with various git versions * Update checkout and cache action versions * Fix pull rebase tests * Fix conflict test * Replace uses of "git stash save" with "git stash push" * Fix git stash calls for older git versions * Fix Shell.Stash() for older versions of git * Remove StashWithMessage function * Use -c init.defaultBranch=master to pass the desired main branch to git init * Remove mainBranch parameter from Shell.Init() * Add script to run integration tests * Retry tests on CI * Fix interactive rebase with git 2.25.1 and earlier * Updated README.md * Retry on index.lock error * Ensure background refreshes don't bunch up * Fix flakey pull_merge_conflict test * Fix flakey misc/initial_open test * Refactor * Use an interface for tasks instead of a concrete struct * Use mutex on cached git config * Use first class task objects instead of global counter * Add dev doc for busy/idle tracking * Fix test * Fix race condition * Only attempt integration tests once * Add mutex for refreshing branches * Remove retry logic in integration tests * Wait for intro before doing any of our refresh functions * Remove redundant waitgroup * Handle pending actions properly in git commands that require credentials * Add busy count for integration tests * Bump gocui * Updated README.md * Add mutex to filtered list to avoid concurrency issues * Add filtering docs * Differentiate between different filter modes * Update cheatsheets * Use searching, not filtering, in file tree views * Fix escape logic for remote branches * Add integration tests for searching/filtering * Support case sensitive filtering * Color view frame differently when searching/filtering * Show filter status similar to what we show with search * Only cancel search if main or temporary context loses focus * Scroll to top when filtering and retain selection when cancelling filter * Move more logic into search helper * Case insensitive string comparison * Support filtering files * Cancel filter/search when hitting escape * Introduce filtered list view model * Add integration tests for discarding files * Print entire panic message * Bump gocui * Use comment char config on interactive rebase * Bump git-todo-parser * Add tests of interactive rebase with custom comment character * Updated README.md * fix: typo EnteRefName * Always show branch heads in diff pane * feat(i18n): add russian translation * Use remote upstreams of main branches to determine merged status of commits * Rename the gui.skipUnstageLineWarning conf key to gui.skipDiscardChangeWarning * Rename "Delete change" menu entry to "Discard change" in staging panel * Fix the title and text (and variable names) of the Discard Changes prompt * Avoid rewriting the file if nothing changed * Add new function RenameYamlKey * Extract a lookupKey function that will be useful in the next commit * Create missing path elements * Return an error if some node in the path is not a dictionary * Return an error if node to be updated is not a scalar * Return an error if document is not a dictionary * Support updating values in empty documents * Rename UpdateYaml to UpdateYamlValue * Cleanup: improve test setup and check for the right error string * Cleanup: remove unnecessary if statements * Add a test for stopping at an "edit" command that conflicts * Insert fake todo entry for a conflicting commit that is being applied * Add test for rewording a commit and failing with an error * Add test for a pick that fails and gets rescheduled * Add test for amending a commit, causing a conflict * Extend test to expect what commits we want to be listed when there's a conflict * Updated README.md * Add nerdFontsVersion config * Turn remoteIcons into a map * Update README.md * Allow discarding changes only from local commits * Better prompt for discarding old file changes * Disallow discarding file changes while a directory is selected * Fix focus issue when opening recent-repos menu at launch * Support authors and tags in custom command suggestions preset * Updated README.md * kakoune binary name * Updated README.md * Fix flakey test * Appease linter * Support matchers on integers in integration tests * Add integration test for commit highlighting on focus * Apply correct styling to root commit in graph * Refresh commits viewport on focus lost * Stop hiding underscores for VSCode * show commits against branches * Set defaults colours to 'default', not 'white' * Show menu instead of prompt when there are conflicts in a rebase or merge * update seconds ago function and add tests * Add --all to "git fetch" command when not fetching a specific remote * Add tests for Fetch * Extract a FetchCmdObj function so that we can test it * Remove unused fetch options RemoteName and BranchName * Updated README.md * Add key bindings doc for Chinese * Remove Uffizzi * Add Traditional Chinese support * Support using command output directly in menuFromCommand custom command prompt * Support suggestions generated from command in custom commands * Updated README.md * Add suggestionsPreset to custom commands system * More compact and flexible date format * Updated README.md * Clean up helix editor preset * Use sentence case everywhere * Allow global logging when developing * Use boolean field to control whether viewport is refreshed on line focus * Add helix editor preset * Fix discard logic * Construct arg vector manually rather than parse string * Updated README.md * Cache binary paths * Update gitlab commit URL to match new routing * Update gitlab merge request URL to match new routing * Right-align key labels in menu * Update cheatsheet * Fix cheatsheet generate VSCode task * Apply strikethrough style to reserved keybindings in menus * Stop displaying navigation keybinding at bottom of screen * Use same labels for keys that we use in the config * Support strikethrough text style * Don't keep commits that become empty during a rebase * Show correct keybinding in tip * Refactor interface for ApplyPatch * Add convenience builder for git commands * Increase test coverage * Updated README.md * Remove the toast when toggling "ignore whitespace" * Visualize the "ignore whitespace" state in the subtitle of the diff view * Don't toggle "ignore whitespace" in the staging and patch building panels * Disregard the "ignore whitespace" option in the patch building panel * Support ignoring whitespace on stash * Updated README.md * remove empty message check as message of commit can be empty * Add config git.mainBranches * Updated README.md * Fix race condition * Don't deactivate context that you're about to activate * Compare contexts with keys * Rename CmdLog -> GuiLog * Updated README.md * Make "merged" take precedence over "unpushed" * Allow the selected line of a list view to be outside the visible area * Extend one of the filtering tests to start on a commit other than the first * Updated README.md * update cheatsheets * remove duplicate method * add ability to update yaml path while preserving comments * add comment to encourage keeping code and docs in sync * Include "kakoune" in supported edit presets * Include "nvim" in supported edit presets * merge master into refactor-better-encapsulation * Refresh staging panel when committing * Retain commit message when cycling history * Split commit message panel into commit summary and commit description panel * ensure initial context is set when entering submodule * remove log call because it clutters test output * update cheatsheets * fix rendering of commit files view * appease linter * remove unused file * move side window actions to controllers package * move toggle whitespace action to controllers package * update integration test for toggling whitespace * move quit actions to controller * fix reflog text colour by defaulting every view to the same foreground colour * remove unused file * move some methods * move diffing menu action to controller * move filtering menu action to controller * move another action into controller * move more actions into controller * move custom patch options menu action to controllers package * move custom command action into its own file * move window arrangement helper * lots of changes * standardise controller helper methods * standardise helper args * split context common from helper common * move getDisplayStrings funcs into contexts * refactor cherry pick code to move state access out of helper * start moving getDisplayStrings funcs into contexts * move getModel functions into contexts * move views into contexts * remove context callback opts * lots more refactoring * Begin refactoring gui * Bump golang.org/x/net from 0.0.0-20220722155237-a158d28d115b to 0.7.0 * build: remove `github.com/jesseduffield/yaml` package ------------------------------------------------------------------- Wed May 03 14:28:39 UTC 2023 - scott.bradnick@suse.com - Update to version 0.38.2+git20230503.5149b24: * update open docs * Add own version for test move_to_earlier_commit for older git versions * Rename From to AtLeast * chore(git_commands): support old git version (`git rebase --empty=keep`) ------------------------------------------------------------------- Tue May 02 15:08:18 UTC 2023 - scott.bradnick@suse.com - Update to version 0.38.1+git20230502.88d4313: * Updated README.md * Add config gui.experimentalShowBranchHeads ------------------------------------------------------------------- Mon May 01 13:47:04 UTC 2023 - scott.bradnick@suse.com - Update to version 0.38.0+git20230501.c6c4346: * Updated README.md * Refresh staging panel when committing * Retain commit message when cycling history * Split commit message panel into commit summary and commit description panel * Fix activation of initial context * refactor moveFixupCommitDown * Make RebaseCommands.AmendTo more robust * Refactor to tighten interface to lazygit daemon * Refactor: simplify PrepareInteractiveRebaseCommand API * Implement moving commits up/down in terms of daemon * Implement "move patch to selected commit" in terms of daemon * Implement squash, fixup, drop, and reword in terms of daemon * Extract EditRebaseTodo into a function in utils.rebaseTodo * Implement "edit commit" in terms of the new EditRebase function * Use --rebase-merges for interactive rebase * Put gitCommon.version back in deps_test.go * Bump github.com/fsmiamoto/git-todo-parser to latest version * enforce lowercase filenames * Updated README.md * Add an editor preset for kakoune (kakoune.org). * Updated README.md * bump clipboard package for WSL support * feat: add gitea to hosting service * Don't allow resetting non-HEAD commits (including rebase todos) during rebase * Allow resetting author of HEAD commit during rebase * Revert "feat: support for `push --force-if-includes`" * Change push tag command * test: check focus on commits after performing an advanced rebase * chore: add focus on local commits after interactively rebase * use lowercase text for menu items (as we're still yet to standardise on 'Sentence case') * test: add integration test to verify the interactive rebase correctly work * refactor: introduce a struct to pack the `PrepareInteractiveRebaseCommand` function * extract out function * test: update the UI to follow the new rebase type selection instead of confirm the previous popup * feat: allow to perform a rebase with breaking before the first commit * feat: let interactive rebase prepend commands to the default todo file * Updated README.md * Don't allow changing the type of certain rebase todos * Make moving todo commits more robust * Make EditRebaseTodo more robust * Add integration test for dropping a todo commit when there's an update-ref * Add GitVersion field to NewIntegrationTestArgs * Show update-ref commands in rebase todo list * Visualize branch heads in commits panel * Make getHydratedRebasingCommits more robust * Store commit.Action as an enum instead of a string * Store commit.Status as an enum instead of a string * Bump github.com/fsmiamoto/git-todo-parser to latest main version * fix flaky tests * Reorder tests * Rename test files to match test names * Add CI job to check that the test list is up to date * Don't add custom command to history if it starts with space * Show warning about deprecated edit configs * Update documentation * Change OpenCommand to Open and OpenLinkCommand to OpenLink * Don't set platform defaults on OSConfig struct immediately * Remove line number support for "open" command * Add support for falling back to legacy edit config * Implement edit presets * Cleanup: fix copy/paste error in comment * Fix windows tests * Rename test files so that test discovery works again * Updated README.md * feat: remove --no-renames flag from main panel diffs (to show renamed files) * fix: organise commit test file * Make debugger config work when changing repos while debugging * fix: generalize parsing of ssh git urls * prevent unnecessary re-renders of view * Updated README.md * Better error message when trying to amend a commit other than head during rebase * Allow amending the head commit during interactive rebase * Extract amendHead function into new AmendHelper * Add integration test for amending from the files panel * Better error message when trying to edit or move a non-todo commit during rebase * Allow rewording the head commit during interactive rebase * Set promptToReturnFromSubprocess to false for integration tests * Cleanup: use commit.isTODO() consistently * Make sure scrollbars have the right size initially ------------------------------------------------------------------- Fri Mar 31 16:44:17 UTC 2023 - scott.bradnick@suse.com - Update to version 0.37.0+git20230326.3a59aba: * fix reflog text colour by defaulting every view to the same foreground colour * Updated README.md * remove old integration test recording code * Push initial context instead of just putting it in the context array * Avoid deactivating and activating when pushing the current context again * refresh the staging panel on successful commit * Fix deprecated rand.Seed * rename patch manager to patch builder * specify view when assertion on line count fails * bump gocui to fix race condition * refactor patch code * Better escape code parsing (thanks to Ryooooooga) (#2514) * appease golangci-lint (#2512) * Updated README.md * Fix checking for credentials performance (#2452) * Fix "move patch into new commit" for partial hunk (#2507) * Uffizzi PR: Update Uffizzi Workflows (#2502) * Make arrows consistent (#2501) * Add border config (#2344) * Updated README.md * fix(commit_loader): fix log command * Remove alternative confirmation and return keymappings * Updated README.md * Add more unit tests * Update Config.md * Rename WillBeAppliedReverse to Reverse * Remove the PatchOptions.Reverse option * Use WillBeAppliedReverse (and git apply --reverse) in the staging panel too * Reenable failing test * Concatenate patches to apply them all at once * Add test for reverse-applying a patch that conflicts * Remove parameters that are no longer needed * Remove the keepOriginalHeader retry loop * Use forward patches and --reverse flag for partial patches too * Add patch option WillBeAppliedReverse * Bundle the reverse and keepOriginalHeader flags into a PatchOptions struct * Fix opening the current test file from the integration test gui * Updated README.md * generated cheatsheets and ran code formatting * issue #2473 * Keep side context in context stack when pushing a main context * Updated README.md * Fix setting gui.selectedRangeBgColor as a hex value * Add some tests for GetTextStyle * Store WorkingTreeState in model * Don't put "<--- YOU ARE HERE" in the commit model's name * Updated README.md * Updated README.md * Make integration test more robust * feat(subcommits): load unlimited sub-commits * Updated README.md * show file tree by default in integration tests * cleanup integration test code * remove legacy integration tests * disable auto-refresh in integration tests * migrate merge conflict tests * Add icon for Kotlin script files * Updated README.md * give CI longer wait times before failing assertions * migrate patch building tests * Add icon for Kotlin files * Updated README.md * fix PullMergeConflict integration test * Improve staging panel integration tests * migrate staging tests * remove erroneously added file * migrate more tests * migrate more tests * migrate reflog integration tests * migrate interactive rebase integration tests * build: bump tcell version * migrate push tests * migrate stash tests * rerun test generator * migrate switch tab from menu test * remove x keybinding for opening menu so we now only use '?' * mention path in tooltips * Add tooltips for discarding * Make discarding items less error prone * remove old tag tests * add create tag from commit test * add reset to tag test * add tag checkout test * sync test list whenever running a test in vscode * add tag tests * show tag message * Allow squashing fixups above the first commit of a repo * improved commit test * migrate undo2 * Update pkg/integration/tests/branch/create_tag.go * Add integration tests for rebasing to the initial commit * Allow interactive rebasing all the way down to the first commit * Better error message for trying to squash or fixup the first commit * Updated README.md * Revert "fix: improve backward compatibility" * test: fix TagNamesAt * test: add an integration test for creating tag on branches * feat: support to create tag on branch * Edit by breaking after current commit * Bump minimum required git version to 2.20 * migrate undo test * migrate merge conflict undo test * show snapshot of lazygit when test fails for easier investigation * migrate revert merge test * migrate initial open test * remove already migrated test * migrate open to branches with cli arg test * migrate more force push tests * remove unneeded config setting * migrate forcePush integration test * allow syncing tests from vscode * update readme * migrate pullAndSetUpstream test * migrate pull integration test * add code generator for creating tests list * rename key to Pull * Fix yellow/red coloring of pushed/unpushed commits in branch commits panel (#2448) * Updated README.md * Undo a change made in #2444 that we didn't end up needing * Updated README.md * bump gocui * update view cursor when selecting new line in patch explorer view * Don't bother setting view cursor pos for staging/stagingSecondary views * Turn highlighting off in staging/stagingSecondary views * Select next stageable line correctly after staging a range of lines * Add test demonstrating selection bug when staging a range of lines * Make SelectedLine/SelectedLineIdx work in staging/stagingSecondary views * Updated README.md * migrate submodule reset test * migrate submodule enter test * fix test * better visibility for tui * migrate submodule remove test * migrate submodule add test * chore: change to work `return-alt1` on all views * Updated README.md * chore: remove `UNKNOWN_VIEW_ERROR_MSG` * Explicitly pass --no-autosquash when rebasing * Add an integration test showing a problem with autosquash during normal rebase * fix: disable menu key binding while displaying popup * Copy remote branch name to clipboard * Updated README.md * fix linting issue * Disable ~/.gitconfig when running integration tests * Add integration test for ignoring whitespace in diff * Allow ignoring whitespace in diff in commits panel * Better redrawing after toggling "ignore whitespace" * Cleanup: remove extra space * Make "Toggle whitespace in diff view" a global key binding * Updated README.md * fix: fix `default` color to be white * Override GIT_SEQUENCE_EDITOR for rebase commands ------------------------------------------------------------------- Wed Feb 01 16:54:52 UTC 2023 - scott.bradnick@suse.com - Update to version 0.37.0+git20230201.16802a0: * Updated README.md * Fixing indent in user_config.go * Updated README.md * Skipping copy_patch_to_clipboard test case * Fixed breaking integrtion tests(old) * Updated README.md * feat(log): allow to disable `git.log.order` * fix: fix RefName of detached HEAD to works in Chinese * Don't omit final line feed when copying diff lines to clipboard * Cleanup: remove unused function RenderPlain * Add user config gui.skipRewordInEditorWarning * better test * Updated README.md * chore(i18n): remove unused texts * Corrected test assert * Fixed integration test case * Extract helper function doRewordEditor * Fixed the lable in the custom_patch_options_panel.go * Added Integration testing the copy to clipboard in patchbuilding * fix: fix `ReplacePlaceholderString` * Fixed typo * Change key of clipboard copy * docs(README.md): fix installation scripts for Ubuntu * Added copy to clipboard option to the patch options * Updated README.md * replaced 'screenMode' to 'windowSize' in config * Updated README.md * Added screenMode configuration to gui configuration * feat: uffizzi integration * docs(Config.md): add missing keybindings * refactor: simplify log format * feat(config): change `git.commit.verbose` to accept "default" * Updated README.md * build: bump gocui * fix: fix goroutine leaks * Updated README.md * Add option to allow --verbose commit in editor commits * fix: improve backward compatibility * defend against possible nil function * appease linter * migrate filter path tests * migrate test for rename branch and pull * migrate fetchPrune integration test * more git ignore stuff in integration test * feat: support for `push --force-if-includes` * feat: add `GitVersion` struct * chore(gui): remove unused `gitConfig` * Updated README.md * appease linter * integrate snake game into lazygit * add snake game * update readme * rename function * migrate ignore gitignore integration test * migrate discard staged changes test * migrate discard old file change test * rename from asserter to driver * move popup assertions into a struct * create actions struct * remove broken test * fix suggestions test * fix test * fix bug * update integration test readme * minor changes * remove dependency on model * move shell into test driver * rename input to t * add tap function * combine assert and input structs, clean up interface * rename * better namespacing for assertions * add view asserter getter struct * refactor commit message stuff in integration tests * more refactoring of popup stuff * add prompt asserter * refactor prompt handling in integration tests * chore(config): remove unused config * Updated README.md * update readme * allow checking if line is selected in Lines and TopLines methods * allow chaining matchers * add switch-to-view methods * cleaner test assertions * rename SelectedLine to CurrentLine in tests * introduce ViewLines functions * Updated README.md * add helper functions for popups in tests * refactor to not have Match at the start of assert method names, because it reads better that way * add task for opening deprecated tests TUI * move background code into its own file * focus terminal when running a test * faster test * discard changes integration test * migrate diffing integration tests * don't kill long-running sandbox sessions * Change null as the default return-alt1 * fix(#2309): fix diff scroll * migrate confirm-on-quit integration test * apply user config changes in sandbox mode * clean up some integration test stuff * remove snapshot approach for new integration tests * add commit revert integration test * add multi-line commit integration test * bump gocui * Ament description about return-alt1 * migrate branch reset integration test * Updated README.md * updated rebase confirmation message * add return alt1 * Add credential prompts for U2F-backed SSH keys ------------------------------------------------------------------- Fri Dec 2 03:32:46 UTC 2022 - Scott Bradnick - Changing 'main.source' to 'main.buildSource' ------------------------------------------------------------------- Fri Dec 2 03:13:00 UTC 2022 - Scott Bradnick - Swapping main_commit and main_version generated values ------------------------------------------------------------------- Fri Dec 2 01:57:31 UTC 2022 - Scott Bradnick - Adding '%define's and '-ldflags' entries so that --version returns proper information ------------------------------------------------------------------- Thu Dec 1 19:33:01 UTC 2022 - Scott Bradnick - Initial version 0.36.0+git20221201.d69b2fe from upstream