nullvariant-vscode-extensions

May 8, 2026 ยท View on GitHub

CI Security Platform SLSA 3 Sigstore SBOM OpenSSF Scorecard OpenSSF Best Practices Harden-Runner Snyk monitored Socket.dev GitGuardian Gitleaks Renovate FOSSA License FOSSA Security codecov Quality Gate Status Bugs Code Smells Coverage Duplicated Lines (%)

VS Code extensions by Null;Variant.

Extensions

Git ID Switcher

Git ID Switcher Switch between multiple Git identities with one click. Manage multiple GitHub accounts, SSH keys, GPG signing, and automatically apply identity to Git Submodules.

Open VSX Registry License: MIT Karesansui Architecture
26 Languages ๐Ÿ‡บ๐Ÿ‡ธ ๐Ÿ‡ฏ๐Ÿ‡ต ๐Ÿ‡จ๐Ÿ‡ณ ๐Ÿ‡น๐Ÿ‡ผ ๐Ÿ‡ฐ๐Ÿ‡ท ๐Ÿ‡ฉ๐Ÿ‡ช ๐Ÿ‡ซ๐Ÿ‡ท ๐Ÿ‡ช๐Ÿ‡ธ ๐Ÿ‡ง๐Ÿ‡ท ๐Ÿ‡ฎ๐Ÿ‡น ๐Ÿ‡ท๐Ÿ‡บ ๐Ÿ‡ต๐Ÿ‡ฑ ๐Ÿ‡น๐Ÿ‡ท ๐Ÿ‡จ๐Ÿ‡ฟ ๐Ÿ‡ญ๐Ÿ‡บ ๐Ÿ‡ง๐Ÿ‡ฌ ๐Ÿ‡บ๐Ÿ‡ฆ ๐ŸŒ ๐ŸŒบ ๐Ÿป ๐Ÿ‰ โœจ ๐Ÿ–– ๐Ÿฑ ๐Ÿดโ€โ˜ ๏ธ ๐ŸŽญ

๐Ÿ“– Documentation | ๐Ÿ— Architecture | ๐Ÿ›ก Threat Model | ๐ŸŒ Languages | ๐Ÿค Contributing | ๐Ÿ“ฆ Marketplace | ๐Ÿ“ฆ Open VSX

Git ID Switcher Demo

Quick Start for Developers

Get started in 5 steps:

# 1. Clone
git clone https://github.com/nullvariant/nullvariant-vscode-extensions.git
cd nullvariant-vscode-extensions

# 2. Install dependencies (from repository root)
npm install

# 3. Compile
npm run compile:all

# 4. Run tests
npm run test:all

# 5. Start watch mode for development
npm run watch:all

For linting: npm run lint:all

Extension Initialization Flow

flowchart TD
    A[Extension Activated] --> B{Workspace Trusted?}
    B -->|No| C[Restricted Mode]
    B -->|Yes| D[initializeState]
    D --> E{Saved Identity?}
    E -->|Yes| I[Apply Identity]
    E -->|No| F{Detect from Git Config?}
    F -->|Yes| I
    F -->|No| G{Detect from SSH Agent?}
    G -->|Yes| I
    G -->|No| H[No Identity]
    I --> J[Update Status Bar]
    H --> J
    J --> K[Ready]

Development

Prerequisites

  • Node.js 20+

Working on an extension

cd extensions/git-id-switcher

# Install dependencies
npm install

# Compile
npm run compile

# Watch mode
npm run watch

# Package as VSIX
npm run package

Testing locally

Manual Testing

  1. Open the extension folder in VS Code
  2. Press F5 to launch Extension Development Host
  3. Test the extension in the new window

Unit Tests

cd extensions/git-id-switcher
npm run test

E2E Tests

E2E tests run in an actual VS Code environment using @vscode/test-electron:

cd extensions/git-id-switcher
npm run test:e2e

Note: On first run, VS Code will be downloaded automatically (~100MB). Subsequent runs use the cached version.

Git Hooks Setup

This repository uses custom git hooks for release safety. After cloning, run:

git config core.hooksPath .githooks

This enables the pre-push hook that prevents pushing version bumps without release tags.

Repository Structure

nullvariant-vscode-extensions/
โ”œโ”€โ”€ extensions/
โ”‚   โ””โ”€โ”€ git-id-switcher/
โ”œโ”€โ”€ .github/workflows/
โ”‚   โ”œโ”€โ”€ ci.yml
โ”‚   โ””โ”€โ”€ publish.yml
โ”œโ”€โ”€ .githooks/
โ”‚   โ””โ”€โ”€ pre-push
โ”œโ”€โ”€ LICENSE
โ””โ”€โ”€ README.md

Publishing (Maintainers Only)

Note: The main branch is protected. All changes must go through a Pull Request.

Extensions are automatically published when a release tag is pushed:

  1. Ensure all changes are merged to main via Pull Request
  2. Create and push a release tag from the latest main:
git checkout main
git pull origin main
git tag git-id-switcher-v1.0.0
git push origin git-id-switcher-v1.0.0

The publish workflow will automatically build and publish the extension to VS Code Marketplace and Open VSX.

Supply Chain Security

Every release includes cryptographic verification artifacts:

ArtifactDescription
*.vsixThe extension package
*.vsix.intoto.jsonlSLSA Level 3 build provenance
*.vsix.bundleCosign keyless signature (Sigstore)
sbom-cyclonedx.jsonCycloneDX SBOM with attestation

Verify VSIX signature (Cosign)

# Download the VSIX and its .bundle from the GitHub Release, then:
cosign verify-blob git-id-switcher-<version>.vsix \
  --bundle git-id-switcher-<version>.vsix.bundle \
  --certificate-identity-regexp="https://github.com/nullvariant/nullvariant-vscode-extensions/" \
  --certificate-oidc-issuer="https://token.actions.githubusercontent.com"

Verify SLSA provenance (GitHub CLI)

gh attestation verify git-id-switcher-<version>.vsix \
  --repo nullvariant/nullvariant-vscode-extensions

Verify SBOM attestation (GitHub CLI)

gh attestation verify git-id-switcher-<version>.vsix \
  --repo nullvariant/nullvariant-vscode-extensions \
  --predicate-type https://cyclonedx.org/bom

Extension Fingerprint

Use this information to verify you have the authentic Git ID Switcher extension:

FieldValue
Publishernullvariant
Extension IDnullvariant.git-id-switcher
Repositoryhttps://github.com/nullvariant/nullvariant-vscode-extensions
Marketplacehttps://marketplace.visualstudio.com/items?itemName=nullvariant.git-id-switcher
Open VSXhttps://open-vsx.org/extension/nullvariant/git-id-switcher

If you find an extension with a similar name from a different publisher, please report it (see SECURITY.md).

See Also

License

MIT