Skip to content

GitDesktop v0.4.0

Choose a tag to compare

@github-actions github-actions released this 19 Jul 20:43

Added

  • Exclude files from AI in flow. Right-click a changed file to keep it out of
    AI context — new Exclude from AI actions (the file, its folder, or its file
    type, plus a bulk action for multi-selections) append to the repo's
    .gitdesktop/aiignore, creating the file (and the .gitdesktop folder) if
    needed.
  • Start a new branch from any base. The new-branch dialog's Base it on picker is
    now a searchable list grouped into Local and Remote branches, so you can base a
    branch on any of them instead of only the current or default branch. Basing on a remote
    branch (e.g. origin/epic/big-feature) starts from the remote tip and leaves the new
    branch untracked, so its first push publishes it under its own name. Agents get the same
    option via the MCP create_branch tool's noTrack flag.
  • Keyboard shortcuts in the PR and issue dialogs. Press Ctrl/Cmd+Enter from any
    field in the Create pull request, Create local PR, or Edit title/description
    dialog (for pull requests and issues alike) to submit it, matching the shortcut already
    used to send comments. When AI features are on, the generate commit message shortcut
    (Ctrl/Cmd+G by default) runs Generate for the title and description while a create or
    edit PR dialog is open.
  • Type-to-filter the author/label filter. The pull-request and issue
    author/label filter now has a search box — start typing to narrow both the
    Author and Label sections, just like the branch switcher.
  • Detach from a fork. The repository settings Danger zone now offers two ways
    to break a fork's ties: Remove upstream remote detaches your clone from the
    parent locally (the Fork/Upstream switcher and "Update from upstream" disappear;
    reversible by re-adding the remote), and Leave fork network detaches the
    repository from its fork network. On GitLab this happens right in the app
    (Owner-only — open merge requests to the parent are closed), while GitHub and
    Bitbucket link out to the provider's detach page. A Re-check fork status
    button refreshes the fork badge in place once you've done it.
  • A GitHub Actions check that's still running in the pull-request view now shows
    its current step inline in the checks rollup, and a live step checklist when
    you expand it — real progress as the run advances, instead of an empty log skeleton.
  • PR timeline timestamps. Every entry in a pull request's activity feed now
    shows when it happened — review-thread replies and pushed-commit groups (both the
    group header and each commit) gained relative timestamps that were previously
    missing — and hovering any timeline time reveals the exact local date and time.
  • Push a branch without switching to it. From a branch's right-click menu in the
    branch switcher, push a branch that's ahead of its origin remote (Push to
    origin/…
    ) or publish an unpushed one (Publish branch) — without checking it
    out. Works even when the branch is checked out in another worktree, since a push
    touches refs, never a working tree.
  • New rebindable Push to origin shortcut (default Ctrl+Alt+P / Cmd+Option+P)
    pushes or publishes a branch to origin — the current branch, or, with the branches
    list open, the highlighted one. When there's nothing to push (diverged, up to date, or
    tracking a different remote), it says so instead.
  • New Settings → AI "Review context" size. Auto fits the review prompt
    budget to the reviewing model's context window (probing Ollama models live), or
    pick Compact/Standard/Expanded manually.

Changed

  • Branch menu rows now show a branch's own push/pull state (↑ to push, ↓ to pull, plus
    markers for never-published and upstream-deleted branches) separately from its divergence
    vs. the default branch, which now reads +N −M with the default branch named — previously
    both rendered as identical ↑/↓ arrows, so being ahead of the default looked like unpushed
    work. Rows now span two lines — the branch name on its own line, the details below it —
    giving long branch names more room.
  • The Compare tab's base-branch picker is now a searchable combobox: type to filter,
    archived branches are hidden, and each branch shows whether it's checked out in another
    worktree and — when it has diverged — how far it's ahead of and behind your current
    branch.
  • The Compare tab now lives in the header's More ▾ menu instead of the primary
    tab rail, keeping the rail focused on Changes, History, and Pull Requests.
    Its keyboard shortcut is unchanged.
  • Push a branch to any remote, not just origin. Pushing a branch from the branch
    switcher now targets the branch's OWN remote — a branch tracking a fork's upstream
    is pushed there, not to origin. On a repo with several remotes, Publish offers a
    per-remote choice (one item per remote). The MCP push tool gains an optional
    remote parameter, and a bare push {branch} for a branch tracking a non-origin
    remote now correctly targets that remote instead of pushing to origin under the
    branch's own name.
  • The header sync buttons are ordered Fetch / Pull / Push — mirroring the natural
    fetch → pull → push flow — and the ahead/behind counts appear directly on the Push
    and Pull buttons — making it clear which button acts on them — instead of in separate
    arrow badges.

Fixed

  • AI re-reviews now actually see the follow-up replies and triage decisions
    GitDesktop itself posted: review-thread replies GitDesktop posted (triage
    dispositions made through GitDesktop's agent/MCP tools) are harvested into the
    review context, the newest of GitDesktop's own PR comments win the context
    budget instead of the oldest, and when rounds accumulate past the budget the
    prior discussion is distilled into a compact decision ledger instead of being
    cut off.
  • Repo-aware AI reviews and sessions run with the Claude CLI can now actually
    call the attached GitDesktop MCP tools. Previously the tools were exposed but
    never granted permission, so every call was denied in headless mode and the
    reviewer silently fell back to files on disk (losing full-diff, PR-metadata,
    and blame lookups); the read-only server's tools are now granted explicitly.
  • Push, pull, fetch, and clone to private repos no longer fail with "Repository not
    found" when a stale credential in the system keychain (macOS Keychain, Windows
    Credential Manager) shadows your gh/glab sign-in — Git is now told to use exactly
    the signed-in CLI's identity for that host. Tag pushes, remote branch deletion, and
    fork PR pushes now authenticate the same way.
  • The pull-request and issue author/label filter popup no longer overflows
    the window on repos with many authors — it now caps its height and scrolls
    internally instead of forcing the whole window to scroll.
  • Screen readers now announce every form field by name. Labels across the app's
    dialogs and settings are programmatically associated with their controls (Base it on,
    select fields, the compare picker, and a dozen more), so assistive tech announces the
    field name instead of just its value — and clicking a label focuses or opens its control.
  • Keyboard shortcuts owned by a visible surface no longer fall through to the underlying
    webview when that action is momentarily disabled — so Ctrl+P won't open a print dialog
    (nor F5 reload the app) when there's nothing to push or fetch. Shortcuts for surfaces
    that aren't on screen keep their native behavior. The Fetch, Pull, and Push buttons'
    tooltips now show their shortcuts, and expose them to screen readers.
  • Pull requests you open outside GitDesktop — with the gh/glab CLI, on the
    web, or via a bot — now get their initial automated AI review too. Previously the
    On pull request opened automation fired only for PRs created through the app's own
    dialog, so externally-opened PRs got no first pass. The poller now catches up your
    own non-draft, recently-opened, unreviewed PRs and runs the review automatically.
  • AI reviews no longer prepend the agent's streamed working narration ("I'll examine
    the code… let me check the call sites…") to the review body — the review is now the
    agent's final answer, and the narration is preserved under a collapsible Thought
    process
    disclosure. This applies to CLI and agentic HTTP reviews, automation-posted
    comments, and research report synthesis.
  • Skipped CI checks (and neutral or stale ones) in a pull request's checks rollup
    now show as their own muted skipped segment instead of masquerading as
    amber pending — on GitHub and for GitLab's skipped pipeline jobs alike.