RepoFocusRepoFocus keeps VS Code's native Source Control view focused on Git repositories that need attention. Clean repositories disappear; repositories with conflicts, staged or unstaged changes, untracked files, a rebase, commits to push or pull, or an unpublished branch remain visible. Repository names or paths can also be pinned with one It filters the Source Control view you already use rather than replacing it with a dashboard. Hidden repositories remain open and monitored by VS Code's built-in Git extension, so a local edit or a Git-state update makes an actionable repository reappear with its normal commit box, change groups, and commands. RepoFocus is deliberately opinionated: installing it delegates per-repository visibility to the extension. When filtering initializes or repository topology changes, RepoFocus reveals the native list, identifies its repositories, and applies the filter again. It does not fetch, run Git commands, inspect file contents, or manage VS Code's autofetch policy.
InstallRepoFocus is on the Visual Studio Marketplace. Open the Extensions view, search for RepoFocus, and install it—or run:
Every release also attaches a Filtering turns on automatically after VS Code starts, whether Source Control is already open or you open it later. Use RepoFocus: Toggle Filtering from the Command Palette or the filter button in the Source Control title bar to disable it for the current workspace until you turn it back on. Requirements
Incoming and outgoing status is whatever the built-in Git extension currently reports. VS Code autofetch, a manual Git fetch, or another tool may update that state; RepoFocus never does so itself. To build from source, use Node.js 22 or newer and npm. Compatibility and safetyVS Code does not expose repository visibility through its public extension API, so RepoFocus uses bounded built-in Source Control commands. It activates after VS Code finishes starting. Initialization waits for the built-in Git scan, makes every provider visible, and maps opaque visibility commands in linear work: Built-in Git activation has a 10-second bound, every native command and repository-focus transition has a 10-second bound, and complete mapping has a 120-second bound. Lazy command registration gets one five-second overall deadline, including host-call time and retry spacing; while Source Control remains unopened, a slow bounded registry check continues until its native commands appear. There are no periodic repository audits, background fetches, or window-focus jobs. Normal Git-state events only schedule visibility work when a repository changes between clean and actionable. If VS Code's internal behavior does not match the validated contract, RepoFocus stops filtering. It restores confirmed hides through their known command ledger. A rejected toggle has an ambiguous outcome, so RepoFocus never retries that inversion: it waits for the native command to settle, re-establishes the all-visible selection-mode baseline, and remains stopped. If the native command never settles, RepoFocus reports that visibility is unknown instead of issuing more toggles. It never closes a repository. An unavailable or inconsistent Git state is treated as actionable so uncertainty remains visible. RepoFocus owns native repository visibility while filtering is active. Do not also hide repositories with VS Code's native menu; turn RepoFocus filtering off first if you want manual control. A topology change or RepoFocus: Refresh from a paused state establishes a fresh all-visible baseline and intentionally discards prior per-repository visibility choices. Documentationdocs/reference.md describes actionability, the LicenseMIT © 2026 Yoshinao Inoguchi ContactYoshinao Inoguchi — yoshinao@inoguchi.com — https://inoguchi.com Questions, bug reports, and feature requests belong in GitHub Issues. For anything security-related, e-mail instead of opening an issue, and redact real repository paths, remote URLs, and branch names—a synthetic reproduction is enough. |
