Skip to content

Branches view lists local branches only; remote branches are invisible #8

Description

@sinhaparth5

The Branches view lists local branches only. A branch that exists on the remote but has never been
checked out locally is invisible, so there is no way to see what colleagues are working on, and no
way to check one out from the dashboard.

src/git/repository.cpp:624:

if (git_branch_iterator_new(&branch_iter, repo, GIT_BRANCH_LOCAL) == 0) {

GIT_BRANCH_LOCAL, not GIT_BRANCH_ALL. model::Branch (src/model/history.hpp:42) has no field
distinguishing one kind from the other, so this is a model change and not only an iterator argument.

Why it matters beyond the listing

Two other things want this and are awkward without it:

  • Opening a pull request needs a target branch the user can pick, and the useful targets are
    remote branches — frequently ones with no local copy.
  • Changing the CI ref filter wants the same picker.

So this is worth doing before either of those rather than alongside them.

Proposed

  • Iterate GIT_BRANCH_ALL and tag each entry with its kind.
  • Pair them in the panel rather than listing them twice: a local branch and its upstream are one
    row today and should stay one row. What is new is the rows for remote branches with no local
    counterpart, which are the ones currently missing entirely.
  • Checking one out creates the local tracking branch, which is git checkout -b <name> --track <remote>/<name>. This has the same blocked-by-a-dirty-tree case the existing checkout already
    handles.
  • Ahead/behind is meaningless for a remote-only branch and should be left empty rather than shown as
    zero — per the rule that what a provider does not send stays empty rather than defaulted, so a
    panel can omit a field instead of printing a zero that reads as a fact.

Documentation note

CLAUDE.md currently describes the view as "Branches — local and remote branches with their
upstream and ahead/behind", and CHANGELOG.md for 2026.08.0 says the same. That is not what the
code does. Either the code should match the description (this issue) or the description should be
corrected — but they should not stay in disagreement, since the file is the thing future work is
supposed to trust.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions