Skip to content

feat(vscode): add support for tsgolint binary configuration#16921

Merged
camc314 merged 11 commits intooxc-project:mainfrom
ColemanDunn:feat(vscode)--add-`oxc.path.tsgolint`-configuration
Dec 17, 2025
Merged

feat(vscode): add support for tsgolint binary configuration#16921
camc314 merged 11 commits intooxc-project:mainfrom
ColemanDunn:feat(vscode)--add-`oxc.path.tsgolint`-configuration

Conversation

@ColemanDunn
Copy link
Contributor

PR to address this issue: #16788

I used cursor ask, plan, and agent mode to familiarize myself with the code and implement the changes.

AI summary of changes:

  • Introduced new configuration option oxc.path.tsgolint in package.json.
  • Updated VSCodeConfig to handle the new tsgolint binary path.
  • Enhanced ConfigService to retrieve the tsgolint binary path.
  • Modified runExecutable to accept tsgolintPath as an argument.
  • Updated linter to utilize the tsgolint binary path.
  • Added tests for tsgolint configuration in VSCodeConfig and ConfigService.

This change allows users to specify a custom path for the tsgolint binary, improving flexibility in the development environment.

- Introduced new configuration option `oxc.path.tsgolint` in `package.json`.
- Updated `VSCodeConfig` to handle the new `tsgolint` binary path.
- Enhanced `ConfigService` to retrieve the `tsgolint` binary path.
- Modified `runExecutable` to accept `tsgolintPath` as an argument.
- Updated linter to utilize the `tsgolint` binary path.
- Added tests for `tsgolint` configuration in `VSCodeConfig` and `ConfigService`.

This change allows users to specify a custom path for the `tsgolint` binary, improving flexibility in the development environment.
@ColemanDunn ColemanDunn requested a review from camc314 as a code owner December 15, 2025 21:58
Copilot AI review requested due to automatic review settings December 15, 2025 21:58
@github-actions github-actions bot added A-editor Area - Editor and Language Server C-enhancement Category - New feature or request labels Dec 15, 2025
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR adds support for configuring a custom tsgolint binary path in the VSCode extension, addressing issue #16788. Users can now specify oxc.path.tsgolint to override the default binary location.

Key Changes:

  • Added oxc.path.tsgolint configuration option to allow custom binary path specification
  • Integrated tsgolint path into the language server environment via OXLINT_TSGOLINT_PATH
  • Added comprehensive test coverage for the new configuration option

Reviewed changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
editors/vscode/package.json Added oxc.path.tsgolint configuration property and restricted configuration
editors/vscode/client/VSCodeConfig.ts Added binPathTsGoLint property and methods to manage tsgolint binary path
editors/vscode/client/ConfigService.ts Added getTsGoLintServerBinPath() method to resolve tsgolint binary path
editors/vscode/client/tools/lsp_helper.ts Updated runExecutable() to accept and set tsgolintPath via environment variable
editors/vscode/client/tools/linter.ts Modified linter initialization to retrieve and pass tsgolint path to executable
editors/vscode/tests/VSCodeConfig.spec.ts Added test coverage for tsgolint configuration in VSCodeConfig
editors/vscode/tests/ConfigService.spec.ts Added comprehensive tests for getTsGoLintServerBinPath() method

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copy link
Contributor

@camc314 camc314 left a comment

Choose a reason for hiding this comment

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

Looks good to me. Copilot's comments about casing are valid.

@camc314 camc314 requested a review from Sysix December 16, 2025 11:47
@ColemanDunn
Copy link
Contributor Author

Looks good to me. Copilot's comments about casing are valid.

I was thinking the same thing before I pushed but there are 100+ matches of both cases (casings?) in the codebase and after checking they seemed to match the context in which they are placed. Happy to switch it though. I got the impression that copilot was suggesting the opposite casing of the respective contexts (TsGoLint in code related text, tsgolint in comments and otherwise)

@camc314
Copy link
Contributor

camc314 commented Dec 16, 2025

lol, I see you're point.

@Sysix does it make sense for this to be Tsgolint rather than TsGoLint ?

Co-authored-by: Copilot <[email protected]>
Signed-off-by: ColemanDunn <[email protected]>
@ColemanDunn
Copy link
Contributor Author

ColemanDunn commented Dec 16, 2025

Oh oops before you made that comment I already committed this one just fyi haha: 3fbc466

Copy link
Member

@Sysix Sysix left a comment

Choose a reason for hiding this comment

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

does it make sense for this to be Tsgolint rather than TsGoLint ?

I do not mind how it is written in the code. The important part is the user configuration oxc.path.tsgolint, which should reflect the npm package name :)

ColemanDunn and others added 5 commits December 16, 2025 14:44
Co-authored-by: Alexander S. <[email protected]>
Signed-off-by: ColemanDunn <[email protected]>
… I change casing on because it breaks the references in the test
The `getTsGoLintServerBinPath` method and its associated tests have been removed.
This functionality is no longer needed as tsgolint is being deprecated.
@ColemanDunn
Copy link
Contributor Author

Oops the trailing comma from the suggested change failed a bunch of stuff. Just pushed the fix.

@Sysix
Copy link
Member

Sysix commented Dec 16, 2025

Thank you for the work!
Do not worry when VSCode CI is failing, I think we broke the main branch >.<

Copy link
Contributor

@camc314 camc314 left a comment

Choose a reason for hiding this comment

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

Thank you!

@camc314 camc314 merged commit ae1e5bc into oxc-project:main Dec 17, 2025
18 checks passed
overlookmotel added a commit that referenced this pull request Dec 19, 2025
# Oxlint
### 🚀 Features

- 6cc3fdf linter/no-inferrable-types: Implement fixer (#17090) (camc314)
- 2067997 linter/no-negation-in-equality-check: Implement suggestion
(#17084) (camc314)
- 552f9ef vscode: Auto-generate VSCode README configuration from
package.json (#16970) (Copilot)
- 9190c4b linter/no-unnecessary-array-flat-depth: Implement fixer
(#17057) (camc314)
- ed789de linter/misrefactored-assign-op: Implement fixer (#17056)
(camc314)
- a0f74a0 linter/config: Allow aliasing plugin names to allow names the
same as builtin plugins (#15569) (Cameron)
- a43d251 linter/plugins: `RuleTester` support `languageOptions.globals`
(#17009) (overlookmotel)
- 35070d9 linter/bad-bitwise-operator: Implement fixer (#17006)
(camc314)
- 322d995 linter/prefer-enum-initializers: Implement fixer (#17004)
(camc314)
- ae1e5bc vscode: Add support for tsgolint binary configuration (#16921)
(ColemanDunn)
- 3bfe31e linter/eslint-plugin-vitest: Add prefer-called-with as vitest
compatible jest rule (#16993) (Said Atrahouch)
- 0cd075f linter/eslint-plugin-jest: Add fix capabilities to
prefer-called-with rule (#16987) (Said Atrahouch)
- 357564b linter: Add options for
`typescript/require-array-sort-compare` rule. (#16980) (connorshea)
- 2b0ffba linter: Add options for
`typescript/no-meaningless-void-operator` rule. (#16981) (connorshea)
- 8bc4287 linter/plugins: Validate options against schema (#16974)
(overlookmotel)
- fdc7d08 linter: Implement eslint/capitalized-comments (#16896) (Tu
Shaokun)
- f8b6561 linter: Add support for `test.for` in vitest (#16925)
(camchenry)
- 7ee0379 linter/eslint-plugin-vitest: Implement prefer-spy-on (#16426)
(Said Atrahouch)
- fc96ee0 linter: Implement jest/prefer-to-have-been-called-times
(#16938) (秦宇航)
- 291b57b ast_tools: Generate TS declaration files for deserializer and
walk files (#16912) (camc314)
- e31da2a linter: Implement jest/perfer-to-have-been-called (#16899)
(秦宇航)
- 1a31306 linter/eslint-plugin-vitest: Add require-hook as vitest
compatible jest rule (#16880) (Said Atrahouch)
- cd3db21 linter: Add ignoredTypeNames option to no-base-to-string rule
(#16898) (camc314)
- 763b25a linter: Implement eslint/no-inline-comments (#16885) (Tu
Shaokun)

### 🐛 Bug Fixes

- fb9e193 linter: OOM problems with custom plugins (#17082)
(overlookmotel)
- 005ec25 linter: Permit `$schema` `.oxlintrc.json` struct (#17060)
(Copilot)
- fd03131 linter/plugins: Handle plugin names containing slashes
(#17073) (overlookmotel)
- b2a4fac linter/plugins: Error if plugin name alias is not normalized
(#17071) (overlookmotel)
- e046c4e linter/no-misused-spread: Add rule options support (#17054)
(camc314)
- 5c1a9e0 linter/no-deprecated: Add rule options support (#17053)
(camc314)
- 8c9cafe linter: `import/consistent-type-specifier-style`: add support
for declaration files (#16979) (camchenry)
- dab4780 linter/no-empty-pattern: Misleading help message for arrays
(#17039) (Copilot)
- 67f8c5d linter/plugins: Get correct plugin name in all cases (#17033)
(overlookmotel)
- 674dab9 linter/plugins: Fix indentation in error message (#17018)
(overlookmotel)
- 6524f72 linter/plugins: Add `@types/node` dev dependency to `oxlint`
package (#17016) (overlookmotel)
- 7a35513 linter/plugins: Better error for `null` in `globals` in
`RuleTester` (#17011) (overlookmotel)
- 42603ba linter/plugins: Always define `languageOptions.globals`
(#17008) (overlookmotel)
- 4cdc2f8 linter: Fix VITEST override rule list and add test for
alphabetizing the two lists (#16975) (Connor Shea)
- e466562 linter/consistent-type-definitions: Handle parenthesized types
in rule (#16998) (camc314)
- fce267c linter: Correct vitest plugin source to be
`@vitest/eslint-plugin` (#16976) (connorshea)
- 477bb57 linter: Fix `vitest/no-restricted-vi-methods` and add tests
for it. (#16971) (connorshea)
- 7d6974d linter: Ignore oxlint directive comments in
capitalized-comments (#16989) (Tu Shaokun)
- 23ac6b1 linter/plugins: Apply defaults from `meta.schema` to options
(#16930) (overlookmotel)
- 2f946cf linter/plugins: Error if `defaultOptions` is not
JSON-serializable (#16959) (overlookmotel)
- d8b8a57 linter/plugins: Freeze whole of merged options (#16958)
(overlookmotel)
- d446c43 linter: Prevent extra fields from being present on oxlint
config file (#16874) (connorshea)
- b845871 linter/plugins: Correctly handle object with `__proto__` keys
in options merging (#16928) (overlookmotel)
- c897794 linter: Fix eslint/sort-imports allowSeparatedGroups not
working with single empty line (#16012) (Duc Nghiem Xuan)
- 0c347a1 linter/array-type: Handle satisfies expression (#16903)
(camc314)

### ⚡ Performance

- 70d853c linter: Avoid cloning source text when cloning AST into
fixed-size allocator (#17088) (overlookmotel)
- 4d389f7 linter: Less bounds checks in `normalize_plugin_name` (#17030)
(overlookmotel)
- fd8e9c6 linter/plugins: Speed up cloning JSON objects (#16997)
(overlookmotel)
- d77e22d linter/plugins: Use `DEFAULT_OPTIONS` for rules with empty
array as default options (#16913) (overlookmotel)

### 📚 Documentation

- 6d053b4 linter: Fix typo in doc comment (#17091) (overlookmotel)
- b5f3c91 linter: Document intentional exclusion of ignoreCase option in
jsx-no-duplicate-props (#17046) (Copilot)
- a0bf5d8 linter: Fix the config option docs for no-inline-comments
rule. (#16983) (connorshea)
- ca26a11 linter/plugins: Fix typo in doc comment (#16966)
(overlookmotel)
- 3183bf8 linter/plugins: Fix typo in JSDoc comment (#16900)
(overlookmotel)
# Oxfmt
### 🚀 Features

- 15dfb55 oxfmt: Respect single nearest `.editorconfig` (#17043)
(leaysgur)
- 8c33ff4 oxfmt: Expose Node.js API: `format(fileName, sourceText,
options?)` (#16939) (leaysgur)

### 🐛 Bug Fixes

- d340c87 oxfmt: Update api `FormatOptions` type with `& Record<string,
unknown>` (#17036) (leaysgur)
- 827a256 oxfmt: Place ignorePatterns at bottom of JSON in --migrate
prettier (#16926) (Boshen)

Co-authored-by: overlookmotel <[email protected]>
@ColemanDunn
Copy link
Contributor Author

Well this is embarrassing 😅

Screenshot 2025-12-19 at 3 06 36 PM

Looking into it. Any pointers to the right direction would be appreciated!

@camc314
Copy link
Contributor

camc314 commented Dec 19, 2025

Well this is embarrassing 😅

Screenshot 2025-12-19 at 3 06 36 PM Looking into it. Any pointers to the right direction would be appreciated!

try an absolute path? we should improve logging here though

@ColemanDunn
Copy link
Contributor Author

try an absolute path?

That worked!

we should improve logging here though

I was thinking the same thing

@camc314
Copy link
Contributor

camc314 commented Dec 23, 2025

Well this is embarrassing 😅

Screenshot 2025-12-19 at 3 06 36 PM Looking into it. Any pointers to the right direction would be appreciated!

I just looked at this message again, and the error message implies the OXLINT_TSGOLINT_PATH env var wasn't set - i guess a restart meant it was picked up correctly?

qinyuhang pushed a commit to qinyuhang/oxc that referenced this pull request Jan 22, 2026
…ect#16921)

PR to address this issue:
oxc-project#16788

I used cursor ask, plan, and agent mode to familiarize myself with the
code and implement the changes.

AI summary of changes:

- Introduced new configuration option `oxc.path.tsgolint` in
`package.json`.
- Updated `VSCodeConfig` to handle the new `tsgolint` binary path.
- Enhanced `ConfigService` to retrieve the `tsgolint` binary path.
- Modified `runExecutable` to accept `tsgolintPath` as an argument.
- Updated linter to utilize the `tsgolint` binary path.
- Added tests for `tsgolint` configuration in `VSCodeConfig` and
`ConfigService`.

This change allows users to specify a custom path for the `tsgolint`
binary, improving flexibility in the development environment.

---------

Signed-off-by: ColemanDunn <[email protected]>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Copilot <[email protected]>
Co-authored-by: Alexander S. <[email protected]>
Co-authored-by: Cameron <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-editor Area - Editor and Language Server C-enhancement Category - New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

Comments