You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The Linux AppImage now runs natively on Wayland sessions.
Hunks deep in very large files are now syntax-highlighted.
Offline-safe remote actions. While you're offline, actions that change
the remote for good are unavailable, with the reason shown on the control,
and work again as soon as you reconnect. Held actions are never queued for
later. That covers merging or closing a pull request, updating its branch,
resolving its conflicts, and submitting or discarding a review. It covers
closing, transferring, or deleting an issue, and closing or deleting a
discussion. It covers creating pull requests, issues, discussions, and
releases, and publishing a branch or repository. It covers forking a
repository, approving a workflow run, and deleting a project or one of its
views. Pushing, pulling, fetching, deleting a remote branch, and editing,
publishing, or deleting a release (assets included) are held too, as are
pushing a tag or deleting it from origin. Comments and other quick edits
still queue and send when you reconnect, as long as GitDesktop stays open
until then. If any are still waiting when you quit from the tray, close the
window with Keep running in the tray when the window is closed turned
off, or install an update, GitDesktop asks before discarding them.
Fixed
Git hooks and other tools that the Linux AppImage starts now run with
your system's own Python setup and data directories, and AppImages they
launch start from their own bundle.
The pull request list refreshes as soon as an automated AI review posts its
comment on a pull request.
When reordering a card on a project board fails, the error names the card
whenever the board still has it loaded, so failures on different cards are
easy to tell apart.
Saving your commit identity, for a repository or as your global default, now
works when the Git config lists a name or email more than once, replacing
every copy with the one you enter. When another Git process keeps the
repository's settings busy during a submodule, remote, or new-worktree
change, the message now says what was already done and what to do next.
Renaming, deleting, or archiving branches, setting up upstream tracking,
changing remotes, setting a repository's commit identity, managing submodules,
and creating worktrees on new tracking branches now complete when another
program briefly holds the repository's Git config lock.
AI ignore patterns now cover files whose names or contents include Unicode
line or paragraph separators and embedded carriage returns, and PR and
commit file views now show those files' diffs.
AI ignore patterns now cover deleted, renamed, copied, binary,
mode-changed, and empty new files inside folders whose names end in a
space and b (such as Plan b/), and PR and commit file views now show
those files' diffs.
Upvote counts on discussions and their comments stay accurate when you switch
to another discussion, or go offline, before an upvote is saved.
AI ignore patterns now cover files whose names contain tabs, line breaks,
or other control characters in GitLab merge requests and commits and in
GitHub pull requests too large for a single diff, and PR and commit file
views now show those files' diffs. While ignore patterns are set, any diff
section that can't be matched against them is also left out of AI requests,
including local diffs from repositories that set git's diff.noprefix or
custom diff prefixes, which AI reviews now report as withheld.
While a repository's host can't be reached, or is still being checked, the
options that depend on it say so: opening a pull request or issue from the New menu, the pull request and issue filters, publishing or managing a
release, running a workflow or pipeline, and refreshing runs or security
findings. An unreachable host points you to your network connection.
GitHub sign-in status keeps its last known state when the GitHub CLI's status
report can't be read, and Settings → About shows the check as unknown.
Inline failure messages in the clone dialog, Explore, the Code TODOs tab,
Jira setup and issue creation, account sign-in, and branch cleanup now read
as one clear line, and so do plan, research, and agent sessions that fail
to start.
While a worktree promote is finishing, GitDesktop's MCP server asks clients to
retry branch, stash, and history changes in a few seconds, so the promote
completes with your branch and stashed changes intact.
Per-repo MCP server states and repository-scoped servers now follow a
repository when its folder is moved or renamed.
When My work can't load, each failing forge gets one plain line saying
why, a forge that can't be reached points you to your network connection,
and Details opens the full error text.
Deleting a tag from your clone alone works while you're offline, from the
tag's view and from History. A comment post, edit, or delete, a Jira worklog
delete, a review-thread reply or resolve, a CI run cancel, re-run, or job
start, a label edit, a board view duplicate, or a Projects or project-field
edit that's waiting for the connection says so on its controls.
Reactions on pull requests, issues, and discussions always land on the item
you reacted to, and its reaction counts stay accurate, even if you switch to
another item or go offline before the reaction is saved.
Error messages for refused actions, such as a reset that would overwrite
untracked files, read as plain sentences, and so do keychain, file access,
and Git setup errors.
On a GitLab repository without the GitLab CLI installed, the release options
point you to installing it.
When a tag or another ref shares a branch's or tag's name, the branch, tag,
and remote-branch lists now show the real name and their actions target the
right ref. Pushes to a tracked upstream, publishing to GitLab or Bitbucket,
the Compare view's diffs and file previews, merging a local pull request
and detecting that it was merged, the recovery banner and operation
history, and the branch used when drafting a pull request description all
now name the right branch too.
Pulling with rebase on a branch that shares its name with a tag checks for
commits a rewritten upstream would drop, as it does on every other branch.
Deleting a remote's default branch is refused with a clear message, even
when a tag or local branch named like it (such as origin/main) exists.
When a tag shares its name with a branch or a remote-tracking branch (such as origin/main), the app now reads the branch. The branch menu offers a reset
to the upstream only when every local commit is already upstream, updating a
branch from another one brings in the real base branch, a new branch starts
from the base you picked, and the branch menu's ahead/behind counts and the
Insights branch summary measure the branches themselves. The pull request
conflict preview, the commits previewed when creating a pull request or local
pull request and when rebasing onto another branch, branch names drafted from
committed work in the New branch and Rename branch dialogs and by the MCP
server, and newly installed hook templates that check the current branch read
the right branch too.
Replying to or resolving a review thread always acts on the pull request you
started from, and that pull request's threads refresh afterwards, even if you
switch to another pull request or go offline before the change is saved.
TypeScript stays fully highlighted after generic functions like <T>(x: T) => x in diffs, ts code blocks in Markdown, blame, the Code
TODOs tab, and the merge-conflict views.
Syntax colors now match across the diff view, conflict panes, blame, and
code TODOs in both themes.
Deleting a worktree with Archive branch checked archives the branch even while
other Git activity is saving repository settings; when it still can't, the
message asks you to try again.