Skip to content

feat: open several repositories in tabs, remembered between runs - #8

Merged
Lars- merged 2 commits into
mainfrom
feat/tabs
Oct 30, 2026
Merged

Lars- merged 2 commits into
mainfrom
feat/tabs

Conversation

@Lars-

@Lars- Lars- commented Oct 30, 2026

Copy link
Copy Markdown
Owner

What this changes

Several repositories can be open at once, each in its own tab. The tab bar sits above the toolbar: click a tab to switch, × to close it, + for a new tab with the start screen (open, clone, create, recent). Opening a repository that is already open switches to its tab instead of opening it twice. A tab you switch to reloads, so it shows what changed while it was out of sight. Closing a tab shows the one that takes its place, and closing the last one brings back the start screen.

The open tabs and the tab on screen are saved with the recent repositories and open again on the next run; a path on the command line opens in a tab next to them. Settings from earlier versions (no tabs saved yet) still reopen the last repository.

The toolbar loses its Open… button and the repository name, since the + tab and the tab label do that now. Opening a path that is not a repository now always shows the error on the start screen; before, Open… in the toolbar failed without a word. The start screen's path field is emptied once a repository opens, so the next new tab starts clean.

How it is tested

Five new tests in crates/app/src/tests.rs drive the window through the accessibility tree against real repositories:

  • open_several_repositories_in_tabs: open two, switch back by clicking the first tab
  • opening_a_repository_that_is_open_shows_its_tab: no duplicate tab
  • a_tab_shows_what_changed_while_it_was_out_of_sight: a commit made outside the app shows on switching
  • closing_tabs_shows_the_next_and_then_the_start_screen: closing the middle, first and last tab
  • tabs_open_again_on_the_next_run: save, restore with and without a path on the command line

Also tried on a Linux desktop: two tabs, switching, closing, and quitting and starting again without arguments reopened both tabs with the right one active. The screenshot in the README now shows the tab bar.

  • cargo fmt --all, cargo clippy --workspace --all-targets -- -D warnings and cargo test --workspace pass
  • It adds as little code as the change needs, and removes what it makes unnecessary
  • Nothing in it comes from GitKraken or another closed-source client (see CONTRIBUTING.md)

@Lars-
Lars- merged commit 6842ac5 into main Oct 30, 2026
7 checks passed
@Lars-
Lars- deleted the feat/tabs branch October 30, 2026 10:20
@Lars- Lars- mentioned this pull request Oct 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant