Skip to content

v0.7.0

Latest

Choose a tag to compare

@fansenze fansenze released this 16 Jul 09:19

Highlights

Closer ESLint compatibility

Global declarations from languageOptions.globals and /* global */ comments are now handled consistently across native rules. Target discovery, .gitignore behavior, and recommended presets for JavaScript, TypeScript, React, import, promise, and Unicorn are also aligned more closely with upstream behavior.

Faster linting and LSP feedback

Config discovery now runs in Go, source snapshots are reused across programs, ESLint-plugin pre-pass work is parallelized, single-file LSP linting targets files directly, and comment scans are shared across rules—reducing repeated work, especially in large repositories.

What's Changed

New Features 🎉

  • feat(rule): add jsonschema-based options schema compiler by @swwind in #1222
  • feat(eslint-plugin-jest): add prefer-comparison-matcher rule by @eryue0220 in #1236
  • feat: add ctx.Globals API for native rules to read declared globals by @swwind in #1238
  • feat(eslint-plugin-jest): add no-restricted-jest-methods rule by @eryue0220 in #1224
  • feat(rules): align jsx-no-undef, no-shadow, and no-label-var with ESLint global context by @swwind in #1249
  • feat: expose global declaration metadata to rules by @fansenze in #1253
  • feat: port rule require-number-to-fixed-digits-argument by @Ling-yunchi in #1250
  • feat: add core no-redeclare rule by @fansenze in #1241
  • feat: port rule require-array-join-separator by @Ling-yunchi in #1255
  • feat: port some rules to ctx.Globals off-setting by @swwind in #1251
  • feat: port remaining rules to ctx.Globals API by @swwind in #1269
  • feat: port no-alert, no-implicit-coercion, no-useless-backreference to ctx.Globals by @swwind in #1273
  • feat: implement schema-driven rule options framework by @swwind in #1243
  • feat: port rule no-restricted-globals by @swwind in #1268
  • feat(eslint-plugin-jest): add no-interpolation-in-snapshots rule by @eryue0220 in #1284

Performance 🚀

  • perf: reuse source snapshots across programs by @fansenze in #1259
  • perf(lsp): target single-file lint directly by @fansenze in #1261
  • perf: reduce executed rule collection contention by @fansenze in #1272
  • perf: parallelize eslint-plugin pre-pass and cache global ignore patterns in GetConfigForFile by @swwind in #1277
  • perf: add ctx.Comments to avoid repeated full-file comment scans by @swwind in #1281

Bug Fixes 🐞

  • fix: constructor-super false positives in branching/loop/try control flow by @swwind in #1244
  • fix: no-sparse-arrays should not flag destructuring assignment targets by @swwind in #1242
  • fix(lsp): preserve newer document content on save by @fansenze in #1252
  • fix: update require-number rule options signature by @fansenze in #1257
  • fix: align lint target discovery with files config by @fansenze in #1227
  • fix: unify CLI, API, and LSP ignore semantics by @fansenze in #1258
  • fix: scope gitignore collection to config directories by @fansenze in #1274
  • fix: filter on earlier selector no longer defeats later, more specific naming-convention selector by @swwind in #1275
  • fix: naming-convention class selector must not infer names from anonymous class expressions by @swwind in #1278
  • fix(vscode): complete multi-root lifecycle ownership by @fansenze in #1289
  • fix: align JavaScript preset with upstream by @fansenze in #1286
  • fix(website): polyfill Node buffer module by @elecmonkey in #1299
  • fix: align Unicorn preset with upstream by @fansenze in #1292
  • fix: align React preset with upstream by @fansenze in #1291
  • fix: align promise preset with upstream by @fansenze in #1290
  • fix: align TypeScript preset with upstream by @fansenze in #1287
  • fix: align import preset with upstream by @fansenze in #1288

Refactor 🔨

  • refactor(rule): migrate Run to ESLint-style options []any by @swwind in #1248
  • refactor(cli): extract output reporting by @fansenze in #1267
  • refactor: move config discovery to Go by @fansenze in #1276
  • refactor: remove duplicate JS config filename list by @fansenze in #1285

Other Changes

  • ci: increase golangci-lint timeout to 15 minutes by @fansenze in #1246
  • test(vscode): await extension readiness before suites by @fansenze in #1247
  • test: cover symlinked working directories by @fansenze in #1260
  • test(vscode): stabilize code-action-on-save startup by @fansenze in #1266
  • test(vscode): harden extension CI against code-action races by @fansenze in #1282
  • chore: sync typescript-go submodule to 448614f8f by @fansenze in #1283
  • test: make IPC CLI output capture deterministic by @fansenze in #1298

New Contributors

Full Changelog: v0.6.5...v0.7.0