Skip to content

[feature/9] resolves #9: Added Tests#14

Open
justinkumpe wants to merge 1 commit intomainfrom
feature/9
Open

[feature/9] resolves #9: Added Tests#14
justinkumpe wants to merge 1 commit intomainfrom
feature/9

Conversation

@justinkumpe
Copy link
Member

@justinkumpe justinkumpe commented Feb 14, 2026

Summary by Sourcery

Add a dedicated test and validation infrastructure for the Git QuickOps VS Code extension and document how to use it for local development and CI.

Enhancements:

  • Introduce cross-platform validation scripts to run linting, build, tests, and packaging before pushing changes.
  • Add example Git QuickOps configuration and clarify configuration precedence for commit prefixes and test requirements.

Build:

  • Restructure npm scripts to separate fast build tests from integration tests and add scripts for compilation-only checks and full validation.
  • Add TypeScript, Mocha, and VS Code test harness dependencies and expand the TypeScript project include paths for compiled tests.

CI:

  • Add a GitHub Actions CI workflow to lint, compile, run build and integration tests across OS and Node versions, and package/upload the extension artifact.
  • Add an additional package validation job in CI to verify package.json fields and VSIX creation.

Documentation:

  • Expand README with sidebar GUI usage, configuration guidance, test commands, development workflow, and CI/CD overview.
  • Add a CONTRIBUTING guide and detailed test documentation describing build vs integration tests and their interaction with Git QuickOps' requireTests feature.

Tests:

  • Introduce a Mocha-based test harness with separate build and integration test runners, including a lightweight buildRunner for fast pre-commit validation.
  • Document and organize the test suite with dedicated README and integration guide files describing how tests are executed locally, in CI, and via Git QuickOps.

@justinkumpe justinkumpe self-assigned this Feb 14, 2026
@justinkumpe justinkumpe added documentation Improvements or additions to documentation enhancement New feature or request labels Feb 14, 2026
@justinkumpe justinkumpe linked an issue Feb 14, 2026 that may be closed by this pull request
@sourcery-ai
Copy link

sourcery-ai bot commented Feb 14, 2026

Reviewer's Guide

Adds a full testing and CI setup for the Git QuickOps VS Code extension, including fast build tests integrated with Git QuickOps’ requireTests feature, VS Code integration tests, cross-platform GitHub Actions workflows, validation scripts, and corresponding documentation updates in README and CONTRIBUTING.

Sequence diagram for Git QuickOps requireTests build test execution

sequenceDiagram
    actor Developer
    participant GitQuickOpsHook
    participant Shell
    participant Npm
    participant Node
    participant BuildRunner

    Developer->>GitQuickOpsHook: git commit
    GitQuickOpsHook->>Shell: run configured requireTests command
    Shell->>Npm: npm test
    Note over Npm: npm test -> npm run test:build
    Npm->>Npm: npm run compile
    Npm->>Node: node -e require(./out/test/suite/buildRunner).run()
    Node->>BuildRunner: load module buildRunner
    BuildRunner->>BuildRunner: run()
    BuildRunner-->>Node: build tests result
    Node-->>Npm: exit code 0 or 1
    Npm-->>GitQuickOpsHook: success or failure
    alt tests passed
        GitQuickOpsHook-->>Developer: allow commit
    else tests failed
        GitQuickOpsHook-->>Developer: block commit
    end
Loading

Flow diagram for local validation scripts (validate.sh and validate.bat)

flowchart TD
    A[Start validation script] --> B[Install dependencies\n npm ci]
    B --> C[Run ESLint\n npm run lint]
    C --> D[Compile TypeScript\n npm run compile]
    D --> E[Run build tests\n npm test]
    E --> F[Validate package.json fields]
    F --> G[Package extension\n npx @vscode/vsce package --no-dependencies]
    G --> H[All validation checks passed]
    H --> I[Extension ready to push or publish]
Loading

File-Level Changes

Change Details Files
Introduce a two-tier test architecture (fast build tests and VS Code integration tests) and wire it into npm scripts so npm test runs the lightweight build suite suitable for Git QuickOps requireTests.
  • Replace the test npm script to run a new test:build command instead of the VS Code test harness
  • Add test:integration, test:build, and test:compile scripts to separate integration tests from build validation
  • Implement a lightweight Mocha-based build test runner that only executes build.test files
  • Add initial build and integration test suites under src/test/suite and a shared Mocha index runner plus VS Code runTest harness
package.json
src/test/suite/buildRunner.ts
src/test/suite/index.ts
src/test/runTest.ts
src/test/suite/build.test.ts
src/test/suite/extension.test.ts
.mocharc.json
Set up comprehensive CI and local validation workflows to ensure linting, compilation, packaging, and tests run consistently across environments.
  • Add a GitHub Actions workflow that runs lint, compile, build tests, packaging, and integration tests across OS and Node.js matrices and uploads a VSIX artifact
  • Add shell and batch validation scripts to perform linting, compilation, tests, package.json validation, and extension packaging before pushing
  • Add a dedicated CI job to validate package.json required fields and confirm VSIX creation
.github/workflows/ci.yml
scripts/validate.sh
scripts/validate.bat
Document the development, testing, and Git QuickOps requireTests integration workflow for contributors and users.
  • Expand README with CI badges, detailed sidebar/GUI usage, configuration priority, development/test commands, validation scripts, and CI/CD description
  • Add a CONTRIBUTING guide describing dev setup, workflows, test types, validation steps, and project structure
  • Add test-focused documentation explaining how build vs integration tests work and how they integrate with .GIT_QUICKOPS_CONFIG and requireTests
README.md
CONTRIBUTING.md
src/test/README.md
src/test/INTEGRATION.md
.GIT_QUICKOPS_CONFIG.example
Adjust TypeScript configuration and devDependencies to support the new test and CI setup.
  • Broaden tsconfig include to cover all TypeScript sources under src/**/* so test files are compiled
  • Add devDependencies for Mocha, VS Code Electron test runner, glob, and related type packages used by the new test harness
tsconfig.json
package.json

Assessment against linked issues

Issue Objective Addressed Explanation
#9 Add tests that ensure the VS Code extension builds properly (including a fast build-validation test suite wired into npm test).
#9 Add a GitHub Actions workflow that runs the tests in CI.

Possibly linked issues


Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

Comment on lines +12 to +65
name: Build and Test
runs-on: ${{ matrix.os }}

strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
node-version: [18.x, 20.x]

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'

- name: Install dependencies
run: npm ci

- name: Lint code
run: npm run lint

- name: Compile TypeScript
run: npm run compile

- name: Run build test
run: npm run test:build

- name: Package extension
run: npx @vscode/vsce package

- name: Upload VSIX artifact
uses: actions/upload-artifact@v4
if: matrix.os == 'ubuntu-latest' && matrix.node-version == '20.x'
with:
name: git-quickops-vsix
path: '*.vsix'
retention-days: 7

- name: Run integration tests (Ubuntu)
if: runner.os == 'Linux'
run: xvfb-run -a npm run test:integration

- name: Run integration tests (macOS)
if: runner.os == 'macOS'
run: npm run test:integration

- name: Run integration tests (Windows)
if: runner.os == 'Windows'
run: npm run test:integration

lint-check:

Check warning

Code scanning / CodeQL

Workflow does not contain permissions Medium

Actions job or workflow does not limit the permissions of the GITHUB_TOKEN. Consider setting an explicit permissions block, using the following as a minimal starting point: {contents: read}

Copilot Autofix

AI about 21 hours ago

In general, to fix this issue you should explicitly set permissions for the workflow or individual jobs so that the GITHUB_TOKEN has only the minimal privileges required. For a typical CI workflow that just checks out code, installs dependencies, runs tests, and uploads artifacts, contents: read at the workflow level is usually sufficient. Additional scopes are only needed if the workflow writes to PRs, issues, releases, etc.

For this specific workflow, none of the jobs (build, lint-check, validate-package) perform write operations against the repository or GitHub’s APIs; they only read source code and push artifacts to the Actions storage (which does not use contents: write). Therefore, the single best fix is to add a root-level permissions block setting contents: read so it applies to all jobs. This keeps existing functionality unchanged while constraining the token.

Concretely:

  • Edit .github/workflows/ci.yml.
  • Insert a permissions: block after the name: and before on::
    name: CI Build and Test
    
    permissions:
      contents: read
    
    on:
      ...
  • No job-level permissions are necessary unless you later add steps that require broader access.

No extra imports or methods are needed; this is purely a YAML configuration change.


Suggested changeset 1
.github/workflows/ci.yml

Autofix patch

Autofix patch
Run the following command in your local git repository to apply this patch
cat << 'EOF' | git apply
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -1,5 +1,8 @@
 name: CI Build and Test
 
+permissions:
+  contents: read
+
 on:
   push:
     branches: [ main, dev ]
EOF
@@ -1,5 +1,8 @@
name: CI Build and Test

permissions:
contents: read

on:
push:
branches: [ main, dev ]
Copilot is powered by AI and may make mistakes. Always verify output.
Comment on lines +66 to +88
name: Lint and Format Check
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20.x'
cache: 'npm'

- name: Install dependencies
run: npm ci

- name: Run ESLint
run: npm run lint

- name: Check TypeScript compilation
run: npm run compile

validate-package:

Check warning

Code scanning / CodeQL

Workflow does not contain permissions Medium

Actions job or workflow does not limit the permissions of the GITHUB_TOKEN. Consider setting an explicit permissions block, using the following as a minimal starting point: {contents: read}

Copilot Autofix

AI about 21 hours ago

In general, the fix is to explicitly restrict GITHUB_TOKEN permissions using a permissions: block, either at the workflow root (affecting all jobs) or per job, granting only the scopes needed (typically contents: read for this kind of CI workflow). Since none of the jobs performs write operations to the repository or uses APIs that require elevated scopes, we can add a minimal permissions: block at the workflow root so all jobs inherit it.

The single best fix here is to add a root-level permissions: block right after the name: (or on:) section in .github/workflows/ci.yml, specifying contents: read. This applies to all jobs (build, lint-check, validate-package) without altering their behavior because they only read repository contents. No changes are necessary inside individual jobs, and no additional libraries or steps are required.

Concretely, in .github/workflows/ci.yml, between line 2 (blank) and line 3 (on:), insert:

permissions:
  contents: read

This ensures that the GITHUB_TOKEN has read-only access to repository contents for the entire workflow, satisfying the CodeQL recommendation while preserving existing functionality.

Suggested changeset 1
.github/workflows/ci.yml

Autofix patch

Autofix patch
Run the following command in your local git repository to apply this patch
cat << 'EOF' | git apply
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -1,5 +1,8 @@
 name: CI Build and Test
 
+permissions:
+  contents: read
+
 on:
   push:
     branches: [ main, dev ]
EOF
@@ -1,5 +1,8 @@
name: CI Build and Test

permissions:
contents: read

on:
push:
branches: [ main, dev ]
Copilot is powered by AI and may make mistakes. Always verify output.
Comment on lines +89 to +133
name: Validate Package
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20.x'
cache: 'npm'

- name: Install dependencies
run: npm ci

- name: Validate package.json
run: |
node -e "const pkg = require('./package.json'); console.log('Package validation passed');"

- name: Check for missing fields
run: |
node -e "
const pkg = require('./package.json');
const required = ['name', 'displayName', 'version', 'publisher', 'engines', 'categories', 'main'];
const missing = required.filter(f => !pkg[f]);
if (missing.length) {
console.error('Missing required fields:', missing);
process.exit(1);
}
console.log('All required fields present');
"

- name: Compile and package
run: |
npm run compile
npx @vscode/vsce package --no-dependencies

- name: Verify VSIX creation
run: |
if [ ! -f *.vsix ]; then
echo "VSIX file was not created"
exit 1
fi
echo "VSIX file created successfully"

Check warning

Code scanning / CodeQL

Workflow does not contain permissions Medium

Actions job or workflow does not limit the permissions of the GITHUB_TOKEN. Consider setting an explicit permissions block, using the following as a minimal starting point: {contents: read}

Copilot Autofix

AI about 21 hours ago

In general, the fix is to explicitly declare a permissions block that restricts the GITHUB_TOKEN to the least privileges needed. Since this workflow only checks out code, installs dependencies, runs linting/testing, and packages artifacts, it only needs read access to repository contents. It does not need to write to contents, issues, pull requests, or other scopes.

The best fix, without changing functionality, is to add a single top-level permissions block (at the root of .github/workflows/ci.yml, alongside name and on). This will apply to all jobs (build, lint-check, and validate-package) uniformly. Set it to contents: read, which is the minimal scope required for actions/checkout@v4 to read the repository. No job appears to need any write permissions or additional scopes (such as packages, pull-requests, or statuses), and none of the used third-party actions require elevated permissions for their normal operation here.

Concretely:

  • Edit .github/workflows/ci.yml.
  • Insert a permissions: section after the name: CI Build and Test line and before the on: block.
  • Set the permissions to:
    permissions:
      contents: read

No additional methods, imports, or definitions are needed, and no steps need modification.

Suggested changeset 1
.github/workflows/ci.yml

Autofix patch

Autofix patch
Run the following command in your local git repository to apply this patch
cat << 'EOF' | git apply
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -1,5 +1,8 @@
 name: CI Build and Test
 
+permissions:
+  contents: read
+
 on:
   push:
     branches: [ main, dev ]
EOF
@@ -1,5 +1,8 @@
name: CI Build and Test

permissions:
contents: read

on:
push:
branches: [ main, dev ]
Copilot is powered by AI and may make mistakes. Always verify output.
Copy link

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - I've found 5 issues, and left some high level feedback:

  • The CI workflow currently runs lint/compile in both the build and lint-check jobs; consider consolidating these steps into a single job or reusing artifacts to avoid redundant work and speed up the pipeline.
  • The validate npm script uses bash scripts/validate.sh || scripts\validate.bat; on Windows without Bash installed this will still work but the initial error may be noisy—consider a small platform check (e.g., via Node) to invoke only the appropriate script per OS.
Prompt for AI Agents
Please address the comments from this code review:

## Overall Comments
- The CI workflow currently runs lint/compile in both the `build` and `lint-check` jobs; consider consolidating these steps into a single job or reusing artifacts to avoid redundant work and speed up the pipeline.
- The `validate` npm script uses `bash scripts/validate.sh || scripts\validate.bat`; on Windows without Bash installed this will still work but the initial error may be noisy—consider a small platform check (e.g., via Node) to invoke only the appropriate script per OS.

## Individual Comments

### Comment 1
<location> `package.json:425` </location>
<code_context>
     "pretest": "npm run compile && npm run lint",
     "lint": "eslint src --ext ts",
-    "test": "node ./out/test/runTest.js"
+    "test": "npm run test:build",
+    "test:integration": "node ./out/test/runTest.js",
+    "test:build": "npm run compile && node -e \"require('./out/test/suite/buildRunner').run().then(() => process.exit(0)).catch((e) => { console.error(e); process.exit(1); })\"",
+    "test:compile": "tsc -p ./ && echo 'Build successful'",
+    "validate": "bash scripts/validate.sh || scripts\\validate.bat"
</code_context>

<issue_to_address>
**suggestion (performance):** Avoid running compilation twice in the default `npm test` lifecycle.

As written, `npm test` will first run `pretest` (compile + lint) and then `test:build` (compile again). To avoid the duplicate compilation, either drop `npm run compile &&` from `test:build` and rely on `pretest`, or remove `pretest` and keep compilation only in `test:build`.

```suggestion
    "test:build": "node -e \"require('./out/test/suite/buildRunner').run().then(() => process.exit(0)).catch((e) => { console.error(e); process.exit(1); })\"",
```
</issue_to_address>

### Comment 2
<location> `.github/workflows/ci.yml:39-40` </location>
<code_context>
+      - name: Compile TypeScript
+        run: npm run compile
+      
+      - name: Run build test
+        run: npm run test:build
+      
+      - name: Package extension
</code_context>

<issue_to_address>
**suggestion (performance):** Reduce duplicate compilation work in CI by reusing the existing compile step.

This job already runs `npm run compile`, and `test:build` also calls `npm run compile`, so each build compiles twice. Consider either removing the explicit `Compile TypeScript` step and relying on `test:build`, or updating `test:build` to assume compilation has already happened in CI and dropping its internal `npm run compile`.
</issue_to_address>

### Comment 3
<location> `scripts/validate.bat:35-36` </location>
<code_context>
+echo Compilation successful
+echo.
+
+echo Running build tests...
+call npm test
+if errorlevel 1 (
+    echo Build tests failed
</code_context>

<issue_to_address>
**suggestion (performance):** Batch validate script is also running lint/compile twice due to `npm test`’s lifecycle.

On Windows this runs `lint` and `compile` twice, since `npm test` already triggers them via `pretest`. To avoid duplicate work, either call `npm run test:build` directly here or drop the earlier `lint`/`compile` calls and rely on the `pretest` hook.

```suggestion
echo Running build tests...
call npm run test:build
```
</issue_to_address>

### Comment 4
<location> `src/test/suite/buildRunner.ts:28-31` </location>
<code_context>
+                return reject(err);
+            }
+
+            if (files.length === 0) {
+                console.log('No build tests found');
+                return resolve();
+            }
+
</code_context>

<issue_to_address>
**suggestion (testing):** Consider failing the build when no build tests are found instead of resolving successfully.

Silently succeeding when `files.length === 0` can hide the fact that build tests have been removed or misnamed, while CI still reports success. Consider rejecting in this case (or making it configurable) so that “no build tests found” is treated as a failure condition for pre-commit/validation runs.

```suggestion
            if (files.length === 0) {
                return reject(new Error('No build tests found'));
            }
```
</issue_to_address>

### Comment 5
<location> `README.md:8` </location>
<code_context>
 ![Git QuickOps Logo](icon.png)

-A comprehensive git operations toolkit with an intuitive menu-driven interface, bringing the power of the git-quickops shell script directly into VS Code.
+A comprehensive git operations toolkit with both a visual sidebar interface and menu-driven command palette, bringing the power of the git-quickops shell script directly into VS Code with a native GUI experience.

 ## Features
</code_context>

<issue_to_address>
**suggestion (typo):** Consider adding an article before “menu-driven command palette” for smoother grammar.

You could rewrite this as “with both a visual sidebar interface and a menu-driven command palette …” to keep the list parallel and easier to read.

```suggestion
A comprehensive git operations toolkit with both a visual sidebar interface and a menu-driven command palette, bringing the power of the git-quickops shell script directly into VS Code with a native GUI experience.
```
</issue_to_address>

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

"test": "node ./out/test/runTest.js"
"test": "npm run test:build",
"test:integration": "node ./out/test/runTest.js",
"test:build": "npm run compile && node -e \"require('./out/test/suite/buildRunner').run().then(() => process.exit(0)).catch((e) => { console.error(e); process.exit(1); })\"",
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

suggestion (performance): Avoid running compilation twice in the default npm test lifecycle.

As written, npm test will first run pretest (compile + lint) and then test:build (compile again). To avoid the duplicate compilation, either drop npm run compile && from test:build and rely on pretest, or remove pretest and keep compilation only in test:build.

Suggested change
"test:build": "npm run compile && node -e \"require('./out/test/suite/buildRunner').run().then(() => process.exit(0)).catch((e) => { console.error(e); process.exit(1); })\"",
"test:build": "node -e \"require('./out/test/suite/buildRunner').run().then(() => process.exit(0)).catch((e) => { console.error(e); process.exit(1); })\"",

Comment on lines +39 to +40
- name: Run build test
run: npm run test:build
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

suggestion (performance): Reduce duplicate compilation work in CI by reusing the existing compile step.

This job already runs npm run compile, and test:build also calls npm run compile, so each build compiles twice. Consider either removing the explicit Compile TypeScript step and relying on test:build, or updating test:build to assume compilation has already happened in CI and dropping its internal npm run compile.

Comment on lines +35 to +36
echo Running build tests...
call npm test
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

suggestion (performance): Batch validate script is also running lint/compile twice due to npm test’s lifecycle.

On Windows this runs lint and compile twice, since npm test already triggers them via pretest. To avoid duplicate work, either call npm run test:build directly here or drop the earlier lint/compile calls and rely on the pretest hook.

Suggested change
echo Running build tests...
call npm test
echo Running build tests...
call npm run test:build

Comment on lines +28 to +31
if (files.length === 0) {
console.log('No build tests found');
return resolve();
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

suggestion (testing): Consider failing the build when no build tests are found instead of resolving successfully.

Silently succeeding when files.length === 0 can hide the fact that build tests have been removed or misnamed, while CI still reports success. Consider rejecting in this case (or making it configurable) so that “no build tests found” is treated as a failure condition for pre-commit/validation runs.

Suggested change
if (files.length === 0) {
console.log('No build tests found');
return resolve();
}
if (files.length === 0) {
return reject(new Error('No build tests found'));
}

![Git QuickOps Logo](icon.png)

A comprehensive git operations toolkit with an intuitive menu-driven interface, bringing the power of the git-quickops shell script directly into VS Code.
A comprehensive git operations toolkit with both a visual sidebar interface and menu-driven command palette, bringing the power of the git-quickops shell script directly into VS Code with a native GUI experience.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

suggestion (typo): Consider adding an article before “menu-driven command palette” for smoother grammar.

You could rewrite this as “with both a visual sidebar interface and a menu-driven command palette …” to keep the list parallel and easier to read.

Suggested change
A comprehensive git operations toolkit with both a visual sidebar interface and menu-driven command palette, bringing the power of the git-quickops shell script directly into VS Code with a native GUI experience.
A comprehensive git operations toolkit with both a visual sidebar interface and a menu-driven command palette, bringing the power of the git-quickops shell script directly into VS Code with a native GUI experience.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[feature] Add tests that ensure extension builds properly

1 participant