Releases: the0807/git-graph-plus
Releases · the0807/git-graph-plus
Release list
v0.7.3
v0.7.2
New Features
- Branch Toolbar - A Fork-style split button on the toolbar creates a branch (or worktree) seeded from the current branch, with Lean Sync (rebase the current branch onto the default branch), Lean Finish (merge it into the default branch), and a nested Git Flow menu.
- File Path Actions - Right-click a changed file to reveal it in the OS file explorer, copy its absolute path, or copy its repo-relative path.
- Classic Interactive Rebase - A new
gitGraphPlus.interactiveRebase.modesetting can rungit rebase -iin an integrated terminal using your own Git editor, instead of the visual modal. - Keyboard-Driven Rebase Modal - The interactive rebase modal is now keyboard-navigable and wider for easier editing.
- Smarter Range Selection - Shift-clicking in the graph seeds the range from the current branch tip when nothing is selected yet.
Bug Fixes
- Detached HEAD Display - While detached, rebasing, or bisecting, the toolbar badge and commit-row menus now show the short HEAD SHA (with a commit icon) and the full SHA in the tooltip, instead of git's raw "(no branch, ...)" label.
- Fixup / Squash Scope - Fixup and squash actions are now hidden for commits that aren't on the current branch, where they wouldn't apply.
- Added / Deleted File Diffs - Opening changes for an added or deleted file now works via an empty-tree fallback instead of failing.
- Selection Persistence - The commit selection and row outline are kept while context-menu modals are open.
v0.7.1
Performance
- Leaner Refreshes - Editing files now triggers a log-only partial refresh instead of reloading branches, tags, remotes, stashes, and worktrees, and the sidebar watcher no longer duplicates the graph panel's refresh work. A redundant full refresh on every file save was also removed (the file watcher already covers it, and refreshing now respects the
autoRefreshsetting). - Smoother Graph Scrolling - Scroll handling is coalesced to one update per frame, removing jank when scrolling large graphs on high-refresh displays.
- Faster Search - Search precomputes per-commit text once, so each keystroke no longer rebuilds the entire search haystack.
- Lighter Diff & Stats Rendering - The uncommitted staged/unstaged file trees are memoized instead of rebuilt on every interaction, syntax highlighting is bounded to the visible diff, the commit-activity heatmap uses O(1) cell lookups, and HEAD/branch lookups are memoized.
Bug Fixes
- Non-ASCII Filenames - Files with Korean or other non-ASCII names now open their diff correctly instead of showing escaped, unclickable paths, and they are reported correctly in merge/rebase conflict prediction.
- Uncommitted Image Diff - Images with uncommitted changes now show a proper before/after comparison instead of "No image".
- Stash Rename Safety - If renaming a stash fails partway through, the stash is restored instead of being lost as a dangling commit.
- Multi-Commit Cherry-Pick - Cherry-picking three or more selected commits no longer silently fails to dispatch.
- Interactive Rebase Squash Messages - Reordering a squash group no longer discards a manually edited combined commit message.
- Amend Modal Escape - Pressing Esc to close the Amend modal no longer also clears the current commit/file selection.
- Reset Modal - A settings change while the Reset modal is open no longer resets the mode you just selected.
- Network Timeouts - Fetch, pull, and push now run on a 10-minute timeout, so a large first fetch or a slow connection is no longer terminated at 60 seconds.
- Extension Stability - A patch operation that git rejected early could crash the extension host (EPIPE); this is now handled safely. Diff-panel hover timers and a stale image-decode race when switching files quickly were also cleaned up.
- File Watcher Accuracy - Sibling paths like
refspecorworktrees-backupno longer trigger spurious graph refreshes. - Sidebar Current Branch - The sidebar reliably reveals the current branch after a refresh instead of occasionally acting on stale data.
- File Tree Icons - Folder and file icons in the file-tree browser render as icons rather than literal text.
- Markdown Link Safety - Non-http(s) link schemes in commit messages are no longer placed in the DOM, hardening middle-click and keyboard "open in new tab".
- Path & Error Handling - File operations reject Windows absolute paths, deleting a tag reports every failing remote (not just the first), and a timed-out command is no longer double-logged.
- Graph Rendering - Trailing branch lines at the bottom of the graph end straight down on their own lane instead of bending sideways.
v0.7.0
New Features
- Markdown Commit Messages - Commit messages containing Markdown now render formatted in the Commit Details panel. Messages with Markdown default to the rendered view and offer a Markdown/Plain toggle (applied per commit); plain messages stay as-is. Rendering is token-based for XSS safety, and links/images open externally through an http(s) scheme guard.
- Create Fixup Commit - A "Create Fixup Commit" context-menu action commits your staged changes as a
fixup!of the selected commit - no more copying a hash and runninggit commit --fixupby hand. Like Amend, it opens the SCM view to stage first and confirms with a live staged-file count. - Create Squash Commit - A companion "Create Squash Commit" action commits staged changes as a
squash!of the selected commit, with the generated commit message previewed in the modal. - Interactive Rebase Autosquash - The interactive rebase modal gained an Autosquash toggle. When
fixup!/squash!commits are present it is on by default and arranges them under their targets; turning it off restores the loaded order. The modal stays a preview until "Start Rebase". - Multi-Select Interactive Rebase - Select a contiguous range of commits in the graph and start an interactive rebase straight from the selection menu. It resolves the containing branch, checks it out (offering stash/discard for a dirty tree, or a branch picker when several qualify), then opens the rebase editor.
- Multi-Commit Comparison Panel - The multi-select menu now has a "View Changes" / "Hide Changes" toggle that opens a combined diff panel for the selected commits, with Esc closing the panel before clearing the selection.
- Jump to HEAD - A location button beside the search box scrolls the graph to the current HEAD commit (emphasized only when HEAD is off-screen), and typing
HEADin search now navigates to it. - Configurable Commit Counts - New
gitGraphPlus.initialCommitCount(default 200) andgitGraphPlus.loadMoreCommitCount(default 50) settings control how many commits load on first render and per "Load more commits" click - lower the initial count for faster loads in huge repositories. - Open Settings Button - A gear button at the far right of the toolbar opens VS Code Settings pre-filtered to this extension.
Improvements
- Commit Context Menu Regrouped - Amend and Create Fixup/Squash Commit are now grouped as staged-change edits, Save Patch moved into the Export/Copy group, and Bisect actions merged into the compare/inspect group. The toolbar's right-side icons were also reordered for a clearer layout.
Bug Fixes
- Stash Connection - Stashes whose original branch was rebased or deleted no longer float orphaned in the graph; their base commit is walked back into the main tree so the badge reconnects to history (#52).
- Markdown-Diff Tools - The commit parent is now resolved to a full SHA before launching external diff tools, fixing diffs for Markdown-based tools (#51).
- Commit Details Scrolling - Commit details stay scrollable on short viewports instead of clipping content.
- Esc in Diff View - Pressing Esc now unhighlights expanded folders and deselects the active file as expected.
- Tooltip Stacking - Only one tooltip shows when hovering nested elements.
v0.6.0
New Features
- Reverse Changes - Undo a commit's changes against your working tree straight from the diff viewer: reverse a whole file, a single hunk, or just gutter-selected lines - added and deleted files included - and copy selected diff lines.
- Commit Message Links - Issue, PR, and merge-request references in commit messages become clickable links across the Graph, Commit Details, and Reflog views. GitHub/GitLab references are auto-detected from the
originremote (gitGraphPlus.autoDetectRepoLinks), and you can add your own regex rules (gitGraphPlus.commitMessageLinks). Links open in your browser. - Commit Graph Keyboard Navigation - Move the graph selection with the arrow keys; Ctrl/Cmd jumps to the first parent (down) or newest child (up) and remembers the path, so reversing a jump returns you to where you came from.
- Stash Uncommitted Changes - The uncommitted-changes node now offers a stash option in its context menu, so you can stash your working changes without leaving the graph.
- Single-Remote Auto Fetch - When a repository has only one remote, fetching skips the remote-selection dialog and fetches (with prune) directly, since there is nothing to choose.
Bug Fixes
- Markdown & Custom Diff Tools - The diff viewer now uses the standard
git:URI scheme, so markdown and other custom diff tools render the diff correctly instead of showing raw content. - Reflog SHA Overflow - A long SHA in the Reflog view is now clipped instead of overflowing and overlapping the adjacent column.
- Tooltip on Drag - Tooltips are now dismissed when a native drag starts, instead of lingering over the item being dragged.
v0.5.5
New Features
- Drag to Rebase & Merge - Drag one branch onto another directly in the graph to rebase it onto, or merge it into, the target branch - no commands or dialogs needed.
- Configurable Git Command Timeout - A new
gitGraphPlus.timeoutsetting controls how long to wait for a Git command before it is aborted (default 60s). Raise it if the graph times out while loading in a very large repository.
Bug Fixes
- Stash Diff Scope - The diff view for a stash entry now shows only that stash's own changes, instead of also including unrelated changes from the working tree.
- Rebase & Squash Notification - You are now notified after squashing commits or completing an interactive rebase, instead of the operation finishing silently.
v0.5.4
New Features
- Squash & Cherry-pick Multiple Commits - Select consecutive commits directly in the graph (Shift-click for a range, Ctrl/Cmd-click to toggle), then right-click the selection to squash them into one or cherry-pick them all at once. Squashing opens a dialog to edit the combined commit message and warns when a force push will be required.
Bug Fixes
- Chrome Network Stall Fix - Commit author avatars are now fetched and cached in the extension host and shared across windows, instead of loading from gravatar.com in each webview. This prevents the socket exhaustion that could leave Chrome unable to load pages after extended use with multiple windows.
v0.5.3
New Features
- Branch Colors by Pattern - Assign fixed colors to branches by name pattern (
gitGraphPlus.branchColors), so important branches always stand out in the graph. The first matching rule wins; branches matching no rule keep an automatic color. - Commit Signature Status - Show GPG/SSH signature verification status next to each commit in the graph (
gitGraphPlus.showSignatureStatus). The Commit Details panel always shows it on demand regardless of the setting. - Custom Graph Color Palette - Customize the colors auto-assigned to graph rails with your own list of hex colors (
gitGraphPlus.graphColors), defaulting to the built-in 12-color palette.
Bug Fixes
- Branch Color on All Nodes - A pattern-colored branch now recolors every commit node on its rail, not just the rail line. Previously, commit nodes above the matching branch tip kept the default color while the line was recolored.
v0.5.2
New Features
- New Worktree from the Graph - Create a worktree straight from the commit graph: a "New Worktree" entry on a branch's context menu and in the commit's "Create" group opens the Add Worktree dialog with the picked branch pre-filled as the start point (which you can still change before confirming).
- Worktree from an Existing Branch - When adding a worktree you can now check out an existing branch instead of always creating a new one. Branches already checked out in another worktree are filtered out, and default worktree paths are cleaner.
v0.5.1
New Features
- Worktree Open & Reveal - Open a worktree in a new VS Code window (or just click it in the sidebar), and reveal it in the file explorer, from the Worktrees view's context menu.
Improvements
- Localized Worktree Commands - The "Open Worktree" and "Open in File Explorer" actions are now translated for Korean and Chinese.
- Consistent Graph Fonts - Unified the monospace and header fonts in the commit graph so the SHA column and column headers render consistently.
Bug Fixes
- Interactive Rebase in Submodules - Interactive rebase no longer fails with an ENOTDIR error in submodules and linked worktrees, and the paused-state banner now appears correctly.
- Branch Badge Icons - Only the current-branch check mark stays bold; the cloud and other badge icons now render at their normal weight.