# 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.74.0] - 2026-07-13

### 🚀 Features

- 0433a83 linter/eslint/no-inner-declarations: Add `namespaces` option (#24044) (Boshen)
- 92f154a oxlint,oxfmt: Auto-discover `.mts` config files (#24357) (camc314)

### 🐛 Bug Fixes

- 8337835 linter: Error on `ignorePatterns` that cannot match files aoutside the config directory (#24341) (leaysgur)
- 2ce5a33 linter: Resolve `ignorePatterns` relative to the config dir (#24339) (leaysgur)
- d193f8e linter: Detect Junie agent env vars (#24277) (Jeevan Mohan Pawar)

### ⚡ Performance

- 7f80cac linter/vue/prop-name-casing: Precompile `ignoreProps` regex pattern (#24413) (connorshea)
- 33805b9 linter/jsdoc/require-param: Compile checkTypesPattern regex once (#24420) (connorshea)

## [1.73.0] - 2026-07-06

### 🚀 Features

- 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)
- 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

- 0b25582 ast: Type binding node `typeAnnotation` as `TSTypeAnnotation | null` (#23113) (Boshen)
- bdb51c7 linter/jest/prefer-ending-with-an-expect: Validate config patterns (#24122) (camc314)
- 45d607d linter/react/forbid-component-props: Make allow/disallow lists optional in schema (#24024) (Boshen)

## [1.72.0] - 2026-06-29

### 🚀 Features

- 1c8f50c linter: Add schema for `eslint/no-restricted-import` (#23642) (Sysix)

### 🐛 Bug Fixes

- f7d1f50 oxlint, oxfmt: Enable `disable_old_builder` Cargo feature for `oxc_ast` crate (#23886) (overlookmotel)
- 94b6599 linter: Deduplicate missing plugin errors (#23853) (camc314)
- d86f60b lsp: Normalize user config path to watch pattern (#23723) (Sysix)
- 52032cf linter: Newline-terminate tsgolint errors (#23762) (Mikhail Baev)
- 742be36 refactor/node/handle-callback-err: Reject invalid regex config (#23740) (camc314)

### 🛡️ Security

- 3cdd18f deps: Update npm packages (#23690) (renovate[bot])

## [1.71.0] - 2026-06-22

### 🚀 Features

- 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)
- a421215 linter: Add schema for `eslint/prefer-destructuring` (#23410) (WaterWhisperer)
- 84438be linter/jsdoc: Added missing options to `require-param-description` (#23416) (kapobajza)
- 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)
- 53509a8 minifier: Treeshake pure typed arrays and Set/Map array literals (#23469) (Dunqing)
- a8dce46 linter/unicorn: Implement `max-nested-calls` rule (#23461) (arieleli01212)

### 🐛 Bug Fixes

- a303c23 linter/jsx-a11y: Align `anchor-is-valid` config with upstream (#23446) (camc314)

### ⚡ Performance

- 3f60de3 linter: Use bucketed dispatch for all files (#23452) (camc314)
- 9f1a985 oxlint: Start Tokio only for LSP (#23447) (camc314)

### 📚 Documentation

- b50bf4d linter: Remove manually written options doc for `eslint/arrow-body-style` (#23490) (Mikhail Baev)

## [1.70.0] - 2026-06-15

### 🚀 Features

- 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)
- 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)
- 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)
- 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

- f302f41 linter: Normalize oxlint jsPlugin prefixes (#23335) (konh)
- 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)
- 956309a lsp: Use protocol line breaks for positions (#23329) (konh)
- 71e9648 linter: Expose no-noninteractive-element-interactions schema (#23283) (camc314)
- 6c86d1c linter/react-perf: Correct nativeAllowList all schema (#23229) (camc314)
- 4dd52de linter/react-perf: Re-generate stale snapshots (#23228) (camc314)
- 8f3db61 linter: Allow options for `eslint/capitalized-comments` (#23139) (Sysix)

### ⚡ 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)
- 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)

### 🐛 Bug Fixes

- 0383e61 linter: Fix schema for rules without a config (#22946) (Sysix)
- 6cb34b8 linter/plugins: Make spreading `Token` instances keep `loc` property (#22947) (Nicolas Le Cam)
- 27de044 linter/plugins: Make spreading `Comment` instances keep `loc` property (#22238) (Nicolas Le Cam)

### ⚡ Performance

- 0b7ce7e linter/plugins: Create global prop vars at top level of modules (#22928) (overlookmotel)
- 0f7c319 linter/plugins: Define class `#loc` setter functions as `const`s (#22919) (overlookmotel)

## [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)
- 8422e8b linter/jsdoc: Implement `require-yields-description` rule (#22805) (Mikhail Baev)
- fe93f97 linter/eslint: Implement `prefer-named-capture-group` rule (#22759) (Sebastian Poxhofer)

### 🐛 Bug Fixes

- 1599f11 linter: Align lsp extends default plugins (#22788) (camc314)

## [1.67.0] - 2026-05-26

### 🚀 Features

- b84941e linter/vue: Implement no-expose-after-await rule (#22675) (bab)
- 98b98c1 linter/vue: Implement no-computed-properties-in-data rule (#22674) (bab)
- 2d4c919 oxlint: Support `vite-plus/resolveConfig` for vite.config.ts (#22456) (leaysgur)
- 2a60012 linter/vue: Implement require-render-return rule (#22613) (bab)
- 9f227fd linter/vue: Implement no-deprecated-props-default-this rule (#21892) (bab)
- 9cd28b3 linter: Add debug option to print files to be linted (#22546) (camchenry)
- 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

- 52bd016 linter: Respect allow unused disable directives in LSP (#22715) (camc314)
- d0211b0 linter: Allow undefined in DummyRuleMap index (#22626) (camc314)
- 36fc0ec oxlint/lsp: "ignore this" actions merge with existing directive (#22604) (Sysix)

## [1.66.0] - 2026-05-18

### 🚀 Features

- 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)
- d3a3c1d linter: Auto detect agents from CLI and transition to the agent output format (#22068) (Jovi De Croock)
- 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

- 3f59e03 linter: Only call rayon/miette/tracing inits once (#21899) (Matiss Janis Aboltins)
- 5747ff1 linter: Avoid enabling jest with vitest plugin (#22499) (camc314)

### ⚡ Performance

- 4c9ca72 oxlint: Align walker thread count with rayon pool (#22494) (Boshen)

## [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)
- f44b6c8 linter: Fill schemas `DummyRuleMap` with built-in rules (#22288) (Sysix)

### 🐛 Bug Fixes

- 41fcdcf linter: Fix rule count not including override rules (#19898) (Daniel Osmond)

## [1.64.0] - 2026-05-11

### 💥 BREAKING CHANGES

- 00ce512 oxlint/lsp: [**BREAKING**] Don't fix suggestions on fixAll code actions & command (#22195) (Sysix)

### 🚀 Features

- cf86d7a linter: Bulk suppression (#19328) (Said Atrahouch)
- fbb8f22 linter: Support `ignores` in overrides (#22148) (camc314)
- 5a4414d oxlint/lsp: Support `rulesCustomization` lsp option (#21858) (Sysix)

### 🐛 Bug Fixes

- 6b50f23 oxlint/cli: Load root config by searching up parent directories (#22272) (Sysix)
- 080d90e linter: Move `no-debugger` fix to suggestion (#22256) (Sysix)
- 25b7017 linter: Undocument override `ignores` option (#22213) (camc314)
- aafef0f ci: Disable bulk supression test on big endian (#22175) (camc314)
- 46ab679 linter/plugins: Trim leading newline for partial sources (#20928) (bab)

### 📚 Documentation

- 7c1e049 oxlint/lsp: Improve autogenerated lsp docs (#22154) (Sysix)

## [1.63.0] - 2026-05-05

### 🚀 Features

- 1884833 linter/plugins: Implement `SourceCode.getDisableDirectives` method (#21029) (Nicolas Le Cam)
- 1d40d60 linter: Implement SARIF formatter (#22067) (camchenry)
- 5699d53 linter: Add help text to `agent` formatter (#22064) (camchenry)
- fe7194d oxlint: Add agent output mode (#21955) (Jovi De Croock)
- 8b4829b linter: Split `no-negated-condition` rule to unicorn & eslint (#21998) (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)

### 🐛 Bug Fixes

- 2047a35 linter: Treat adjacent fixes as overlapping (#22071) (camc314)
- 0beaffc linter: Print resolved extended config (#22040) (camc314)
- 893e18f linter: Stop gitignore lookup at repo boundary (#22033) (camc314)
- 959a2db linter/reporter/github: Omit empty `file` annotations (#22017) (camc314)

### ⚡ Performance

- d9a1b32 linter/plugins: Avoid array lookups where possible in CFG visitor (#21940) (overlookmotel)
- fefefd8 linter/plugins: Replace addition with bitwise OR in CFG visitor (#21939) (overlookmotel)

### 📚 Documentation

- cacbc4a linter: Fix jest settings docs. (#22127) (connorshea)
- a15c5bb linter: Note that the `--format` flag accepts an `agent` option. (#22126) (connorshea)
- d58f594 oxlint/lsp: Auto generate docs for LSP options (#22082) (Sysix)
- 1caf5ad linter/plugins: Reformat comments (#21873) (overlookmotel)

### 🛡️ Security

- 82dbbec deps: Update npm packages (major) (#21558) (renovate[bot])

## [1.62.0] - 2026-04-27

### 💥 BREAKING CHANGES

- 502e804 ast: [**BREAKING**] Reduce size of `TSTypePredicateName` (#21711) (overlookmotel)
- 5651539 ast: [**BREAKING**] Reduce size of `JSXExpression` (#21710) (overlookmotel)
- c44e280 ast: [**BREAKING**] Reduce size of `ArrayExpressionElement` (#21709) (overlookmotel)

### 🚀 Features

- bb0c359 linter: Split jest/no-identical-title into vitest/no-identical-title (#21810) (camchenry)
- 54d787f linter: Split jest/no-disabled-tests into vitest/no-disabled-tests (#21802) (camchenry)
- 348f46c linter: Add `respectEslintDisableDirectives` option (#21384) (Christian Vuerings)
- 63ec351 linter: Support nested vite+ config discovery (#21638) (camc314)
- 560feb4 linter: Introduce `Vite` variant to `DiscoveredConfigFile` (#21637) (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)
- a0c883c oxlint/lsp: Add vite plus version to server info (#21587) (Sysix)

### 🐛 Bug Fixes

- aace797 linter: Detect Svelte TS and module scripts correctly (#20819) (mustafa0x)
- 28c3521 oxlint/lsp: Remove overlapping edits for `source.fixAllDangerous.oxc` code action (#21785) (Sysix)
- bc6ade5 linter: Report actual disable directive prefix (#21682) (camc314)
- aa1a00c linter: Support jsx-a11y attributes setting in anchor-is-valid rule (#21665) (camchenry)
- 8c425db linter: Allow string for jest version in config schema (#21649) (camc314)
- c2ada2c linter: Make `--fix-dangerously` fix dangerous fixes and suggestions as documented (#13366) (Ulrich Stark)

### ⚡ Performance

- cdc9eae oxlint/lsp: Avoid clones on lsp options deserializion (#21748) (Sysix)

### 📚 Documentation

- 43adae9 linter: Add version section to rules page (#21601) (camchenry)
- d15dad2 linter: Export rule version metadata (#21588) (Old Autumn)

## [1.61.0] - 2026-04-20

### 🚀 Features

- 38d8090 linter/jest: Implemented jest `version` settings in config file. (#21522) (Said Atrahouch)

### 🐛 Bug Fixes

- f272594 linter/plugins: Align `RuleMeta.replacedBy` type with ESLint (#21544) (bab)
- 00fc136 codegen: Preserve coverage comments before object properties (#21312) (bab)
- a56b7b9 oxlint: Dont enable gitlab formatter by default (#21501) (camc314)

### 📚 Documentation

- c1eeae3 linter: Add version to `rule.json` (#21547) (camchenry)

## [1.60.0] - 2026-04-13

### 💥 BREAKING CHANGES

- 382958a span: [**BREAKING**] Remove re-exports of string types from `oxc_span` crate (#21246) (overlookmotel)
- 7354f3c linter: [**BREAKING**] Error on no matched files (#21144) (camc314)

### 🚀 Features

- f99ecda oxlint: Gate `vite.config.ts` recognition behind `VP_VERSION` env var (#21298) (leaysgur)
- ae45312 linter: Introduce `--type-check-only` flag (#21184) (camc314)
- 1893be1 linter/no-useless-default-assignment: Move rule from nursery to correctness (#21113) (camc314)

### 🐛 Bug Fixes

- 5e55735 oxlint/lsp: Skip .git directories in LSP walkers (#21316) (camc314)
- ec7f6ed oxlint, oxfmt: Apply `check_for_writer_error` to `.flush()` (#21343) (Craig Morrison)
- 1b3abc3 linter: Exclude boundary tokens from JSXText whitespace check in isSpaceBetweenTokens (#21313) (bab)
- ecbcf5e linter: More info to summary output for GitHub formatter (#21330) (Théo LUDWIG)
- af8e122 linter: Render each config error as a separate diagnostic (#21120) (bab)
- 472f8ee linter: Mark complete comment for unused disable directives + lsp fix (#21092) (copilot-swe-agent)

### ⚡ Performance

- addcd02 napi/parser, linter/plugins: Raw transfer deserializer for `Vec`s use shift instead of multiply where possible (#21142) (overlookmotel)
- 3068ded napi/parser, linter/plugins: Shift before add when calculating positions in raw transfer deserializer (#21141) (overlookmotel)
- eb400b8 napi/parser, linter/plugins: Remove `uint32` buffer view (#21140) (overlookmotel)
- 7a86613 linter/plugins: Use `Int32Array`s for tokens and comments buffers (#21136) (overlookmotel)
- 8c51121 napi/parser, linter/plugins: Raw transfer deserialize `Span` fields as `i32`s (#21135) (overlookmotel)
- bc1bcdd napi/parser, linter/plugins: Inline trivial raw transfer field deserializers into node object definitions (#21134) (overlookmotel)
- c0278ab napi/parser, linter/plugins: Use `Int32Array` in raw transfer deserializer (#21132) (overlookmotel)
- 43482c7 linter/plugins: Use `>>` not `>>>` in binary search loops (#21129) (overlookmotel)

### 📚 Documentation

- 305350d linter/plugins: Correct comments (#21130) (overlookmotel)

## [1.59.0] - 2026-04-06

### 💥 BREAKING CHANGES

- 22ce6af oxlint/lsp: [**BREAKING**] Show/fix safe suggestions by default (#19816) (Sysix)

### 🚀 Features

- 7a7b7b8 oxlint/lsp: Add source.fixAllDangerous.oxc code action kind (#20526) (bab)
- 1513a9f oxlint/lsp: Show note field for lsp diagnostic (#20983) (Sysix)
- 0b84de1 oxlint: Support allow option for prefer-promise-reject-errors (#20934) (camc314)

### 🐛 Bug Fixes

- 9446dcc oxlint/lsp: Skip `node_modules` in oxlint config walker (#21004) (copilot-swe-agent)
- 64a1a7e oxlint: Don't search for nested config outside base config (#21051) (Sysix)
- 5c32fd1 lsp: Prevent corrupted autofix output from overlapping text edits (#19793) (Peter Wagenet)

### ⚡ Performance

- fb52383 napi/parser, linter/plugins: Clear buffers and source texts earlier (#21025) (overlookmotel)
- 3b7dec4 napi/parser, linter/plugins: Use `utf8Slice` for decoding UTF-8 strings (#21022) (overlookmotel)
- 012c924 napi/parser, linter/plugins: Speed up decoding strings in raw transfer (#21021) (overlookmotel)
- 55e1e9b napi/parser, linter/plugins: Initialize vars as 0 (#21020) (overlookmotel)
- c25ef02 napi/parser, linter/plugins: Simplify branch condition in `deserializeStr` (#21019) (overlookmotel)
- 9f494c3 napi/parser, linter/plugins: Raw transfer use `String.fromCharCode` in string decoding (#21018) (overlookmotel)
- 0503a78 napi/parser, linter/plugins: Faster deserialization of `raw` fields (#20923) (overlookmotel)
- a24f75e napi/parser: Optimize string deserialization for non-ASCII sources (#20834) (Joshua Tuddenham)

### 📚 Documentation

- af72b80 oxlint: Fix typo for --tsconfig (#20889) (leaysgur)
- 70c53b1 linter: Highlight that tsconfig is not respected in type aware linting (#20884) (camc314)

## [1.58.0] - 2026-03-30

### 💥 BREAKING CHANGES

- c0ebbce linter: [**BREAKING**] Report error on unknown builtin rule (#20464) (camc314)

### 🚀 Features

- f44adfa linter: Improve the oxlint config generated by `--init`. (#20632) (connorshea)
- 16516de linter: Enhance types for `DummyRule` (#20751) (camc314)
- 27374e8 linter: Add hint about node version when ts config fail to import (#20570) (camc314)

### 🐛 Bug Fixes

- 3ef37da oxlint/lsp: Error on unknown command (#20841) (Sysix)
- ab1070d oxlint/cli: Skip parsing base config again for nested config search (#20809) (Sysix)
- 2be3728 oxlint/lsp: Skip parsing base config again for nested config search (#20808) (Sysix)
- 6171217 oxlint: Respect `NO_COLOR` env for `format=stylish` (#20804) (Sysix)
- d89ae8f linter/plugins: Patch `WeakMap` to emulate `WeakMap`s keyed by `sourceCode` (#20799) (overlookmotel)
- 0aa1ff0 linter/plugins: Ensure `after` hook is always called in ESLint compat mode (#20721) (overlookmotel)
- 31145a9 linter/plugins: Fire `after` hook after CFG events in ESLint compat (#20720) (overlookmotel)
- c09a5ab diagnostics: Skip minified fallback for single-line reporters (#20716) (camc314)
- e4dc9a1 linter: Isolate `--init` config writes from parallel tests (#20717) (camc314)

## [1.57.0] - 2026-03-24

### 🐛 Bug Fixes

- 532c921 linter/plugins: Include `loc` when call `JSON.stringify` on `Token`s and `Comment`s (#20512) (overlookmotel)
- c3d9e91 linter/plugins: Fix memory leak in tokens and comments (#20477) (overlookmotel)
- 525c398 linter: Detect no-cycle with auto-discovered tsconfig paths (#20566) (camc314)
- 04c84bb linter: Fix cloning on Windows by reducing the size of a problematic snapshot filename. (#20511) (connorshea)
- 0c57312 tsgolint: Use primary span for the disable directive (#20436) (camc314)
- 4791b2e linter: Add summary output to GitHub formatter (#20404) (Hideyasu-Ozawa)

### ⚡ Performance

- 30891bd linter/plugins: Share empty `Uint32Array` across multiple places (#20509) (overlookmotel)
- 336f7f7 linter/plugins: Faster conversion of span to `Location` (#20507) (overlookmotel)
- a187333 linter/plugins: Reuse descriptor objects for `Object.defineProperty` calls (#20505) (overlookmotel)
- 5984a66 linter/plugins: Recycle `Location` objects (#20491) (overlookmotel)
- 8729614 linter/plugins: Reduce operations in binary search (#20490) (overlookmotel)
- 9cfc312 linter/plugins: Reduce allocations for tokens and comments with accessed `loc` (#20480) (overlookmotel)
- 9c7a267 linter/plugins: Reduce allocations for regex tokens (#20479) (overlookmotel)
- 4ee80ac linter/plugins: Remove bounds checks on regex tokens (#20478) (overlookmotel)
- 4a22f60 linter/plugins: Remove regex from `getCommentsBefore` + `getCommentsAfter` (#20475) (overlookmotel)
- 9a622c7 linter/plugins: Lazy deserialize tokens and comments (#20474) (overlookmotel)
- c6ea0a0 ast: Place `NodeId` field after `Span` in structs (#20584) (overlookmotel)
- d176ecc napi/parser, oxlint/plugins: Shorten deserializer for `WithClause` (#20575) (overlookmotel)

### 📚 Documentation

- f064f80 linter/plugins: Correct comment about offset to line-column conversion (#20506) (overlookmotel)
- 4047e71 linter/plugins: Improve docs for conformance tests (#20528) (overlookmotel)

## [1.56.0] - 2026-03-16

### 🚀 Features

- c95951f linter/plugins: Implement `sourceCode.markVariableAsUsed` (#20357) (overlookmotel)

### 🐛 Bug Fixes

- f8fbd6e linter/plugins: Remove `hashbang` property from AST (#20365) (overlookmotel)
- a4b61f7 linter: Remove `defineConfig` check (#20308) (camc314)
- 1c07b3b diagnostics: Handle `WouldBlock` in stdout writes to prevent panic (#20295) (Boshen)

### ⚡ Performance

- 618a598 linter/plugins: Add fast path for files with no comments (#20366) (overlookmotel)
- b0125c5 linter/plugins: Deserialize comments without AST (#20364) (overlookmotel)
- 9cd612f linter/plugins: Recycle comment objects (#20362) (overlookmotel)
- bf442f8 linter/plugins: Cheaper `Token` creation (#20360) (overlookmotel)
- 7946eba linter/plugins: Avoid arguments spread and temp array when merging (#20318) (overlookmotel)
- fc7cf8a linter/plugins: Pre-define less CFG merger functions (#20317) (overlookmotel)
- 3b9eb28 linter/plugins: Streamline getting/creating visit fn mergers (#20319) (overlookmotel)
- f04e850 linter/plugins: Inline binary search functions into call sites (#20312) (overlookmotel)
- fe24afe linter/plugins: Apply replace globals TSDown plugin to JS files (#20305) (overlookmotel)
- 77cdacc linter/plugins: Use array buffer views for tokens (#20301) (overlookmotel)
- 910c941 linter/plugins: Reorder branches in `getTokenByRangeStart` (#20296) (overlookmotel)
- af7674c linter/tokens: Avoid extra token value allocation (#20013) (camc314)

### 📚 Documentation

- 3383523 linter: Improve `--tsconfig` flag docs (#20342) (camc314)

## [1.55.0] - 2026-03-12

### 🐛 Bug Fixes

- 6b46ce8 oxlint: Ignore inherited root-only options in nested configs (#20291) (camc314)
- bc20217 oxlint,oxfmt: Omit useless `| null` for `Option<T>` field from schema (#20273) (leaysgur)
- f26e6ab linter: Make `generate-plugin-eslint` script work on windows (#20246) (camc314)

### 📚 Documentation

- e4aa5b5 parser/napi, linter/plugins: Add JSDoc comments to raw transfer constants (#20286) (overlookmotel)
- f339f10 linter/plugins: Promote JS plugins to alpha status (#20281) (overlookmotel)

## [1.54.0] - 2026-03-12

### 🐛 Bug Fixes

- 4ea67de oxlint,oxfmt: Skip `vite.config.ts` exports `defineConfig(fn)` (#20260) (leaysgur)
- cc89dbf oxlint: Skip `vite.config.ts` w/o `.lint` field in auto-discovery (#20255) (leaysgur)

### ⚡ Performance

- d160dca linter/plugins: Reduce array lookups in visitor compilation (#20249) (overlookmotel)

### 📚 Documentation

- 13606c3 linter/plugins: Update conformance README (#20234) (overlookmotel)

## [1.53.0] - 2026-03-11

### 🚀 Features

- 04a5ce0 oxlint: Support `vite.config.ts` `.lint` field (#20214) (leaysgur)
- fe3b32e linter/plugins: Add `oxlint-plugin-eslint` package (#20009) (overlookmotel)

### 🐛 Bug Fixes

- f85e16c linter/plugins: Fix types for visitor compilation (#20203) (overlookmotel)
- ad27fd6 linter: Add help messages to import plugin diagnostics (#20158) (John Costa)
- 1340307 linter/plugins: Ensure `after` hooks always run (#20167) (overlookmotel)
- c4812ec linter/plugins: Reset visitor compilation state if error during compilation (#20166) (overlookmotel)
- 887eecc linter/plugins: Add license notice to `oxlint-plugin-eslint` package (#20164) (overlookmotel)
- e1713a4 linter/plugins: Include common chunks in `oxlint-plugin-eslint` package (#20163) (overlookmotel)
- de7c0e2 linter/plugins: Correct error message for `markVariableAsUsed` (#20152) (overlookmotel)

### ⚡ Performance

- 3a86427 linter/plugins: Pre-populate cache of `EnterExit` objects at startup (#20194) (overlookmotel)
- d243391 linter/plugins: Replace arrays with `Uint8Array`s (#20190) (overlookmotel)
- 8742f8b linter/plugins: Pre-populate cache of `VisitProp` objects (#20189) (overlookmotel)
- 3061acb linter/plugins: Pre-populate cache of `EnterExit` objects (#20187) (overlookmotel)
- c73912b linter/plugins: Free visit functions earlier (#20186) (overlookmotel)
- d9f8ff4 linter/plugins: Faster reset of visitor state (#20185) (overlookmotel)
- 42aff15 oxlint/lsp: Avoid computing diagnostics for non invoked code actions requests (#20080) (Sysix)

### 📚 Documentation

- a080650 linter/plugins: Fix documentation of visitor compilation (#20202) (overlookmotel)

## [1.52.0] - 2026-03-09

### 🚀 Features

- e6b604f oxlint: Auto-enable gitlab formatter on GitLab (#20076) (camc314)
- 2488a68 linter: Add .oxlintrc.jsonc config file support (#19870) (Scott S.)
- 61bf388 linter: Add `options.reportUnusedDisableDirectives` to config file (#19799) (Peter Wagenet)
- c92422b oxlint: Auto-enable github formatter on GitHub Actions (#19944) (Boshen)
- 0337c6d linter: Implement typescript/no-unecessary-type-conversion (#19955) (camc314)
- 2919313 linter: Introduce denyWarnings config options (#19926) (camc314)
- a607119 linter: Introduce maxWarnings config option (#19777) (camc314)

### 🐛 Bug Fixes

- 0861d9a linter/plugins: Remove getters from `Context` (#20115) (overlookmotel)
- 92cfb14 linter/plugins: Fix types for `walkProgram` and `walkProgramWithCfg` (#20081) (overlookmotel)
- 10e211f oxlint/lsp: Send other code actions besides `source.fixAll` if requested (#20042) (Sysix)
- 602daaa linter/plugins: Fix type definition for `VisitorObject` (#20065) (overlookmotel)
- ee0491e apps,napi: Explicitly specify libs in tsconfigs (#20071) (camc314)
- 7f3d735 linter: Error when --type-check is used without --type-aware (#20025) (camc314)
- 50359dc oxlint/lsp: Detect `reportUnusedDisableDirectives` from oxlint config, change lsp `unusedDisableDirectives` default value to `None` (#20011) (Sysix)
- 4bc84b1 linter/plugins: Allow `null` and `undefined` for `rule.meta.fixable` (#20008) (overlookmotel)
- f57b2c9 linter/plugins: Fix return types of tokens methods (#19985) (overlookmotel)
- 87318e7 oxlint/lsp: Load js config with reforcing fs read (#19551) (Sysix)

### ⚡ Performance

- 2baa5fb napi: Unify build-test profile to coverage for cache sharing (#20090) (Boshen)
- 77f1c71 linter/plugins: Make tokens class instances (#19980) (overlookmotel)
- 758b424 linter/plugins: Reduce memory copies for tokens (#19979) (overlookmotel)
- 236847f linter/plugins: Cache token objects (#19978) (overlookmotel)

### 📚 Documentation

- 2c0010a linter/plugins: Move comment about "bivariance hack" into generated code (#20082) (overlookmotel)
- 12ae35c oxlint/lsp: Remove outdated ToDo for `LintOptions.run` (#20012) (Sysix)
- 3be73e6 linter/plugins: Fix JSDoc comments for tokens methods (#20004) (overlookmotel)
- 48ef285 linter: Update `--config` docs (#19965) (camc314)
- 6ea49a0 linter: Fix some identation issues for the generated types used in `oxlint.config.ts`. (#19942) (connorshea)
- 6c0e0b5 linter: Add oxlint.config.ts to the config docs. (#19941) (connorshea)
- 160e423 linter: Add a note that the typeAware and typeCheck options require oxlint-tsgolint (#19940) (connorshea)

## [1.51.0] - 2026-03-02

### 🚀 Features

- f34f6fa linter: Introduce typeCheck config option (#19764) (camc314)
- 694be7d linter: Introduce typeAware as config options (#19614) (camc314)

### 🐛 Bug Fixes

- 7682e5a linter/plugins: Decode escapes in identifier tokens (#19838) (overlookmotel)
- 0440e9a linter: Add help text to no_control_regex, no_fallthrough, no_param_reassign (#19655) (Anthony Amaro)
- f5694ce estree/tokens: Reverse field order of `regex` object in tokens (#19679) (overlookmotel)
- b2b7a55 estree/tokens: Generate tokens for files with BOM (#19535) (overlookmotel)
- e384e94 linter: Enhance help diagnostic messages for more eslint rules (#19658) (Anthony Amaro)

### ⚡ Performance

- 05ccf9f linter/plugins: Transfer tokens via raw transfer (#19893) (overlookmotel)
- 4b0611a estree/tokens: Introduce `ESTreeTokenConfig` trait (#19842) (overlookmotel)
- ec88f6a estree/tokens: Serialize tokens while visiting AST (#19726) (overlookmotel)
- d4dcf26 linter/plugins: Remove `typescript` from bundle (#19531) (overlookmotel)
- 6a6513c linter/plugins: Use Oxc tokens in plugins (#19498) (camc314)

### 📚 Documentation

- caa091d linter/plugins: Correct doc comments for `initTokens` (#19530) (overlookmotel)

## [1.50.0] - 2026-02-23

### 🐛 Bug Fixes

- 7958b56 linter: Fix syntax error reporting in some output formatters.  (#19590) (connorshea)
- 024f51c linter: Add help text to more eslint diagnostics (#19591) (Anthony Amaro)
- 50fc70d linter/type-aware: Use correct span for disable directives (#19576) (camc314)
- 421a99c linter: Add help guidance to eslint diagnostic messages (#19562) (Anthony Amaro)
- 89b58d0 linter: Add help text to more eslint rule diagnostics (#19561) (Anthony Amaro)

### 🛡️ Security

- c67f9dc linter: Update ajv version. (#19613) (connorshea)

## [1.49.0] - 2026-02-19

### 💥 BREAKING CHANGES

- d4c7af3 linter: [**BREAKING**] Remove `allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing` option (#19451) (camc314)

### 🚀 Features

- 82ca5c3 linter: Add typescript/dot-notation rule (#19442) (camc314)
- 735d0e4 linter: Implement typescript/no-useless-default-assignment (#19488) (camc314)
- 31c3a93 linter: Add typescript/no-unnecessary-type-parameters rule (#19450) (camc314)
- c948090 linter: Add typescript/consistent-return rule (#19449) (camc314)
- 9f87df0 linter: Add typescript/prefer-string-starts-ends-with rule (#19448) (camc314)
- 04536be linter: Add typescript/prefer-regexp-exec rule (#19447) (camc314)
- 56a7feb linter: Add typescript/prefer-readonly rule (#19446) (camc314)
- a1cea63 linter: Add typescript/no-unnecessary-qualifier rule (#19445) (camc314)
- e3144d2 linter: Add typescript/prefer-find rule (#19444) (camc314)
- 13c7408 linter: Add typescript/prefer-readonly-parameter-types rule (#19443) (camc314)
- 9b17d44 linter: Add typescript/strict-void-return rule (#19441) (camc314)
- ed821b4 linter: Add typescript/consistent-type-exports rule (#19440) (camc314)

## [1.48.0] - 2026-02-16

### 🚀 Features

- 7a333c1 linter: Support dynamic configs via CLI arguments (#19384) (camc314)
- be0ce50 linter/tsgolint: Add support for labeled ranges in tsgolint diagnostics (#19201) (camchenry)
- 1612932 linter: Add typescript/no-unnecessary-condition (#19130) (camc314)

### 🐛 Bug Fixes

- d96d26d linter/plugins: Provide `parser.version` (#19364) (overlookmotel)

### 📚 Documentation

- b069269 linter/plugins: Add comment about deprecated `ScopeManager` methods (#19363) (overlookmotel)

## [1.47.0] - 2026-02-12

### 🚀 Features

- ebb80b3 ast: Add `node_id` field to all AST struct nodes (#18138) (Boshen)

### 🐛 Bug Fixes

- 45adda2 oxlint/lsp: Use blocking stdio in Oxlint (#19292) (overlookmotel)

## [1.44.0] - 2026-02-10

### 🚀 Features

- e3dc5f6 linter/plugins: `RuleTester` test suggestions (#19104) (overlookmotel)
- 6054249 linter/plugins: Add `recursive` option to `RuleTester` (#19093) (overlookmotel)
- 27c241b linter/plugins: `RuleTester` test fixes (#19091) (overlookmotel)
- 7be8613 linter: Move `no-misleading-chracter-class` to `correctness` (#19006) (Sysix)
- 87a920d ci: Add riscv64 and s390x napi targets for oxlint and oxfmt (#19039) (Boshen)
- ee2925b oxlint/lsp: Enable JS plugins (#18834) (overlookmotel)
- e2d28fe linter/plugins: Implement suggestions (#18963) (overlookmotel)
- a398152 linter: Promote the `eslint/no-iterator` rule to correctness, which makes it a default rule (#18915) (connorshea)
- bb1eb97 linter: Improve diagnostic message for circular configs (#18947) (camc314)
- 3184f36 linter: Ban relative js plugin specifiers in js extends config (#18944) (camc314)
- 749972f linter: Validate dynamic config extends shape (#18943) (camc314)
- b270739 linter: Support extends in oxlint.config.ts (#18942) (camc314)
- 9fd3bd6 linter/plugins: Add `@oxlint/plugins` NPM package (#18824) (overlookmotel)
- 9788a96 oxlint,oxfmt: Add more native builds (#18853) (Boshen)
- b23395a linter: Enforce exporting an object with `defineConfig` (#18858) (camc314)

### 🐛 Bug Fixes

- a5b8766 oxlint/lsp: Disable rule for this line should not be preferred (#19083) (Sysix)
- 1773acb oxlint: Re-generate envs (#19169) (camc314)
- 825f148 linter/plugins: `RuleTester` consider adjacent fixes as overlapping in ESLint compat mode (#19094) (overlookmotel)
- ecd2456 linter/plugins: Handle fix with -1 offsets in file with BOM (#19092) (overlookmotel)
- 2ad33cc oxlint/lsp: Search parent directories for root oxlint config (#19062) (copilot-swe-agent)
- ed759d1 linter/plugins: Fix error messages for invalid suggestions (#19059) (overlookmotel)
- 34851a7 linter/plugins: Error not panic if invalid fix range (#19058) (overlookmotel)
- 4823b58 linter/plugins: Fix fixes in files with BOM (#19056) (overlookmotel)
- 57917ee parser: Parse decorators on rest parameters (#18938) (Boshen)
- d64bfdd linter/plugins: Ensure `after` hook always runs last in rule converted for ESLint (#18904) (overlookmotel)
- ecf11e5 linter/dynamic-config: Set `ExternalPlugin.config_dir` to fix js plugins loading (#18854) (camc314)
- 01b7838 linter/plugins: Do not destroy workspaces (#18833) (overlookmotel)
- dc51d6b linter: Normalize paths slashes for snapshots on windows (#18825) (camc314)

### ⚡ Performance

- 18f58bd oxlint/lsp: Transform unused disable directive directly to DiagnosticReport (#19112) (Sysix)

### 📚 Documentation

- 6e8ef38 linter/plugins: Correct and expand JSDoc comment for `RuleTester` config (#19156) (overlookmotel)
- 726e273 linter/plugins: Improve JSDoc comment for `DiagnosticReport` (#19103) (overlookmotel)
- 9561e7f linter/plugins: Alter JS plugins example (#18900) (overlookmotel)
- 501e3b6 linter: Regenerate `config.generated.ts` (#18897) (overlookmotel)

## [1.43.0] - 2026-02-02

### 💥 BREAKING CHANGES

- b34a155 linter/plugins: [**BREAKING**] `RuleTester` set `context.filename` to absolute path (#18702) (overlookmotel)

### 🚀 Features

- c962dd2 linter/lsp: Implement support for oxlint.config.ts (#18826) (camc314)
- da32203 linter: Auto generate oxlint.config.ts types (#18597) (camc314)
- 19b4df7 oxlint: Introduce `defineConfig` helper (#18596) (camc314)
- ea97231 linter: Implement `oxlint.config.ts` support (#17563) (camc314)
- 88f30e0 linter/plugins: Move eslint compatible plugin conversion to `eslintCompatPlugin` function (#18791) (overlookmotel)
- 2a72794 linter/plugins: `RuleTester` take `cwd` property (#18756) (overlookmotel)
- 772ea70 linter: Introduce `load_js_configs` napi callback (#18767) (camc314)
- e9690c1 linter: Introduce `DiscoveredConfig` in preparation for JS configs (#18674) (camc314)
- 558b588 linter/prefer-namespace-keyword: Move to correctness (#18733) (camc314)
- 7a5c268 oxlint/lsp: Support `jsPlugins` (#17840) (Sysix)

### 🐛 Bug Fixes

- a3417b1 linter/plugins: Clear state when reloading workspace (#18837) (overlookmotel)
- c879992 linter: Error on arrays passed in as config (#18822) (camc314)
- 5c80422 linter/tsdown: Ensure relative path for globals import starts with `./` (#18820) (camc314)
- 7419dfb linter: Remove invalid debug assersion, add test (#18819) (camc314)
- 0ca6269 ci: Fix the repo path normalization logic for tests on Windows. (#18815) (connorshea)
- 41f92d1 linter: Error when given config options for a lint rule that has no config options defined. (#18809) (connorshea)
- 1d34b42 linter: Fix 32 bit build (#18783) (camc314)
- 95df577 linter/plugins: Handle error from `destroyWorkspace` (#18763) (overlookmotel)
- d981978 linter/plugins: Use non-blocking mode when calling `destroyWorkspace` (#18762) (overlookmotel)
- 3f43d4c linter: Accept bools as valid values for `fixable` (#18772) (camc314)
- 005910a linter/plugins: Support plugins outside of workspace (#18755) (overlookmotel)
- f82011b oxlint/lsp: Disable JS plugins support in LSP except in tests (#18727) (overlookmotel)
- e440b78 linter/plugins: Pass all args to CFG event handlers when 2 rules use same handler (#18683) (overlookmotel)
- 2e1fbc2 linter/plugins: Implement `context.parserPath` (#18644) (overlookmotel)
- 34951ed linter/plugins: `filename` option takes precedence over `parserOptions.lang` in `RuleTester` (#18643) (overlookmotel)
- 28df160 linter/plugins: Allow line number passed to `report` to be 0 (#18642) (overlookmotel)
- 0ff4cea oxlint/cli: Report error when nested config could not be parsed (#18504) (Sysix)

### ⚡ Performance

- 9862224 linter/plugins: Reduce cost of workspaces (#18758) (overlookmotel)
- 3a6b41e linter/plugins: Replace ESLint Traverser with lightweight traverseNode (#18529) (Rintaro Itokawa)

### 📚 Documentation

- ffe53a3 linter: Update lint function docs (#18766) (camc314)

## [1.42.0] - 2026-01-26

### 🚀 Features

- 704c8eb linter/use-isnan: Add more specific error message for equality/inequality (#18542) (camchenry)
- 1e99ace linter/use-isnan: Support more `indexOf` cases and improve diagnostic messages (#18537) (camchenry)
- b4b6247 linter/plugins: `RuleTester` support settings (#18445) (overlookmotel)
- 15d69dc linter: Implement react/display-name rule (#18426) (camchenry)
- 2fbceae linter: Implement rule docs and config support for rules with tuple config options. (#18372) (connorshea)
- 8db0e78 linter/plugins: Handle BOMs (#18376) (overlookmotel)
- 6ac09e2 linter/plugins: Support source text not being at start of buffer (#18375) (overlookmotel)
- 2cc6ad2 linter/plugins: Add `ecmaFeatures` to `parserOptions` (#18313) (overlookmotel)

### 🐛 Bug Fixes

- 2acf568 linter/plugins: Keep `Infinity` in rule default options (#18550) (overlookmotel)
- 332d2ef linter/plugins: Add `jsx` property to `parserOptions.ecmaFeatures` (#18549) (overlookmotel)
- c205b0d ast: Remove `ThisExpression` from `TSModuleReference` (#18489) (Boshen)
- c51339a oxlint/lsp: Respect code action `source.fixAll` as an alias for `source.fixAll.oxc` (#18366) (Sysix)
- 3c0e9b9 oxlint/lsp: Skip dangerous fixes/suggestions for "fix all" code action and command (#18364) (Sysix)
- b8a371d linter: Fix the path used in the gitlab format output (#18165) (connorshea)
- a9bfbcf linter: Compatibility issue with `DiagnosticData` type in ESLint (#18396) (루밀LuMir)
- c163231 linter: Update eslint/sort-imports to validate options. (#18378) (connorshea)
- b871235 linter/plugins: Fix identifying "use strict" directives in scope analysis (#18402) (overlookmotel)
- faca4b5 linter/plugins: Tokenize `let`, `static` and `yield` as `Keyword`s (#18368) (overlookmotel)
- a3914fd linter/plugins: Allow line number passed to `report` to be 1 over line count (#18341) (overlookmotel)
- 9eec600 linter: Update `react/jsx-fragments` rule to raise an error on invalid configuration options (#18111) (connorshea)
- 9e359d4 linter/plugins: Set all properties on global vars objects (#18317) (overlookmotel)
- 39c7f32 linter/plugins: Set `writeable` flag on variables where defined as globals (#18316) (overlookmotel)
- a570693 linter/plugins: Fix `CatchClause` scopes (#18312) (overlookmotel)
- 44be0eb linter/plugins: Set scope analyse settings based on source type (#18306) (overlookmotel)

### ⚡ Performance

- 2eefd6d linter/plugins: Remove branch from token parsing (#18369) (overlookmotel)

### 📚 Documentation

- ab506d6 linter/plugins: Correct comment (#18456) (overlookmotel)

## [1.40.0] - 2026-01-19

### 💥 BREAKING CHANGES

- ba9c750 span: [**BREAKING**] Use `ModuleKind::CommonJS` for `.cjs` and `.cts` file extensions (#18117) (Boshen)
- 3a0a190 linter/plugins: [**BREAKING**] Prevent access to `cwd` in `createOnce` (#18081) (overlookmotel)
- 9135b0b ast: [**BREAKING**] Move scope from `TSEnumDeclaration` to `TSEnumBody` (#18058) (Boshen)

### 🚀 Features

- 7c86fc3 linter/plugins: Support `commonjs` source type in `RuleTester` (#18198) (overlookmotel)
- 6e8fa80 napi/parser, napi/transform: Accept `sourceType: "commonjs"` (#18197) (overlookmotel)
- 66b8c02 parser: Implement unambiguous module parsing for JS/TS files (#18124) (Boshen)
- 08dad63 span: Add `sourceType: 'commonjs'` support (#18089) (Boshen)
- b516088 linter: Implement rule option validation/error handling for jest/no-hooks and eslint/no-return-assign rules. (#17600) (connorshea)
- e7631dd website: Update website generation flow for JSON rules output (#17973) (connorshea)
- 1757251 linter: Update linter JSON rule output to include extra information. (#15763) (connorshea)

### 🐛 Bug Fixes

- 4d68448 linter/plugins: `report` accept out of range `column` indexes in `loc` (#18199) (overlookmotel)
- 8a2dabc linter/plugins: Rule tester default to module source type in ESLint compat mode (#18195) (overlookmotel)
- 6956543 linter: Fix LSP panic from stale directive spans (#18082) (Boshen)
- 7a0ca99 linter/plugins: Use correct ScriptKind for tokens (#17185) (Peter Wagenet)
- 2a397f8 oxlint/lsp: Don't send `workspace/diagnostic/refresh` notification on watched file changes (#17885) (Sysix)

### 📚 Documentation

- d51cb6c linter/plugins: Remove outdated comments (#18194) (overlookmotel)

## [1.39.0] - 2026-01-12

### 🚀 Features

- af1d0e3 linter/prefer-optional-chain: Add rule (#17831) (camc314)
- 3567304 linter/vitest: Implement `consistent-each-for` (#17601) (Said Atrahouch)
- 2bd2d5a linter/vitest: Implement hoisted-apis-on-top (#17658) (Said Atrahouch)

### 🐛 Bug Fixes

- 84f4f3c linter: Add doc url for tsgolint diagnostics (#17879) (Sysix)

### 📚 Documentation

- e81a306 linter: Update the tsconfig flag mention for the import plugin. (#17778) (connorshea)

## [1.37.0] - 2026-01-05

### 🚀 Features

- 6154c8c linter/eslint-plugin-vitest: Implemented vitest/warn-todo rule (#17228) (Said Atrahouch)
- 9e8ec78 linter/only-throw-error rule: Add `allowRethrowing` option for  (#17554) (camc314)
- ee34716 linter/react: Implement no-will-update-set-state (#17530) (Kenzo Wada)
- 3088e1d linter/react: Implement no-this-in-sfc (#17535) (Kenzo Wada)
- 29a2868 linter/jsx-a11y: Implement no-static-element-interactions (#17538) (Kenzo Wada)

### 🐛 Bug Fixes

- a702f13 oxlint/lsp: Correct position for "disable for this file" with shebang (#17613) (Sysix)
- 529901c linter: Include JS plugin rules when calculating total rule count (#17520) (connorshea)
- 96ef2cc linter: Print total rule # when using a single nested config (#17517) (connorshea)
- 9ad0f29 oxlint: Do not enable external plugin store when no external linter is passed (#17498) (Sysix)
- 174375d oxfmt,oxlint: Disable mimalloc for 32-bit Arm targets (#17473) (Yaksh Bariya)
- a38892a linter: Update no-unnecessary-template-expression docs and test case (#17453) (camc314)

## [1.36.0] - 2025-12-29

### 🚀 Features

- 267e255 linter/react: Implement react/no-did-mount-set-state (#17313) (Kenzo Wada)
- 5cc7c90 linter/plugins: Pass `env` from Rust to JS (#17291) (overlookmotel)
- b97101a linter: Implement aria/proptypes (#17253) (mehm8128)

### 🐛 Bug Fixes

- fec2863 linter: Respect `.gitignore` regardless of if a git repo is initialized (#17375) (copilot-swe-agent)
- c6690d1 rust: Remove unsupported tokio io-std feature for WASM compatibility (#17311) (Boshen)
- 7eaa660 linter/plugins: Set up global scope correctly (#17293) (overlookmotel)

## [1.35.0] - 2025-12-22

### 🚀 Features

- d913f87 linter/plugins: Implement code path analysis (CFG) (#17229) (overlookmotel)
- 33b4e63 linter/plugins: Support more selector classes in visitor (#17219) (overlookmotel)
- b2b87c6 linter/plugins: Add `getRange` and `getLoc` methods to `SourceCode` (#17179) (overlookmotel)
- 0f63e75 linter: Implement react/no-unsafe (#16532) (Kenzo Wada)
- 9e624c9 linter/react: Add `version` to `ReactPluginSettings` (#17169) (camc314)
- 563b039 linter/plugins: Add `SourceCode#getLines` method (#17177) (overlookmotel)
- 5b5f2fd linter/no-base-to-string: Add checkUnknown option (#17139) (camc314)
- d03b855 linter/no-unsafe-member-access: Add allowOptionalChaining option (#17138) (camc314)
- b86a134 linter/no-unnecessary-type-assertion: Add checkLiteralConstAssertions option (#17137) (camc314)

### 🐛 Bug Fixes

- e08fdf1 linter/plugins: Include hashbang in comments (#17231) (overlookmotel)
- a3d203b linter/plugins: Make node, token, and comment objects have `Object.prototype` in prototype chain (#17220) (overlookmotel)
- 6f753a8 linter/plugins: Fix `:function` selector class (#17218) (overlookmotel)
- 4027039 linter/plugins: Reset `ancestors` if error during AST walk (#17207) (overlookmotel)
- 376caf1 linter: Improve the error message for when the oxlint config file is invalid. (#17196) (connorshea)
- c95a0ec linter: `valid-title`: fix diagnostic quoted in strings (#17180) (camchenry)

### ⚡ Performance

- 78df915 linter: Avoid multiple `to_string_lossy` calls in loop (#17212) (overlookmotel)
- 5aefb84 linter/plugins: Reduce size of walker code (#17176) (overlookmotel)

### 📚 Documentation

- 1714719 linter/plugin: Correct doc comment on `getNodeLoc` function (#17178) (overlookmotel)

## [1.34.0] - 2025-12-19

### 🚀 Features

- 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)
- 8bc4287 linter/plugins: Validate options against schema (#16974) (overlookmotel)
- 291b57b ast_tools: Generate TS declaration files for deserializer and walk files (#16912) (camc314)
- cd3db21 linter: Add ignoredTypeNames option to no-base-to-string rule (#16898) (camc314)

### 🐛 Bug Fixes

- fb9e193 linter: OOM problems with custom plugins (#17082) (overlookmotel)
- 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)
- 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)
- 477bb57 linter: Fix `vitest/no-restricted-vi-methods` and add tests for it. (#16971) (connorshea)
- 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)
- b845871 linter/plugins: Correctly handle object with `__proto__` keys in options merging (#16928) (overlookmotel)

### ⚡ Performance

- 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

- ca26a11 linter/plugins: Fix typo in doc comment (#16966) (overlookmotel)
- 3183bf8 linter/plugins: Fix typo in JSDoc comment (#16900) (overlookmotel)

## [1.33.0] - 2025-12-15

### 💥 BREAKING CHANGES

- e654c13 linter/plugins: [**BREAKING**] Do not export `NodeOrToken` type (#16806) (overlookmotel)
- f814c82 linter/plugins: [**BREAKING**] Use TypeScript parser directly for getting tokens (#16805) (overlookmotel)

### 🚀 Features

- 1bdaab1 linter/prefer-nullish-coalescing: Add rule (#16778) (camc314)
- 2b73b14 linter/plugins: Support `parserOptions.ecmaFeatures.jsx` option in `RuleTester` (#16690) (overlookmotel)
- 563eab7 linter/plugins: Add `parserOptions.lang` option to `RuleTester` (#16688) (overlookmotel)
- e39f487 linter/plugins: Add `ignoreNonFatalErrors` option to `RuleTester` (#16672) (overlookmotel)
- 4cf1353 linter/plugins: `RuleTester` support `languageOptions.sourceType` (#16660) (overlookmotel)
- 8c8b6d9 linter/plugins: Add `languageOptions` types to `RuleTester` config types (#16642) (overlookmotel)
- 554250e linter/plugins: `RuleTester` parser support options (#16641) (overlookmotel)
- 30a9076 ast, parser, codegen: Add `CommentKind::MultilineBlock` (#16479) (Dunqing)
- 767db50 linter: Promote constructor_super rule from nursery to correctness (#16605) (camc314)

### 🐛 Bug Fixes

- eccffcf linter/plugins: `report()` accept `loc` with no `end` (#16859) (overlookmotel)
- d3208dc parser: Parse `let?.x` (#16840) (Copilot)
- 3302fcb linter/plugins: Sort visitors in order of specificity (#16834) (overlookmotel)
- 36c9097 linter/plugins: `RuleTester` sort diagnostics before comparing to errors (#16741) (overlookmotel)
- 32e23f7 linter/plugins: Correct punctuation in error message (#16718) (overlookmotel)
- 6832464 linter/plugins: Do not escape tab or CR in test case names in `RuleTester` (#16712) (overlookmotel)

### ⚡ Performance

- 6b1a7b5 linter/plugins: Store specificity in a single integer (#16835) (overlookmotel)
- 3b7d345 linter/plugins: Use `start` and `end` instead of `range` in tokens methods (#16808) (overlookmotel)
- 4f9d17f linter/plugins: Remove unnecessary check (#16750) (overlookmotel)
- a5dc4c6 oxlint: Run e2e tests concurrently (#16651) (camc314)
- 0241b9a linter/plugins: Remove code for renaming global values (#16610) (overlookmotel)

### 📚 Documentation

- 32b641a linter/plugins: Fix typo in JSDoc comment (#16699) (overlookmotel)

## [1.32.0] - 2025-12-08

### 🚀 Features

- 5c62c16 linter/plugins: Allow JS plugins to access `globals` (#16512) (Arsh)
- 7584938 linter/plugins: Add ESLint compat mode to `RuleTester` (#16538) (overlookmotel)
- b38c2d0 linter/plugins: Add `SourceCode#lineStartIndices` getter (#16510) (overlookmotel)
- ba93ffc linter/plugins: Add `SourceCode#tokensAndComments` getter (#16503) (overlookmotel)
- d2ca540 linter/plugins: Add `SourceCode#isESTree` property (#16499) (overlookmotel)
- 9001234 linter: Add fix support for tsgolint diagnostics (#16344) (camc314)
- 0ec454c linter/plugins: Merge default options into options (#16358) (overlookmotel)

### 🐛 Bug Fixes

- a806d74 linter: Use import type for ESTree in visitor.d.ts (#16472) (camc314)
- 1a69b06 linter: Junit support for multiple files/errors/diagnostics (#16568) (Shrey Sudhir)
- fd84dcc linter/plugins: `RuleTester` parser catch fatal errors (#16558) (overlookmotel)
- ab4deb0 linter/plugins: Improve safety of options merging (#16549) (overlookmotel)
- f7751cc linter/plugins: Fix TS types for `RuleTester` (#16546) (overlookmotel)
- 6d33320 linter/plugins: Prevent user modifying the default config (#16545) (overlookmotel)
- b4483c5 linter/plugins: Add config support skeleton to `RuleTester` (#16537) (overlookmotel)
- 3a49158 linter/plugins: Improve TS types for tokens (#16502) (overlookmotel)
- 2d3217e linter/plugins: Remove panics from `lint_file` and `setup_configs` (#16453) (overlookmotel)

### ⚡ Performance

- 793b989 linter/plugins: Move result-processing work off main JS thread (#16456) (overlookmotel)
- 44dff7b linter/plugins: Skip serialization overhead when no errors (#16443) (overlookmotel)
- 1aa2409 linter/plugins: Do not remove `messageId` field from `DiagnosticReport` before sending to Rust (#16442) (overlookmotel)

### 📚 Documentation

- e24aabd linter/plugins: Correct comment (#16559) (overlookmotel)
- 8c85e08 linter/plugins: Add TODO comment (#16511) (overlookmotel)
- a9b9298 linter/plugins: Add JSDoc comments to `SourceCode` properties (#16497) (overlookmotel)
- 467cc1a linter/plugins: Improve comment on error branch (#16464) (overlookmotel)

## [1.31.0] - 2025-12-01

### 💥 BREAKING CHANGES

- 74cf572 ast: [**BREAKING**] Make `source` field of `TSImportType` a `StringLiteral` (#16114) (copilot-swe-agent)

### 🚀 Features

- 5da1a63 linter/plugins: Introduce `RuleTester` (#16206) (overlookmotel)
- 41129ab linter/plugins: Implement `languageOptions.parser` (#16292) (overlookmotel)
- 7150209 linter/plugins: Implement `SourceCode#getNodeByRangeIndex` (#16256) (overlookmotel)
- 3226864 linter/plugins: Implement options merging (#16217) (overlookmotel)
- cbb108a linter/plugins: Support default options (#16170) (overlookmotel)
- 04a3a66 linter/plugins: Implement `SourceCode#getTokenOrCommentAfter()` (#16045) (Arsh)
- 68b63d9 linter/plugins: Implement `SourceCode#getTokenOrCommentBefore()` (#16044) (Arsh)
- 04d9454 linter/plugins: Implement `SourceCode#getTokenByRangeStart()` (#16043) (Arsh)
- 7b8d578 linter/plugins: Implement `SourceCode#getTokensBetween()` (#16034) (Arsh)
- 79c242f linter/plugins: Implement `SourceCode#getLastTokensBetween()` (#16033) (Arsh)
- 1772078 linter/plugins: Implement `SourceCode#getFirstTokenBetween()` (#16032) (Arsh)
- 21bb86d linter/plugins: Implement `SourceCode#getFirstTokensBetween()` (#16019) (Arsh)
- 78f74b1 linter/plugins: Implement `SourceCode#getLastTokenBetween()` (#16008) (Arsh)
- df0b948 linter/plugins: Implement `SourceCode#getLastToken()` (#16003) (Arsh)

### 🐛 Bug Fixes

- cf249f5 linter/plugins: Fix message interpolation (#16300) (overlookmotel)
- 9149a26 linter/plugins, napi/parser: Deep freeze visitor keys (#16293) (overlookmotel)
- 653fa6c oxlint/oxfmt/lsp: Tell client the real tool name & version (#16212) (Sysix)
- 0df1901 linter/plugins: Reset state after error during AST visitation (#16246) (overlookmotel)
- 78aa294 linter/plugins: Deep freeze options (#16218) (overlookmotel)
- 123bffe linter/plugins: Handle zero-token files in `SourceCode#getLastToken()` (#16184) (Arsh)
- 55fcfba linter: Add considerDefaultExhaustiveForUnions option to switch-exhaustiveness-check (#16204) (camc314)
- 9cc20a1 minifier: Avoid merging side effectful expressions to next assignment statement if the side effect may change the left hand side reference (#16165) (sapphi-red)
- 75249e0 linter/plugins: Handle non-UTF8 file paths (#16157) (overlookmotel)
- 86fa667 linter/plugins: Improve type def for `RuleMeta` `defaultOptions` property (#16159) (overlookmotel)
- 91eb3f2 ast/estree: Convert `TSImportType` `argument` field to `Literal` (#16109) (overlookmotel)
- f5cb601 linter/plugins: Perform length checks before continuing loops (#16025) (Arsh)

### ⚡ Performance

- 02bdf90 linter/plugins, napi/parser: Reuse arrays in visitor keys (#16294) (overlookmotel)
- d3a34f8 linter/plugins: Optimize `getTokens()` and other methods (#16188) (Arsh)
- c05db06 linter/plugins: Speed up `initTokensWithComments` (#16117) (overlookmotel)
- 4846886 linter/plugins: Optimize merging of `tokens` and `comments` (#16071) (Arsh)
- e232d35 linter/plugins: Recycle objects in token methods (#16068) (overlookmotel)

### 📚 Documentation

- e928732 linter/plugins: Fix JSDoc comment (#16295) (overlookmotel)
- be36e36 linter/plugins: Fix JSDoc comment for `loadPluginImpl` (#16211) (overlookmotel)
- 0e1d38a linter/plugins: Clarify JSDoc comment for `getTokensBetween` (#16070) (overlookmotel)
- 3ee22b2 linter/plugins: Fix JSDoc comments for tokens methods (#16063) (overlookmotel)
- f257b5c linter/plugins: Clarify JSDoc comments for tokens methods (#16062) (overlookmotel)

## [1.30.0] - 2025-11-24

### 💥 BREAKING CHANGES

- cbb27fd ast: [**BREAKING**] Add `TSGlobalDeclaration` type (#15712) (overlookmotel)

### 🚀 Features

- 0c1f82b linter/plugins: Add `tokens` property to `Program` (#16020) (overlookmotel)
- 9e61beb linter/plugins: Implement `SourceCode#getFirstToken()` (#16002) (Arsh)
- 9a548dd linter/plugins: Implement `SourceCode#getLastTokens()` (#16000) (Arsh)
- 0b6cb11 linter/plugins: Implement `SourceCode#getFirstTokens()` (#15976) (Arsh)
- 166781e linter/plugins: Implement `SourceCode#getTokenAfter()` (#15973) (Arsh)
- 6ae232b linter: Expose type errors via tsgolint (#15917) (camc314)
- 2bfdd26 linter/plugins: Implement `SourceCode#getTokensAfter()` (#15971) (Arsh)
- 45fffc1 linter/plugins: Implement `SourceCode#getTokenBefore()` (#15956) (Arsh)
- 776e473 linter/plugins: Implement `SourceCode#getTokensBefore()` (#15955) (Arsh)
- 986cac1 linter/plugins: Token-related `SourceCode` APIs (TS ESLint implementation) (#15861) (Arsh)
- 4b9d8d2 linter/type-aware: Include range with tsconfig diagnostics (#15916) (camc314)

### 🐛 Bug Fixes

- 2bd3cb6 apps, editors, napi: Fix `oxlint-disable` comments (#16014) (overlookmotel)
- a8a2032 linter: Support missing `range` for internal diagnostics (#15964) (camc314)
- 9fa9ef2 linter: Gracefully fail when using import plugin, large file counf and JS plugins (#15864) (camc314)
- c027398 linter/plugins: Correct bindings package names glob in TSDown config (#15871) (overlookmotel)
- 46bd6bd linter/plugins: Pin `@typescript-eslint/scope-manager` dependency (#15807) (overlookmotel)
- fba31fa linter: Patch `@typescript-eslint/scope manager` (#15214) (Arsh)

### ⚡ Performance

- 024b48a linter/plugins: Lazy-load tokens parsing code (#16011) (overlookmotel)
- 15365c9 linter/plugins: Reduce var assignments (#15953) (overlookmotel)
- 84d1f4f linter/plugins: Downgrade some checks to debug-only (#15922) (overlookmotel)

### 📚 Documentation

- 6c72e84 linter: Use backticks for code elements across more rule diagnostics (#15958) (connorshea)
- a63dad7 linter/plugins: Add comment (#15952) (overlookmotel)
- db6a110 linter/plugins: Fix JSDoc comment (#15884) (overlookmotel)
- fbf0fd4 linter/plugins: Add JSDoc comments to `Plugin` and `Rule` types (#15815) (overlookmotel)
- ac5e4b5 linter/plugins: Add JSDoc comments and improve comments (#15814) (overlookmotel)

## [1.29.0] - 2025-11-17

### 🚀 Features

- e01c551 oxlint: Add `--lsp` flag to run the language server (#15611) (Sysix)
- f5d9abb oxlint: Add enabled? column to --rules cli output (#15213) (Wren)
- 6b5205c linter/plugins: Implement deprecated `SourceCode#getJSDocComment` method (#15653) (overlookmotel)
- 5eccff1 linter/plugins: Implement deprecated `SourceCode` tokens methods (#15645) (overlookmotel)
- 0d52a5e linter/plugins: Implement `Context#parserOptions` getter (#15632) (overlookmotel)
- 287a538 linter/plugins: Implement `Context#get*` deprecated methods (#15606) (overlookmotel)

### 🐛 Bug Fixes

- 7c4a916 linter: Restores `oxlint --rules -f=json` functionality. (#15689) (Wren)
- 24d00f4 linter/plugins: Add types for suggested fixes (#15636) (overlookmotel)
- 257360f linter/plugins: Fill in TS type def for `RuleMeta` (#15629) (overlookmotel)
- bb5f8ca oxlint: Fix type annotation for big-endian (#15561) (Sysix)

### ⚡ Performance

- e2a0997 linter/plugins: Recycle empty visitor object in ESLint compat mode (#15693) (overlookmotel)
- 54061e9 linter/plugins: Avoid implicit boolean coercion in `initLines` (#15641) (overlookmotel)

### 📚 Documentation

- a5feebc linter: `oxlint-disable` not `eslint-disable` (#15672) (overlookmotel)
- 3d15805 linter: Reformat doc comments (#15670) (overlookmotel)
- 16fcba6 linter: Remove "experimental" from description of stable features (#15669) (overlookmotel)
- e62fd98 linter: Correct comment on what `EnablePlugins` does (#15668) (overlookmotel)
- a25d31e linter: Fix grammar (#15666) (overlookmotel)
- f5f452f linter: Add missing `perf` category (#15667) (overlookmotel)
- a210b12 linter/plugins: Improve JSDoc comment for `RuleOptionsSchema` (#15642) (overlookmotel)
- 3aabfac linter/plugins: Alter comments on `FILE_CONTEXT` used in ESLint-compat `Context` shim (#15605) (overlookmotel)

## [1.27.0] - 2025-11-10

### 🚀 Features

- 222a8f0 linter/plugins: Implement `SourceCode#isSpaceBetween` (#15498) (overlookmotel)
- 2f9735d linter/plugins: Implement `context.languageOptions` (#15486) (overlookmotel)
- bc731ff linter/plugins: Stub out all `Context` APIs (#15479) (overlookmotel)
- 5822cb4 linter/plugins: Add `extend` method to `FILE_CONTEXT` (#15477) (overlookmotel)
- 7b1e6f3 apps: Add pure rust binaries and release to github (#15469) (Boshen)

### 🐛 Bug Fixes

- 6957fb9 linter/plugins: Do not allow access to `Context#id` in `createOnce` (#15489) (overlookmotel)
- 7409630 linter/plugins: Allow access to `cwd` in `createOnce` in ESLint interop mode (#15488) (overlookmotel)
- a17ca32 linter/plugins: Replace `Context` class (#15448) (overlookmotel)
- fde753e linter/plugins: Block access to `context.settings` in `createOnce` (#15394) (overlookmotel)
- cc403f5 linter/plugins: Return empty object for unimplemented parserServices (#15364) (magic-akari)

### ⚡ Performance

- 3c57291 linter/plugins: Optimize loops (#15449) (overlookmotel)
- 3166233 linter/plugins: Remove `Arc`s (#15431) (overlookmotel)
- 9de1322 linter/plugins: Lazily deserialize settings JSON (#15395) (overlookmotel)
- 3049ec2 linter/plugins: Optimize `deepFreezeSettings` (#15392) (overlookmotel)
- 444ebfd linter/plugins: Use single object for `parserServices` (#15378) (overlookmotel)

### 📚 Documentation

- 97d2104 linter: Update comment in lint.rs about default value for tsconfig path (#15530) (Connor Shea)

## [1.26.0] - 2025-11-05

### 🚀 Features

- 230e34c linter/plugins: Allow js plugins to access settings (#14724) (Arsh)
- 7a00691 linter/no-deprecated: Add rule (#15272) (camc314)
- ab065a9 tsgolint: Improve diagnostic messages with file reference (#15274) (camc314)
- 979ec04 linter: Pretty print tsgolint internal diagnostics (#15131) (camc314)

### 🐛 Bug Fixes

- 40231a6 linter/plugins, napi/parser: Add `parent` field to `FormalParameterRest` and `TSParameterProperty` in TS type defs (#15337) (overlookmotel)
- 861508a linter/plugins: Make `parent` fields in TS type defs non-optional (#15336) (overlookmotel)
- 7f079ab ast/estree: Fix raw transfer deserializer for `AssignmentTargetPropertyIdentifier` (#15304) (overlookmotel)
- 56c6627 linter/plugins: Resolve JS plugins only with conditions Node.js supports (#15248) (sapphi-red)
- f376e61 linter: Bundle `@typescript-eslint/scope-manager` (#15210) (Arsh)
- 80a187c linter: Add offset for parsing error in partial loading files (#15075) (Liang Mi)

### 🚜 Refactor

- 636e7ed linter/plugins: Shorten `ScopeManager` code (#15335) (overlookmotel)
- a7cf856 ast/estree: Shorten raw transfer deserializer for `AssignmentTargetPropertyIdentifier` (#15303) (overlookmotel)

### 📚 Documentation

- a7d9f1d linter/plugins: Reformat and clarify `ScopeManager` JSDoc comments (#15333) (overlookmotel)
- 69e61d4 linter/plugins: Update comment (#15293) (overlookmotel)

### ⚡ Performance

- 8b31daa linter/plugins: Small optimizations to `ScopeManager` (#15334) (overlookmotel)
- 4c0ba92 linter/plugins: Use singleton object for `ScopeManager` (#15332) (overlookmotel)
- c82fab0 ast/estree: Remove pointless assignments from raw transfer deserializers (#15305) (overlookmotel)
- ee9f2f4 linter/plugins: Faster check for `cwd` (#15301) (overlookmotel)

### 🧪 Testing

- 48e646b oxlint/lsp: Update snapshot for invalid syntax test (#15191) (Sysix)
- dbc260b linter: Disable tsgolint exit code specific test on windows (#15117) (camc314)


## [1.25.0] - 2025-10-30

### 💥 BREAKING CHANGES

- 659fd37 linter: [**BREAKING**] `tsgolint`: request fixes when necessary (#15048) (camchenry)

### 🚀 Features

- ed24d60 linter: Expose tsgolint program diagnostics (#15080) (camc314)
- f7bef73 linter/plugins: Scope manager API (#14890) (Arsh)
- 3e15cdd linter/strict-boolean-expression: Add rule (#14930) (camc314)
- bd74603 linter: Add support for vitest/valid-title rule (#12085) (Tyler Earls)

### 🐛 Bug Fixes

- 597340e ast-tools: Use oxfmt to format generated code (#15064) (camc314)
- 2de9f39 linter/plugins: Fall back to package name if meta.name is missing (#14938) (Peter Wagenet)

### 🧪 Testing

- bf898e5 linter: Increase stability of tsgolint test cases (#15063) (camc314)


## [1.24.0] - 2025-10-22

### 🚀 Features

- 54ec8e3 linter: Add `cwd` property to JS plugin `Context` (#14814) (magic-akari)
- 9700a56 linter/plugins: Comment-related APIs (#14715) (Arsh)
- bec7a7d semantic: Add scope to `TSConstructorType` (#14676) (camc314)
- b1a9a03 linter/plugins: Implement `SourceCode#getAllComments` (#14589) (Arsh)

### 🐛 Bug Fixes

- 28e76ec oxlint: Resolving JS plugin failing when `extends` is used (#14556) (camc314)
- 78ee7b8 linter/plugins: Handle utf16 characters within comment spans (#14768) (Arsh)
- 47d8db1 linter/plugins: Prevent `comments` being accessed after file is linted (#14727) (overlookmotel)
- 5238891 linter/plugins: Add `comments` field to TS type def for `Program` (#14626) (overlookmotel)
- 84b2605 linter/plugins: Remove `parent` property from comments (#14624) (overlookmotel)
- 0961c3a oxlint,oxfmt: Skip traversing `.git` directories (#14590) (Boshen)

### 🚜 Refactor

- 4520695 linter/plugins: Reorganise `SourceCode` methods (#14773) (overlookmotel)
- 6942d75 linter/plugins: Shorten import of comment-related `SourceCode` methods (#14772) (overlookmotel)
- b9a3f46 linter/plugins: Move scope-related `SourceCode` methods into separate file (#14771) (overlookmotel)
- cd068aa linter/plugins: Move token-related `SourceCode` methods into separate file (#14770) (overlookmotel)
- ec816ba linter/plugins: Move comments-related code into separate file (#14753) (overlookmotel)
- e9c3b18 linter/plugins: Update outdated comment (#14750) (overlookmotel)
- 14de671 linter/plugins: Simplify `comments` getter (#14728) (overlookmotel)
- b402024 linter/plugins: Rename function (#14726) (overlookmotel)
- 85a2743 linter/plugins, napi/parser: Remove extraneous code from raw transfer deserializers (#14683) (overlookmotel)
- 2b14abc napi/parser: Shorten raw transfer deserializer for `Comment` (#14623) (overlookmotel)

### 📚 Documentation

- 207b62b linter/plugins: Correct JSDoc comments for `SourceCode` tokens methods (#14776) (overlookmotel)
- cd266b4 linter/plugins: Improve docs for comments APIs (#14754) (overlookmotel)

### ⚡ Performance

- 10182e8 linter/plugins: Use binary search (#14778) (Arsh)
- e6f351d linter/plugins: Speed up `SourceCode#getAncestors` (#14747) (overlookmotel)
- 58ba6d6 linter/plugins: Lazy deserialize comments array (#14637) (Arsh)

### 🎨 Styling

- 3029dfb linter/plugins: Reorder code (#14725) (overlookmotel)

### 🧪 Testing

- 5933097 oxlint: Add test for nested configs importing the same plugin 2x (#14646) (camc314)
- 6570f36 linter/custom-plugins: Snapshot test start, end, range, and loc for comments (#14779) (Arsh)


## [1.23.0] - 2025-10-13

### 🐛 Bug Fixes

- 6fce7f4 oxlint/changelog: Remove duplicate changelog entries (#14528) (camc314)
- 74e52f3 linter/plugins: Resolve JS plugins with ESM condition names (#14541) (magic-akari)

### 🚜 Refactor

- 4f301de napi/parser, linter/plugins: Improve formatting of generated code (#14554) (overlookmotel)
- 68c0252 napi/parser, linter/plugins: Shorten generated raw transfer deserializer code (#14553) (overlookmotel)
- 20e884e linter: Store `LintService` in `LintRunner` (#14471) (Sysix)

### ⚡ Performance

- 31766fd linter/plugins: Provide `loc` via prototype (#14552) (overlookmotel)

### 🧪 Testing

- 8d8881d linter/plugins: Expand tests for module resolution of plugins (#14559) (overlookmotel)


## [1.22.0] - 2025-10-08

### 🐛 Bug Fixes

- 0dcdbd1 oxlint: Bundle esquery (#14450) (camc314)


## [1.21.0] - 2025-10-08

### 🚀 Features

- 576be20 linter/plugins: Support selectors DSL (#14435) (overlookmotel)
- b2de44f linter/plugins: Support interpolation in normal diagnostic `message` (#14419) (overlookmotel)
- 382c5be linter/plugins: Support placeholders in messageIds (#14416) (camc314)
- 529e88e linter/plugins: Support `messageId`s (#14415) (camc314)
- 0ec0847 ci: Run napi tests on windows (#14383) (camc314)

### 🐛 Bug Fixes

- 88ec1bd linter/plugins: Fix error messages (#14423) (overlookmotel)
- 18616c2 oxlint: Ignore fixtures dir for vitest (#14414) (camc314)
- ec02fe8 oxlint: Normalize path separators in snapshot tests (#14406) (camc314)
- 96663fb linter/plugins: Do not call `before` hook if empty visitor (#14401) (overlookmotel)
- 52f04bd linter: Use `pathToFileURL` for importing plugins to ensure correct URL format (#14394) (camc314)
- 1ea0d46 oxlint: Resolve tsdown deprecation warning (#14389) (camc314)

### 🚜 Refactor

- 3b26bf3 linter/plugins: Split adding visit function to compiler visitor into multiple functions (#14433) (overlookmotel)
- af3a75e linter/plugins: Track ancestors while walking AST (#14432) (overlookmotel)
- f279f0b linter/plugins: Do not lazy-load visitor keys (#14431) (overlookmotel)
- 5e99ed3 linter/plugins: Allow nullish values as `message` or `messageId` (#14422) (overlookmotel)
- dc30938 linter/plugins: Remove default value from `Context` constructor (#14421) (overlookmotel)
- 28cfae0 oxlint: Use `vitest`s built in file snapshot comparison (#14392) (camc314)
- 06b0e9f linter/plugins: Convert generated files to TS (#14385) (overlookmotel)
- 52f35c6 napi/parser, linter/plugins: Rename `types.js` to `type_ids.js` (#14384) (overlookmotel)

### ⚡ Performance

- 26435a1 linter/plugins: Small perf optimizations (#14420) (overlookmotel)
- d8a8be1 linter/plugins: Avoid private methods (#14418) (overlookmotel)

### 🧪 Testing

- d8da4a4 linter/plugins: Clarify tests for message placeholders (#14417) (overlookmotel)


## [1.20.0] - 2025-10-06

### 🚀 Features

- d16df93 linter: Support disable directives for type aware rules (#14052) (camc314)
- a2914fe linter/plugins: Add `loc` field getter to all AST nodes (#14355) (overlookmotel)
- 07193c2 linter/plugins: Implement `SourceCode#getAncestors` (#14346) (overlookmotel)
- c8de6fe linter/plugins: Add `parent` field to AST nodes (#14345) (overlookmotel)
- 5505a86 linter/plugins: Include `range` field in AST (#14321) (overlookmotel)
- 1347de4 linter/plugins: Accept diagnostics with `loc` (#14304) (overlookmotel)
- aefc8b3 linter/plugins: Implement `SourceCode#getIndexFromLoc` and `getLocFromIndex` (#14303) (overlookmotel)
- 93807db linter/plugins: Implement `SourceCode#lines` property (#14290) (overlookmotel)
- 2f8c985 linter/plugins: Implement `SourceCode#visitorKeys` property (#14289) (overlookmotel)
- b69028f linter/plugins: Implement `SourceCode#ast` property (#14287) (overlookmotel)
- bdf9010 linter/plugins: Add `SourceCode` API (#14281) (overlookmotel)

### 🐛 Bug Fixes

- 9a902c0 linter/plugins: Make `range` field non-optional on AST types (#14354) (overlookmotel)
- 46cceb8 linter/rules-of-hooks: Correctly place primary span to fix disable directive (#14237) (camc314)

### 🚜 Refactor

- 1489376 napi/parser, linter/plugins: Minify walker code (#14376) (overlookmotel)
- c8eeeb5 linter/plugins: Remove build-time dependency on `napi/parser` (#14374) (overlookmotel)
- fb1a067 linter/plugins: Bundle walker and AST types map (#14373) (overlookmotel)
- 93d8164 linter/plugins: Export AST types direct from `oxlint` package (#14353) (overlookmotel)
- 230d996 linter/plugins: `SourceCode#getText` use `range` (#14352) (overlookmotel)
- 6e52bbd linter/plugins: Move location-related code into separate file (#14350) (overlookmotel)
- 13f1003 linter/plugins: Share `ast` between files (#14349) (overlookmotel)
- 79eadf8 linter: Introduce `LintRunner` (#14051) (camc314)
- 65873ba linter/plugins: Add stubs for all `SourceCode` methods (#14285) (overlookmotel)
- 989ce2f linter/plugins: Convert `Node` type to interface (#14280) (overlookmotel)

### ⚡ Performance

- e75d42d napi/parser, linter/plugins: Remove runtime `preserveParens` option from raw transfer deserializers (#14338) (overlookmotel)
- 2e57351 linter/plugins: Initialize `lineStartOffsets` as `[0]` (#14302) (overlookmotel)
- c27a393 linter/plugins: Deserialize AST on demand (#14288) (overlookmotel)
- 95a8cc4 linter/plugins: Use singleton for `SourceCode` (#14286) (overlookmotel)


### 🧪 Testing

- 0061ce7 linter: Add more tests for disable directives in partial loadable files (#14371) (camc314)
- 1387aaa linter/plugins: Test `createOnce` returning no visitor functions (#14279) (overlookmotel)


## [1.19.0] - 2025-09-29

### 🚀 Features

- acd1266 linter/plugins: `oxlint` export types (#14163) (overlookmotel)
- 00954de linter/plugins: Remove `--js-plugins` CLI option (#14134) (overlookmotel)
- b4d716f linter/plugins: Move custom JS plugin config to `jsPlugins` (#14133) (overlookmotel)
- 9c3afea linter/plugins: Support fixes (#14094) (overlookmotel)
- 1472147 linter: Move `no-unused-expressions` to correctness (#14099) (camchenry)
- c796966 linter/plugins: Add `meta` property to rules (#14089) (overlookmotel)

### 🐛 Bug Fixes

- 39a171e linter: Get cli args on JS side, to avoid runtime inconsistencies (#14223) (camc314)
- e045391 linter/plugins: Error on JS plugin with reserved name (#14226) (overlookmotel)
- 37f6b09 linter/plugins: Make `null` a valid value for `meta.fixable` (#14204) (overlookmotel)
- e9a14d1 linter/plugins: Allow `fix` function to return `undefined` (#14182) (overlookmotel)
- ee9ecbe linter/plugins: Fix TS type for fixer methods (#14166) (overlookmotel)
- 03d1684 linter/plugins: Output warning on first JS plugin load (#14165) (overlookmotel)
- 9716f7c linter/plugins: Fix TS types (#14162) (overlookmotel)
- 4a4fce8 linter: Fix cli argument parsing (#14112) (camc314)
- 9f3e2bc linter/plugins: Output errors thrown in JS plugins (#14096) (overlookmotel)
- d8e9cc5 linter/plugins: Validate type of `before` and `after` hooks (#14086) (overlookmotel)

### 🚜 Refactor

- 61ec0a7 linter/plugins: Simplify creation of `context` in `defineRule` ESLint shim (#14206) (overlookmotel)
- 3b1fe6f linter/plugins: Flatten directory structure of `dist` (#14199) (overlookmotel)
- d52cba6 linter: Bump TSDown to latest (#14198) (overlookmotel)
- 983dd1b linter/plugins: Add `Fixer` type (#14180) (overlookmotel)
- 2f8b076 linter/plugins: Remove dead code (#14178) (overlookmotel)
- e69cd86 linter/plugins: `loadPluginImpl` return an object (#14087) (overlookmotel)

### 📚 Documentation

- b19f5bc linter/plugins: Improve JSDoc comments for `definePlugin` and `defineRule` (#14159) (overlookmotel)

### ⚡ Performance

- 2575065 linter/plugins: Store if rule is fixable as boolean (#14205) (overlookmotel)

### 🧪 Testing

- a9b603e linter/plugins: Convert all plugins in tests to TS (#14200) (overlookmotel)
- 6ff3a23 linter/plugins: Add tests for `.ts`, `.mts`, `.cts` plugin files (#14164) (overlookmotel)
- 8988d64 linter/plugins: Add line breaks to plugins files (#14181) (overlookmotel)
- 52db331 linter/plugins: Type-check test fixtures (#14158) (overlookmotel)
- aca083a linter/plugins: Include stderr output in snapshots (#14155) (overlookmotel)
- a3c8f46 linter/plugins: Do not run `pnpm` in tests (#14157) (overlookmotel)
- 0029b7f linter/plugins: Normalize line breaks in snapshots (#14154) (overlookmotel)
- 7f2c101 linter/plugins: Specify path to `node` in tests (#14152) (overlookmotel)
- fc14abc linter/plugins: Format test fixtures (#14125) (overlookmotel)
- a6f965f linter/plugins: Simplify configs in test fixtures (#14124) (overlookmotel)
- b1685f7 linter/plugins: Refactor tests (#14123) (overlookmotel)
- 788e495 linter/plugins: Improve ESLint compat tests (#14119) (overlookmotel)
- 5750077 linter/plugins: Fix file paths in snapshots (#14115) (overlookmotel)
- 5c862f9 linter/plugins: Standardize test fixture structure (#14114) (overlookmotel)


## [1.18.0] - 2025-09-24

### 🐛 Bug Fixes

- 314c27d linter/plugins: `definePlugin` apply `defineRule` to rules (#14065) (overlookmotel)
- 7bd01ed linter/plugins: `defineRule` call `createOnce` lazily (#14062) (overlookmotel)
- fb3e7e3 linter/plugins: `defineRule` accept visitor with no `before` / `after` hooks (#14060) (overlookmotel)

### 🚜 Refactor

- 3a706a7 linter: Rename `LintRunner` to `CliRunner` (#14050) (camc314)

### ⚡ Performance

- ce538c7 linter/plugins: Load methods of globals into local vars (#14073) (overlookmotel)

### 🧪 Testing

- 2fd4b1e linter/plugins: Rename test (#14064) (overlookmotel)
- f2b3934 linter/plugins: Test returning `false` from `before` hook skips visitation in ESLint (#14061) (overlookmotel)
- b109419 linter/plugins: Align ESLint plugin with Oxlint (#14059) (overlookmotel)


## [1.17.0] - 2025-09-23

### 🚀 Features

- f47f978 linter/plugins: Add `definePlugin` API (#14008) (overlookmotel)
- 3e117c6 linter/plugins: Add `defineRule` API (#13945) (overlookmotel)
- 2dc8adb linter/plugins: Add `createOnce` API (#13944) (overlookmotel)
- bef8753 linter/plugins: ESTree-compatible AST for JS plugins (#13942) (overlookmotel)
- a14aa79 npm/oxlint: Convert to ES modules (#13876) (Boshen)
- b52389a node: Bump `engines` field to require Node.js 20.19.0+ for ESM support (#13879) (Copilot)
- c75ae8c linter/plugins: Add options to `Context` (#13810) (overlookmotel)
- 53d04dd linter: Convert `oxlint` to NAPI app (#13723) (overlookmotel)

### 🐛 Bug Fixes

- 1f4be38 napi/parser: Generate `.d.mts` extension for types (#14038) (Daniel Roe)
- a018756 linter/plugins: Pin `tsdown` dependency to 0.15.1 (#14005) (overlookmotel)
- a34918a linter/plugins: Avoid lint warnings compiling WASM or big-endian (#13968) (overlookmotel)
- dd3843f linter: Set package version in `package.json` (#13890) (overlookmotel)
- fac7624 linter/plugins: Improve error for no JS plugins (#13858) (overlookmotel)

### 🚜 Refactor

- bb040bc parser, linter: Replace `.mjs` files with `.js` (#14045) (overlookmotel)
- 0d48511 linter/plugins: Improve handling `Context` method calls in `createOnce` (#14032) (overlookmotel)
- 6bc7664 oxlint: Run oxlint before tsgolint (#13519) (camc314)
- ac3e9e9 napi/parser: Move JS code into `src-js` directory (#13899) (overlookmotel)
- 7e0d736 linter/plugins: Rename `--experimental-js-plugins` to `--js-plugins` (#13860) (overlookmotel)
- 6245c8c linter/plugins: Make `Context` properties getters (#13809) (overlookmotel)
- a2342a6 linter/plugins: Import named in tests (#13807) (overlookmotel)

### 📚 Documentation

- 601c876 linter: Add comment explaining why Mimalloc is feature-gated (#14037) (overlookmotel)

### ⚡ Performance

- 4d04c6e linter/plugins: Flatten `LintFileResult` fields (#14033) (overlookmotel)
- a79af0a linter: Replace `for (... of ...)` loops (#13913) (overlookmotel)

### 🎨 Styling

- 8083740 linter: Import `Serialize` at top level (#14030) (overlookmotel)

### 🧪 Testing

- f51240e linter/plugins: Tests for different import styles (#13859) (overlookmotel)
- 407c95e linter/plugins: Check `this` is undefined in visit functions (#13811) (overlookmotel)
- f023a22 linter/plugins: Include stack trace in plugin loading errors (#13808) (overlookmotel)

### 💼 Other

- 0630d68 linter: Build `oxlint` locally with Mimalloc in release mode (#14034) (overlookmotel)


## [1.16.0] - 2025-09-16

### 🐛 Bug Fixes

- 3af1e5d linter/no-unsafe-declaration-merging: Always mark first span as primary (#13830) (camc314)
- 12baf5e linter/exhaustive-deps: Respect primary span when identifying disable directive location (#13781) (camc314)
- 09428f6 linter/plugins: Remove outdated comment (#13691) (overlookmotel)
- a294721 linter/plugins: Exit early if JS plugins enabled on unsupported platforms (#13689) (overlookmotel)
- 68a2280 linter/plugins: More graceful exit for `--experimental-js-plugins` CLI option (#13688) (overlookmotel)

### 🚜 Refactor

- 7346099 linter: Move `oxlint` application code into separate module (#13745) (overlookmotel)
- 6dd4107 linter: Remove `#[cfg(test)]` attributes from `tester` module (#13714) (overlookmotel)
- c40c6ef linter/plugins: Directory for JS plugins-related code (#13701) (overlookmotel)
- 1fd993f napi/oxlint: Rename `napi/oxlint2` to `napi/oxlint` (#13682) (overlookmotel)

### 🎨 Styling

- 99a7638 linter: Add comments + re-organise imports (#13715) (overlookmotel)

### 🧪 Testing

- fb2d087 linter: Set CWD for tests (#13722) (overlookmotel)


## [1.15.0] - 2025-09-11

### 💥 BREAKING CHANGES

- edc70ea allocator/pool: [**BREAKING**] Remove `disable_fixed_size` Cargo feature (#13625) (overlookmotel)

### 🐛 Bug Fixes

- 0d867b1 linter: Skip running tsgolint when no files need type aware linting (#13502) (Copilot)

### 🚜 Refactor

- 7775c21 linter/plugins: Remove `oxlint2` Cargo feature (#13648) (overlookmotel)
- 6cd6be2 linter: Add `--experimental-js-plugins` CLI arg (#13658) (overlookmotel)
- 2f02ac6 linter/plugins: Remove `disable_oxlint2` Cargo feature (#13626) (overlookmotel)
- ff9e4fb linter/plugins: Use fixed-size allocators when `ExternalLinter` exists (#13623) (overlookmotel)
- 91759c6 linter/plugins: Only use `RawTransferFileSystem` if JS plugins registered (#13599) (overlookmotel)
- 118020c linter/plugins: Discard `ExternalLinter` if no JS plugins registered (#13598) (overlookmotel)
- 8d30bce linter/tsgolint: Report an error if the tsgolint exe could not be found (#13590) (camc314)
- d245376 oxlint: Remove unused `runner` module (#13561) (camc314)

### 🧪 Testing

- 58e6c94 oxlint: Add test for ignorePatterns whitelist (#13372) (Sysix)


## [1.14.0] - 2025-08-30

### 🚜 Refactor

- 6431033 linter: Move ignore logic to `LintIgnoreMatcher` (#13222) (Sysix)

### 📚 Documentation

- 51d3840 linter: Update oxlint CLI help message on `.oxlintrc.json` config file (#13334) (0xCLARITY)

### 🧪 Testing

- 6eeeb67 oxlint: Add test for ignore patterns referenced by symlink file (#13356) (Sysix)


## [1.13.0] - 2025-08-26

### 💥 BREAKING CHANGES

- 63abd7c oxlint: [**BREAKING**] Do not ignore hidden dot directories by default (#13194) (Sysix)

### 🐛 Bug Fixes

- 648e939 linter: Parse `ignorePatterns` with gitignore syntax (#13221) (Sysix)

### 🚜 Refactor

- c138fad linter: Avoid fs reads in `TsGoLintState` when `--silent` is used (#13199) (Sysix)


## [1.12.0] - 2025-08-17

### 🚀 Features

- da3c7fb oxlint: Oxlint v0.0.3 (#13148) (Boshen)
- aecacae linter: Support `ignorePatterns` for nested configs (#12210) (Sysix)
- 61112a3 linter: Add 36 new TypeScript ESLint rules with comprehensive test fixtures (#12893) (Copilot)

### 🐛 Bug Fixes

- 66a350e oxlint: Should type linting files after ignore (#13149) (Boshen)
- 43b1c5a linter: Do not count type-aware rules, when not enabled (#13062) (Sysix)
- a0ccada tsgolint: Handle non-zero exit status from tsgolint process (#13087) (camc314)

### 🚜 Refactor

- 8459a12 linter: Pass paths to `TsGoLintState.lint` method (#13131) (Sysix)
- f0a517f linter: Pass cwd instead of `LintServiceOptions` into `TsGoLintState` (#13127) (Sysix)
- 34ae2f0 linter: Move `tsgolint.rs` to `oxc_linter` crate (#13126) (Sysix)
- 9f924f6 linter: Always explicitly initialize Rayon thread pool (#13122) (overlookmotel)
- 6c5b8be linter: Create `AllocatorPool` in `Runtime::new` (#13106) (overlookmotel)
- cc2a85b linter: Remove `CliRunResult` from `TsGoLintState` (#13119) (Sysix)
- 23e5642 linter: Move `TsGoLintInput` creation into own function (#13118) (Sysix)

### ⚡ Performance

- 3bfb235 linter: Implement streaming diagnostics for tsgolint instead of waiting for output to finish (#13098) (copilot-swe-agent)

### 🎨 Styling

- 4f2cc96 linter: Add line break (#13061) (overlookmotel)


## [1.11.2] - 2025-08-12

### 🐛 Bug Fixes

- c461a86 oxlint: Fix type-aware linting crash when Vue files are present (#13007) (Copilot)
- 2936545 linter/tsgolint: Report an error if tsgolint executable failed to spawn (#12984) (camc314)
- a13b3ee oxlint: Run `tsgolint.CMD` under windows (#12932) (Sysix)

### 🚜 Refactor

- 69303de oxlint: Pass `DiagnosticService` as a parameter for `TsGoLintState.lint()` (#13004) (Sysix)

### 🧪 Testing

- fb8cbbf oxlint: Enable tsgolint test with config parameter for windows (#13001) (Alexander S.)
- d59f3bb oxlint: Match `x.ys` when replacing var (#12990) (camc314)
- d7cca12 linter: Add test for extended configs and overrides for tsgolint (#12924) (camchenry)


## [1.11.1] - 2025-08-09

### 🐛 Bug Fixes

- 7fc907f linter: Resolve configured rules for every file linted by `tsgolint` (#12886) (camchenry)

### 🚜 Refactor

- c072e01 all: Add missing lifetimes in function return types (#12895) (overlookmotel)

### 🧪 Testing

- 9d946aa oxlint: Skip `--type--aware` test for `big-endian` (#12911) (Sysix)
- 695fbdd oxlint: Fix `--type-aware` test on `big-endian` and skip for `windows` (#12910) (Sysix)
- 38118ab oxlint: Fix `--type-aware` snapshot + add non tsgolint rule (#12909) (Sysix)


## [1.11.0] - 2025-08-07

### 🚀 Features

- ac46347 oxlint: Add `tsgolint` integration (#12485) (camchenry)


## [1.10.0] - 2025-08-06

### 🚀 Features

- 9b35600 linter/jsx-a11y: Add support for mapped attributes in label association checks (#12805) (camc314)

### 🐛 Bug Fixes

- 45206dd linter: Apply fix span offset after fixing the section source text (#12758) (Sysix)

### 🚜 Refactor

- 030e397 linter: Simplify parsing CLI args (#12802) (overlookmotel)
- c0e224a linter: Store `ExternalRuleId` in `OxlintOverrides` not raw names (#12502) (camc314)

### ⚡ Performance

- 693673b linter: Reduce iterations when collecting directories for nested configs (#12329) (overlookmotel)

### 🎨 Styling

- c15da81 codegen, formatter, linter, minifier, transformer: Re-order imports (#12725) (Copilot)

### 🧪 Testing

- d8ccff7 oxlint: Add `Tester::test_fix` mehod (#12754) (Sysix)


## [1.9.0] - 2025-07-29

### 🚜 Refactor

- 543fd53 napi/oxlint: Rename `run` to `lintFile` (#12567) (overlookmotel)
- 491c401 linter: Remove `#[must_use]` from `LintService::with_*` methods (#12560) (overlookmotel)
- d44b0ac linter: Remove `Runner` trait (#12559) (overlookmotel)
- bea652f linter: Add `vue` and `regex` to `BuiltinLintPlugins` (#12542) (Sysix)
- 5c33fc7 diagnostics: Implement `Eq` and `Ord` for `InfoPosition` (#12505) (overlookmotel)
- 7a0da04 diagnostics: Remove Option wrapper from MPSC channel and sender field (#12467) (camc314)

### 🧪 Testing

- d31adcf linter: Improve sorting diagnostics (#12504) (overlookmotel)


## [1.8.0] - 2025-07-22

### 🐛 Bug Fixes

- 46e33d5 linter: Improve error handling in config file lookup (#12391) (camc314)


## [1.7.0] - 2025-07-16

### 🚀 Features

- 5e428a4 linter/eslint-plugin-next: No-html-link-for-pages rule addition (#12194) (Gabriel Díaz Aguilera)
- c551b8f linter: Report diagnostics from custom plugins (#12219) (camc314)
- d387729 linter: JS custom rules config (#12160) (camc314)
- 152e59d napi/oxlint: Read source text into start of allocator (#12122) (overlookmotel)
- d4ebd14 linter: Add `oxlint2`/`disable_oxlint2` feature flags (#12130) (camc314)
- a4dae73 linter: Introduce `LintPlugins` to store builtin + custom plugins (#12117) (camc314)

### 🐛 Bug Fixes

- 9720774 linter: Report implicit config parse errors (#12260) (Simon Buchan)
- 853d2bc linter, language_server: Correctly identify usage of `import` plugin (#12157) (overlookmotel)

### 🚜 Refactor

- 6e54645 language_server: Store `LintService` instead of `Linter` (#12016) (Sysix)
- 113cf8c linter: Move `LintServiceOptions.paths` to `LintService.with_paths` (#12015) (Sysix)
- acfac68 oxlint: Adjust ignore patterns by counting bytes instead of chars (#12209) (Sysix)
- 1d2eaca oxlint2: Introduce `force_test_reporter` feature for consistent graphical outputs (#12133) (camc314)
- f7c675d linter: Rename `LintPlugins` to `BuiltinLintPlugins` (#12116) (camc314)

### 🧪 Testing

- d1194e8 oxlint: Ignore test on windows (#12262) (camc314)


## [1.6.0] - 2025-07-07

### 🚀 Features

- f81d336 linter: Introduce `ExternalLinter` struct (#12052) (camc314)

### 🐛 Bug Fixes

- 5851d2c oxlint: Always follow symlinks; remove cli flag `--symlinks` (#12048) (Boshen)

### 🚜 Refactor

- 2f7cbda linter: Move napi bindings out of oxc_linter (#12072) (camc314)
- 9254252 linter: Move code (#12071) (overlookmotel)


## [1.5.0] - 2025-07-02

### 🐛 Bug Fixes

- 4b2c658 oxlint: Make `--version` exit code be `0` (#11986) (camc314)


## [1.4.0] - 2025-06-30

### 🚀 Features

- 9b19b40 napi: Add basic oxlint napi bindings (#11877) (camc314)
- f102cb1 linter: Add `import/prefer-default-export` rule (#11891) (yefan)

### 🐛 Bug Fixes

- d991fed linter: Fix `jsx-a11y/label-has-associated-control` default values (#11832) (Sysix)

### 🚜 Refactor

- 2cf9fa3 linter: Derive debug for `extensions` (#11938) (camc314)


## [1.3.0] - 2025-06-23

### 🚜 Refactor

- b39d1fa linter: Output smaller spans for unused disable directives with multiple rules (#11781) (Sysix)


## [1.2.0] - 2025-06-19

### 🚀 Features

- 38dc614 oxc_linter: Reuse allocators (#11736) (camc314)


## [1.1.0] - 2025-06-12

### 🚀 Features

- 1181018 linter: Add eslint/no-extra-bind rule (#11588) (yefan)


## [1.0.0] - 2025-06-10

## [0.18.0] - 2025-06-06

- bd9dd88 linter: [**BREAKING**] Add more info to json reporter (#11524) (camc314)

### Features


### Bug Fixes

- 0946dac linter: Correctly inherit categories when plugins are enabled (#11353) (Cameron)

## [0.17.0] - 2025-05-30

- ead5309 linter: [**BREAKING**] Remove react from default plugin set (#11382) (camc314)

### Bug Fixes

- f6424dd linter: Reflect react plugin is disabled by default in cli (#11397) (camc314)

### Documentation

- cd354d4 oxlint: Remove incorrect doc comment (#11326) (camc314)

### Testing

- c4f64aa linter: Explicitly disable correctness for clarity (#11327) (camc314)

## [0.16.12] - 2025-05-25

- 5d9344f rust: [**BREAKING**] Clippy avoid-breaking-exported-api = false (#11088) (Boshen)

### Features

- 12b0917 linter: Auto-generate docs for rule configs (#10629) (DonIsaac)

### Bug Fixes

- e8470d9 linter: Delay merging of oxlintrc configs (#10835) (camc314)

### Refactor

- 9f3a14a linter: Cleanup diagnostic and docs for `eslint/no-console` (#11101) (Ulrich Stark)

## [0.16.11] - 2025-05-16

- 4e5c73b span: [**BREAKING**] `SourceType::from_path(".js")` return js instead of jsx (#11038) (Boshen)

### Features

- 466c24a linter: Add gitlab reporter output format (#10927) (Connor Pearson)

### Bug Fixes

- c52a9ba linter: Fix plugins inside overrides not being applied (#11057) (camc314)
- b12bd48 linter: Fix rule config not being correctly applied (#11055) (camc314)
- 0961296 linter: Add `gitlab` to linter `--help` docs (#10932) (camc314)
- 584d8b9 napi: Enable mimalloc `no_opt_arch` feature on linux aarch64 (#11053) (Boshen)

### Refactor

- bb999a3 language_server: Avoid cloning linter by taking reference in LintService (#10907) (Ulrich Stark)

## [0.16.10] - 2025-05-09

### Features

- 4c62348 linter: Regex/no-useless-backreference (#10773) (camc314)

### Refactor

- 79819cc linter: Move around some config store logic (#10861) (camc314)
- e132aba linter: Extract nested config searching to a fn (#10860) (camc314)
- efb4fb8 oxlint: Avoid result unwrap (#10836) (camc314)

## [0.16.9] - 2025-05-02

### Features

- 63f02a8 linter: Add react/forward_ref_uses_ref (#10506) (x6eull)
- eac205f linter: Add unicorn/consistent-assert rule (#10653) (Shota Kitahara)

### Bug Fixes

- e7c2b32 linter: Move `consistent-assert` to `pedantic` (#10665) (camc314)

## [0.16.8] - 2025-04-27

### Bug Fixes

- 723b4c6 linter: Cross_module of LintService not being enabled despite enabled import plugin (#10597) (Ulrich Stark)
- 9a02066 oxlint: Current dir as arg (#9382) (Ben Jones)

## [0.16.7] - 2025-04-21

### Bug Fixes

- 4e1f536 linter: Config path resolution when path contains '..' syntax (#10367) (Florian Bopp)

### Refactor

- 5ab4d40 linter: Simplify error handling (#10404) (camchenry)

## [0.16.6] - 2025-04-14

### Bug Fixes

- 9aaba69 linter: Nested configuration directory resolution (#10157) (Sub)

### Testing

- aa6ccd2 oxlint: Add test for nested and extended configuration with import plugin (#10372) (Sysix)

## [0.16.5] - 2025-04-07

### Features

- 2f6810a editor: Add named fixes for code actions (#10203) (camchenry)

### Bug Fixes

- f2eff56 linter: Fix `rule_id` for some diagnostics formats (#10251) (Alexander S.)
- d691701 various: Unwrap `Result` of `write!` macro (#10228) (overlookmotel)

### Performance

- b34e876 linter: Avoid cloning filters by refactoring functions to take references (#10247) (Ulrich Stark)

### Styling

- 66a0001 all: Remove unnecessary semi-colons (#10198) (overlookmotel)

## [0.16.4] - 2025-04-01

### Features

- 370266c semantic: Check redeclaration of variable declaration and function declaration in the block scope (#10074) (Dunqing)

### Bug Fixes

- 2c80858 linter: Enable multi-file analysis for nested configs (#10089) (camchenry)

### Refactor

- d8e49a1 linter: Compute lintable extensions at compile time (#10090) (camchenry)

## [0.16.3] - 2025-03-25

### Refactor

- 6432707 rust: Use `lazy-regex` (#10004) (Boshen)

## [0.16.2] - 2025-03-21

### Bug Fixes

- f649fb3 linter: Reclassify `unicorn/no-document-cookie` as restriction (#9933) (camchenry)

### Documentation

- 46a12c6 linter: Tell about junit `--format` options (#9931) (Sysix)

## [0.16.1] - 2025-03-20

### Features

- 8e3d9be linter: Support `--report-unused-disable-directive` (#9223) (1zumii)

### Bug Fixes

- e6f7c74 linter: Import and fix tests for typescript::no_unnecessary_parameter_property_assignment (#9720) (Ulrich Stark)

### Performance

- 84fa538 minify: Use mimalloc-safe to replace mimalloc (#9810) (LongYinan)

### Refactor

- b34cf94 oxlint: Remove `jemallocator` (#9823) (Boshen)

## [0.16.0] - 2025-03-16

- 225e266 linter: [**BREAKING**] Enable `--experimental-nested-config` by default and add `--disable-nested-config` option (#9760) (camchenry)

### Features


### Bug Fixes

- 22f18ac linter: Improve `jsx-a11y/anchor-ambiguous-text` diagnostic message (#9789) (1zumii)

## [0.15.15] - 2025-03-12

### Features

- 474a57b linter: A new multi-file analysis runtime (#9383) (branchseer)

### Bug Fixes

- ab594f1 linter: Turn oxc/no-redundant-constructor-init into typescript/no-unnecessary-parameter-property-assignment (#9618) (Uli)

## [0.15.14] - 2025-03-11

### Features

- 41f32ea linter: Allow adding more overrides via `extends` configs (#9475) (camchenry)
- fb7cf10 linter: Allowing `plugins` to be extended with `extends` (#9473) (camchenry)
- fc74849 linter: Inherit `rules` via the extended config files (#9308) (camchenry)

### Bug Fixes

- 4ca62ab linter: Output right file line and column for `.vue`, `.astro` and `.svelte` files (#9484) (Sysix)
- 3105159 linter: Do not output number of rules with nested configs (#9476) (camchenry)
- 5ecda01 linter: Support nested extending (#9472) (camchenry)

### Refactor

- 62bffed rust: Allow a few annoying clippy rules (#9588) (Boshen)

### Testing

- 934a387 linter: Remove test dependency on oxlint (#9513) (camchenry)

## [0.15.13] - 2025-03-04

### Features

- 4ad328b linter: Add oxc/no-redundant-constructor-init (#9299) (Ben Jones)

## [0.15.12] - 2025-02-23

### Features

- 9bc3017 linter: Add support for nested config files (#9153) (camchenry)
- cc8dd48 linter: Add unicorn/no-invalid-fetch-options rule (#9212) (Mikhail Baev)
- af13b1b linter: Promote `eslint/no-eval` to `correctness` (#9231) (dalaoshu)
- 542bbd7 linter: Support `import-x` plugin name (#9074) (Sysix)
- cded0ad oxlint: Add `--experimental-nested-config` option (#9152) (camchenry)

### Bug Fixes

- 4ed9d76 linter: Do not use nested configs with `--config` option (#9155) (camchenry)

### Refactor

- 63bb214 oxc: Apply `clippy::redundant_clone` (#9252) (Boshen)
- 9f36181 rust: Apply `cllippy::nursery` rules (#9232) (Boshen)

### Testing

- e49c92d linter: Ensure CLI filters take precedence over nested configs (#9156) (camchenry)

## [0.15.11] - 2025-02-16

### Features

- 5d508a4 linter: Support `env` and `globals` in `overrides` configuration (#8915) (Sysix)

### Bug Fixes

- 47c1649 linter: Output line/column for `--format=stylish` instead of offset + length (#9136) (Sysix)

### Styling

- a4a8e7d all: Replace `#[allow]` with `#[expect]` (#8930) (overlookmotel)

## [0.15.10] - 2025-02-06

### Features

- 7e8568b linter: Junit reporter (#8756) (Tapan Prakash)

### Bug Fixes

- baf3e4e linter: Correctly replace rule severity with duplicate rule name configurations (#8840) (dalaoshu)

## [0.15.9] - 2025-02-01

### Bug Fixes

- 8ce21d1 linter: Can't disable `no-nested-ternary` rule anymore (#8600) (dalaoshu)
- e929f26 linter: Output `LintCommandInfo` for `CliRunResult::LintNoFilesFound` (#8714) (Sysix)
- 9cc9d5f linter: `ignorePatterns` does not work when files are provided as command arguments (#8590) (dalaoshu)

### Refactor

- 194a5ff linter: Remove `LintResult` (#8712) (Sysix)
- 4a2f2a9 linter: Move default `all_rules` output to trait (#8710) (Sysix)
- 741fb40 linter: Move stdout outside LintRunner (#8694) (Sysix)
- 10e5920 linter: Move finishing default diagnostic message to `GraphicalReporter` (#8683) (Sysix)
- 9731c56 oxlint: Move output from `CliRunResult::InvalidOption` to outside and use more Enums for different invalid options (#8778) (Sysix)
- fe45bee oxlint: Create different `CliRunResult` instead of passing `ExitCode` to it (#8777) (Sysix)
- 2378fef oxlint: Move ConfigFileInit output outside CliRunResult, exit code 1 when it fails (#8776) (Sysix)
- f4cecb5 oxlint: Remove unused `CliRunResult::PathNotFound` (#8775) (Sysix)

### Testing

- ad35e82 linter: Use snapshot testing instead of LintResult (#8711) (Sysix)
- bf895eb linter: Add diagnostic format test snapshots (#8696) (Alexander S.)
- 34d3d72 linter: Add snapshot tester for cli (#8695) (Sysix)
- 0bf2bcf oxlint: Test two real rules with same name but from different plugins (#8821) (dalaoshu)
- 2b83b71 oxlint: Improve disabling "no-nested-ternary" tests (#8814) (Alexander S.)
- 45648e7 oxlint: Fix InvalidOptionTsConfig tests for windows (#8791) (Alexander S.)
- 48bfed9 oxlint: Ignore windows path mismatch (Boshen)
- 6f4a023 oxlint: Remove "--print-config" test (#8792) (Sysix)
- 55c2025 oxlint: Add `CliRunResult` to snapshot (#8780) (Sysix)

## [0.15.8] - 2025-01-24

### Features

- 4ae568e linter: Add DiagnosticResult to the Reporters for receiving a sub part result (#8666) (Alexander S.)
- 8a0eb2a oxlint: Add stylish formatter (#8607) (Andrew Powell)

### Bug Fixes

- 40316af linter: Fix github `endColumn` output (#8647) (Alexander S.)
- dc912fa linter: Added missing $schema property to default config (#8625) (Tapan Prakash)

## [0.15.7] - 2025-01-19

### Features

- 4ac2e99 oxlint: Implement `--init` cli option (#8453) (Tapan Prakash)

### Refactor

- b4c87e2 linter: Move DiagnosticsReporters to oxlint (#8454) (Alexander S.)

## [0.15.6] - 2025-01-13

### Refactor

- 43ed3e1 linter: Add output formatter (#8436) (Alexander S.)
- 4e05e66 linter: Remove glob for windows (#8390) (Alexander S.)
- 3c534ae linter: Refactor `LintBuilder` to prep for nested configs (#8034) (camc314)

## [0.15.5] - 2025-01-02

### Bug Fixes

- 2b14a6f linter: Fix `ignorePattern` config for windows  (#8214) (Alexander S.)

### Testing

- cb709c9 linter: Fix some oxlint tests on windows (#8204) (Cameron)

## [0.15.4] - 2024-12-30

### Bug Fixes

- f3050d4 linter: Exclude svelte files from `no_unused_vars` rule (#8170) (Yuichiro Yamashita)

### Refactor

- 6da0b21 oxlint: Remove unused `git.rs` (#7990) (Boshen)
- 58e7777 oxlint: Remove extra if check in `Walkdir` (#7989) (Boshen)

## [0.15.3] - 2024-12-17

### Styling

- 7fb9d47 rust: `cargo +nightly fmt` (#7877) (Boshen)

## [0.15.0] - 2024-12-10

- 39b9c5d linter: [**BREAKING**] Remove unmaintained security plugin (#7773) (Boshen)

### Features


## [0.14.1] - 2024-12-06

### Features

- 275d625 linter: Output rules to json array (#7574) (camc314)

### Bug Fixes

- 9761e94 apps/oxlint: Incorrect matching in `.oxlintignore` (#7566) (dalaoshu)
- 29db060 linter: Detect typescript eslint alias rules (#7622) (Alexander S.)
- 810671a linter: Detect vitest jest alias rules (#7567) (Alexander S.)

## [0.14.0] - 2024-12-01

### Features

- 32f860d linter: Add support for ignorePatterns property within config file (#7092) (Nicholas Rayburn)

## [0.13.1] - 2024-11-23

### Features

- 9558087 oxlint: Auto detect config file in CLI (#7348) (Alexander S.)

### Bug Fixes

- 8507464 linter: Hanging when source has syntax/is flow (#7432) (Cameron)
- e88cf1b linter: Make `overrides` globs relative to config path (#7407) (camchenry)

## [0.13.0] - 2024-11-21

- 878189c parser,linter: [**BREAKING**] Add `ParserReturn::is_flow_language`; linter ignore flow error (#7373) (Boshen)

### Features


## [0.12.0] - 2024-11-20

### Features

- 2268a0e linter: Support `overrides` config field (#6974) (DonIsaac)
- d3a0119 oxlint: Add `cwd` property to `LintRunner` (#7352) (Alexander S.)

### Bug Fixes

- df5c535 linter: Revert unmatched rule error (#7257) (Cameron A McHenry)

## [0.11.0] - 2024-11-03

- 1f2a6c6 linter: [**BREAKING**] Report unmatched rules with error exit code (#7027) (camchenry)

### Features

- 2184588 linter: Do not bail for unmatched rules yet (#7093) (Boshen)

### Bug Fixes

- 38d1f78 linter: Remove confusing help text for now (#7081) (Cam McHenry)

### Refactor

- a8dc75d linter: Remove unused CLI result types (#7088) (camchenry)

## [0.10.3] - 2024-10-26

### Features

- 0acca58 linter: Support `--print-config all` to print config file for project (#6579) (mysteryven)

## [0.10.2] - 2024-10-22

### Refactor

- 6ffdcc0 oxlint: Lint/mod.rs -> lint.rs (#6746) (Boshen)

### Testing

- b03cec6 oxlint: Add `--fix` test case (#6747) (Boshen)

## [0.10.1] - 2024-10-21

### Refactor

- d6609e9 linter: Use `run_on_jest_node` for existing lint rules (#6722) (camchenry)

## [0.10.0] - 2024-10-18

- 80266d8 linter: [**BREAKING**] Support plugins in oxlint config files (#6088) (DonIsaac)

### Features


## [0.9.10] - 2024-10-07

### Bug Fixes

- 9e9808b linter: Fix regression when parsing ts in vue files (#6336) (Boshen)

### Refactor

- ea908f7 linter: Consolidate file loading logic (#6130) (DonIsaac)

## [0.9.7] - 2024-09-23

### Features

- d24985e linter: Add `oxc-security/api-keys` (#5906) (DonIsaac)

## [0.9.6] - 2024-09-18

### Refactor

- 026ee6a linter: Decouple module resolution from import plugin (#5829) (dalaoshu)

## [0.9.4] - 2024-09-12

### Refactor

- 9e9435f linter: Add `LintFilter` (#5685) (DonIsaac)
- 5ae9b48 linter: Start internal/external split of `OxlintOptions` (#5659) (DonIsaac)
- bac03e3 linter: Make fields of `LintServiceOptions` private (#5593) (DonIsaac)
- 20d0068 oxlint: Move cli-related exports to `cli` module (#5139) (DonIsaac)

## [0.9.3] - 2024-09-07

### Features

- 4473779 linter/node: Implement no-exports-assign (#5370) (dalaoshu)

### Styling
- d8b29e7 Add trailing line breaks to JSON files (#5544) (overlookmotel)

## [0.9.0] - 2024-08-26

- b894d3b linter: [**BREAKING**] Make `no-unused-vars` correctness (#5081) (DonIsaac)

### Features


## [0.7.2] - 2024-08-15

### Documentation

- 955a4b4 oxlint: Improve cli doc regarding fix and `-D all` (Boshen)

## [0.7.0] - 2024-08-05

### Features

- b952942 linter: Add eslint/no-unused-vars (⭐ attempt 3.2) (#4445) (DonIsaac)
- 7afa1f0 linter: Support suggestions and dangerous fixes (#4223) (DonIsaac)

### Bug Fixes

- fe1356d linter: Change no-unused-vars to nursery (#4588) (DonIsaac)
- 72337b1 linter: Change typescript-eslint/no-namespace to restriction (#4539) (Don Isaac)
- 732f4e2 linter: Fix `oxlint` allocator cfg (#4527) (overlookmotel)

## [0.6.1] - 2024-07-17

### Features

- 1f8968a linter: Add eslint-plugin-promise rules: avoid-new, no-new-statics, params-names (#4293) (Jelle van der Waa)

## [0.5.1] - 2024-06-29

### Bug Fixes

- 750cb43 oxlint: Gate custom allocators by feature flag (#3945) (Luca Bruno)

## [0.5.0] - 2024-06-27

### Features

- 328445b linter: Support `vitest/no-disabled-tests` (#3717) (mysteryven)

### Bug Fixes

- 5902331 oxlint: Properly report error (#3889) (Luca Bruno)

## [0.4.2] - 2024-05-28

### Refactor

- 21505e8 cli: Move crates/oxc_cli to apps/oxlint (#3413) (Boshen)

