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
2 changes: 1 addition & 1 deletion .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -1 +1 @@
* @asispts
* @wrgrant
40 changes: 0 additions & 40 deletions .github/workflows/publish.yml

This file was deleted.

36 changes: 36 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: Release VSIX

on:
push:
tags:
- "v*"

permissions:
contents: write

jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7

- uses: pnpm/action-setup@v6
- uses: actions/setup-node@v7
with:
node-version: 22
cache: pnpm

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Verify
run: pnpm run package && pnpm run test

- name: Package VSIX
run: pnpm dlx @vscode/vsce package --no-dependencies --out git-fleet-${{ github.ref_name }}.vsix

- name: Publish GitHub release
uses: softprops/action-gh-release@v2
with:
generate_release_notes: true
files: git-fleet-${{ github.ref_name }}.vsix
8 changes: 8 additions & 0 deletions .vscodeignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,20 @@
# Whitelist files
!LICENSE
!CHANGELOG.md
!CONTRIBUTING.md
!NOTICE.md
!README.md
!ROADMAP.md
!SECURITY.md
!docs/PUBLISHING.md
!package.nls*.json
!out/
!media/
!l10n/

!resources/icon.png
!resources/repository-navigator.svg
!resources/screenshots/**
!resources/webview-icon.svg
!resources/webview-icon-dark.svg
!resources/webview-icon-light.svg
78 changes: 20 additions & 58 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,73 +2,35 @@

## [Unreleased]

## [0.5.0] - 2026-07-24
## [0.1.0] - 2026-08-05

### Added

- Git Graph button in the Source Control view title
- Centralized logging with a dedicated "Git Graph" output channel

### Changed

- Optimize extension initialization logic
- Replace the "Locate HEAD" button with a highlighted HEAD commit row in the graph
- Status bar: add icons for the active and watching states
- Simplify localization to use English-string keys extracted with @vscode/l10n-dev

### Fixed

- Native browser context menu appearing over the graph in browser-based VS Code (vscode.dev / Codespaces)
- Header layout quirks around the refresh button

## [0.4.0] - 2026-04-10

### Added

- Full internationalization (i18n) support with multiple languages
- Language support: English (default), Simplified Chinese (简体中文), Traditional Chinese (繁體中文)

### Fixed

- Escape HTML in git output before rendering

## [0.3.0] - 2026-03-26
The first Git Fleet release, forked from Neo Git Graph 0.5.0.

### Added

- Introduce gitClient based on simple-git
- Added a button to locate HEAD in the graph
- A dedicated Git Fleet Activity Bar pane for cross-repository navigation
- Repository arrangements by recent activity, dirty-file count, or folder tree
- A persistent hide-clean-repositories control
- Configurable global repository search roots for projects outside the workspace
- Nested repository discovery to a default depth of four folders
- Clickable Uncommitted Changes details with file-level diffs
- A right-side Git worktree rail with confirmed HEAD positions, dirty state, branch information, inferred bases, and offscreen continuation arrows
- Manifest regression tests for valid VS Code view identifiers

### Changed

- Extract webview bridge
- Extract webview lifecycle

## [0.2.0] - 2026-03-17

### Added
- Renamed the extension, commands, settings, views, logs, and diff scheme to Git Fleet
- Moved cross-repository navigation out of the built-in Source Control pane
- Kept the graph cell visible through row selection styling
- Updated the product identity to `wgrant-dev.git-fleet`

- Add initial test suite and CI configuration

### Fixed

- Remove information message

## [0.1.1] - 2026-02-23

### Changed
### Security

- Migrate build system to esbuild and upgrade dependencies
- Add oxlint linter and oxfmt formatter
- Removed an inherited hard-coded GitLab token from avatar lookup requests

## [0.1.0] - 2026-02-18
## Neo Git Graph history

Initial release
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/asispts/neo-git-graph/compare/v0.5.0...HEAD
[0.5.0]: https://github.com/asispts/neo-git-graph/compare/v0.4.0...v0.5.0
[0.4.0]: https://github.com/asispts/neo-git-graph/compare/v0.3.0...v0.4.0
[0.3.0]: https://github.com/asispts/neo-git-graph/compare/v0.2.0...v0.3.0
[0.2.0]: https://github.com/asispts/neo-git-graph/compare/v0.1.1...v0.2.0
[0.1.1]: https://github.com/asispts/neo-git-graph/compare/v0.1.0...v0.1.1
[0.1.0]: https://github.com/asispts/neo-git-graph/releases/tag/v0.1.0
[Unreleased]: https://github.com/wrgrant/git-fleet/compare/v0.1.0...HEAD
[0.1.0]: https://github.com/wrgrant/git-fleet/releases/tag/v0.1.0
23 changes: 23 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Contributing to Git Fleet

Thanks for helping make multi-repository Git work easier to understand.

## Before opening a change

Open an issue for behavior changes that affect repository discovery, Git mutations, worktree inference, or the extension identity. Small fixes and tests can go directly to a pull request.

## Local verification

```sh
pnpm install
pnpm run format
pnpm run lint
pnpm run typecheck
pnpm run test
pnpm run test:ext
pnpm run package
```

Keep the repository navigator compact and navigational. Git mutations should remain in a surface that makes their repository and history context obvious.

All contributions are accepted under the repository's [MIT License](LICENSE). Preserve upstream attribution when moving or substantially rewriting inherited code.
3 changes: 2 additions & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
MIT License

Copyright (c) 2019 mhutchie. Fork (c) 2026-present asispts
Copyright (c) 2019 mhutchie. Fork (c) 2026-present asispts.
Git Fleet modifications (c) 2026 William Grant.

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
9 changes: 9 additions & 0 deletions NOTICE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Attribution notice

Git Fleet is a software fork of [Neo Git Graph](https://github.com/asispts/neo-git-graph), created and maintained by Asis Pattisahusiwa under the MIT License.

Neo Git Graph is based on commit [`4af8583`](https://github.com/mhutchie/vscode-git-graph/commit/4af8583a42082b2c230d2c0187d4eaff4b69c665) of [Git Graph](https://github.com/mhutchie/vscode-git-graph), created by Michael Hutchison. That commit and its ancestors were released under the MIT License. Git Fleet does not incorporate later source releases that use a different license.

Git Fleet retains the original copyright and license notices. The Git Fleet name, repository navigator, working-tree details, worktree visualization, and subsequent modifications are maintained independently by William Grant and contributors.

Git Fleet is not affiliated with or endorsed by Neo Git Graph, Git Graph, their maintainers, Git, GitHub, Microsoft, or Visual Studio Code.
113 changes: 61 additions & 52 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,73 +1,82 @@
<div align="center">
<img src="./resources/icon.png" height="128"/>
<samp>
<h1>(neo) Git Graph for Visual Studio Code</h1>
<h3>A clean MIT fork of Git Graph. Visual history, branch actions, and devcontainer support.</h3>
</samp>
<img src="resources/icon.png" width="128" alt="Git Fleet icon">
<h1>Git Fleet</h1>
<p><strong>One pane for every repository. A familiar Git graph for each one.</strong></p>
</div>

[![](https://img.shields.io/github/license/asispts/neo-git-graph)](https://github.com/asispts/neo-git-graph?tab=MIT-1-ov-file)
[![GitHub release](https://img.shields.io/github/v/release/asispts/neo-git-graph)](https://github.com/asispts/neo-git-graph/releases)
[![vscode downloads](https://img.shields.io/visual-studio-marketplace/d/asispts.neo-git-graph?label=download)](https://marketplace.visualstudio.com/items?itemName=asispts.neo-git-graph)
[![vscode installs](https://img.shields.io/visual-studio-marketplace/i/asispts.neo-git-graph?label=install)](https://marketplace.visualstudio.com/items?itemName=asispts.neo-git-graph)
[![open-vsx downloads](https://img.shields.io/open-vsx/dt/asispts/neo-git-graph?label=open-vsx)](https://open-vsx.org/extension/asispts/neo-git-graph)
[![CI](https://github.com/wrgrant/git-fleet/actions/workflows/ci.yaml/badge.svg)](https://github.com/wrgrant/git-fleet/actions/workflows/ci.yaml)
[![GitHub release](https://img.shields.io/github/v/release/wrgrant/git-fleet)](https://github.com/wrgrant/git-fleet/releases)
[![License: MIT](https://img.shields.io/badge/license-MIT-2ea44f)](LICENSE)

![demo](resources/demo.gif)
Git Fleet is a VS Code extension for people working across more repositories and Git worktrees than the built-in Source Control pane makes easy to watch. Its compact Activity Bar navigator tells you what is active, what is dirty, and where each repository lives. Selecting a repository opens the graph and Git actions inherited from Neo Git Graph.

<p>&nbsp;</p>
![Git Fleet repository navigator](resources/screenshots/repository-fleet.png)

## Why this fork
## What Git Fleet adds

The original [Git Graph](https://github.com/mhutchie/vscode-git-graph) by mhutchie changed its license in May 2019.
Everything after [commit 4af8583](https://github.com/mhutchie/vscode-git-graph/commit/4af8583a42082b2c230d2c0187d4eaff4b69c665) is no longer MIT.
- 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
- 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
- Viewport-edge arrows when a worktree connector continues above or below the loaded history

This fork is based on the last MIT commit and:
![Worktrees placed in commit history](resources/screenshots/worktree-history.png)

- Keeps MIT license
- Adds devcontainer support
- Adds internationalization support (English, zh-CN, zh-TW)
- Improves codebase, tooling, and maintainability
The repository navigator is intentionally read-only. Repository-level actions—checkout, branch, merge, tag, reset, cherry-pick, and more—stay in the graph where their context is visible.

## Features
## Install

- **Graph view**: See branches, tags, and uncommitted changes in one graph
- **Commit details**: Click a commit to see message, files, and diffs
- **Branch actions**: Create, checkout, rename, delete, and merge
- **Tag actions**: Create, delete, and push tags
- **Commit actions**: Checkout, cherry-pick, revert, and reset
- **Avatar support**: Optional avatars from GitHub, GitLab, or Gravatar
- **Multi-repo**: Work with multiple repositories in one workspace
- **Devcontainer ready**: Works in remote and container environments
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
```

Or choose **Extensions: Install from VSIX...** from the VS Code Command Palette.

After installation, select the Git Fleet icon in the Activity Bar. The folder-plus button adds a repository search root that should be visible from every VS Code window.

## Configuration

All settings use the `neo-git-graph` prefix.
All extension settings use the `git-fleet` prefix.

| Setting | Default | Description |
| ----------------------------- | --------------- | ------------------------------------------------ |
| `autoCenterCommitDetailsView` | `true` | Center commit details when opened |
| `dateFormat` | `"Date & Time"` | `"Date & Time"`, `"Date Only"`, or `"Relative"` |
| `dateType` | `"Author Date"` | `"Author Date"` or `"Commit Date"` |
| `fetchAvatars` | `false` | Fetch avatars (sends email to external services) |
| `graphColours` | 12 defaults | Colors for graph lines |
| `graphStyle` | `"rounded"` | `"rounded"` or `"angular"` |
| `initialLoadCommits` | `300` | Commits to load on open |
| `loadMoreCommits` | `100` | Commits to load on demand |
| `maxDepthOfRepoSearch` | `0` | Folder depth for repo search |
| `showCurrentBranchByDefault` | `false` | Show only current branch on open |
| `showStatusBarItem` | `true` | Show status bar button |
| `showUncommittedChanges` | `true` | Show uncommitted changes node |
| `tabIconColourTheme` | `"colour"` | `"colour"` or `"grey"` |
| Setting | Default | Purpose |
| -------------------------------------- | ------- | ------------------------------------------------- |
| `git-fleet.repositorySearchRoots` | `[]` | Additional folders to scan in every window |
| `git-fleet.maxDepthOfRepoSearch` | `4` | Nested folder depth used for repository discovery |
| `git-fleet.showUncommittedChanges` | `true` | Show working changes as the first graph row |
| `git-fleet.showCurrentBranchByDefault` | `false` | Open the graph filtered to the current branch |
| `git-fleet.initialLoadCommits` | `300` | Initial graph history length |
| `git-fleet.loadMoreCommits` | `100` | Additional commits loaded on demand |
| `git-fleet.fetchAvatars` | `false` | Fetch commit avatars from external services |

## Installation
The full settings list is available in VS Code under **Extensions → Git Fleet**.

Search for `neo-git-graph` in Extensions, or install from:
## Worktree history

- [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=asispts.neo-git-graph)
- [Open VSX Registry](https://open-vsx.org/extension/asispts/neo-git-graph)
Git records a worktree's current HEAD but not the exact commit from which that worktree was originally created. Git Fleet therefore draws HEAD connectors as confirmed state and labels base connectors as inferred merge bases against the repository's default branch. That distinction is deliberate.

## License
## Project lineage and attribution

Git Fleet is an MIT-licensed fork of [asispts/neo-git-graph](https://github.com/asispts/neo-git-graph). Neo Git Graph is based on the last MIT-licensed commit of Michael Hutchison's [mhutchie/vscode-git-graph](https://github.com/mhutchie/vscode-git-graph), commit [`4af8583`](https://github.com/mhutchie/vscode-git-graph/commit/4af8583a42082b2c230d2c0187d4eaff4b69c665).

MIT — see [LICENSE](LICENSE).
Git Fleet preserves the MIT license and copyright notices from both upstream projects. It is maintained independently and is not affiliated with or endorsed by either upstream project. See [NOTICE.md](NOTICE.md) for the attribution chain.

## Development

```sh
pnpm install
pnpm run typecheck
pnpm run lint
pnpm run test
pnpm run package
```

Contributions are welcome. Start with [CONTRIBUTING.md](CONTRIBUTING.md), see [ROADMAP.md](ROADMAP.md) for planned work, and use [docs/PUBLISHING.md](docs/PUBLISHING.md) for the release process.

## License

> Not related to the original Git Graph project.
[MIT](LICENSE) © Michael Hutchison, Asis Pattisahusiwa, and Git Fleet contributors.
20 changes: 20 additions & 0 deletions ROADMAP.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Git Fleet roadmap

Git Fleet 0.1 focuses on visibility: find repositories, see which ones need attention, and open a familiar graph with worktree context.

## 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
- Saved fleet scopes for work, personal, client, or monorepo groupings
- Optional notifications or health summaries for abandoned dirty repositories
- Marketplace and Open VSX distribution

Roadmap items are direction, not commitments. Please open an issue with the problem you are trying to solve, not only a proposed control.
Loading