Skip to content
| Marketplace
Sign in
Visual Studio Code>SCM Providers>BygoneNew to Visual Studio Code? Get it now.
Bygone

Bygone

Preview

David Mashburn

| (0) | Free
See how change happened. Visual diff and file history for VS Code.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Bygone

Bygone is a VS Code extension and standalone desktop app for visual diff and file history.

Bygone screenshot

Features

  • Editable two-way side-by-side diff view
  • Dynamic adjacent multi-panel diff view
  • Flowing connectors, block contours, and inline change highlighting
  • Git file history viewer with commit-by-commit navigation

Status

This project is usable as a local or private pre-release VS Code extension. The two-way diff and git history flows are the most complete. The multi-panel view is diff-focused, not a merge tool.

Install For Development

Install dependencies and compile:

npm install
npm run compile

Run the extension in VS Code:

  1. Open this folder in VS Code.
  2. Press F5.
  3. In the Extension Development Host, run one of the Bygone commands from the Command Palette.

Run the standalone desktop app locally:

npm run standalone:start

Run a headless standalone smoke check:

npm run standalone:smoke

For development only, you can install the repo-local launcher globally:

npm install -g .
bygone
bygone path/to/file-or-directory
bygone --diff path/to/left path/to/right
bygone --diff path/to/file1 path/to/file2 path/to/file3 [...]
bygone --dir path/to/left-dir path/to/right-dir
bygone --diff3 path/to/left path/to/middle path/to/right
bygone --dir3 path/to/left-dir path/to/middle-dir path/to/right-dir
bygone --history path/to/file
bygone --help

CLI defaults:

  • bygone opens Git directory history for the current directory.
  • bygone <file> opens file history.
  • bygone <directory> opens Git directory history for that directory.
  • bygone <left> <right> auto-selects file diff or directory compare.
  • bygone --diff <file1> <file2> <file3> ... opens multi-panel diff.

If the native desktop app is installed, the npm/source launcher prefers it and forwards the shell working directory. Set BYGONE_FORCE_BUNDLED=1 to force the npm-bundled Electron runtime instead.

The desktop app also includes Help -> Install Command Line Tools... for non-npm installs. Homebrew cask installs can provide the bygone command automatically.

Package For External Use

This repo is set up for local/private packaging. A typical release flow is:

npm install
npm test
npx @vscode/vsce package

That produces a .vsix you can install with Extensions: Install from VSIX....

Build the standalone desktop packages:

npm install
npm run package:desktop

That produces a macOS DMG in dist/. Cross-target packaging is split out because Windows and Linux builds may need additional Electron downloads or Wine support:

npm run package:desktop:mac:zip
npm run package:desktop:linux
npm run package:desktop:win
npm run package:desktop:all

Stage the scoped npm standalone package:

npm install
npm run package:npm
npm pack --dry-run ./dist/npm-package

The root package.json is the VS Code extension manifest and intentionally keeps the unscoped extension name bygone. The npm distribution is staged separately as @davidmashburn/bygone so the global launcher can avoid the already-taken bygone package name while preserving the VS Code extension id davidmashburn.bygone.

Homebrew packaging templates live in packaging/homebrew/. They are staged for local validation only until release artifact URLs and checksums exist.

Build the full local release artifact matrix:

npm run release:build

That runs tests, rebuilds the VSIX, stages and dry-run checks the npm package, builds desktop artifacts, and styles the Homebrew templates. If the local macOS DMG or Windows cross-build toolchain is unavailable, use node ./scripts/release.mjs --skip-dmg or node ./scripts/release.mjs --skip-windows while validating the rest of the matrix.

Publishing is intentionally explicit:

npm run release:publish

release:publish publishes the npm package, publishes the VS Code package, creates a GitHub release for desktop artifacts, and updates a Homebrew tap. Set BYGONE_HOMEBREW_TAP to a local tap checkout before publishing Homebrew formulas.

Run the release checks:

npm run release:check
npm run standalone:smoke

The standalone smoke check is intentionally run directly because Electron can abort on macOS when launched from a longer nested npm command chain, while the same smoke check passes as a direct release gate.

In the standalone window, you can also drag and drop:

  • 1 file to open git history for that file
  • 2 files or directories to open a side-by-side compare
  • 3 or more files to open a multi-panel compare
  • 3 directories to open a three-directory compare

Git Difftool

Bygone can be launched from git difftool through either the standalone app or the VS Code extension.

Configure the standalone launcher:

./scripts/configure-git-difftool-standalone.sh

That registers:

git difftool -t bygone

Configure the VS Code launcher:

./scripts/configure-git-difftool.sh

That registers:

git difftool -t bygone-vscode

The VS Code path launches:

vscode://davidmashburn.bygone/diff?left=...&right=...

The wrapper scripts are:

./scripts/bygone-difftool.sh <left-file> <right-file>
./scripts/bygone-standalone-difftool.sh <left-file> <right-file>

Commands

  • Bygone: Compare Files
  • Bygone: Compare Directories
  • Bygone: Compare Three Directories (Prototype)
  • Bygone: Compare Multiple Files
  • Bygone: Compare with Selected
  • Bygone: Compare Test Files
  • Bygone: Compare File History
  • Bygone: Compare Active File History

Limitations

  • Bygone is intentionally diff-focused; merge tooling is not exposed as a product feature.
  • Directory compare supports modified-file detection and file drill-down; deep tree ergonomics are still early.
  • The git history viewer currently steps through single-parent commit history for one file at a time.
  • Marketplace publishing metadata is not finalized yet.

Release Work

The current release checklist and remaining publication blockers are tracked in RELEASE_PLAN.md.

Codebase Guide

Architecture and implementation details are documented in CODEBASE.md.

Walkthrough

A screenshot-based walkthrough using Bygone on its own source tree lives in docs/walkthrough.md.

Why “Bygone”?

In short: this project is openly inspired by Meld, and Bygone is meant to carry that visual tradition into a more history-aware tool.

Meld was a direct inspiration for this project. Its visual diff metaphor is still one of the clearest and most human ways to understand change, and Bygone builds on that lineage while pushing further into revision history.

The name also nods to the bygone era before vibe-coding, when people were at least pretending to read, understand, and take responsibility for the code they were writing. This tool is about looking directly at what changed, where it came from, and how the current state emerged.

And yes, Codex, the irony is noted. Thanks for the assist.

Tests

Run the current unit checks with:

npm test
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft