Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 20 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,24 @@

## [Unreleased]

## [0.2.0] - 2026-08-05

### Added

- Independent repository layout and sort controls, including activity, dirty-file, and alphabetical sorting inside folder trees
- Bidirectional selection between the repository navigator and the graph repository picker
- Commit search across messages, authors, hashes, branches, tags, and stash labels
- Worktree visibility, repository terminal, fetch, settings, and icon-only refresh actions in the graph header
- Inline terminal and fetch actions on repository rows
- Stash history and labels in the show-all graph; tag history remains visible

### Changed

- Kept graph controls anchored above the worktree rail at narrow panel widths
- Capped repository and branch picker widths with ellipsis and full-value tooltips
- Made collapse-all available only in folder-tree layout
- Made the clean-repository eye show the current visibility state

## [0.1.0] - 2026-08-05

The first Git Fleet release, forked from Neo Git Graph 0.5.0.
Expand Down Expand Up @@ -32,5 +50,6 @@ The first Git Fleet release, forked from Neo Git Graph 0.5.0.

Git Fleet began from Neo Git Graph 0.5.0. Its earlier changelog remains available in the [upstream repository](https://github.com/asispts/neo-git-graph/blob/main/CHANGELOG.md).

[Unreleased]: https://github.com/wrgrant/git-fleet/compare/v0.1.0...HEAD
[Unreleased]: https://github.com/wrgrant/git-fleet/compare/v0.2.0...HEAD
[0.2.0]: https://github.com/wrgrant/git-fleet/releases/tag/v0.2.0
[0.1.0]: https://github.com/wrgrant/git-fleet/releases/tag/v0.1.0
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ Git Fleet is a VS Code extension for people working across more repositories and
- A dedicated Activity Bar pane instead of another toolbar inside Source Control
- Repository discovery below every workspace folder, including nested projects
- Optional global search roots for repositories outside the current workspace
- Recent-activity, dirty-file, and folder-tree arrangements
- Independent list/folder-tree layouts with recent-activity, dirty-file, or alphabetical sorting
- A persistent eye control that hides clean repositories
- A clickable Uncommitted Changes row with the same file tree and diff flow as a commit
- A worktree rail showing each checkout's HEAD, dirty state, branch, and inferred base
Expand All @@ -32,7 +32,7 @@ The repository navigator is intentionally read-only. Repository-level actions—
Git Fleet is not yet listed in the VS Code Marketplace. Download the latest `.vsix` from [GitHub Releases](https://github.com/wrgrant/git-fleet/releases), then run:

```sh
code --install-extension git-fleet-v0.1.0.vsix
code --install-extension git-fleet-v0.2.0.vsix
```

Or choose **Extensions: Install from VSIX...** from the VS Code Command Palette.
Expand Down
4 changes: 2 additions & 2 deletions ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,15 @@ Git Fleet 0.1 focuses on visibility: find repositories, see which ones need atte

## Next

- Separate repository **layout** from **sort order**. Layout becomes flat list or folder tree; sort becomes recent activity, dirty-file count, or alphabetical. Tree sorting applies within each folder.
- Let users remove, rename, temporarily disable, and reorder configured repository search roots from the navigator.
- Add stale-branch, ahead/behind, and fetch-state signals without turning the navigator into another Source Control action surface.
- Improve worktree base inference and make the confirmed-versus-inferred distinction even easier to scan.
- Add keyboard-first repository switching.

## Later

- Safe, contextual repository actions from the navigator
- Configurable graph visibility for individual ref classes and richer Git operation settings
- Optional LazyGit launcher beside the built-in repository terminal action
- Saved fleet scopes for work, personal, client, or monorepo groupings
- Optional notifications or health summaries for abandoned dirty repositories
- Marketplace and Open VSX distribution
Expand Down
9 changes: 9 additions & 0 deletions l10n/bundle.l10n.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,16 @@
"Repo": "Repo",
"Branch": "Branch",
"Show Remote Branches": "Show Remote Branches",
"Search commits": "Search commits",
"Show or hide worktrees": "Show or hide worktrees",
"Open terminal in repository": "Open terminal in repository",
"Fetch repository": "Fetch repository",
"Open Git Fleet settings": "Open Git Fleet settings",
"Refresh": "Refresh",
"Search commit messages": "Search commit messages",
"Previous match": "Previous match",
"Next match": "Next match",
"Close search": "Close search",
"Worktrees": "Worktrees",
"Unable to load Git Fleet": "Unable to load Git Fleet",
"Either the current workspace does not contain a Git repository, or the Git repository is not configured correctly.": "Either the current workspace does not contain a Git repository, or the Git repository is not configured correctly.",
Expand Down
9 changes: 9 additions & 0 deletions l10n/bundle.l10n.zh-cn.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,16 @@
"Repo": "仓库",
"Branch": "分支",
"Show Remote Branches": "显示远程分支",
"Search commits": "搜索提交",
"Show or hide worktrees": "显示或隐藏工作树",
"Open terminal in repository": "在仓库中打开终端",
"Fetch repository": "获取仓库",
"Open Git Fleet settings": "打开 Git Fleet 设置",
"Refresh": "刷新",
"Search commit messages": "搜索提交消息",
"Previous match": "上一个匹配项",
"Next match": "下一个匹配项",
"Close search": "关闭搜索",
"Worktrees": "工作树",
"Loading ...": "加载中 ...",
"Load More Commits": "加载更多提交",
Expand Down
9 changes: 9 additions & 0 deletions l10n/bundle.l10n.zh-tw.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,16 @@
"Repo": "存放庫",
"Branch": "分支",
"Show Remote Branches": "顯示遠端分支",
"Search commits": "搜尋提交",
"Show or hide worktrees": "顯示或隱藏工作樹",
"Open terminal in repository": "在存放庫中開啟終端機",
"Fetch repository": "擷取存放庫",
"Open Git Fleet settings": "開啟 Git Fleet 設定",
"Refresh": "重新整理",
"Search commit messages": "搜尋提交訊息",
"Previous match": "上一個相符項目",
"Next match": "下一個相符項目",
"Close search": "關閉搜尋",
"Worktrees": "工作樹",
"Loading ...": "載入中 ...",
"Load More Commits": "載入更多提交",
Expand Down
6 changes: 6 additions & 0 deletions media/dropdown.css
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@
cursor: pointer;
user-select: none;
white-space: nowrap;
overflow: hidden;
padding-right: 24px;
text-overflow: ellipsis;
width: 100%;
}
.dropdownCurrentValue:hover {
background-color: rgba(128, 128, 128, 0.2);
Expand Down Expand Up @@ -54,6 +58,8 @@
overflow-x: hidden;
margin-top: -1px;
white-space: nowrap;
min-width: 100%;
max-width: min(520px, 90vw);
}

.dropdownOption {
Expand Down
95 changes: 84 additions & 11 deletions media/main.css
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,9 @@ body.worktreesVisible #footer {
#commitTable tr.commit:hover td {
cursor: pointer;
}
#commitTable tr.commit.commitSearchMatch td:not(:first-child) {
background-color: var(--vscode-editor-findMatchHighlightBackground, rgba(234, 196, 0, 0.35));
}
#commitTable tr.commit:hover td:first-child,
#commitTable tr.commit.contextMenuActive td:first-child,
#commitTable tr.commit.dialogActive td:first-child,
Expand Down Expand Up @@ -197,7 +200,7 @@ body.worktreesVisible #footer {
/* Worktree history rail */
#worktreeRail {
position: fixed;
top: 44px;
top: var(--git-fleet-worktree-top, 52px);
right: 8px;
bottom: 8px;
z-index: 4;
Expand Down Expand Up @@ -353,7 +356,7 @@ body.worktreesVisible #footer {
@media (max-width: 760px) {
body.worktreesVisible #content,
body.worktreesVisible #footer {
margin-right: 0;
margin-right: 234px;
}
#worktreeRail {
width: 218px;
Expand Down Expand Up @@ -590,35 +593,95 @@ svg.fileIcon {

/* Controls */
#controls {
display: flex;
align-items: center;
flex-wrap: wrap;
display: grid;
grid-template-columns: minmax(0, 1fr) auto;
align-items: start;
padding: 4px 8px;
border-bottom: 1px solid rgba(128, 128, 128, 0.5);
line-height: 32px;
font-weight: 700;
font-size: 13px;
}
#controlFields {
display: flex;
align-items: center;
flex-wrap: wrap;
min-width: 0;
}
#controlActions {
display: flex;
align-items: center;
gap: 2px;
padding-top: 3px;
}
#repoControl,
#branchControl,
#showRemoteBranchesControl {
white-space: nowrap;
margin: 0 10px;
}
#repoControl,
#branchControl {
display: inline-flex;
align-items: center;
min-width: 0;
}
#repoSelect,
#branchSelect {
margin-left: 3px;
min-width: 130px;
max-width: min(34vw, 360px);
width: 260px;
}
#branchSelect {
max-width: min(42vw, 460px);
width: 340px;
}
#showRemoteBranchesCheckbox {
width: 14px;
vertical-align: text-top;
}
#refreshBtn {
margin-left: auto;
width: 80px;
height: 22px;
line-height: 22px;
border-radius: 11px;
.iconBtn {
min-width: 26px;
height: 26px;
padding: 0 6px;
border: 1px solid transparent;
border-radius: 3px;
background: transparent;
color: var(--vscode-foreground);
font: 13px/24px var(--vscode-editor-font-family);
cursor: pointer;
}
.iconBtn:hover,
.iconBtn:focus-visible,
.iconBtn.active {
background: var(--vscode-toolbar-hoverBackground, rgba(128, 128, 128, 0.18));
outline: none;
}
#commitSearch {
display: flex;
align-items: center;
gap: 4px;
padding: 4px 8px;
border-bottom: 1px solid rgba(128, 128, 128, 0.35);
}
#commitSearch[hidden] {
display: none;
}
#commitSearchInput {
min-width: 140px;
max-width: 520px;
flex: 1;
height: 26px;
padding: 3px 7px;
border: 1px solid var(--vscode-input-border, rgba(128, 128, 128, 0.5));
background: var(--vscode-input-background);
color: var(--vscode-input-foreground);
}
#commitSearchStatus {
color: var(--vscode-descriptionForeground);
font-size: 11px;
white-space: nowrap;
}
#loadMoreCommitsBtn {
width: 180px;
Expand All @@ -635,6 +698,16 @@ svg.fileIcon {
#controls label {
cursor: pointer;
}
@media (max-width: 720px) {
#repoSelect,
#branchSelect {
width: 190px;
max-width: 42vw;
}
#showRemoteBranchesControl {
flex-basis: 100%;
}
}

/* Context Menu */
#contextMenu {
Expand Down
Loading