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-matcherrule 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-methodsrule 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-snapshotsrule 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
classselector 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
- @Ling-yunchi made their first contribution in #1250
Full Changelog: v0.6.5...v0.7.0