# Changelog All notable changes to this package will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0). ## [1.73.0] - 2026-07-06 ### ๐Ÿš€ Features - 7db7a29 allocator: Add `ReplaceWith` trait (#24012) (overlookmotel) - a2c97f3 linter/unicorn: Implement `explicit-timer-delay` rule (#23612) (Mikhail Baev) - 85735cb linter/unicorn: Implement `no-confusing-array-with` rule (#23638) (Shekhuโ˜บ๏ธ) - cb4fbb9 linter/eslint: Implement no-unreachable-loop rule (#23975) (Todor Andonov) - dc32112 linter/eslint/no-constant-binary-expression: Check relational comparisons (#24088) (camc314) - 439c344 linter/jsdoc: Added missing options to `jsdoc/require-param` rule (#23364) (kapobajza) - 62af717 linter/unicorn/filename-case: Add `lowercase` and `screamingSnakeCase` (#24045) (Boshen) - d963967 linter/unicorn/no-array-sort: Add `allowAfterSpread` option (#24043) (Boshen) - 0a75682 linter: Add per-rule timings for type-aware linting (#22488) (camchenry) - 743e222 linter/react: Add `disallowedValues` option for `forbid-dom-props` rule (#23970) (Mikhail Baev) ### ๐Ÿ› Bug Fixes - 7b80010 linter: Use direct binding symbol ids (#24216) (camc314) - 8f94b49 linter/import/no-duplicates: Don't flag a type-only import beside a side-effect import (#24030) (Boshen) - d8c3fee linter/react/rules-of-hooks: Flag `useEffectEvent` escapes (#23764) (Rayan Salhab) - 0a7312b linter/no-deprecated-functions: Map `require.requireActual` to `jest.requireActual` (#23627) (Jerry Zhao) - d9e3ab3 linter/eslint/no-useless-return: Handle switch case continuation (#23984) (camc314) - 122d112 linter/eslint/no-restricted-imports: Flag dynamic import() expressions (#24029) (Boshen) - 59b6b83 linter: Avoid `OnceLock` re-entry on cyclic `export *` re-exports (#23632) (Jerry Zhao) - dd09af0 linter/import/namespace: Avoid panic on destructuring of an unresolvable namespace re-export (#23626) (Jerry Zhao) - bdb51c7 linter/jest/prefer-ending-with-an-expect: Validate config patterns (#24122) (camc314) - e383843 linter/unicorn/prefer-modern-dom-apis: Skip fixer for non identifier arguments (#23630) (Jerry Zhao) - 0ac4c83 linter: Detect circular config extends (#24115) (camc314) - bae1edf linter/import/namespace: Check namespace imports after named imports (#24094) (camc314) - cd8fdfe linter/eslint/no-eval: Recognize Array.from family thisArg (#24091) (camc314) - 851ee43 linter/eslint/no-eval: Resolve this binding for functions returned from an IIFE (#23643) (Jerry Zhao) - 002ab35 linter/unicorn: Avoid prefer-array-find rest destructuring false positive (#23654) (ColemanDunn) - 01c8775 linter/unicorn/filename-case: Keep digits attached in screamingSnakeCase (#24056) (Boshen) - f256941 linter: Recognize `@effect/vitest` as a vitest import source (#24025) (Boshen) - 73eeb1d linter/import/extensions: Honor per-extension `never` for explicit extensions (#24031) (Boshen) - d4ebe1f linter: Reject non-object oxlint config files (#24026) (Boshen) - 45d607d linter/react/forbid-component-props: Make allow/disallow lists optional in schema (#24024) (Boshen) - 54076ad linter/unicorn/no-array-for-each: Suggest entries loop for index callbacks (#24004) (camc314) - d057736 linter/jsdoc: Avoid param root underflow (#23945) (camc314) - 29c76bf linter/unicorn/prefer-at: Skip object numeric-key access (#23909) (Gaurav Dubey) ### โšก Performance - 657a8fc linter/oxc/bad-array-method-on-arguments: Only run on member expressions instead of all identifiers (#24164) (camchenry) - 073d9e7 linter/eslint/prefer-rest-params: Run on functions instead of all identifiers (#24163) (camchenry) - e5a4162 linter/jest/no-confusing-set-timeout: Early exit fast path (#24092) (camc314) - bca7ce5 linter: Only run react-perf rules on JSX attribute nodes (#24083) (camchenry) - 6881bf6 linter: Compute `apply_overrides` rule set lazily (#23648) (Jerry Zhao) - 911c106 linter/eslint/no-obj-calls: Use resolved reference instead of scope walk (#23895) (Marius Schulz) - dc8fd9a linter/unicorn/prefer-dom-node-text-content: Change dispatch to run only on less common node types (#23897) (Connor Shea) - fdbd34d linter/eslint/no-useless-call: Fast-path static callees (#24077) (camc314) - b1be114 linter/import/extensions: Skip empty config and borrow extensions (#24075) (camc314) - 4781b2d linter/eslint/no-obj-calls: Use direct global matches (#24076) (camc314) - e6cee89 linter: Avoid node-chain allocation for non-Jest calls (#23907) (Yagiz Nizipli) - 30dc517 linter/typescript/no-restricted-types: O(1) banned-type lookups (#23827) (Yagiz Nizipli) ### ๐Ÿ“š Documentation - 6ca9125 linter/typescript: Clarify consistent-type-imports behavior (#23972) (camc314) ## [1.72.0] - 2026-06-29 ### ๐Ÿ’ฅ BREAKING CHANGES - 88f4455 str: [**BREAKING**] `Str` and `Ident` methods take `&GetAllocator` (#23781) (overlookmotel) ### ๐Ÿš€ Features - f2091b3 ast: Unify old and new `AstBuilder`s (#23875) (overlookmotel) - 1c8f50c linter: Add schema for `eslint/no-restricted-import` (#23642) (Sysix) ### ๐Ÿ› Bug Fixes - 7cb85c4 linter/eslint/no-negated-condition: Add autofix for negated conditions (#23825) (Yagiz Nizipli) - d891990 linter/jsx-a11y/role-supports-aria-props: Ignore nullish prop values (#23865) (Mikhail Baev) - 94b6599 linter: Deduplicate missing plugin errors (#23853) (camc314) - eff3eff linter/oxc/branches-sharing-code: Avoid else-if false positives (#23843) (camc314) - 2a2d3b9 linter/eslint/prefer-destructuring: Skip `AssignmentExpression` autofixes (#23818) (camc314) - ddc24ae linter/eslint/id-length: Respect checkGeneric for mapped type keys (#23802) (bab) - cd89202 linter/react/exhaustive-deps: Skip wrapper expression when analyzing hook initializers (#23793) (camc314) - 20e8285 linter/unicorn/prefer-native-coercion-function: Allow ts type predicates (#23774) (camc314) - 368fda7 linter/eslint/no-warning-comments: Avoid dropping generated regex patterns (#23741) (camc314) - ce44fbd linter/valid-title: Escape disallowed words regex (#23742) (camc314) - 3100d11 linter/prefer-called-exactly-once-with: Avoid out-of-bounds slice panic at end of file (#23625) (Jerry Zhao) - 742be36 refactor/node/handle-callback-err: Reject invalid regex config (#23740) (camc314) - d7be179 linter/eslint/no-restricted-globals: Handle shadowed locals (#23736) (camc314) - b3b1ff8 linter/vitest/expect-expect: Handle global vitest detection correctly (#23734) (camc314) ### โšก Performance - 68f9472 linter/jsx-a11y: Skip lowercasing non-aria attribute names (#23906) (Lawrence Lin) - b9312b4 linter/unicorn/prefer-export-from: Use keyed binding lookup (#23893) (Marius Schulz) - cd5204e linter/typescript/no-unsafe-declaration-merging: Use keyed binding lookup (#23894) (Marius Schulz) - e948498 linter/eslint/prefer-named-capture-group: Only dispatch for relevant node types (#23868) (Connor Shea) - 4ac7a8e linter/eslint/max-depth: Derive node types (#23896) (Connor Shea) - daeed09 linter/eslint/no-restricted-globals: Only scan unresolved references (#23890) (camc314) - e808514 linter/jest-vitest: Speed up no-standalone-expect (#23883) (camc314) - 8b165e5 linter/react/exhaustive-deps: Skip non-reactive calls early (#23882) (camc314) - 54005e7 linter/eslint/no-unused-vars: Precompute exported bindings (#23881) (camc314) - 9bc2f8c linter/unicorn/prefer-number-properties: Speed up global checks (#23880) (camc314) - 4ff104f linter: Optimize `require-hook` and `prefer-mock-*` rules to run on specific node types (#23871) (Connor Shea) - cc2213b linter: Run `no-underscore-dangle` only when relevant node types are present (#23867) (Connor Shea) - 3e55c21 linter/promise/always-return: Narrow to function node types (#23878) (Connor Shea) - 7136182 linter/jest-vitest: Speed up no-commented-out-tests (#23864) (camc314) - f138264 linter/eslint/no-script-url: Match javascript: prefix without allocating (#23861) (Lawrence Lin) - 7ef6895 linter/react/no-array-index-key: Delay index symbol lookup (#23857) (camc314) - 26bc171 linter/react/no-array-index-key: Match callback methods directly (#23856) (camc314) - 44fbbda linter/jsx-a11y/interactive-supports-focus: Check cheap conditions first (#23854) (camc314) - 84a5aa3 linter/eslint/no-extend-native: Skip lowercase references early (#23851) (camc314) - 88a74b2 linter/eslint/no-nonoctal-decimal-escape: Scan decimal escapes as bytes (#23850) (camc314) - fca69a8 linter: Skip traversal without this expressions (#23845) (camc314) - 838fd63 linter: Reduce preallocation for per-file diagnostics `Vec` (#23705) (Marius Schulz) - 417b506 linter/typescript/array-type: Remove full source text clone (#23751) (Marius Schulz) ### ๐Ÿ“š Documentation - 57e4469 linter/unicorn: Update prefer-dom-node-text-content rationale (#23933) (Mikhail Baev) - 3d61dea all: Correct capitalization in comments (#23887) (overlookmotel) ## [1.71.0] - 2026-06-22 ### ๐Ÿ’ฅ BREAKING CHANGES - 36009dd allocator: [**BREAKING**] `GetAllocator::allocator` take `&self` (#23676) (overlookmotel) ### ๐Ÿš€ Features - ff65285 linter: `no-restricted-globals` add missing upstream options (#23663) (Sysix) - 7b8bd89 linter/typescript: Implement suggestion for `no-unnecessary-type-constraint` rule (#23646) (Mikhail Baev) - 0dc2405 linter: Add schema for `eslint/no-restricted-properties` (#23619) (Sysix) - b638d0e linter: Add schema for `node/callback-return` (#23615) (Sysix) - eb8bedc linter: Add schema for `import/extensions` (#23557) (WaterWhisperer) - 46f3625 linter: Implement node/no-sync rule (#23589) (fujitani sora) - b01739a linter: Add schema for `unicorn/numeric-separators-style` (#23554) (Mikhail Baev) - 68afd2a linter/node: Implement `no-mixed-requires` rule (#23539) (fujitani sora) - 59d8893 linter: `unicorn/numeric-separators-style` support missing options (#23524) (Sysix) - a421215 linter: Add schema for `eslint/prefer-destructuring` (#23410) (WaterWhisperer) - 84438be linter/jsdoc: Added missing options to `require-param-description` (#23416) (kapobajza) - c145b72 linter/jsdoc/require-param-type: Implement fixer (#23513) (camc314) - 51910df linter/jsdoc: Add missing options to `require-param-type` rule (#23418) (kapobajza) - e90925f linter/unicorn: Implement prefer-number-coercion rule (#23497) (Shekhuโ˜บ๏ธ) - dd1c866 linter/vue: Implement no-async-in-computed-properties rule (#23493) (bab) - b02444e linter: Add schema for `react/jsx-no-script-url` (#23475) (WaterWhisperer) - a8dce46 linter/unicorn: Implement `max-nested-calls` rule (#23461) (arieleli01212) ### ๐Ÿ› Bug Fixes - b1948a1 linter/radix: Avoid panic on `parseInt` with a spread radix argument (#23623) (Jerry Zhao) - f28ccfd linter/prefer-query-selector: Use a compound selector for multiple classes (#23628) (Jerry Zhao) - 13f2970 linter/prefer-numeric-literals: Avoid panic on `parseInt` with a spread radix argument (#23624) (Jerry Zhao) - 57612b3 linter: Report invalid capitalized-comments ignore patterns (#23608) (camc314) - 800ee2a linter/consistent-vitest-vi: Preserve import aliases when rewriting the import (#23568) (Yunfei He) - f78b5e1 linter/consistent-indexed-object-style: Don't leak a stray comma into the value type (#23566) (Yunfei He) - 6b104e8 linter/radix: Detect a trailing comma only after the argument (#23569) (Yunfei He) - 2de20cb linter/unicorn/prefer-at: Correct two-argument `slice().pop()` index (#23565) (Yunfei He) - de778ec linter: `unicorn/numeric-separators-style` preserve dot for floats without decial part (#23553) (Sysix) - 651027c linter/curly: Remove only the block's own braces (#23580) (Yunfei He) - 687e835 linter/array-type: Parenthesize a conditional-type element (#23579) (Yunfei He) - 9c80dff linter/unicorn/no-unnecessary-await: Don't paste operators into invalid syntax (#23556) (Yunfei He) - 46e1463 linter/no-compare-neg-zero: Delete the `-` of a parenthesized `-0` (#23578) (Yunfei He) - d172a97 linter/unicorn/prefer-math-trunk: Skip fixer for LHS with side effects (#23548) (camc314) - 1c3a9bd linter/unicorn/prefer-negative-index: Don't report `Array#with` (#23518) (Yunfei He) - c17db5d linter/unicorn/prefer-spread: Don't report `.slice()` on non-array receivers (#23520) (Yunfei He) - 9cd0c2f linter/unicorn/prefer-date-now: Keep `BigInt` wrapper when fixing `BigInt(new Date())` (#23523) (Yunfei He) - 16bb890 linter/unicorn/prefer-array-flat: Skip non-array `flatMap` receivers (#23527) (Yunfei He) - 3e6f90f linter/unicorn/no-zero-fractions: Insert a space after any preceding keyword (#23529) (Yunfei He) - 79a7d69 linter/eslint/no-useless-assignment: Handle exceptional control-flow paths (#23544) (camc314) - e8e2741 linter/unicorn/prefer-math-min-max: Preserve operand source text in the fix (#23533) (Yunfei He) - f592154 linter/react/display-name: Ignore lowercase jsx helpers (#23510) (camc314) - df7612f linter/jsx-a11y/no-noninteractive-element-to-interactive-role: Allow custom roles config (#23507) (camc314) - 924b931 linter/unicorn/prefer-at: Handle checking all indexes correctly (#23504) (camc314) - ca9686b linter/unicorn/prefer-at: Report zero indexes (#23503) (camc314) - e96a4e3 linter/unicorn/explicit-length-check: Ignore optional chains (#23487) (camc314) - a303c23 linter/jsx-a11y: Align `anchor-is-valid` config with upstream (#23446) (camc314) - f27a6d1 linter: False positives with non `*.setTimeout` call in `no-confusing-set-timeout` (#23444) (camc314) ### โšก Performance - 8e0dd65 linter: Emit RuleEnum dispatch match once instead of per timing branch (#23499) (Boshen) - d5c7d99 linter/expect-expect: Avoid recompiling matches on every traversal (#23593) (camc314) - f191520 linter/no-useless-spread: Avoid collecting `Vec` before iterating (#23546) (camc314) - 79340d1 linter: Stream React lifecycle ancestors (#23545) (camc314) - 1923169 linter/eslint/max-classes: Gate rule by rule config threshold (#23509) (camc314) - 3f60de3 linter: Use bucketed dispatch for all files (#23452) (camc314) - 3699971 linter/typescript/no-unnecessary-parameter-property-assignment: Avoid temporary vec allocations (#23492) (camc314) - 4ef0ceb linter/eslint/no-useless-switch-case: Avoid temporary vec allocations (#23489) (camc314) - 2e09dd3 linter: Avoid JSX fragment child collections (#23486) (camc314) - f30a64c linter/oxc/branches-sharing-code: Borrow shared branch suggestion text (#23484) (camc314) - 097a317 linter/eslint/no-control-regex: Retain control regex candidates in place (#23482) (camc314) - b3a093d linter: Reuse rule dispatch buckets (#23450) (camc314) ### ๐Ÿ“š Documentation - b50bf4d linter: Remove manually written options doc for `eslint/arrow-body-style` (#23490) (Mikhail Baev) ## [1.70.0] - 2026-06-15 ### ๐Ÿš€ Features - 5e1627d linter/unicorn: Flag all Error() calls without new in `throw-new-error` (#23363) (Cason Kervis) - 2e8bda4 linter/vue: Implement no-dupe-keys rule (#23350) (bab) - 1490a0a linter/react: Implement react-compiler rule (#23202) (Boshen) - dd560ae linter/unicorn: Implement `no-array-fill-with-reference-type` rule (#23397) (Mikhail Baev) - af36c2f linter: Add schema for `react/jsx-curly-brace-presence` (#23400) (WaterWhisperer) - 47d34a3 linter: Add schema for `react/jsx-handler-names` (#23393) (WaterWhisperer) - f4250d0 linter: Add schema for `unicorn/import-style` (#23386) (WaterWhisperer) - 30c74ce linter: Add schema for `jsx_a11y/no-noninteractive-element-to-interactive-role` (#23384) (Sysix) - cfbe8dc linter: Add schema for `jsx_a11y/no-interactive-element-to-noninteractive-role` (#23382) (WaterWhisperer) - d15b7ff linter: Add schema for `typescript/no-restricted-types` (#23381) (WaterWhisperer) - 028a811 linter: Add schema for `jsx-a11y/media-has-caption` (#23377) (Sysix) - b3b1038 linter: Add schema for `jsx-a11y/label-has-associated-control` (#23376) (Sysix) - 7ada6b2 linter: Add schema for `jsx_a11y/no-distracting-elements` (#23379) (WaterWhisperer) - ee3dd49 linter: Add schema for `jsx-a11y/img-redundant-alt` (#23374) (Sysix) - df5f8dd linter: Add short descriptions to most lint rules. (#23365) (Connor Shea) - e3fd735 linter: Add schema for `jsx_a11y/alt-text` (#23369) (Sysix) - 0f2fff4 linter: Add schema for `react/exhaustive-deps` (#23372) (Mikhail Baev) - e3e4e10 linter: Add schema for `react_perf/jsx-no-new-object-as-prop` (#23368) (Mikhail Baev) - 9366d44 linter: Add schema for `unicorn/prefer-at` (#23366) (WaterWhisperer) - f57b55d linter: Add schema for `typescript/array-type` (#23355) (Sysix) - 0dcf912 linter: Add schema for `typescript/ban-ts-comment` (#23354) (Sysix) - 51fa83e linter: Add schema for `react/no-did-update-set-state` (#23357) (Mikhail Baev) - 59db0bd linter: Add schema for `consistent-generic-constructors` (#23353) (Sysix) - c4775c0 linter: Add schema for `typescript/consistent-type-assertions` (#23349) (Sysix) - 6e516f7 linter: Add schema for `typescript/consistent-type-imports` (#23348) (Sysix) - 012134d linter: Add schema for `react/jsx-no-target-blank` (#23345) (WaterWhisperer) - 0806aae linter: Add schema for `jsx_a11y/no-noninteractive-tabindex` (#23337) (Mikhail Baev) - 0708b5a linter: Add schema for `react/jsx-filename-extension` (#23315) (Mikhail Baev) - 150bce1 linter: Add schema for `typescript/no-empty-object-type` (#23309) (Sysix) - f9e36f1 linter: Add schema for `typescript/no-duplicate-type-constituents` (#23308) (Sysix) - 937accf linter: Add schema for `typescript/no-invalid-void-type` (#23307) (Sysix) - 3e042b9 linter: Add schema for `typescript/no-misused-promises` (#23306) (Sysix) - da212d1 linter: Add schema for `typescript/no-unnecessary-condition` (#23305) (Sysix) - f8f0d38 linter: Add schema for `typescript/parameter-properties` (#23304) (Sysix) - 2275fc7 linter: Add schema for `typescript/prefer-nullish-coalescing` (#23302) (Sysix) - d353858 linter: Add schema for `typescript/prefer-string-starts-ends-with` (#23301) (Sysix) - 03060f5 linter: Add schema for `typescript/triple-slash-reference` (#23300) (Sysix) - 6619cee linter: Add schema for `promise/param-names` (#23298) (Sysix) - 8bf108e linter: Add schema for `promise/catch-or-return` (#23297) (Sysix) - 48158d0 linter: Add schema for `vitest/consistent-each-for` (#23294) (Sysix) - 7e74c98 linter: Add schema for `vitest/consistent-test-filename` (#23293) (Sysix) - ff94d4a linter: Add schema for `vitest/consistent-vitest-vi` (#23292) (Sysix) - 2409a10 linter: Add schema for `vitest/prefer-import-in-mock` (#23291) (Sysix) - 3d782b7 linter: Add schema for `react/no-unstable-nested-components` (#23287) (Mikhail Baev) - 0a0bc2f linter/jsx-a11y: Add `allowedRedundantRoles` option to `no-redundant-roles` (#22820) (bab) - 80758a5 linter/vue: Implement no-side-effects-in-computed-properties rule (#23282) (bab) - e3869ac linter: Add schema for `react/no-object-type-as-default-prop` (#23279) (Mikhail Baev) - 4480609 linter: Add schema for `react/jsx-props-no-spreading` (#23276) (Mikhail Baev) - 08d68a5 linter/react: Implement `jsx-no-literals` rule (#23145) (kapobajza) - 9a2788b linter/unicorn: Implement `prefer-export-from` rule (#22935) (AliceLanniste) - bdb723c linter/unicorn: Implement prefer-single-call rule (#23235) (Yuzhe Shi) - 31543ed linter: Add schema for `vue/define-props-destructuring` (#23252) (Sysix) - 21b6c3d linter: Add schema for `oxc/no-async-endpoint-handlers` (#23251) (Sysix) - e77ff81 linter: Add schema for `unicorn/prefer-object-from-entries` (#23249) (Mikhail Baev) - bcac2d6 linter: Add schema for `jest/vitest/no-restricted-matchers` (#23247) (Sysix) - 539f036 linter: Add schema for `jest/vitest/no-restricted-*-methods` (#23246) (Sysix) - dd1b927 linter/vue: Implement require-default-prop rule (#22951) (bab) - 3f018e7 linter: Add schema for `unicorn/no-instanceof-builtins` (#23225) (Mikhail Baev) - 5b9a793 linter/react-perf: Support `nativeAllowList` config (#22996) (Cole Ellison) - b4e19d4 linter: Improve promise/catch-or-return termination diagnostics (#23218) (camc314) - 9b72a41 linter/promise/catch-or-return: Add support for `allowThenStrict` option (#23206) (camc314) - e0d0f78 linter: Verify promise/no-callback-in-promise schema (#23141) (beanscg) - 123d4f4 linter: Add schema for `jest/vitest/valid-expect` (#23185) (Sysix) - 46c8a21 linter: Add schema for `jest/vitest/require-top-level-describe` (#23184) (Sysix) - 41465cf linter: Add schema for `jest/vitest/prefer-snapshot-hint` (#23183) (Sysix) - d068b9b linter: Add schema for `jest/vitest/prefer-expect-assertions` (#23181) (Sysix) - 064a1ee linter: Add schema for `jest/prefer-ending-with-an-expect` (#23180) (Sysix) - d046797 linter: Add schema for `jest/vitest/no-standalone-expect` (#23179) (Sysix) - 137b9a6 linter: Add schema for `jest/vitest/no-large-snapshots` (#23178) (Sysix) - 0f3e4a5 linter: Add schema for `jest/vitest/no-hooks` (#23177) (Sysix) - 00244d8 parser: Report definite property initializer errors (#23160) (camc314) - cd0b384 linter: Add schema for `unicorn/explicit-length-check` (#23155) (Mikhail Baev) - 01b74c4 linter: Add schema for `jest/no-deprecated-functions` (#23136) (Sysix) - 9d6a387 linter: Add schema for `unicorn/catch-error-name` (#23137) (Mikhail Baev) - 0da8efa linter: Add schema for `jest/vitest/max-nested-describe` (#23131) (Sysix) - d71c9fd linter: Add schema for `eslint/no-use-before-define` (#23129) (Sysix) ### ๐Ÿ› Bug Fixes - 019be2e linter/unicorn: Align throw-new-error parity (#23437) (camc314) - b9e5e51 linter/jest: Validate no-restricted-jest-methods config (#23436) (camc314) - f302f41 linter: Normalize oxlint jsPlugin prefixes (#23335) (konh) - 2bdf8ce linter/jest: Validate no-restricted-matchers config (#23434) (camc314) - 5c2fb45 linter/eslint: Validate max-depth config (#23430) (camc314) - eafc280 linter/eslint: Validate no-unused-vars config (#23433) (camc314) - 25aebb0 linter/typescript: Validate no-empty-object-type config (#23432) (camc314) - 7cafe3b linter/unicorn: Validate catch-error-name config (#23431) (camc314) - af1b897 linter/unicorn: Validate prefer-object-from-entries config (#23429) (camc314) - 68d48fe linter/eslint: Validate max-classes-per-file config (#23428) (camc314) - 02932b6 linter/eslint: Validate `complexity` config (#23427) (camc314) - 375e574 linter/eslint: Use shared id-length regex config (#23426) (camc314) - ba3e2e0 linter/eslint: Preserve used imports in no-unused-vars fixer (#23425) (camc314) - 26ddac6 linter: Avoid config schema generation for `jsx_a11y/no-noninteractive-element-interactions` (#23385) (Sysix) - 40556ad linter: Parse `jsx-a11y/control-has-associated-label` config with `DefaultRuleConfig` (#23373) (Sysix) - dacbda8 linter/unicorn/prefer-string-starts-ends-with: Mark rule as deprecated (#23342) (camc314) - 71e9648 linter: Expose no-noninteractive-element-interactions schema (#23283) (camc314) - 4c4c19c linter: `no-noninteractive-element-interactions` fix default values (#23288) (Sysix) - e63a139 linter/jsx-a11y: Restore control label defaults (#22737) (konh) - 0e4e59f linter/jsx-a11y: No-redundant-roles attribute-aware implicit roles for ``, skip ancestor-conditional elements (#23015) (Gaurav Dubey) - 06e215e linter/vitest: Validate `consistent-each-for` config (#23278) (camc314) - cd278e1 linter/promise: Validate param-names config (#23277) (camc314) - 7f46013 linter/react/display-name: Handle default export function correctly (#23271) (camc314) - 22ff6a6 linter/unicorn: Deserialize filename-case config with serde (#23266) (camc314) - b644da0 linter/eslint: Add fixer for `sort_vars` (#23262) (Cason Kervis) - 778af4d linter/unicorn: Support array of patterns for `unicorn/filename-case` `ignore` option (#23260) (kapobajza) - 127fb2c linter: Deserialize rule config with serde for `unicorn/prefer-object-from-entries` (#23253) (Sysix) - f89b909 linter/react/jsx-no-target-blank: Handle compound conditions (#23245) (camc314) - c30419a linter/typescript: Deserialize rule config with serde for `consistent-generic-constructors` (#23238) (camc314) - 7d17d37 linter/react: Report invalid exhaustive-deps config (#23239) (camc314) - 1060186 linter/eslint: Add `deny_unknown_fields` to `prefer-destructuring` (#23237) (camc314) - fd2e4eb linter/react: Add `deny_unknown_fields` to `exhaustive-deps` (#23236) (camc314) - 6c3c904 linter/react/jsx-curly-brace-presence: Avoid false positive with comment within braces (#23234) (camc314) - 6c86d1c linter/react-perf: Correct nativeAllowList all schema (#23229) (camc314) - c393760 linter/react/rules-of-hooks: Align try/catch semantics (#23221) (camc314) - de2d23b linter/unicorn/prefer-dom-node-dataset: Preserve optional chaining in fixer (#23148) (Bruno Carvalho) - d7038de linter/react/exhaustive-deps: Ignore non `React` namespace hooks (#23175) (camc314) - 7111903 linter/react/exhaustive-deps: FP with wrapped literal expressions (#23172) (camc314) - 93326e7 linter/react: Align hook errors with anonomous async callbacks (#23158) (camc314) - 8f3db61 linter: Allow options for `eslint/capitalized-comments` (#23139) (Sysix) - f533565 linter: Support nofunc string option in no-use-before-define (#23115) (bab) ### โšก Performance - f09707e linter: `jest/no-deprecated-functions` store config version as `usize` (#23138) (Sysix) - da1a6c6 diagnostics: Migrate to allocation-optimized oxc-miette (#23094) (Boshen) ### ๐Ÿ“š Documentation - f682e25 linter: Remove manually written options doc for `eslint/prefer-arrow-callback` (#23438) (Mikhail Baev) - 64c942c linter: Remove manually written options doc for `eslint/no-sequences` (#23420) (Mikhail Baev) - d6d1189 linter: Add `short_descriptions` to more rules (#23417) (Connor Shea) - b979722 linter: Clarify valid-define-emits description (#23408) (camc314) - ccd0a69 linter: Clarify only-used-in-recursion description (#23407) (camc314) - b0fd30b linter: Clarify no-sync-scripts description (#23406) (camc314) - c23290d linter: Clarify no-cycle description (#23405) (camc314) - 3612e0b linter: Clarify no-nodejs-modules description (#23403) (camc314) - c67c5b1 linter: Clarify no-misused-new description (#23402) (camc314) - 88bf0bc linter: Clarify require-render-return description (#23401) (camc314) - 9fff263 linter: Add short descriptions to more rules that lacked them (#23389) (Connor Shea) - ac69042 linter: Add short_description fields to more lint rules (#23391) (Connor Shea) - 99a3c78 linter: Add info for more skipped rule schemas (#23380) (Sysix) - c966384 linter: Fix the example of `unicorn/prefer-string-replace-all` (#23367) (Liang) - 2120ecf linter: Describe problems on not verified rules schema (#23351) (Sysix) - 14abf32 linter/react-perf: Use autogenerated docs (#23227) (camc314) ## [1.69.0] - 2026-06-08 ### ๐Ÿš€ Features - e805174 linter: Add schema for `jest/vitest/max-expects` (#23105) (Sysix) - 7850577 linter: Add schema for `jest/vitest/expect-expect` (#23104) (Sysix) - 75f641a linter: Add schema for `jest/vitest/consistent-test-it` (#23103) (Sysix) - 5125f89 linter/unicorn: Support no-null `checkArguments` option (#23098) (camc314) - b8b9797 linter: Add schema for `import-max-dependencies` (#23096) (Sysix) - 65cb47a linter/eslint: Support no-unused-expressions `ignoreDirectives` option (#23097) (camc314) - f6c36d5 linter: Add schema for `import/prefer-default-export` (#23091) (Sysix) - 0d4a5d1 linter: Add schema for `eslint/sort-vars` (#23090) (Sysix) - fdb5bf5 linter: Add schema for `eslint/radix` (#23082) (Sysix) - 05b4dcf linter: Add schema for `eslint/prefer-const` (#23081) (Sysix) - 5a06c4d linter/vue: Implement next-tick-style rule (#23041) (Alex Peshkov) - e38a36a linter: Add schema for `eslint/operator-assignment` (#23080) (Sysix) - 907cee7 linter: Add schema for `eslint/no-warning-comments` (#23075) (Sysix) - 9470bb2 linter: Add schema for `eslint/no-unused-vars` (#23073) (Sysix) - 234b5cf linter: Add schema for `eslint/no-shadow` (#23072) (Sysix) - de0dd8b linter: Add schema for `eslint/no-restricted-exports` (#23020) (Sysix) - faa3e0d linter: Add schema for `eslint/no-param-reassign` (#23018) (Sysix) - dbc9c27 linter: Add schema for `eslint/no-magic-numbers` (#23017) (Sysix) - 38d3569 linter: Add schema for `eslint/no-inner-declarations` (#23016) (Sysix) - 008fa41 linter: Add schema for `eslint/no-constant-condition` (#22991) (Sysix) - ca44623 linter: Add schema for `eslint/no-empty-function` (#22988) (Sysix) - 43eb04d linter: Add schema for `eslint/id-match` (#22987) (Sysix) - a800f27 linter: Add schema for `eslint/capitalized-comments` (#22984) (Sysix) - 96e2d32 linter: Add schema for `eslint/id-length` (#22963) (Sysix) - 545493f linter: Add schema for `eslint/complexity` (#22960) (Sysix) - 5f0b558 linter: Add schema for `eslint/class-methods-use-this` (#22959) (Sysix) - 719b720 linter: Add schema for simple rule configurations (#22948) (Sysix) - fd00966 linter: Add right schema for `eslint/max-*` rules (#22923) (Sysix) - 1226d78 linter: Fill schema with rule configurations (#22907) (Sysix) - 8f423c1 linter/vue: Implement `require-direct-export` rule (#17623) (yefan) - 78e915b linter/vue: Implement no-reserved-props rule (#22914) (bab) - 0f200a9 linter/vue: Implement require-prop-types rule (#22083) (Alex Peshkov) - 5da9da9 linter/vue: Implement no-reserved-keys rule (#21780) (bab) - 75e14a8 linter/vue: Implement prop-name-casing rule (#22892) (bab) - 85efabf semantic: Make building the class table optional, off by default (#22862) (Boshen) ### ๐Ÿ› Bug Fixes - a49b0cf linter/no-map-spread: Remove ineffective autofix (#22956) (camc314) - cf53285 parser: Report reserved type-declaration names in the parser (#23035) (Boshen) - 0383e61 linter: Fix schema for rules without a config (#22946) (Sysix) - 4d722e0 parser: Report duplicate switch `default` clause in the parser (#23012) (Boshen) - 742fd0b linter/double-comparisons: Make fixer a suggestion (#22968) (camc314) - 93f4494 linter: Respect default child config plugin when extending parent config (#22903) (Sysix) - 594ed86 linter: Deny unknown options for some rules (#22924) (Sysix) - 3253038 linter/expect-expect: Align default rule options (#22890) (camc314) - bbe44ea linter: Respect default plugins from extended config (#22896) (Sysix) ### ๐Ÿ“š Documentation - 7b0380d linter: Remove preserve-caught-error note (#22994) (camc314) ## [1.68.0] - 2026-06-01 ### ๐Ÿš€ Features - e4b1f46 linter/typescript: Implement `method-signature-style` rule (#22679) (Mikhail Baev) - bc462ca linter/vue: Implement no-reserved-component-names rule (#22741) (bab) - ef9e751 linter/vue: Implement component-definition-name-casing rule (#22818) (bab) - d67f51a linter/vue: Implement require-prop-type-constructor rule (#22708) (bab) - 1444f82 linter/promise/spec-only: Add `Promise.try` to `Promise` static methods (#22812) (Ben Saufley) - 8422e8b linter/jsdoc: Implement `require-yields-description` rule (#22805) (Mikhail Baev) - fe93f97 linter/eslint: Implement `prefer-named-capture-group` rule (#22759) (Sebastian Poxhofer) - 1a7798b linter: Add suggestion for `unicorn/no-new-array` (#22682) (Sysix) ### ๐Ÿ› Bug Fixes - 760a9f9 linter: Report errors when writing to the filesystem (#22881) (camc314) - e5a2748 linter: Avoid no-unreachable false positive after conditional loop (#22869) (camc314) - 39d92d6 linter/arrow-body-style: Preserve comments within function (#22854) (Sysix) - 3d13e29 parser: Reject `declare` in an already-ambient context (TS1038) (#22850) (Boshen) - 5152854 parser: Reject statements in ambient contexts (TS1036) (#22849) (Boshen) - 2eafea6 parser: Reject function implementations in ambient contexts (TS1183) (#22845) (Boshen) - c645615 parser: Reject incompatible class member modifiers (#22843) (Boshen) - 4a1ca4a linter/export: Detect duplicate explicit exports (#22798) (camc314) - 0a9a735 linter/no-loop-func: Allow safe let closures (#22811) (camc314) - db32ec9 linter/no-accumulating-spread: Use loop as primary span (#22800) (camc314) - 33ec6b4 linter/consistent-test-it: Avoid adjacent describe leakage (#22796) (camc314) - 2606069 linter/no-array-sort: Unwrap parenthesized sort args (#22794) (camc314) - 9f2f709 linter/no-array-sort: Skip non compare fn sort arguments (#22752) (Gaurav Dubey) - 27268a0 linter/no-else-return: Preserve statement boundary in fixer (#22687) (camc314) - d9cb6d8 linter/no-empty-function: Allow functions callbacks with `allow: functions` (#22764) (camc314) - a40a314 linter/no-shadow-restricted-names: Ignore enum members (#22762) (camc314) - 82366d9 linter/no-cond-assign: Align ternary handling (#22761) (camc314) ### ๐Ÿ“š Documentation - 5e113ba linter: Add license notices for ported ESLint plugins (#22768) (Boshen) ## [1.67.0] - 2026-05-26 ### ๐Ÿš€ Features - 10da26b linter: `no-misleading-character-class` add suggestions for regex literal (#22681) (Sysix) - b84941e linter/vue: Implement no-expose-after-await rule (#22675) (bab) - 98b98c1 linter/vue: Implement no-computed-properties-in-data rule (#22674) (bab) - 868e2e8 linter: Add suggestion for `no-misleading-character-class` (#22631) (Sysix) - 2a60012 linter/vue: Implement require-render-return rule (#22613) (bab) - 9f227fd linter/vue: Implement no-deprecated-props-default-this rule (#21892) (bab) - 87f065e linter/vue: Implement return-in-emits-validator rule (#21935) (bab) - ea0380c linter/unicorn: Implement `import-style` rule (#22173) (Hao Chen) - dde40fe linter/vue: Implement no-watch-after-await rule (#22006) (bab) - a735eb0 linter/vue: Implement valid-next-tick rule (#22531) (bab) - 6dc615d linter/vue: Implement no-shared-component-data rule (#21842) (bab) - a656418 linter/vue: Implement valid-define-options rule (#22107) (bab) - bb6f1b2 linter/vue: Implement require-slots-as-functions rule (#22244) (bab) - 5fa4774 linter/n: Implement `callback-return` rule (#22470) (Mikhail Baev) ### ๐Ÿ› Bug Fixes - fa7c463 semantic: Correct TS enum member symbol spans (#22689) (camc314) - ed445ba linter: Respect flags overrides for `RegExp(/regex/i, "u")` (#22678) (Sysix) - 26b9396 semantic: Resolve parameter decorators outside parameter scope (#22623) (camc314) - 203952d linter: `no-misleading-character-class` fix `is_unicode_code_point_escape` check (#22655) (Sysix) - 2f64d3d linter: `no-misleading-character-class` own diagnostic for surrogate pairs without u flag (#22654) (Sysix) - 0c6ebc2 linter/eslint/no-lone-blocks: Do not flag empty loops (#22649) (Mikhail Baev) - 2a7562e linter/no-focused-tests: Mark fixer as a suggestion (#22645) (camc314) - dbe644f linter: Respect args none for unused rest parameters (#22627) (camc314) - f7f370e linter/vitest/prefer-expect-type-of: Recommend `toBeTypeOf` instead of `expectTypeOf` (#22612) (Mikhail Baev) - 77063e5 linter/consistent-indexed-object-style: Preserve interface modifiers in fixes (#22579) (camc314) - 4f33aa7 linter: Treat `TSGlobalDeclaration` as ambient in `has_ambient_typescript_ancestor` (#22577) (camc314) ### โšก Performance - c22938d linter/no-async-endpoint-handlers: Populate node types (#22601) (camc314) - 607486e linter/no-negated-condition: Populate node types (#22602) (camc314) - 4dcaa59 linter/consistent-type-imports: Populate node types (#22600) (camc314) - 5bd3b25 linter/no-unused-vars: Avoid cloned ancestor iterator (#22598) (camc314) - 97fe9ba linter/no-extra-non-null-assertion: Reduce node matches (#22588) (camc314) - ae98296 linter/consistent-indexed-object-style: Populate node types (#22578) (camc314) ## [1.66.0] - 2026-05-18 ### ๐Ÿš€ Features - 1ae291e linter/no-underscore-dangle: Add `allowInUsingDeclarations` option (#22483) (ๅดๆจๅธ†) - 0440b0f linter/eslint: Implement `id-match` rule (#22379) (Vladislav Sayapin) - 65bf119 linter: Implement react no-object-type-as-default-prop (#22481) (uhyo) - 2a6ddce linter/eslint: Implement `no-implied-eval` rule (#22391) (Vladislav Sayapin) - 625758a linter/vitest: Implement padding-around-after-all-blocks rule (#21788) (kapobajza) - 37680b0 linter: Implement react no-unstable-nested-components (#22248) (Jovi De Croock) - d8d9c74 linter: Implement import/newline-after-import rule (#19142) (Ryuya Yanagi) ### ๐Ÿ› Bug Fixes - 602dfd6 linter/promise/no-return-wrap: Detect Promise calls in all branches (#22474) (zennnnnnn11) - e182aee linter: Allow dialogs and popovers for no_autofocus (#22289) (mehm8128) - 7ffb710 linter/jest/vitest: Jest/no-standalone-expect ignores additionalTestBlockFunctions option for jest/vitest hooks (#22477) (kapobajza) - c6f2d3f linter: Add more expression support for iframe-has-title (#22460) (mehm8128) - 863984f linter/no-find-dom-node: Run on all files (#22479) (bab) ### โšก Performance - 2afef79 linter: Optimize `no-loop-func` (#22491) (camchenry) ### ๐Ÿ“š Documentation - f7967c7 linter/id-match: Clarify `onlyDeclarations` config docs (#22523) (camc314) - 1e0c97f linter: Fix closing code block in documentation for `padding-around-after-all-blocks` rule. (#22513) (connorshea) - a9049fd linter: Exclude directly provide autoFocus to dialog pattern (#22510) (mehm8128) ## [1.65.0] - 2026-05-15 ### ๐Ÿš€ Features - 5478fb5 linter/jsdoc: Implement `require-throws-description` rule (#22386) (Mikhail Baev) - b46d4de linter: Add `--debug` options and add per-rule timing info (#22282) (camchenry) - c73225e linter/eslint: Implement `prefer-arrow-callback` rule (#22312) (๋ฐ•์ฒœ(Cheon Park)) - de82b59 linter: Add support for `eslint-plugin-jsx-a11y-x` (#22356) (mehm8128) - b170da3 linter: Implement no-implicit-globals (#22249) (Jovi De Croock) - f44b6c8 linter: Fill schemas `DummyRuleMap` with built-in rules (#22288) (Sysix) - 5cdb80d linter/jsx-a11y/: Implement no-interactive-element-to-noninteractive-role (#22332) (anarefolio) - 2749422 linter/jsx-a11y: Add no-noninteractive-element-interactions (#22337) (Pablo Tovar) - ba2a1d3 linter/jsdoc: Implement `require-throws-type` rule (#22358) (Mikhail Baev) - d90729d linter/jsx-a11y: Implement control-has-associated-label (#21985) (mehm8128) - 1d04903 linter/jsdoc: Implement `require-yields-type` rule (#22331) (Mikhail Baev) ### ๐Ÿ› Bug Fixes - 04c4609 linter/no-nullable-type-assertion-style: Mark as suggestion (#22450) (camc314) - 1c2b7ec linter/no-unused-vars: Handle shadowed self assignments (#22387) (camc314) - 9faa1d5 linter/no-noninteractive-tabindex: Check conditional expressions (#22435) (camc314) - 0854b3a linter/prefer-arrow-callback: Preserve TSX generic arrows in fixer (#22434) (camc314) - 410b814 linter: Supply `source_type` to codegen fixer (#22433) (camc314) - 3c1bb6f linter: Skip per-node dispatch for run_once-only rules in large files (#22398) (Connor Shea) - 5206cde linter/no-unused-vars: Improve type-only rest parameters diagnostic (#22385) (camc314) - c9a22b5 linter/consistent-function-scoping: Allow imported bindings (#22384) (camc314) - c1e966d linter: Report type-only unused parameters in no-unused-vars (#22368) (camchenry) - 4818d98 linter: Check whether path is under root before ignoring it (#20101) (Leonabcd123) - 41fcdcf linter: Fix rule count not including override rules (#19898) (Daniel Osmond) - 59b4f0e linter: Fix 'explicit-module-boundary-types' false positive with 'allowOverloadFunctions' (#22341) (camchenry) ### โšก Performance - 6d42395 linter: Narrow no-unsafe-optional-chaining dispatch (#22437) (camchenry) - 08595fb linter: Optimize no-unreachable (#22397) (camchenry) - 3b46a8d linter: Optimize `no-loss-of-precision` (#22395) (camchenry) - b3e2dc9 linter: Optimize `oxc/bad-array-method-on-arguments` (#22393) (camchenry) ### ๐Ÿ“š Documentation - dcbf62c linter: Remove some duplicate spaces (#22359) (camc314) ## [1.64.0] - 2026-05-11 ### ๐Ÿš€ Features - 0eeceaf linter/no-unused-vars: Rename parameter with initializer (#22308) (camc314) - fa0232b linter/no-unused-vars: Add param rename suggestion (#22285) (Ryota Misumi) - ae59305 linter/promise/no-promise-in-callback: Add `exemptDeclarations` option (#22275) (Mikhail Baev) - 60bed4a linter: Extends `no-redundant-roles` and `prefer-tag-over-role` support roles (#22069) (mehm8128) - 545c80f linter/eslint: Implement `prefer-regex-literals` rule (#22192) (Mikhail Baev) - cf86d7a linter: Bulk suppression (#19328) (Said Atrahouch) - 23abd22 linter/jsx-a11y: Implement no-noninteractive-element-to-interactive-role (#21264) (Pedro Tainha) - fbb8f22 linter: Support `ignores` in overrides (#22148) (camc314) ### ๐Ÿ› Bug Fixes - 610f4c7 linter/no-unused-vars: Avoid renaming captured vars (#22310) (camc314) - 31a5de7 linter: Rename override `ignores` to `excludeFiles` (#22283) (camc314) - 26d5d7b linter: Add missing vitest/valid-describe-callback functionality (#22279) (camchenry) - 784530f linter: `valid-title`: detect `String.raw` strings (#22271) (Sysix) - 080d90e linter: Move `no-debugger` fix to suggestion (#22256) (Sysix) - 25b7017 linter: Undocument override `ignores` option (#22213) (camc314) - 7bb00dd linter: Fix role-has-required-aria-props (#22097) (mehm8128) - d25279e linter/disable-directives: Improve parsing of names, descriptions (#22184) (camc314) - a59e447 linter/disable-directives: Ignore invalid enable suffixes (#22179) (camc314) - 281daec linter/vue/define-props-destructuring: Add `only-when-assigned` config opt (#22142) (camc314) - 46ab679 linter/plugins: Trim leading newline for partial sources (#20928) (bab) - 29ff6d9 linter: Update docs for no_alias_methods rule to be Vitest-specific and add toThrowError alias (#22129) (camchenry) ### โšก Performance - 9414bee linter/role-has-required-aria-props: Avoid intermediate vec (#22212) (camc314) - 3883ea3 linter/no-useless-escape: Drop unnecessary Vec collect (#22171) (connorshea) - 42c3029 linter/check-property-names: Replace split-collect-pop-join with rfind (#22172) (connorshea) - 9551d53 linter: Remove unnecessary Vec collect in CFG edge traversal (#22167) (connorshea) - 26fa2fc linter/aria-role: Remove unnecessary string allocations in run method (#22168) (connorshea) - c9ce045 linter/getter-return: Remove unnecessary Vec collect in CFG edge traversal (#22166) (connorshea) - 72bd846 linter/no-this-in-sfc: Reorder cheap name check, avoid String allocation (#22164) (connorshea) ### ๐Ÿ“š Documentation - 4da212a linter/no-unused-vars: Add docs to `rename_unused_function_parameter` (#22311) (camc314) - 27c4628 linter/forbid-dom-props: Escape jsx examples in lint rule docs (#22254) (4MBL) - 3f81147 linter: Improve the `react/jsx-key` rule docs. (#22162) (connorshea) - 07f03cc linter/consistent-return: Add note about `noImplicitReturns` coverage (#22156) (camc314) - 87b3e38 linter: Update docs to be vitest-specific for consistent-test-it (#22128) (camchenry) ## [1.63.0] - 2026-05-05 ### ๐Ÿš€ Features - 00f9a9d linter/sort-keys: Support autofix with comments (#22061) (Amund Eggen Svandal) - 5b9ea93 linter/eslint: Implement `require-unicode-regexp` rule (#22096) (Mikhail Baev) - c0982fe linter/eslint: Implement no-restricted-properties rule (#22080) (AJ Bienz) - fb2f052 linter: Suggest moving shared branch code (#22022) (camc314) - 5868335 linter/no-else-return: Improve nested if diagnostic spans (#22009) (camc314) - 8b4829b linter: Split `no-negated-condition` rule to unicorn & eslint (#21998) (Sysix) - fea301a linter: Split jest/prefer-to-be into separate vitest rule (#21977) (camchenry) - 44aa0d6 linter: Split jest/prefer-strict-equal into separate vitest rule (#21976) (camchenry) - 2262b27 linter: Split jest/prefer-spy-on into separate vitest rule (#21975) (camchenry) - fef9143 linter: Split jest/prefer-mock-return-shorthand into separate vitest rule (#21974) (camchenry) - 2bda504 linter: Split jest/prefer-mock-promise-shorthand into separate vitest rule (#21973) (camchenry) - 6ef6c7d linter: Split jest/prefer-lowercase into separate vitest rule (#21972) (camchenry) - f4d2498 linter: Split jest/prefer-hooks-on-top into separate vitest rule (#21971) (camchenry) - fb8e366 linter: Split jest/prefer-hooks-in-order into separate vitest rule (#21970) (camchenry) - adcd85c linter: Split jest/prefer-expect-resolves into separate vitest rule (#21969) (camchenry) - 8ddc7ec linter: Split jest/prefer-equality-matcher into separate vitest rule (#21968) (camchenry) - 46bb1f3 linter: Split jest/prefer-each into separate vitest rule (#21967) (camchenry) - bdbff66 linter: Implement interactive-supports-focus (#21767) (mehm8128) - 733b094 linter: Split `prefer-to-have-been-called-times` rule (#21898) (Said Atrahouch) - 8804425 linter/eslint: Implement `logical-assignment-operators` rule (#21900) (Mikhail Baev) - 296d147 linter: Split jest/prefer-comparison-matcher into separate vitest rule (#21929) (camchenry) - 38146b6 linter: Split jest/prefer-called-with into separate vitest rule (#21927) (camchenry) - 6f86175 linter/vue: Implement return-in-computed-property rule (#21909) (bab) - dc2d0e4 linter: Split jest/no-unneeded-async-expect-function into separate vitest rule (#21878) (camchenry) - a03fc37 linter: Split jest/no-test-return-statement into separate vitest rule (#21877) (camchenry) - f11313e linter: Split jest/no-test-prefixes into separate vitest rule (#21876) (camchenry) - 4380812 linter: Split `prefer-to-have-length` rule (#21893) (Said Atrahouch) - 511bcc1 linter: Split jest `require-hook` rule (#21889) (Said Atrahouch) - 64a8180 linter: Split `jest/prefer-snapshot-hint` into a Jest rule and a Vitest rule. (#21881) (connorshea) - ae7924a linter/vue: Implement no-deprecated-model-definition rule (#21886) (bab) - 0dfe8b3 linter: Split `jest/require-to-throw-message` into Jest and Vitest rules. (#21879) (connorshea) - 51229ff linter: Split jest `valid-describe-callback` rule (#21882) (Said Atrahouch) - 2d102fd linter: Split `no-standalone-expect` rule into jest and vitest (#21862) (Sysix) - ee46a29 linter: Split `no-restricted-matchers` rule into jest and vitest (#21860) (Sysix) - 1f29459 linter: Split `no-restricted-jest-methods` rule into jest and vitest (#21859) (Sysix) - e7f8d55 linter: Remove eslint prefixes from plugin names in diagnostics (#21806) (Connor Shea) - 89fff8b linter: Split valid-expect-in-promise/jest rule into jest and vitest rules (#21854) (Said Atrahouch) ### ๐Ÿ› Bug Fixes - 7c9bf88 linter/no-single-promise-in-promise-methods: Avoid unused array fix (#22116) (camc314) - 0b48848 linter/prefer-array-some: Make find rewrite a suggestion (#22103) (camc314) - d24027e linter/prefer-array-some: Preserve find comparison fixes (#22094) (camc314) - af2d26c linter/astro: Handle js `---` after frontmatter in .astro files (#22091) (Andrew Powell) - 78d4ff0 linter/jsdoc/require-returns: Only look at the nearest jsdoc block (#22077) (camc314) - fa88857 linter/no-map-spread: Use default codegen options for fix (#22074) (camc314) - 2047a35 linter: Treat adjacent fixes as overlapping (#22071) (camc314) - 75fc551 linter: Handle no-extra-boolean-cast edge cases (#22031) (camc314) - e9d5284 linter/sort-keys: Don't autofix if comment could be misplaced (#22052) (Amund Eggen Svandal) - d7230b0 linter/no-constant-condition: Handle generator yields (#22046) (camc314) - e8dbc56 linter/array-type: Enable edge case tests (#22047) (camc314) - d57b51f linter/no-constant-condition: Propagate config errors (#22045) (camc314) - bdb6d95 linter/typescript: Remove duplicate rule tests (#22044) (camc314) - 0beaffc linter: Print resolved extended config (#22040) (camc314) - 192ad0e linter/react/only-export-components: Align rule with upstream cases (#22039) (camc314) - cdf4c53 linter/only-export-components: Support tanstack router (#21937) (camc314) - 7100712 linter/constructor-super: Clarify duplicate super diagnostics (#22035) (camc314) - fce5b7c linter/constructor-super: Improve invalid `super` calls diagnostic (#22032) (camc314) - b3de93c linter/rules-of-hooks: Clarify conditional diagnostics (#22030) (camc314) - 4f9f629 linter/rules-of-hooks: Clarify loop diagnostics (#22029) (camc314) - e6f0978 linter/rules-of-hooks: Clarify async component diagnostics (#22024) (camc314) - e262f51 linter/rules-of-hooks: Improve diagnostic for hook inside class component (#22023) (camc314) - 7b71b0d linter/no-restricted-imports: Report once per import declaration (#22021) (camc314) - 3d5ae3d linter/vitest/require-mock-type-parameters: Handle chained typed mocks (#22019) (camc314) - 16003a1 linter/unicorn: Remove duplicate rule tests (#22018) (camc314) - 86b7547 linter/no-unreachable: Suppress nested unreachable diagnostics (#22011) (camc314) - 1d92ae8 linter/oxc: Remove duplicate rule tests (#22013) (camc314) - f270246 linter/branches-sharing-code: Ignore empty statements (#22012) (camc314) - f1c25dd linter: Stabilize debug diagnostic comparison (#22010) (camc314) - b6bc421 linter: Skip linting astro scripts with non JS script types (#21954) (camc314) - a77547d linter: Support plugin-qualified disable directives (#21999) (camc314) - 079cfdd linter: Match disable directive rule names exactly, not by substring (#21906) (Christian Vuerings) - 11a4e67 linter: Comptibles rules need to be disabled in jest and vitest at same time (#21982) (Said Atrahouch) - ce62f16 linter: `jsx-a11y/prefer-tag-over-role` detect more roles (#21933) (bab) - 024c390 linter/jest/vitest: Padding around after all blocks not working as expected (#21952) (kapobajza) - 05a8f75 linter/jest/no-standalone-expect: False positive with expect in an `ObjectProperty` (#21948) (Said Atrahouch) - 6a37c98 linter/no-unused-vars: Report unused re-exported imports (#21938) (camc314) - 2d5fc16 linter: `jsx-a11y/media-has-caption` report only once for self-closing tags (#21934) (bab) - 5adca29 linter: `jsx-a11y/no-autofocus` ignore `false` attribute values (#21918) (Sysix) - 2e5c18e linter/max-nested-describe: Reset nested describe depth (#21891) (camc314) ### โšก Performance - a77f0f7 linter/require-returns: Avoid jsdoc tag vec allocation (#22081) (camc314) ### ๐Ÿ“š Documentation - cacbc4a linter: Fix jest settings docs. (#22127) (connorshea) - 9adc3b3 linter/no-misused-new: Clarify construct signatures behaviour (#22016) (camc314) ## [1.62.0] - 2026-04-27 ### ๐Ÿš€ Features - b4acdbd linter/vue: Implement no-deprecated-delete-set rule (#21766) (bab) - 613bfef linter: Split jest/prefer-to-contain into a jest and a vitest rule. (#21821) (connorshea) - c629719 linter/vue: Implement no-deprecated-events-api rule (#21793) (Alex Peshkov) - f2a8528 linter: Split jest/require-top-level-describe rule into a Jest and a Vitest rule. (#21822) (connorshea) - ea4b358 linter: Split jest/prefer-todo into a shared rule and a vitest-specific rule. (#21820) (connorshea) - 3a66819 linter: Split jest/no-mocks-import into vitest/no-mocks-import (#21818) (camchenry) - 0b3ffce linter: Split jest/no-large-snapshots into vitest/no-large-snapshots (#21814) (camchenry) - d1cf22e linter: Split jest/no-interpolation-in-snapshots into vitest/no-interpolation-in-snapshots (#21812) (camchenry) - bb0c359 linter: Split jest/no-identical-title into vitest/no-identical-title (#21810) (camchenry) - c26ea41 linter: Split jest/no-hooks into vitest/no-hooks (#21809) (camchenry) - 46b32f2 linter: Split jest/no-focused-tests into vitest/no-focused-tests (#21804) (camchenry) - acf41a8 linter: Split jest/no-duplicate-hooks into vitest/no-duplicate-hooks (#21803) (camchenry) - 54d787f linter: Split jest/no-disabled-tests into vitest/no-disabled-tests (#21802) (camchenry) - 9c9a676 linter/vue: Implement no-deprecated-data-object-declaration rule (#21764) (bab) - 4445855 linter: Split `jest/no-conditional-in-test` into `vitest/no-conditional-in-test` (#21763) (camchenry) - b8604de linter: Split `jest/no-conditional-expect` into `vitest/no-conditional-expect` (#21762) (camchenry) - 0dbd650 linter: Split `jest/no-commented-out-tests` into `vitest/no-commented-out-tests` (#21761) (camchenry) - 7f1a97c linter: Split `jest/no-alias-methods` into `vitest/no-alias-methods` (#21760) (camchenry) - eb97c49 linter: Split `jest/max-nested-describe` into `vitest/max-nested-describe` (#21759) (camchenry) - d870cad linter: Split `jest/max-expects` into `vitest/max-expects` (#21758) (camchenry) - 1b97124 linter/vue: Implement no-deprecated-vue-config-keycodes rule (#21699) (bab) - 5f81883 linter/eslint: Implement `func-name-matching` rule (#21708) (Mikhail Baev) - 348f46c linter: Add `respectEslintDisableDirectives` option (#21384) (Christian Vuerings) - 07dc41e linter/eslint: Implement `no-underscore-dangle` rule (#21630) (Paul-Arthur THIERY) - e270d54 linter/react: Impl react/no-did-update-set-state (#17322) (Kenzo Wada) - ca81199 linter/react: Implement `forbid-component-props` rule (#20005) (Mikhail Baev) - 6776403 linter/branches-sharing-code: Move rule from nursery to pedantic (#21621) (camc314) - ce7a4dc linter/no-unreachable: Move rule from nursery to correctness (#21618) (camc314) - e3b5e78 linter/getter-return: Move rule from nursery to correctness (#21617) (camc314) - d3a7e9a linter/unicorn: Implement suggestion for `no-useless-iterator-to-array` rule (#21610) (Mikhail Baev) - 67ff860 linter/no-unknown-property: Support React 19 `precedence` prop (#21590) (Joรฃo Pedro Schmitz) ### ๐Ÿ› Bug Fixes - aace797 linter: Detect Svelte TS and module scripts correctly (#20819) (mustafa0x) - 3612db1 linter/prefer-default-parameters: Skip reporting on object/class setters (#21836) (camc314) - 705a82c linter/no-non-null-asserted-nullish-coalescing: Add fixer (#21827) (yyh) - 33f5535 linter: Add checks that `Program` is in current allocator chunk before JS plugins linting (#21774) (overlookmotel) - d122877 linter/no-extra-non-null-assertions: Add fixer (#21744) (yyh) - 37f0731 linter: `with_plugin_vitest(true)` working realiable in test mode (#21769) (Said Atrahouch) - e42e6a6 linter/role-supports-aria-props: False positive with `combobox` and `haspopup` (#21725) (Leonabcd123) - e24324f linter: Iframe-has-title false positive for template literals (#21714) (Leonabcd123) - 41a6510 linter/vitest/hoisted-apis-on-top: Only check first member (#20068) (Sidharth Vinod) - 98ed888 linter: Check initializer for allowConstantExport in only-export-components (#20608) (Eyรผp Can Akman) - 1946e8b linter: Avoid applying override plugin categories to eslint rules (#21521) (bab) - 3d1e83a linter: Parse `