oxc-guard
b4da00b621
release(apps): oxlint v1.82.0 && oxfmt v0.67.0 ( #26384 )
...
# Oxlint
### 🚀 Features
- 6a0e19c linter/eslint/no-unmodified-loop-condition: Support `checkConditionalExpressions` option (#26249 ) (camc314)
### 🐛 Bug Fixes
- 562dd14 jsx-a11y/anchor-has-content: Allow anchors passed as custom component props (#26360 ) (Mikhail Baev)
- 253cdb2 linter/eslint/id-length: Exempt TS interface/type-literal members with never (#26310 ) (Pearce Ropion)
- 8c7ea76 ast_visit: Account for trimmed source offsets (#26223 ) (Cameron)
- 5f9cffc linter/typescript/no-explicit-any: Fix rest parameter to `unknown[]` (#26279 ) (camc314)
- 4de9fa3 linter/react/jsx-no-literals: Check nested JSX expression literals (#26253 ) (camc314)
- 07851b9 parser: Fix debug assert failure when lexer error with tokens enabled (#26229 ) (overlookmotel)
- 9cee146 oxlint/lsp: Don't try to parse fix message, always fallback (#26204 ) (Sysix)
- a662c40 linter/eslint/no-useless-assignment: Handle destructuring assignments (#25925 ) (camc314)
- 304bd9a linter/eslint/no-array-constructor: Handle ASI hazards in fixer (#26166 ) (Hamody We)
- b41bb35 linter: Qualify rules in rules output (#26250 ) (camc314)
- 895c685 linter/typescript/no-extraneous-class: Avoid deleting class expressions (#26231 ) (camc314)
- 4ba33c8 linter/eslint/no-unused-vars: Handle stored arrow references (#26225 ) (camc314)
### 🛡️ Security
- 9a612d5 deps: Update npm packages (#26178 ) (renovate[bot])
# Oxfmt
### 💥 BREAKING CHANGES
- 2c9a947 parser: [**BREAKING**] Reduce `MAX_LEN` to 256 bytes below `u32::MAX` (#26352 ) (overlookmotel)
### 🚀 Features
- 68e12ab formatter_css: Follow the oxc-css-parser's acceptance line (#26337 ) (leaysgur)
### 🐛 Bug Fixes
- f7acdc0 formatter: Treat a JSDoc cast target as opaque in chain layouts (#26375 ) (leaysgur)
- 104061b formatter: Keep JSDoc cast parens with a comment inside them (#26374 ) (leaysgur)
- 3d00a76 formatter_css: Keep comment inside important and simple-vars colon (#26370 ) (leaysgur)
- 172ddb6 formatter_css: Keep a same-line line comment on its line (#26321 ) (leaysgur)
- cafaf32 formatter_css: Never drop comments inside an at-rule prelude (#26320 ) (leaysgur)
- 534a0fe formatter_css: Keep a line comment on its comma's line (#26319 ) (leaysgur)
- 99cfd75 formatter_css: Hide raw comment printing API, use strcut instead (#26316 ) (leaysgur)
- 2028896 formatter_css: Preserve comments around SCSS/Less variable values (#26276 ) (leaysgur)
- 6752abc formatter_css: Keep leading comments before (#26272 ) (leaysgur)
- 3b054de formatter_graphql: Align comment printing after open `{` (#26271 ) (leaysgur)
- b3c287a formatter_css: Fix SCSS bracket list printing (#26270 ) (leaysgur)
- bac770a formatter_css: Preserve comment in SCSS paren comma list (#26269 ) (leaysgur)
- c7b57ef formatter_css: Print SCSS map consisntent with and without comment (#26268 ) (leaysgur)
- 063e2b6 formatter_css: Preserve trailing comma in single-item scss lists (#26245 ) (leaysgur)
- 5f9580d oxfmt: Bump prettier-plugin-tailwindcss (#26273 ) (leaysgur)
### ⚡ Performance
- 1cad286 oxfmt: Match editorconfig once per file (#26239 ) (Yuji Sugiura)
- 260c5eb oxfmt: Match `overrides` once per file (#26238 ) (leaysgur)
- 61565bc oxfmt: Share resolved `FormatConfig` via `Arc` instead of cloning per file (#26237 ) (leaysgur)
### 📚 Documentation
- 32084d4 formatter_core: Clarify printer hard_line compression (#26312 ) (leaysgur)
- 4fabdcc formatter,formatter_css,formatter_graphql,formatter_yaml: Update DIVERGENCES.md (#26267 ) (leaysgur)
- 26a1fa4 formatter_core: Refine FORMATTER_POLICY (#26266 ) (leaysgur)
### 🛡️ Security
- 9a612d5 deps: Update npm packages (#26178 ) (renovate[bot])
2026-09-07 14:13:57 +00:00
oxc-guard
0b4e2e67f4
release(apps): oxlint v1.81.0 && oxfmt v0.66.0 ( #26199 )
...
# Oxlint
### 🚀 Features
- 60b945d linter/nextjs/no-typos: Implement suggestion (#26091 ) (Mikhail Baev)
### 🐛 Bug Fixes
- 33ac4b0 linter/lsp: Prevent tsgolint from holding onto processes (#25570 ) (Adrian Schaedle)
- baf4b1e linter/import/no-empty-named-blocks: Make empty value import removal a suggestion (#26155 ) (camc314)
- 77cfaec linter/eslint/object-shorthand: Preserve `__proto__` semantics (#26154 ) (camc314)
- fa3c082 linter/unicorn/prefer-set-size: Ignore shadowed `Set` constructors (#26153 ) (camc314)
- e412cf2 linter: Clamp invalid JS plugin locations (#26144 ) (camc314)
- d86c113 linter: Normalize reversed JS plugin locations (#26138 ) (camc314)
- 73c09b2 linter/eslint/no-use-before-define: Run on JS, JSX files (#26114 ) (camc314)
- 03ef0f2 linter/unicorn/no-useless-spread: Treat typed arrays as a distinct value hint (#26067 ) (Aadharsh Pannirselvam)
- bd15905 linter/react/no-unstable-nested-components: Check nested component object property names (#26101 ) (camc314)
- 3910e2b linter/eslint/no-unassigned-vars: Skip Svelte and Vue files (#26042 ) (Hamody We)
- 047f7ca linter/plugins: Fix interaction between JS plugins and Vue rules (#26080 ) (overlookmotel)
- 8531b9b linter/plugins: Alter method for obtaining mutable `Program` when sending AST to JS plugins (#26077 ) (overlookmotel)
- dc464ff linter/unicorn/prefer-math-min-max: Avoid unsafe autofix (#26060 ) (camc314)
### 📚 Documentation
- 464ddd1 linter: Support a shared short description for jest/vitest rules (#26186 ) (connorshea)
- 9db5ad3 linter: Add short description to `vue/no-dupe-keys` (#26183 ) (connorshea)
- db66f58 linter: Correct export/import mismatch in bar and foo example (#25927 ) (billychannnnnn)
- d5be037 linter/typescript/switch-exhaustiveness-check: Clarify default case comment pattern (#26100 ) (camc314)
# Oxfmt
### 🚀 Features
- 1fb37b6 formatter/css: Format declaration-shaped raw-prelude rules (postcss nested config blocks) (#26194 ) (leaysgur)
### 🐛 Bug Fixes
- 57e8e22 formatter_css: Space a folded sign after a call in Less operations (#26134 ) (leaysgur)
- e4298fb formatter/jsdoc: Follow CommonMark for interrupting lists and guard wrapping from creating them (#26098 ) (leaysgur)
- a1e21c2 formatter: Apply head body policy everywhere (#26074 ) (leaysgur)
- 676b7e1 formatter: Keep comments in their for-head slot, before an empty-statement body and do-while (#26073 ) (leaysgur)
- 3bbcea6 formatter: Keep comments between a head and its body out of the braces across all constructs (#26071 ) (leaysgur)
- 57537a2 formatter: Place comments between a head and open paren (#26058 ) (leaysgur)
- e2d53e7 formatter: Place comments between a statement head and its body (#26043 ) (leaysgur)
- 662556c formatter: Print the idempotent placement for comments in dropped parens (#26041 ) (leaysgur)
- faf11d9 formatter_yaml: Keep trailing whitespace in block scalars (#26072 ) (leaysgur)
### ⚡ Performance
- ac4785a diagnostics: Use fixed ANSI styles (#26130 ) (Boshen)
### 📚 Documentation
- b879608 formatter,formatter_graphql,formatter_yaml: Annotate own-line comment inlining as known policy violation (#26131 ) (leaysgur)
- 181953b oxfmt,formatter_core,formatter,formatter_yaml,formatter_css,formatter_graphql: Extract `DIVERGENCES.md` out from `AGENTS.md` (#26121 ) (leaysgur)
- a67cb9d formatter,formatter_core: Document comment moving policy (#26075 ) (leaysgur)
- fc175b0 formatter_core: Clarify idempotency test infra (#26069 ) (leaysgur)
2026-09-01 08:25:16 +00:00
Boshen
63bc313934
chore(npm): update funding URL ( #26066 )
...
Update npm package funding links to the Oxc organization sponsorship page.
Closes #26062 .
AI-assisted with Codex.
2026-08-24 14:42:18 +00:00
oxc-guard
97e99b8548
release(apps): oxlint v1.80.0 && oxfmt v0.65.0 ( #26045 )
...
# Oxlint
### 🚀 Features
- 70c3e35 linter/typescript/no-confusing-non-null-assertion: Implement suggestion (#26012 ) (Mikhail Baev)
### 🐛 Bug Fixes
- 8a353a7 linter/eslint/no-control-regex: Refine help message text (#25996 ) (Rahul Mishra)
- 8a9bdbd estree: Include decorators in `FormalParameterRest ` spans (#26021 ) (camc314)
- 8d94cd1 linter/eslint/no-useless-rename: Preserve type modifiers (#26020 ) (Cameron)
- 2cde1f6 rust: Address nightly deprecations (#25998 ) (Boshen)
- 51d36d7 linter/vue: Resolve `vue` imports via shared import helpers (#25903 ) (Connor Shea)
- 83a68d2 linter/react/no-react-children: Resolve `react` imports by symbol (#25901 ) (Connor Shea)
- 124e196 linter: Resolve globals by reference, not by name (#25905 ) (Connor Shea)
- a701bcc linter: Remove invalid React compiler doc links (#25900 ) (Boshen)
### 📚 Documentation
- 9b7e153 linter: Set `version` to 1.79.0 for rules shipped in 1.79.0 (#25902 ) (connorshea)
# Oxfmt
### 🐛 Bug Fixes
- bf37dd5 formatter: Preserve class decorators before export when the statement is suppressed (#26034 ) (leaysgur)
2026-08-24 11:33:15 +00:00
oxc-guard[bot]
0db127cc16
release(apps): oxlint v1.79.0 && oxfmt v0.64.0 ( #25866 )
...
# Oxlint
### 💥 BREAKING CHANGES
- 8c4552d linter: [**BREAKING**] Split react/react-compiler into
per-category rules (#25500 ) (Boshen)
### 🚀 Features
- 9b7394e linter/typescript/no-empty-object-type: Implement suggestion
(#25833 ) (Mikhail Baev)
### 🐛 Bug Fixes
- 345f981 react_compiler: Skip node_modules by default (#25859 ) (Boshen)
- 2f40afa linter/unicorn/no-array-callback-reference: Ignore effect
library imports (#25857 ) (Michaël Bitard)
- 7b565a0 linter: Align React Compiler rule categories (#25840 ) (Boshen)
- 228e8e0 linter: Resolve inactive React compiler rules (#25830 )
(Boshen)
- f8e4884 linter/eslint/no-useless-constructor: Allow parameter
properties (#25811 ) (camc314)
- e4b6993 linter: Report exhaustive effect dependencies (#25829 )
(Boshen)
- 742e25f linter/eslint/no-return-assign: Anchor diagnostic on return
stmt (#25803 ) (camc314)
- b831ca8 react-compiler: Improve derived state diagnostic (#25804 )
(Boshen)
- 5908c87 linter/jest/prefer-mock-return-shorthand: Preserve
implementations using this (#25802 ) (camc314)
- f6b2265 linter/eslint/no-redeclare: Run in ES modules, skipping only
the globals check (#25691 ) (Hamody We)
- ca9f553 linter/unicorn/prefer-default-parameters: Mark fixer as a
suggestion (#25801 ) (camc314)
- aa49d86 linter: Allow spread rule options in config types (#25675 )
(ch3rry)
- d5483f8 linter/typescript/no-useless-empty-export: Skip TS declaration
files (#25789 ) (Evyatar Daud)
- 57f2199 linter/typescript/no-useless-empty-export: Report after
imports (#25786 ) (camc314)
- 633bc19 linter/typescript/no-unnecessary-type-conversion: Mark fixer
as `suggestion` (#25787 ) (camc314)
- dea3339 linter/typescript/explicit-module-boundary-types: Anchor
diagnostics on arrows (#25779 ) (camc314)
- 5cd6f02 linter/eslint/array-callback-return: Anchor diagnostic on
callback (#25780 ) (camc314)
- ef8cebf linter/eslint/preserve-caught-error: Handle AggregateError
options (#25775 ) (camc314)
- c108d5c linter: Improve React Compiler diagnostics (#25742 ) (Boshen)
- c9ec55e react-compiler: Improve diagnostic spans (#25731 ) (Boshen)
- 1cbbcb7 linter/unicorn/prefer-string-replace-all: Apply fixes in one
pass (#25709 ) (Mikhail Baev)
- dec0a86 react-compiler: Standardize diagnostics (#25702 ) (Boshen)
- 5fd77f7 linter/react/display-name: Report curried HOC inner component
(#25662 ) (camc314)
- 4dbb80e linter/import/no-named-as-default: Report local export
conflicts (#25658 ) (camc314)
- e8a7214 linter/react/rules-of-hooks: Report hooks inside try blocks
(#25670 ) (camc314)
- 36f8451 linter/eslint/no-eval: Align indirect default with ESLint
(#25656 ) (camc314)
- d901d24 linter/react/exhaustive-deps: Handle destructured object
dependencies (#25669 ) (camc314)
- beb724d linter/eslint/no-unused-vars: Report bare underscore
parameters (#25663 ) (camc314)
- fa36f26 linter/react/no-this-in-sfc: Detect this in nested arrow
callbacks (#25653 ) (camc314)
- 44d1be3 linter/typescript/no-var-requires: Run rule on JavaScript
(#25664 ) (camc314)
- 4004c10 linter/eslint/no-irregular-whitespace: Check comments by
default (#25660 ) (camc314)
- 625401d linter/import/no-named-default: Flag type-only named defaults
(#25661 ) (camc314)
- 8eacb2d linter/typescript/no-non-null-asserted-optional-chain: Detect
assertions after continued optional chains (#25659 ) (camc314)
- d55b76c linter/react/no-direct-mutation-state: Detect computed state
mutations (#25654 ) (camc314)
- f92c651 linter/unicorn/no-abusive-eslint-disable: Use directive prefix
in diagnostic (#25657 ) (camc314)
- ee44996 linter/eslint/max-classes-per-file: Anchor diagnostic at
program start (#25652 ) (camc314)
- 403ec40 linter/eslint/no-multi-assign: Handle parenthesized declarator
initializers (#25651 ) (camc314)
- 6c9ba37 linter/jest/expect-expect: Detect assertions in nested
function declarations (#25650 ) (camc314)
- 285820e linter/no-large-snapshots: Precompile and document allowed
snapshot matchers (#25611 ) (Mikhail Baev)
- 1be1e20 linter/eslint/prefer-promise-reject-errors: Report on spread
arguments (#25648 ) (Mikhail Baev)
- a38f7b3 oxlint,oxfmt: Apply .gitignore only to walk targets, not
explicitly named files (#25531 ) (leaysgur)
- 509931b semantic: Classify global references per identifier (#25608 )
(camc314)
- 0c68b7f estree: Emit `decorators` on `FormalParameterRest` (#25582 )
(camc314)
- 1d22912 linter/plugins: Parse rule-less directive justifications
(#25559 ) (camc314)
- eaf80d8 linter/unicorn/prefer-node-protocol: Validate exact Node.js
built-in specifiers (#25558 ) (camc314)
- 57b94af linter/promise/no-multiple-resolved: Ignore unresolved globals
(#25530 ) (Tushar Singh)
- 80e64c2 linter/expect-expect: Validate assertion regex (#25504 )
(Mikhail Baev)
- 7830604 linter/react/exhaustive-deps: Treat binary expressions as a
stable dependency (#25508 ) (Hamody We)
- 4df5835 linter: Allow capitalized built-in calls (#25516 ) (Boshen)
- 9d49d27 react_compiler: Bail out instead of panicking on "Expected a
node for all scopes" (#25506 ) (Boshen)
- d43b562 linter/vitest/prefer-expect-assertions: Handle parameterized
Vitest assertion suggestions (#25476 ) (camc314)
### ⚡ Performance
- e8303d6 linter: Shrink rule serialization dispatch (#25818 ) (Boshen)
- c84ede3 estree_tokens: Share JS token update entry point (#25826 )
(Boshen)
- 35c8eb2 linter: Compute sort keys once with sort_by_cached_key
(#25821 ) (Boshen)
- f0121ed linter: Share config deserialization entry point (#25820 )
(Boshen)
- 2dacf7a oxlint: Reduce debug formatting code size (#25797 ) (Boshen)
- 9ed10b7 linter: Use unstable sorts for unique keys (#25778 ) (Boshen)
- 63ff8ef linter: Outline diagnostic construction (#25762 ) (Boshen)
- 2dd7446 diagnostics: Preallocate graphical output (#25721 ) (Boshen)
- 9c8abab diagnostics: Batch graphical reports (#25710 ) (Boshen)
- 8e9b95f linter: Use table for rule names (#25458 ) (Boshen)
# Oxfmt
### 🚀 Features
- c07fe7c oxfmt: Support `experimentalOperatorPosition` (#25643 )
(leaysgur)
- 2adb8fb formatter: Implement `operatorPosition` option (#25581 )
(leaysgur)
### 🐛 Bug Fixes
- 44231fb formatter: Fix comment and indent issues around unions
(#25665 ) (leaysgur)
- 2465e87 formatter: Keep comments in place when dropping
`EmptyStatement` (#25730 ) (leaysgur)
- 7e4f3b7 formatter: Print `JSDocUnknownType` (#25729 ) (leaysgur)
- 5238d9e formatter: Keep nested awaited-paren member chain grouped in
call arguments (#25646 ) (leaysgur)
- a38f7b3 oxlint,oxfmt: Apply .gitignore only to walk targets, not
explicitly named files (#25531 ) (leaysgur)
- 5c0a5ff formatter_css: Fill own-line block comments inside
space-separated values (#25578 ) (leaysgur)
- 53debfa formatter_css: Keep trailing comma and indent after
comment-preceded last map value (#25577 ) (leaysgur)
- 1a83a8d oxfmt: Mirror printer line suppression and restore
dedent-to-root (#25573 ) (leaysgur)
- 7f350d1 formatter: Keep unary comment and print only needed parens
(#25526 ) (leaysgur)
- f405789 formatter_yaml: Consistent chomped eos behavior (#25523 )
(leaysgur)
- a243311 formatter_yaml: Bump oxc-yaml-parser for contentless block
scalar (#25519 ) (leaysgur)
- 40d38a0 formatter_css: Keep multi value function args intact after
leading comment (#25518 ) (leaysgur)
### 📚 Documentation
- 223e785 oxfmt/conformance: Update notes on conformance (#25757 ) (Yuji
Sugiura)
- 673dc6d oxfmt: Move some docs from AGENTS.md to code comment (#25649 )
(leaysgur)
- fed6681 oxfmt: Skip expanding overrides options (#25572 ) (leaysgur)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com >
2026-08-18 22:27:08 +08:00
oxc-guard
c42d6397ea
release(apps): oxlint v1.78.0 && oxfmt v0.63.0 ( #25473 )
...
# Oxlint
### 💥 BREAKING CHANGES
- a33788e ast: [**BREAKING**] Group class heritage into `ClassHeritage` (#25360 ) (camc314)
- 5c5cdcd ast: [**BREAKING**] Narrow `TSInterfaceHeritage::expression` to TSTypeName (#24360 ) (camc314)
- 6be314f ast: [**BREAKING**] Remove duplicated `VariableDeclarator::kind` (#25319 ) (camc314)
- 44fd320 ast: [**BREAKING**] Split TS external modules & Namespace Declarations (#25284 ) (camc314)
### 🚀 Features
- ccb8fe8 linter/jsdoc: Implement `no-blank-blocks` rule (#25207 ) (Mikhail Baev)
- d4a897c linter/eslint: Implement `one-var` rule (#24470 ) (Cole Ellison)
- 5ab9340 linter/jsx-a11y/anchor-has-content: Add options to match eslint (#24571 ) (Cole Ellison)
### 🐛 Bug Fixes
- b746e00 linter/eslint/no-implicit-coercion: Preserve template coercion whitespace (#25470 ) (camc314)
- a92c541 linter: Preserve source text for JS plugin ignore fixes (#25280 ) (Norcleeh)
- 675c840 linter/eslint/prefer-promise-reject-errors: Handle parenthesized calls (#25378 ) (camc314)
- 1703739 linter/unicorn/new-for-builtins: Ignore optional chains (#25411 ) (tanakalucky)
- 95ece63 linter/unicorn/prefer-code-point: Downgrade the auto-fix to dangerous (#25412 ) (leemr)
- c451a0e linter/vitest: Validate `consistent-test-filename` regex patterns (#25408 ) (Mikhail Baev)
- 937825c react_compiler: Disable exhaustive memo validation by default (#25417 ) (Boshen)
- f0f7dae linter/eslint/no-unused-vars: Report invalid regex options (#25380 ) (Cameron)
- 44e73fd linter/unicorn/prefer-array-flat: Fix `concat.apply` suggestions (#25373 ) (Cameron)
- 6846a9a linter/react/rules-of-hooks: Detect constructor callbacks (#25377 ) (camc314)
- b247a9d linter/unicorn/new-for-builtins: Support `Float16Array` (#25382 ) (tanakalucky)
- 19109cd linter/unicorn/error-message: Support `SuppressedError` messages (#25375 ) (camc314)
- 9c13f5e linter: Assert token lookup invariants (#25368 ) (camc314)
- bc35f83 linter/eslint/no-unused-vars: Bound catch parameter lookup (#25367 ) (camc314)
- c159fb9 linter/unicorn/switch-case-braces: Bound token lookup (#25363 ) (camc314)
- 03b2eb2 linter/unicorn/no-static-only-class: Bound token lookup (#25361 ) (camc314)
- 0afc59e linter/unicorn/empty-brace-spaces: Bound token lookup (#25353 ) (camc314)
- 2963d98 linter/eslint/no-unreachable-loop: Do not report loops whose body has a finally block (#25335 ) (Todor Andonov)
- 589e5fb linter/eslint/no-param-reassign: Validate `ignorePropertyModificationsForRegex` property (#25346 ) (Mikhail Baev)
- aae5d8b linter/eslint/no-throw-literal: False positive on variable declared without initializer (#25275 ) (cjnoname)
- 6b1c479 oxlint: Normalize customized rule names (#25316 ) (camc314)
- d494eb5 linter/unicorn/consistent-existence-index-check: Bound token lookup (#25325 ) (camc314)
- 4266037 linter/typescript/prefer-namespace-keyword: Bound token lookup (#25322 ) (camc314)
- 4745b4e linter/typescript/no-namespace: Bound token lookup (#25321 ) (camc314)
- 648a481 linter/eslint/one-var: Avoid joining exported declarations (#25314 ) (camc314)
- 9573937 linter/typescript: Validate `ban-ts-comment` description_format (#25320 ) (Mikhail Baev)
- ebf7d18 linter/typescript/consistent-type-definitions: Bound token lookup (#25281 ) (camc314)
- 1501ccf linter/typescript/consistent-generic-constructors: Bound token lookup (#25258 ) (camc314)
### ⚡ Performance
- 8f784f3 linter: Reduce rule config dispatch size (#25461 ) (Boshen)
- 2de4ec2 linter: Reduce visitor code size (#25441 ) (Boshen)
- 6fb7f47 linter/unicorn/prefer-export-from: Narrow `ExportFromDeclaration` lookup (#25381 ) (camc314)
- e3f6263 linter/unicorn/prefer-default-parameters: Avoid reference allocation (#25379 ) (camc314)
- d863473 linter/vue/max-props: Narrow AST dispatch (#25372 ) (camc314)
- 273d867 linter: Avoid diagnostic sorting after applying fixes (#25079 ) (Sysix)
- 4ec9189 oxlint/lsp: Avoid second lock for getting/removing unused directives (#25350 ) (Sysix)
- 6c0d01b oxlint/lsp: Preallocate fix-content vec (#25351 ) (Sysix)
- 3a94055 linter: Avoid per-call heap allocations in jest and unicorn helpers (#25210 ) (Connor Shea)
- 4abff11 linter: Avoid redundant message work in the agent reporter (#25315 ) (Connor Shea)
- 6bb5421 linter: Hoist `current_dir` out of the stylish reporter loop (#25313 ) (Connor Shea)
- 9a7c323 linter: Compute diagnostic `Info` once per diagnostic in junit reporter (#25312 ) (Connor Shea)
- 1cf7dde oxlint: Render JSON report into a single buffer (#25295 ) (connorshea)
- 8492cfd linter/typescript/ban-ts-comment: Bail early with substring guard (#25301 ) (Jacob Asper)
- 7607f04 linter/typescript/ban-tslint-comment: Replace regex with manual parser (#25299 ) (Jacob Asper)
# Oxfmt
### 💥 BREAKING CHANGES
- a33788e ast: [**BREAKING**] Group class heritage into `ClassHeritage` (#25360 ) (camc314)
- 5c5cdcd ast: [**BREAKING**] Narrow `TSInterfaceHeritage::expression` to TSTypeName (#24360 ) (camc314)
- 6be314f ast: [**BREAKING**] Remove duplicated `VariableDeclarator::kind` (#25319 ) (camc314)
- 44fd320 ast: [**BREAKING**] Split TS external modules & Namespace Declarations (#25284 ) (camc314)
### 🚀 Features
- fd02a89 oxfmt: Dispatch yaml-in-css(frontmatter) to `oxc_formatter_yaml` (#25336 ) (leaysgur)
- ab12665 formatter_core: Add `hardlineWithoutBreakParent` equivalent IR (#25273 ) (leaysgur)
### 🐛 Bug Fixes
- 95dc917 oxfmt: Drop IR Space at line start for js-in-xxx (#25460 ) (leaysgur)
- b63eccc formatter: Keep comments after TS this_param (#25459 ) (leaysgur)
- ab52a59 formatter: Format xxx-in-js inside JSDoc js fence (#25414 ) (leaysgur)
- 1a2c64a formatter,oxfmt: Apply effective print width for JSDoc fence (#25413 ) (leaysgur)
- 2eaede9 formatter_core: Unify leading-BOM handlings (#25340 ) (leaysgur)
- ef1d04b formatter: Break mapped type brackets (#25297 ) (leaysgur)
- 4e6f3f1 formatter: Break index signature brackets (#25296 ) (leaysgur)
- e23dccf formatter_css: Bump oxc-css-parser to accept unknown at-rule with interpolated (#25277 ) (leaysgur)
- c29b587 formatter_core: Measure decided-flat fill separator as flat during group re-measure (#25276 ) (leaysgur)
- f3c6953 formatter_yaml: Don't rewrite overflowing key to implicit (#25274 ) (leaysgur)
### ⚡ Performance
- c9d1a5b oxfmt: Spawn tinypool lazily (#25298 ) (leaysgur)
### 📚 Documentation
- 6eae5c9 formatter,oxfmt: Record embed-layer decisions in place (#25422 ) (leaysgur)
- 51224a7 formatter_yaml: Pin EOF blank lines divergence (#25269 ) (leaysgur)
2026-08-10 10:03:34 +00:00
oxc-guard
9a423f2f48
release(apps): oxlint v1.77.0 && oxfmt v0.62.0 ( #25251 )
...
# Oxlint
### 💥 BREAKING CHANGES
- 4120da0 semantic: [**BREAKING**] Return borrowed JSDoc so the parse cache works (#25186 ) (Connor Shea)
- 067da8c ast: [**BREAKING**] Store single parameter in `TSIndexSignature::parameter` (#25154 ) (camc314)
- 1bdedd1 ast: [**BREAKING**] Introduce `ExportDeclaration`, `ExportFromDeclaration` (#25095 ) (camc314)
- c917f20 ast: [**BREAKING**] Introduce `ArrowFunctionBody` enum (#24987 ) (camc314)
### 🚀 Features
- 0b9f83c linter/oxc/bad-char-at-comparison: Expand coverage (#25001 ) (Mikhail Baev)
- 1fb3d70 oxlint: Show file:line:col in github format annotation messages (#25020 ) (Faris Tristan Fabian)
### 🐛 Bug Fixes
- 9d4592c linter: Reject duplicate JS plugin names (#25243 ) (camc314)
- 3213e7a linter: Ignore unsigned shifts in prefer-math-trunc (#25240 ) (camc314)
- 06579da linter/eslint/prefer-promise-reject-errors: Handle ambient error variables (#25238 ) (camc314)
- 6a7cd90 linter/oxc/no-async-await: Bound token lookup (#25222 ) (camc314)
- d8e390a linter/oxc/bad-bitwise-operator: Bound token lookups (#25220 ) (camc314)
- 351a777 linter/import/no-duplicates: Bound token lookup (#25219 ) (camc314)
- 4f70fb6 linter/import/consistent-type-specifier-style: Bound token lookup (#25218 ) (camc314)
- b89113c linter/eslint/yoda: Bound token lookup (#25202 ) (camc314)
- 7c7cda7 linter/oxc/no-map-spread: Avoid recursive declaration traversal (#25200 ) (camc314)
- 99efb30 linter/eslint/prefer-promise-reject-errors: Move category to `pedantic` (#25201 ) (camc314)
- 8edad2a linter/eslint/require-await: Bound token lookup (#25199 ) (camc314)
- 5aaec85 linter/eslint/prefer-template: Bound token lookup (#25197 ) (camc314)
- 0ea1af4 linter/unicorn/new-for-builtins: Align Date() diagnostic message with upstream (#25166 ) (tanakalucky)
- f6c8575 linter/eslint/prefer-object-spread: Bound token lookup (#25195 ) (camc314)
- 20f68e7 oxlint,oxfmt: Respect `.gitignore` for walk targets and explicit paths (#25133 ) (leaysgur)
- b83993b linter/eslint/prefer-const: Bound token lookup (#25194 ) (camc314)
- aeabf63 linter/eslint/object-shorthand: Bound token lookups (#25193 ) (camc314)
- 48f302c linter/eslint/no-var: Bound token lookup (#25192 ) (camc314)
- 1f595de linter/eslint/no-unused-vars: Bound token lookups (#25191 ) (camc314)
- e52f4c4 linter/eslint/no-unexpected-multiline: Use bounded token lookup (#25190 ) (camc314)
- ca80338 linter/eslint/eqeqeq: Use bounded token lookup (#25189 ) (camc314)
- df91684 linter: Make the remaining token lookups comment-aware (#25182 ) (connorshea)
- 2401bb8 linter/eslint/prefer-const: Skip Svelte and Vue files (#25148 ) (Pitiș Radu)
- b870897 linter: Don't match tokens inside comments when locating spans (#25181 ) (connorshea)
- b474da1 linter/typescript/consistent-type-imports: Make token lookups comment-aware (#25180 ) (connorshea)
- 81f82db linter: Don't insert an ASI semicolon into an unbraced statement body (#25160 ) (Vladexy88x)
- 31333be linter/no-magic-array-flat-depth: Scan for `(` by byte offset instead of character count (#25130 ) (connorshea)
- 56e9c83 linter: Index source text by byte offset instead of char count (#25131 ) (connorshea)
- 5c0fa61 linter/eslint/no-warning-comments: Unify config structs and remove manual options docs (#25151 ) (Mikhail Baev)
- a922355 docs: Incorrect quotations in `role_supports_aria_props.rs` (#25077 ) (Maximilian Franzke)
- e8c4c05 linter/eslint/no-unreachable-loop: Handle caught errors correctly (#25071 ) (camc314)
- 2b02711 oxlint: Correct --warn flag help text (#25059 ) (Faris Tristan Fabian)
- 97f084f linter/eslint/no-control-regex: Allow null escape (#25070 ) (camc314)
### ⚡ Performance
- 224c21a linter/vue/no-side-effects-in-computed-properties: Borrow property names in the mutation walk (#25212 ) (connorshea)
- d36e9c9 linter/unicorn/prefer-export-from: Skip non-violating imports early (#25183 ) (connorshea)
- 6f2b933 linter/import/no-cycle: Drop two Vec allocations per graph edge (#25004 ) (Connor Shea)
- 79ddb18 linter/import/no-cycle: Skip the graph walk for acyclic modules (#25003 ) (Connor Shea)
### 📚 Documentation
- f8392cd linter/eslint/prefer-promise-reject-errors: Recommend type aware rule (#25241 ) (camc314)
- 9dc7756 linter/typescript/no-unnecessary-condition: Clarify options (#25110 ) (camc314)
# Oxfmt
### 💥 BREAKING CHANGES
- 067da8c ast: [**BREAKING**] Store single parameter in `TSIndexSignature::parameter` (#25154 ) (camc314)
- a0c7788 ast: [**BREAKING**] Change `TSIndexSignatureName::name` to `Ident` (#25150 ) (camc314)
- 1bdedd1 ast: [**BREAKING**] Introduce `ExportDeclaration`, `ExportFromDeclaration` (#25095 ) (camc314)
- c917f20 ast: [**BREAKING**] Introduce `ArrowFunctionBody` enum (#24987 ) (camc314)
- 0c16cb5 oxfmt: [**BREAKING**] Format parser:yaml files by oxc_formatter_yaml (#24890 ) (leaysgur)
### 🚀 Features
- 1b57f78 oxfmt: Support tsx-in-vue (#25063 ) (leaysgur)
- be7f6da oxfmt: Colorize diff file list in check mode (#25061 ) (leaysgur)
### 🐛 Bug Fixes
- 68146bd formatter_css: Preserve glued plugin words in grid values (#25225 ) (leaysgur)
- 20f68e7 oxlint,oxfmt: Respect `.gitignore` for walk targets and explicit paths (#25133 ) (leaysgur)
- a9e76e9 oxfmt: Rework tsx-in-vue support (#25106 ) (leaysgur)
- dd28596 formatter_css: Bump oxc-css-parser for substituted at-rule preludes (#25104 ) (leaysgur)
- ca1ba71 formatter: Hug arrows with type-reference return annotations (#25044 ) (Pitiș Radu)
- f56009a oxfmt: Correct prose about comment width in fits measurement (#25054 ) (leaysgur)
- 22fdda4 oxfmt/conformance: Fix typo (#25053 ) (leaysgur)
- ee344bd formatter_yaml: Break long keys off a block scalar header (#25014 ) (leaysgur)
- d5e3476 formatter_yaml: Let ancestor collection values claim end comments after block scalars (#24897 ) (leaysgur)
- ec05297 formatter_yaml: Align sequence container end comments to the dash width (#24891 ) (leaysgur)
- e6e584b oxfmt: Type jsdoc. enum options (#25008 ) (leaysgur)
### ⚡ Performance
- b91d5a8 formatter_css,formatter_graphql,formatter_yaml,formatter_json: Pre alloc IR buffers (#25234 ) (leaysgur)
### 📚 Documentation
- eaa7c69 formatter_core: Extract FORMATTER_POLICY (#25233 ) (leaysgur)
- a1842e2 formatter_json: Fix outdated separeted.rs comments (#25144 ) (leaysgur)
- 193e16f formatter/jsdoc: Correct `str_width` attribution (#25142 ) (leaysgur)
2026-08-03 11:15:35 +00:00
oxc-guard
65fe65d842
release(apps): oxlint v1.76.0 && oxfmt v0.61.0 ( #24976 )
...
# Oxlint
### 🚀 Features
- 8d31dfa linter: Verify eslint/no-restricted-globals config schema (#24598 ) (vigneshwar)
- 7069621 linter: Verify jest/vitest prefer-lowercase-title config schema (#24724 ) (Bartok)
- 016cf2a linter/oxc: Add bad-match-all-arg rule (#24900 ) (camc314)
- cdc941e linter/n: Implement `exports-style` rule (#24087 ) (Mikhail Baev)
- 1ad6f6c linter/eslint: Implement `id-denylist` rule (#24632 ) (Mikhail Baev)
- 678bbb5 linter/typescript-eslint: Implement suggestion for `class-literal-property-style` rule (#24766 ) (Mikhail Baev)
### 🐛 Bug Fixes
- a5f3a0e linter: Mark missing suggestions as pending (#24956 ) (Mikhail Baev)
- a065946 oxlint: Absolutize explicit CLI paths even with --no-ignore (#24646 ) (Bez Sahara)
- 17688bb linter/jsx-a11y/interactive-supports-focus: Match eslint behavior for custom components (#24780 ) (Cole Ellison)
- 0aef19e linter/typescript/no-confusing-non-null-assertion: Report `in` and `instanceof` (#24825 ) (Mikhail Baev)
- 361dce9 linter: Unicorn/no-array-reverse and no-array-sort replacements should be suggestions (#24848 ) (klem)
- 9213560 config: Preserve defineConfig field JSDoc (#24326 ) (周星星同学)
- 334d884 linter/node/no-top-level-await: Clarify diagnostic (#24803 ) (camc314)
- b9fc6af linter/eslint/func-names: Ignore overloads (#24801 ) (camc314)
- e80574f estree: Handle empty spans serializing `ImportMeta` and `NewTarget` (#24775 ) (overlookmotel)
### ⚡ Performance
- c75dc60 linter: Avoid `Vec` allocations via `bound_names` (#24959 ) (connorshea)
- 9f9f39d linter/eslint/no-const-assign: Avoid `Vec` allocation per `const` declarator (#24953 ) (connorshea)
- 10a621e linter/typescript/adjacent-overload-signatures: Avoid collecting vec in some cases (#24874 ) (connorshea)
- ed167e1 linter/node/exports-style: Iterate once over global references (#24877 ) (connorshea)
- 69908fe linter: Avoid allocations in jest/no-deprecated-functions (#24866 ) (Connor Shea)
- a3585d7 linter: Speed up jest/vitest prefer-each (#24872 ) (Connor Shea)
- 62fe640 linter/eslint/prefer-rest-params: Run once per file (#24873 ) (Connor Shea)
- 7a7aa54 linter/eslint/no-this-before-super: Skip files without classes (#24869 ) (Connor Shea)
- 4ad0c94 linter/plugins: Faster copying comments to JS allocator (#24858 ) (overlookmotel)
- 4c25b91 linter/plugins: Test booleans with explicit `=== false` (#24830 ) (overlookmotel)
- b7add00 linter/plugins: Remove check in loop in `getDisableDirectives` (#24833 ) (overlookmotel)
### 📚 Documentation
- 3ff2e0e linter: Clarify config extends types (#24936 ) (Boshen)
# Oxfmt
### 🚀 Features
- eabfe01 oxfmt/lsp: Support `oxc.fmt.disableNestedConfig` (#24965 ) (leaysgur)
- 2357a10 formatter_yaml: Implement YAML formatter (#24534 ) (leaysgur)
### 🐛 Bug Fixes
- 761a882 formatter_css: Keep leading `+` in An+B to enable idempotency check (#24973 ) (leaysgur)
- e037709 formatter: Stop preserving indent for embedded template exprs (#24972 ) (leaysgur)
- ae1a39b formatter_css: Align wrapped selector-arg indent (#24971 ) (leaysgur)
- 143fd1f formatter: Align quoted `new` signature (#24883 ) (leaysgur)
- 07ff12f formatter_yaml: Fix indent, blank, and spacing issues (#24837 ) (leaysgur)
- d076b40 formatter: Check calee chain is_simple (#24871 ) (leaysgur)
- fb34196 formatter_css: Keep non-ASCII strings with quotes (#24870 ) (leaysgur)
- 9213560 config: Preserve defineConfig field JSDoc (#24326 ) (周星星同学)
- 31783e9 formatter_css: Print nested SCSS map with consistent indent (#24789 ) (leaysgur)
- 8eb9eca formatter/jsdoc: Respect `singleQuote` option in `@import` (#24787 ) (leaysgur)
- 6f05ac4 formatter: Fix template literal formatting (#24786 ) (leaysgur)
### ⚡ Performance
- bb73b23 formatter_core: Bound the thread-local scratch cache (#24793 ) (leaysgur)
- a5f7b15 formatter: Stage assignment-like left hand side on the heap (#24613 ) (leaysgur)
- 94de05f formatter: Accumulate JSX child-list builders on the heap (#24585 ) (leaysgur)
- 7810e8a formatter_core: Share one thread-cached scratch vector across staging buffers (#24583 ) (leaysgur)
- c191f51 formatter_core: Stage IR buffers on the heap to reduce arena memory (#24582 ) (leaysgur)
### 📚 Documentation
- 69126a0 formatter_css,fomatter_graphql,formatter_yaml: Update AGENTS.md (#24821 ) (leaysgur)
2026-07-27 15:17:12 +00:00
oxc-guard[bot]
83abe3b49c
release(apps): oxlint v1.75.0 && oxfmt v0.60.0 ( #24713 )
...
# Oxlint
### 💥 BREAKING CHANGES
- 54cc121 ast: [**BREAKING**] Split `MetaProperty` into `ImportMeta` and
`NewTarget` (#24557 ) (camc314)
### 🚀 Features
- 7b045cd minfier: Drop last break from last switch case (#24673 )
(Armano)
- dd18383 linter/node: Implement no-top-level-await rule (#24634 )
(Connor Shea)
- 16a65f2 linter/react: Implement function-component-definition rule
(#24471 ) (Cole Ellison)
- 7f1f585 linter: Reuse `jest/padding-around-test-blocks` for
`vitest/padding-around-test-blocks` (#24519 ) (Mikhail Baev)
- 99978a8 linter/import/consistent-type-specifier-style: Support
`prefer-top-level-if-only-type-imports` option (#24502 ) (camc314)
### 🐛 Bug Fixes
- 0184ad6 linter/unicorn/no-useless-undefined: Preserve valid parameter
defaults (#24686 ) (camc314)
- 8694167 linter/eslint/prefer-destructuring: Handle typed declarations
(#24616 ) (camc314)
- 477cf0f linter/eslint/no-throw-literal: Handle assigned errors
(#24561 ) (Cole Ellison)
- ac9200a linter: Detect React components from returned JSX (#24521 )
(camc314)
- c0a6522 linter/eslint/no-useless-computed-key: Allow TS syntax in
computed keys (#24524 ) (Cole Ellison)
### ⚡ Performance
- 346eed1 linter/unicorn/prefer-event-target: Only run on `Class` and
`NewExpression` nodes (#24685 ) (Mikhail Baev)
- 7be5cf0 oxlint/lsp: Only invoke lint on code actions when document is
not opened (#24676 ) (Sysix)
- d3f07a0 diagnostics: Box OxcDiagnosticInner to reduce binary size
(#24665 ) (Boshen)
- 90ae040 linter/reporter/stylish: Compute diagnostic Info once per
diagnostic (#24525 ) (connorshea)
### 📚 Documentation
- e6f7174 linter/valid-expect: Fix correct example being identical to
incorrect one (#24468 ) (mkan0141)
# Oxfmt
### 💥 BREAKING CHANGES
- 54cc121 ast: [**BREAKING**] Split `MetaProperty` into `ImportMeta` and
`NewTarget` (#24557 ) (camc314)
### 🚀 Features
- 3d22307 parser: Add `ParseOptions::enable_ident_hashes` (#24491 )
(Boshen)
### 🐛 Bug Fixes
- 6fe866a oxfmt: Keep tailwind classes glued to template expr with
`preserveWhitespace` (#24609 ) (leaysgur)
- 33e32d8 formatter_css: Use `line_suffix` for EOL line comment (#24580 )
(leaysgur)
- 5f76998 formatter_graphql: Keep same line comments pending across
intervening tokens (#24579 ) (leaysgur)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com >
Co-authored-by: Cameron <cameron.clark@hey.com >
2026-07-21 16:10:25 +01:00
oxc-guard[bot]
2d4e8d2064
release(apps): oxlint v1.74.0 && oxfmt v0.59.0 ( #24454 )
...
# Oxlint
### 🚀 Features
- 0433a83 linter/eslint/no-inner-declarations: Add `namespaces` option
(#24044 ) (Boshen)
- 92f154a oxlint,oxfmt: Auto-discover `.mts` config files (#24357 )
(camc314)
- 8c1d74b linter/import/no-duplicates: Add autofix logic (#24273 ) (Cole
Ellison)
### 🐛 Bug Fixes
- 0b086de linter/jest/prefer-lowercase-title: False positive when
`lowercaseFirstCharacterOnly` is false (#24414 ) (Connor Shea)
- 097cb95 linter: Allow `vite-plus/test` and `@effect as Vitest source
(#24196 ) (Liang)
- 8337835 linter: Error on `ignorePatterns` that cannot match files
aoutside the config directory (#24341 ) (leaysgur)
- 9ba30e5 linter/oxc/bad-replace-all-arg: Add note to enhance diagnostic
(#24346 ) (camc314)
- 2ce5a33 linter: Resolve `ignorePatterns` relative to the config dir
(#24339 ) (leaysgur)
- ab90eed linter/eslint/no-loop-func: Do not error on catch variables
(#24316 ) (Chris Opperwall)
- b67f0a6 linter/eslint/no-unused-vars: Count default parameter updates
as usage (#24323 ) (camc314)
- d193f8e linter: Detect Junie agent env vars (#24277 ) (Jeevan Mohan
Pawar)
- 2aecf60 linter/eslint/no-unreachable: Handle `break` in switch stmts
correctly (#24260 ) (camc314)
### ⚡ Performance
- 7f80cac linter/vue/prop-name-casing: Precompile `ignoreProps` regex
pattern (#24413 ) (connorshea)
- 6272051 linter/typescript/no-require-imports: Compile allow patterns
once (#24417 ) (connorshea)
- fb1edf1 linter: Compute comment fix span only for directive comments
(#24419 ) (connorshea)
- 33805b9 linter/jsdoc/require-param: Compile checkTypesPattern regex
once (#24420 ) (connorshea)
- 8de6fca linter/jest/valid-title: Compile disallowedWords regex once
(#24412 ) (Connor Shea)
- 4a0d8dc linter/eslint/no-underscore-dangle: Avoid String clone per
identifier (#24371 ) (Ian Macalinao)
- f3ab04c linter/typescript/consistent-type-imports: Remove redundant
Vec per violation (#24370 ) (Ian Macalinao)
- 4d2d78d linter/typescript/prefer-ts-expect-error: Avoid String clone
per comment (#24369 ) (Ian Macalinao)
# Oxfmt
### 🚀 Features
- 3a7fe74 formatter_css: Update oxc-css-parser to 0.0.7 (#24434 )
(leaysgur)
- 0173cd3 formatter_css: Format Less :extend and merge props (#24358 )
(leaysgur)
- 92f154a oxlint,oxfmt: Auto-discover `.mts` config files (#24357 )
(camc314)
- df250df formatter: Support `quoteProps` for TS enum and methods
(#24309 ) (leaysgur)
- a9a5cd6 formatter_core: Expose `SourceText::as_str()` (#24281 )
(leaysgur)
### 🐛 Bug Fixes
- 162bddf formatter: Add required parens for conditional type in type
parameter constraint (#24450 ) (leaysgur)
- 2d22a91 formatter: Determine type cast target from span instead of
lexical scan (#24447 ) (leaysgur)
- 25306e9 formatter: Do not add extra parens with type cast comment
(#24444 ) (leaysgur)
- bd6edfe formatter: Break arrow signature that exactly fills the line
when cond body may hug (#24440 ) (leaysgur)
- a99ef41 formatter: Keep quotes on method signature named new (#24432 )
(leaysgur)
- fcc28df formatter_css: Keep glued-braket-value tight (#24352 )
(leaysgur)
- 8337835 linter: Error on `ignorePatterns` that cannot match files
aoutside the config directory (#24341 ) (leaysgur)
- b7c7e15 formatter: Add parens for import and private field in new
callee chain (#24320 ) (leaysgur)
- 0c8f6e4 formatter: Update detect_code_removal for #24309 (#24314 )
(leaysgur)
- a85aad0 formatter: Fix member-chain and non-null parens (#24312 )
(leaysgur)
- 1c29c73 formatter: Preserve `TSNonNullExpression` in chain expression
(#24311 ) (leaysgur)
- 8933c0e formatter: Keep comment inside of empty `switch` block
(#24308 ) (leaysgur)
- ec26af2 formatter: Preserve blank lines between JSX attrs (#24290 )
(leaysgur)
- 70bd54d formatter: Keep arrow function body comment (#24287 )
(leaysgur)
- 415fe1e oxfmt: Error on ignorePatterns that cannot match files outside
the config directory (#24286 ) (leaysgur)
- eeabc4a formatter_css: Bail on EOF-recovered parse errors (#24282 )
(leaysgur)
- 42ec8de formatter: Keep comments inside surviving parens and
suppressed statement terminators (#24253 ) (leaysgur)
- 1343779 formatter: Keep comment inline for empty statements (#24249 )
(leaysgur)
- b996579 formatter: Print ; before trailing comments part 2 (#24246 )
(leaysgur)
- 4f86e8c formatter: Print `;` before trailing comments (#24244 )
(leaysgur)
- 01252e4 formatter: Add or remove parens for `let` declaration (#24215 )
(leaysgur)
### ⚡ Performance
- eeb1913 formatter_core: Avoid per-call `Vec` work-stack in soft-line
removal (#23775 ) (Marius Schulz)
- a2f255b formatter: Use `SmallVec` for `MemberChain` collections
(#23776 ) (Marius Schulz)
### 📚 Documentation
- b52d0f5 formatter: Add TODO comment about unsound code (#24372 )
(overlookmotel)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com >
2026-07-14 15:02:14 +08:00
oxc-guard[bot]
39677ba50d
release(apps): oxlint v1.73.0 && oxfmt v0.58.0 ( #24219 )
...
# Oxlint
### 🚀 Features
- 7db7a29 allocator: Add `ReplaceWith` trait (#24012 ) (overlookmotel)
- a2c97f3 linter/unicorn: Implement `explicit-timer-delay` rule (#23612 )
(Mikhail Baev)
- 85735cb linter/unicorn: Implement `no-confusing-array-with` rule
(#23638 ) (Shekhu☺️ )
- cb4fbb9 linter/eslint: Implement no-unreachable-loop rule (#23975 )
(Todor Andonov)
- dc32112 linter/eslint/no-constant-binary-expression: Check relational
comparisons (#24088 ) (camc314)
- 439c344 linter/jsdoc: Added missing options to `jsdoc/require-param`
rule (#23364 ) (kapobajza)
- 62af717 linter/unicorn/filename-case: Add `lowercase` and
`screamingSnakeCase` (#24045 ) (Boshen)
- d963967 linter/unicorn/no-array-sort: Add `allowAfterSpread` option
(#24043 ) (Boshen)
- 0a75682 linter: Add per-rule timings for type-aware linting (#22488 )
(camchenry)
- 743e222 linter/react: Add `disallowedValues` option for
`forbid-dom-props` rule (#23970 ) (Mikhail Baev)
### 🐛 Bug Fixes
- 7b80010 linter: Use direct binding symbol ids (#24216 ) (camc314)
- 8f94b49 linter/import/no-duplicates: Don't flag a type-only import
beside a side-effect import (#24030 ) (Boshen)
- d8c3fee linter/react/rules-of-hooks: Flag `useEffectEvent` escapes
(#23764 ) (Rayan Salhab)
- 0a7312b linter/no-deprecated-functions: Map `require.requireActual` to
`jest.requireActual` (#23627 ) (Jerry Zhao)
- d9e3ab3 linter/eslint/no-useless-return: Handle switch case
continuation (#23984 ) (camc314)
- 0b25582 ast: Type binding node `typeAnnotation` as `TSTypeAnnotation |
null` (#23113 ) (Boshen)
- 122d112 linter/eslint/no-restricted-imports: Flag dynamic import()
expressions (#24029 ) (Boshen)
- 59b6b83 linter: Avoid `OnceLock` re-entry on cyclic `export *`
re-exports (#23632 ) (Jerry Zhao)
- dd09af0 linter/import/namespace: Avoid panic on destructuring of an
unresolvable namespace re-export (#23626 ) (Jerry Zhao)
- bdb51c7 linter/jest/prefer-ending-with-an-expect: Validate config
patterns (#24122 ) (camc314)
- e383843 linter/unicorn/prefer-modern-dom-apis: Skip fixer for non
identifier arguments (#23630 ) (Jerry Zhao)
- 0ac4c83 linter: Detect circular config extends (#24115 ) (camc314)
- bae1edf linter/import/namespace: Check namespace imports after named
imports (#24094 ) (camc314)
- cd8fdfe linter/eslint/no-eval: Recognize Array.from family thisArg
(#24091 ) (camc314)
- 851ee43 linter/eslint/no-eval: Resolve this binding for functions
returned from an IIFE (#23643 ) (Jerry Zhao)
- 002ab35 linter/unicorn: Avoid prefer-array-find rest destructuring
false positive (#23654 ) (ColemanDunn)
- 01c8775 linter/unicorn/filename-case: Keep digits attached in
screamingSnakeCase (#24056 ) (Boshen)
- f256941 linter: Recognize `@effect/vitest` as a vitest import source
(#24025 ) (Boshen)
- 73eeb1d linter/import/extensions: Honor per-extension `never` for
explicit extensions (#24031 ) (Boshen)
- d4ebe1f linter: Reject non-object oxlint config files (#24026 )
(Boshen)
- 45d607d linter/react/forbid-component-props: Make allow/disallow lists
optional in schema (#24024 ) (Boshen)
- 54076ad linter/unicorn/no-array-for-each: Suggest entries loop for
index callbacks (#24004 ) (camc314)
- d057736 linter/jsdoc: Avoid param root underflow (#23945 ) (camc314)
- 29c76bf linter/unicorn/prefer-at: Skip object numeric-key access
(#23909 ) (Gaurav Dubey)
### ⚡ Performance
- 657a8fc linter/oxc/bad-array-method-on-arguments: Only run on member
expressions instead of all identifiers (#24164 ) (camchenry)
- 073d9e7 linter/eslint/prefer-rest-params: Run on functions instead of
all identifiers (#24163 ) (camchenry)
- e5a4162 linter/jest/no-confusing-set-timeout: Early exit fast path
(#24092 ) (camc314)
- bca7ce5 linter: Only run react-perf rules on JSX attribute nodes
(#24083 ) (camchenry)
- 6881bf6 linter: Compute `apply_overrides` rule set lazily (#23648 )
(Jerry Zhao)
- 911c106 linter/eslint/no-obj-calls: Use resolved reference instead of
scope walk (#23895 ) (Marius Schulz)
- dc8fd9a linter/unicorn/prefer-dom-node-text-content: Change dispatch
to run only on less common node types (#23897 ) (Connor Shea)
- fdbd34d linter/eslint/no-useless-call: Fast-path static callees
(#24077 ) (camc314)
- b1be114 linter/import/extensions: Skip empty config and borrow
extensions (#24075 ) (camc314)
- 4781b2d linter/eslint/no-obj-calls: Use direct global matches (#24076 )
(camc314)
- e6cee89 linter: Avoid node-chain allocation for non-Jest calls
(#23907 ) (Yagiz Nizipli)
- 30dc517 linter/typescript/no-restricted-types: O(1) banned-type
lookups (#23827 ) (Yagiz Nizipli)
### 📚 Documentation
- 6ca9125 linter/typescript: Clarify consistent-type-imports behavior
(#23972 ) (camc314)
# Oxfmt
### 🚀 Features
- 4f4313e formatter_css: Update oxc-css-parser 0.0.5 (#24120 ) (leaysgur)
- 0ccd8a1 formatter_graphql: Update oxc-graphql-parser 0.0.5 (#24106 )
(leaysgur)
- 89ec3d9 formatter_core: Add literal line and root indention primitives
(#24051 ) (leaysgur)
- 213a96b formatter_core: Add no-expand-parent for multiline text
(#24050 ) (leaysgur)
- 0e5bcc9 formatter_graphql: Update oxc-graphql-parser 0.0.4 (#24039 )
(leaysgur)
- e0b35a1 formatter_css: Update `oxc-css-parser@0.0.3` (#23974 )
(leaysgur)
### 🐛 Bug Fixes
- 1fe6546 formatter: Omit unneeded `;` for type members with `no-semi`
(#24212 ) (leaysgur)
- 0ad7316 formatter: Print space for `ForStatement`.`update` only if
exists (#24211 ) (leaysgur)
- 3abbed5 formatter: Print `;` before jsdoc type-cast parens with
no-semi (#24208 ) (leaysgur)
- 9af3833 formatter_css: Make scss formatter consistent (#24207 )
(leaysgur)
- 46d7194 formatter_css: Use fill IR for `@forward` members (#24206 )
(leaysgur)
- e31038f formatter_css: Keep comment inside sass config list (#24205 )
(leaysgur)
- d3b9591 formatter: Add parens around `await/yield` with `<T>` (#24202 )
(leaysgur)
- 2121a55 oxfmt: Reuse tinypool process during the same LSP process
(#24197 ) (leaysgur)
- 9bf4b4a formatter_css: Align CSS output to Prettier 3.9.1 (#24100 )
(leaysgur)
- cd2452e formatter_css: Align SCSS output to Prettier 3.9.1 (#24097 )
(leaysgur)
- 4ee8745 formatter_css: Keep selector value contain line-break without
breaking line (#24055 ) (leaysgur)
- e1ece97 formatter_graphql: Break `implements` list by print-width
(#23997 ) (leaysgur)
- 0a6b16c formatter_json: Preserve key and literal value for
json-stringify (#23996 ) (leaysgur)
- 903ab6e formatter_css: Preserve newlines in css-in-js selector list
(#23992 ) (leaysgur)
- ea5d095 oxfmt: Update `--migrate prettier` (#23963 ) (leaysgur)
### ⚡ Performance
- 468e1e3 formatter_core: Make printer queues cursor-based (#24098 )
(Boshen)
- c59f2fe rust: Return impl ExactSizeIterator from slice-backed
accessors (#24144 ) (Boshen)
- c292fb2 formatter: Inline fits element dispatcher (#23982 ) (camc314)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com >
2026-07-06 23:26:00 +08:00
oxc-guard[bot]
5306f24d9e
release(apps): oxlint v1.72.0 && oxfmt v0.57.0 ( #23935 )
...
# Oxlint
### 💥 BREAKING CHANGES
- 88f4455 str: [**BREAKING**] `Str` and `Ident` methods take
`&GetAllocator` (#23781 ) (overlookmotel)
### 🚀 Features
- f2091b3 ast: Unify old and new `AstBuilder`s (#23875 ) (overlookmotel)
- 1c8f50c linter: Add schema for `eslint/no-restricted-import` (#23642 )
(Sysix)
### 🐛 Bug Fixes
- 7cb85c4 linter/eslint/no-negated-condition: Add autofix for negated
conditions (#23825 ) (Yagiz Nizipli)
- f7d1f50 oxlint, oxfmt: Enable `disable_old_builder` Cargo feature for
`oxc_ast` crate (#23886 ) (overlookmotel)
- d891990 linter/jsx-a11y/role-supports-aria-props: Ignore nullish prop
values (#23865 ) (Mikhail Baev)
- 94b6599 linter: Deduplicate missing plugin errors (#23853 ) (camc314)
- eff3eff linter/oxc/branches-sharing-code: Avoid else-if false
positives (#23843 ) (camc314)
- 2a2d3b9 linter/eslint/prefer-destructuring: Skip
`AssignmentExpression` autofixes (#23818 ) (camc314)
- ddc24ae linter/eslint/id-length: Respect checkGeneric for mapped type
keys (#23802 ) (bab)
- cd89202 linter/react/exhaustive-deps: Skip wrapper expression when
analyzing hook initializers (#23793 ) (camc314)
- 20e8285 linter/unicorn/prefer-native-coercion-function: Allow ts type
predicates (#23774 ) (camc314)
- d86f60b lsp: Normalize user config path to watch pattern (#23723 )
(Sysix)
- 52032cf linter: Newline-terminate tsgolint errors (#23762 ) (Mikhail
Baev)
- 368fda7 linter/eslint/no-warning-comments: Avoid dropping generated
regex patterns (#23741 ) (camc314)
- ce44fbd linter/valid-title: Escape disallowed words regex (#23742 )
(camc314)
- 3100d11 linter/prefer-called-exactly-once-with: Avoid out-of-bounds
slice panic at end of file (#23625 ) (Jerry Zhao)
- 742be36 refactor/node/handle-callback-err: Reject invalid regex config
(#23740 ) (camc314)
- d7be179 linter/eslint/no-restricted-globals: Handle shadowed locals
(#23736 ) (camc314)
- b3b1ff8 linter/vitest/expect-expect: Handle global vitest detection
correctly (#23734 ) (camc314)
### ⚡ Performance
- 68f9472 linter/jsx-a11y: Skip lowercasing non-aria attribute names
(#23906 ) (Lawrence Lin)
- b9312b4 linter/unicorn/prefer-export-from: Use keyed binding lookup
(#23893 ) (Marius Schulz)
- cd5204e linter/typescript/no-unsafe-declaration-merging: Use keyed
binding lookup (#23894 ) (Marius Schulz)
- e948498 linter/eslint/prefer-named-capture-group: Only dispatch for
relevant node types (#23868 ) (Connor Shea)
- 4ac7a8e linter/eslint/max-depth: Derive node types (#23896 ) (Connor
Shea)
- daeed09 linter/eslint/no-restricted-globals: Only scan unresolved
references (#23890 ) (camc314)
- e808514 linter/jest-vitest: Speed up no-standalone-expect (#23883 )
(camc314)
- 8b165e5 linter/react/exhaustive-deps: Skip non-reactive calls early
(#23882 ) (camc314)
- 54005e7 linter/eslint/no-unused-vars: Precompute exported bindings
(#23881 ) (camc314)
- 9bc2f8c linter/unicorn/prefer-number-properties: Speed up global
checks (#23880 ) (camc314)
- 4ff104f linter: Optimize `require-hook` and `prefer-mock-*` rules to
run on specific node types (#23871 ) (Connor Shea)
- cc2213b linter: Run `no-underscore-dangle` only when relevant node
types are present (#23867 ) (Connor Shea)
- 3e55c21 linter/promise/always-return: Narrow to function node types
(#23878 ) (Connor Shea)
- 7136182 linter/jest-vitest: Speed up no-commented-out-tests (#23864 )
(camc314)
- f138264 linter/eslint/no-script-url: Match javascript: prefix without
allocating (#23861 ) (Lawrence Lin)
- 7ef6895 linter/react/no-array-index-key: Delay index symbol lookup
(#23857 ) (camc314)
- 26bc171 linter/react/no-array-index-key: Match callback methods
directly (#23856 ) (camc314)
- 44fbbda linter/jsx-a11y/interactive-supports-focus: Check cheap
conditions first (#23854 ) (camc314)
- 84a5aa3 linter/eslint/no-extend-native: Skip lowercase references
early (#23851 ) (camc314)
- 88a74b2 linter/eslint/no-nonoctal-decimal-escape: Scan decimal escapes
as bytes (#23850 ) (camc314)
- fca69a8 linter: Skip traversal without this expressions (#23845 )
(camc314)
- 838fd63 linter: Reduce preallocation for per-file diagnostics `Vec`
(#23705 ) (Marius Schulz)
- 417b506 linter/typescript/array-type: Remove full source text clone
(#23751 ) (Marius Schulz)
### 📚 Documentation
- 57e4469 linter/unicorn: Update prefer-dom-node-text-content rationale
(#23933 ) (Mikhail Baev)
- 3d61dea all: Correct capitalization in comments (#23887 )
(overlookmotel)
### 🛡️ Security
- 3cdd18f deps: Update npm packages (#23690 ) (renovate[bot])
# Oxfmt
### 💥 BREAKING CHANGES
- 259e0cd oxfmt,formatter_graphql: [**BREAKING**] Support draft syntax
with removing prettier fallback (#23326 ) (leaysgur)
- accbc49 oxfmt: [**BREAKING**] Format `parser:css,less,scss` files +
css-in-js by `oxc_formatter_css` (#23321 ) (leaysgur)
### 🚀 Features
- dffa4b3 formatter_css: Implement `oxc_formatter_css` (#23320 )
(leaysgur)
- 01de9ec oxfmt: Format `parser:graphql` files by
`oxc_formatter_graphql` (#23318 ) (leaysgur)
- 4e66212 formatter_graphql: Implement oxc_formatter_graphql (#23317 )
(leaysgur)
### 🐛 Bug Fixes
- 67325ae formatter_css: Handle frontmatter language (#23819 ) (leaysgur)
- 3f355e5 formatter_graphql: Improve major prettier diffs (#23419 )
(leaysgur)
- 48e2d78 formatter_css: Improve major prettier diffs (#23327 )
(leaysgur)
- 8c07cad all: Enable `disable_old_builder` Cargo feature for `oxc_ast`
crate in tests (#23888 ) (overlookmotel)
- f7d1f50 oxlint, oxfmt: Enable `disable_old_builder` Cargo feature for
`oxc_ast` crate (#23886 ) (overlookmotel)
- d86f60b lsp: Normalize user config path to watch pattern (#23723 )
(Sysix)
### ⚡ Performance
- 4ddcba0 formatter_core: Add printable-ASCII fast path to TextWidth
(#23913 ) (Lawrence Lin)
### 📚 Documentation
- b4d0dc9 oxfmt,formatter,formatter_css,formatter_core: Update AGENTS.md
(#23814 ) (leaysgur)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com >
Co-authored-by: Cameron <cameron.clark@hey.com >
2026-06-29 20:11:12 +01:00
oxc-guard[bot]
c4be770f24
release(apps): oxlint v1.71.0 && oxfmt v0.56.0 ( #23707 )
...
# Oxlint
### 💥 BREAKING CHANGES
- 36009dd allocator: [**BREAKING**] `GetAllocator::allocator` take
`&self` (#23676 ) (overlookmotel)
### 🚀 Features
- ff65285 linter: `no-restricted-globals` add missing upstream options
(#23663 ) (Sysix)
- 7b8bd89 linter/typescript: Implement suggestion for
`no-unnecessary-type-constraint` rule (#23646 ) (Mikhail Baev)
- 0dc2405 linter: Add schema for `eslint/no-restricted-properties`
(#23619 ) (Sysix)
- b638d0e linter: Add schema for `node/callback-return` (#23615 ) (Sysix)
- eb8bedc linter: Add schema for `import/extensions` (#23557 )
(WaterWhisperer)
- 46f3625 linter: Implement node/no-sync rule (#23589 ) (fujitani sora)
- b01739a linter: Add schema for `unicorn/numeric-separators-style`
(#23554 ) (Mikhail Baev)
- 68afd2a linter/node: Implement `no-mixed-requires` rule (#23539 )
(fujitani sora)
- 59d8893 linter: `unicorn/numeric-separators-style` support missing
options (#23524 ) (Sysix)
- a421215 linter: Add schema for `eslint/prefer-destructuring` (#23410 )
(WaterWhisperer)
- 84438be linter/jsdoc: Added missing options to
`require-param-description` (#23416 ) (kapobajza)
- c145b72 linter/jsdoc/require-param-type: Implement fixer (#23513 )
(camc314)
- 51910df linter/jsdoc: Add missing options to `require-param-type` rule
(#23418 ) (kapobajza)
- e90925f linter/unicorn: Implement prefer-number-coercion rule (#23497 )
(Shekhu☺️ )
- dd1c866 linter/vue: Implement no-async-in-computed-properties rule
(#23493 ) (bab)
- b02444e linter: Add schema for `react/jsx-no-script-url` (#23475 )
(WaterWhisperer)
- 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
- b1948a1 linter/radix: Avoid panic on `parseInt` with a spread radix
argument (#23623 ) (Jerry Zhao)
- f28ccfd linter/prefer-query-selector: Use a compound selector for
multiple classes (#23628 ) (Jerry Zhao)
- 13f2970 linter/prefer-numeric-literals: Avoid panic on `parseInt` with
a spread radix argument (#23624 ) (Jerry Zhao)
- 57612b3 linter: Report invalid capitalized-comments ignore patterns
(#23608 ) (camc314)
- 800ee2a linter/consistent-vitest-vi: Preserve import aliases when
rewriting the import (#23568 ) (Yunfei He)
- f78b5e1 linter/consistent-indexed-object-style: Don't leak a stray
comma into the value type (#23566 ) (Yunfei He)
- 6b104e8 linter/radix: Detect a trailing comma only after the argument
(#23569 ) (Yunfei He)
- 2de20cb linter/unicorn/prefer-at: Correct two-argument `slice().pop()`
index (#23565 ) (Yunfei He)
- de778ec linter: `unicorn/numeric-separators-style` preserve dot for
floats without decial part (#23553 ) (Sysix)
- 651027c linter/curly: Remove only the block's own braces (#23580 )
(Yunfei He)
- 687e835 linter/array-type: Parenthesize a conditional-type element
(#23579 ) (Yunfei He)
- 9c80dff linter/unicorn/no-unnecessary-await: Don't paste operators
into invalid syntax (#23556 ) (Yunfei He)
- 46e1463 linter/no-compare-neg-zero: Delete the `-` of a parenthesized
`-0` (#23578 ) (Yunfei He)
- d172a97 linter/unicorn/prefer-math-trunk: Skip fixer for LHS with side
effects (#23548 ) (camc314)
- 1c3a9bd linter/unicorn/prefer-negative-index: Don't report
`Array#with` (#23518 ) (Yunfei He)
- c17db5d linter/unicorn/prefer-spread: Don't report `.slice()` on
non-array receivers (#23520 ) (Yunfei He)
- 9cd0c2f linter/unicorn/prefer-date-now: Keep `BigInt` wrapper when
fixing `BigInt(new Date())` (#23523 ) (Yunfei He)
- 16bb890 linter/unicorn/prefer-array-flat: Skip non-array `flatMap`
receivers (#23527 ) (Yunfei He)
- 3e6f90f linter/unicorn/no-zero-fractions: Insert a space after any
preceding keyword (#23529 ) (Yunfei He)
- 79a7d69 linter/eslint/no-useless-assignment: Handle exceptional
control-flow paths (#23544 ) (camc314)
- e8e2741 linter/unicorn/prefer-math-min-max: Preserve operand source
text in the fix (#23533 ) (Yunfei He)
- f592154 linter/react/display-name: Ignore lowercase jsx helpers
(#23510 ) (camc314)
- df7612f linter/jsx-a11y/no-noninteractive-element-to-interactive-role:
Allow custom roles config (#23507 ) (camc314)
- 924b931 linter/unicorn/prefer-at: Handle checking all indexes
correctly (#23504 ) (camc314)
- ca9686b linter/unicorn/prefer-at: Report zero indexes (#23503 )
(camc314)
- e96a4e3 linter/unicorn/explicit-length-check: Ignore optional chains
(#23487 ) (camc314)
- a303c23 linter/jsx-a11y: Align `anchor-is-valid` config with upstream
(#23446 ) (camc314)
- f27a6d1 linter: False positives with non `*.setTimeout` call in
`no-confusing-set-timeout` (#23444 ) (camc314)
### ⚡ Performance
- 8e0dd65 linter: Emit RuleEnum dispatch match once instead of per
timing branch (#23499 ) (Boshen)
- d5c7d99 linter/expect-expect: Avoid recompiling matches on every
traversal (#23593 ) (camc314)
- f191520 linter/no-useless-spread: Avoid collecting `Vec` before
iterating (#23546 ) (camc314)
- 79340d1 linter: Stream React lifecycle ancestors (#23545 ) (camc314)
- 1923169 linter/eslint/max-classes: Gate rule by rule config threshold
(#23509 ) (camc314)
- 3f60de3 linter: Use bucketed dispatch for all files (#23452 ) (camc314)
- 3699971
linter/typescript/no-unnecessary-parameter-property-assignment: Avoid
temporary vec allocations (#23492 ) (camc314)
- 4ef0ceb linter/eslint/no-useless-switch-case: Avoid temporary vec
allocations (#23489 ) (camc314)
- 2e09dd3 linter: Avoid JSX fragment child collections (#23486 )
(camc314)
- f30a64c linter/oxc/branches-sharing-code: Borrow shared branch
suggestion text (#23484 ) (camc314)
- 097a317 linter/eslint/no-control-regex: Retain control regex
candidates in place (#23482 ) (camc314)
- b3a093d linter: Reuse rule dispatch buckets (#23450 ) (camc314)
- 9f1a985 oxlint: Start Tokio only for LSP (#23447 ) (camc314)
### 📚 Documentation
- 9e219de linter/plugins: Update usage instruction (#23495 ) (Tony)
- b50bf4d linter: Remove manually written options doc for
`eslint/arrow-body-style` (#23490 ) (Mikhail Baev)
# Oxfmt
### 💥 BREAKING CHANGES
- 36009dd allocator: [**BREAKING**] `GetAllocator::allocator` take
`&self` (#23676 ) (overlookmotel)
### 🐛 Bug Fixes
- f21ed2c formatter_json: Normalize CRLF for suppressed text (#23702 )
(leaysgur)
- 7cd1737 formatter: Normalize CRLF for suppressed text (#23701 )
(leaysgur)
- a36e444 formatter: Member chain panic when tail is merged with comment
in dev build (#23698 ) (leaysgur)
- 600d306 formatter: Preserve parens with default export and type cast
(#23697 ) (leaysgur)
- 61290f2 formatter: Single-member intersection/union type with comment
formatting (#21915 ) (Leonabcd123)
- 5a1b0b4 formatter: Parenthesize a type assertion used as the base of
`**` (#23633 ) (Jerry Zhao)
- 91827e2 formatter: Use `Ordering::reverse()` with `order: desc` for
idempotency (#23543 ) (leaysgur)
- 8fa7394 formatter_json: Handle wrapped error span (#23472 ) (leaysgur)
- 37a34a1 oxfmt/lsp: Avoid newlines line ending changes (#23463 ) (Sysix)
### ⚡ Performance
- 80f1697 formatter: Avoid arena copy for already-lowercase bigint
literals (#23534 ) (Yunfei He)
- 1a40b71 formatter: Avoid arena copy for borrowed numeric-literal text
(#23512 ) (Yunfei He)
- 12e4451 formatter: Avoid arena copy for borrowed string-literal text
(#23465 ) (Yunfei He)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com >
2026-06-22 19:49:06 +08:00
oxc-guard[bot]
aa79b5be99
release(apps): oxlint v1.70.0 && oxfmt v0.55.0 ( #23442 )
...
# Oxlint
### 🚀 Features
- 5e1627d linter/unicorn: Flag all Error() calls without new in
`throw-new-error` (#23363 ) (Cason Kervis)
- 2e8bda4 linter/vue: Implement no-dupe-keys rule (#23350 ) (bab)
- 1490a0a linter/react: Implement react-compiler rule (#23202 ) (Boshen)
- dd560ae linter/unicorn: Implement `no-array-fill-with-reference-type`
rule (#23397 ) (Mikhail Baev)
- af36c2f linter: Add schema for `react/jsx-curly-brace-presence`
(#23400 ) (WaterWhisperer)
- 47d34a3 linter: Add schema for `react/jsx-handler-names` (#23393 )
(WaterWhisperer)
- f4250d0 linter: Add schema for `unicorn/import-style` (#23386 )
(WaterWhisperer)
- 30c74ce linter: Add schema for
`jsx_a11y/no-noninteractive-element-to-interactive-role` (#23384 )
(Sysix)
- cfbe8dc linter: Add schema for
`jsx_a11y/no-interactive-element-to-noninteractive-role` (#23382 )
(WaterWhisperer)
- d15b7ff linter: Add schema for `typescript/no-restricted-types`
(#23381 ) (WaterWhisperer)
- 028a811 linter: Add schema for `jsx-a11y/media-has-caption` (#23377 )
(Sysix)
- b3b1038 linter: Add schema for `jsx-a11y/label-has-associated-control`
(#23376 ) (Sysix)
- 7ada6b2 linter: Add schema for `jsx_a11y/no-distracting-elements`
(#23379 ) (WaterWhisperer)
- ee3dd49 linter: Add schema for `jsx-a11y/img-redundant-alt` (#23374 )
(Sysix)
- df5f8dd linter: Add short descriptions to most lint rules. (#23365 )
(Connor Shea)
- e3fd735 linter: Add schema for `jsx_a11y/alt-text` (#23369 ) (Sysix)
- 0f2fff4 linter: Add schema for `react/exhaustive-deps` (#23372 )
(Mikhail Baev)
- e3e4e10 linter: Add schema for `react_perf/jsx-no-new-object-as-prop`
(#23368 ) (Mikhail Baev)
- 9366d44 linter: Add schema for `unicorn/prefer-at` (#23366 )
(WaterWhisperer)
- f57b55d linter: Add schema for `typescript/array-type` (#23355 )
(Sysix)
- 0dcf912 linter: Add schema for `typescript/ban-ts-comment` (#23354 )
(Sysix)
- 51fa83e linter: Add schema for `react/no-did-update-set-state`
(#23357 ) (Mikhail Baev)
- 59db0bd linter: Add schema for `consistent-generic-constructors`
(#23353 ) (Sysix)
- c4775c0 linter: Add schema for `typescript/consistent-type-assertions`
(#23349 ) (Sysix)
- 6e516f7 linter: Add schema for `typescript/consistent-type-imports`
(#23348 ) (Sysix)
- 012134d linter: Add schema for `react/jsx-no-target-blank` (#23345 )
(WaterWhisperer)
- 0806aae linter: Add schema for `jsx_a11y/no-noninteractive-tabindex`
(#23337 ) (Mikhail Baev)
- 0708b5a linter: Add schema for `react/jsx-filename-extension` (#23315 )
(Mikhail Baev)
- 150bce1 linter: Add schema for `typescript/no-empty-object-type`
(#23309 ) (Sysix)
- f9e36f1 linter: Add schema for
`typescript/no-duplicate-type-constituents` (#23308 ) (Sysix)
- 937accf linter: Add schema for `typescript/no-invalid-void-type`
(#23307 ) (Sysix)
- 3e042b9 linter: Add schema for `typescript/no-misused-promises`
(#23306 ) (Sysix)
- da212d1 linter: Add schema for `typescript/no-unnecessary-condition`
(#23305 ) (Sysix)
- f8f0d38 linter: Add schema for `typescript/parameter-properties`
(#23304 ) (Sysix)
- 2275fc7 linter: Add schema for `typescript/prefer-nullish-coalescing`
(#23302 ) (Sysix)
- d353858 linter: Add schema for
`typescript/prefer-string-starts-ends-with` (#23301 ) (Sysix)
- 03060f5 linter: Add schema for `typescript/triple-slash-reference`
(#23300 ) (Sysix)
- 6619cee linter: Add schema for `promise/param-names` (#23298 ) (Sysix)
- 8bf108e linter: Add schema for `promise/catch-or-return` (#23297 )
(Sysix)
- 48158d0 linter: Add schema for `vitest/consistent-each-for` (#23294 )
(Sysix)
- 7e74c98 linter: Add schema for `vitest/consistent-test-filename`
(#23293 ) (Sysix)
- ff94d4a linter: Add schema for `vitest/consistent-vitest-vi` (#23292 )
(Sysix)
- 2409a10 linter: Add schema for `vitest/prefer-import-in-mock` (#23291 )
(Sysix)
- 3d782b7 linter: Add schema for `react/no-unstable-nested-components`
(#23287 ) (Mikhail Baev)
- 0a0bc2f linter/jsx-a11y: Add `allowedRedundantRoles` option to
`no-redundant-roles` (#22820 ) (bab)
- 80758a5 linter/vue: Implement no-side-effects-in-computed-properties
rule (#23282 ) (bab)
- e3869ac linter: Add schema for `react/no-object-type-as-default-prop`
(#23279 ) (Mikhail Baev)
- 4480609 linter: Add schema for `react/jsx-props-no-spreading` (#23276 )
(Mikhail Baev)
- 08d68a5 linter/react: Implement `jsx-no-literals` rule (#23145 )
(kapobajza)
- 9a2788b linter/unicorn: Implement `prefer-export-from` rule (#22935 )
(AliceLanniste)
- bdb723c linter/unicorn: Implement prefer-single-call rule (#23235 )
(Yuzhe Shi)
- 31543ed linter: Add schema for `vue/define-props-destructuring`
(#23252 ) (Sysix)
- 21b6c3d linter: Add schema for `oxc/no-async-endpoint-handlers`
(#23251 ) (Sysix)
- e77ff81 linter: Add schema for `unicorn/prefer-object-from-entries`
(#23249 ) (Mikhail Baev)
- bcac2d6 linter: Add schema for `jest/vitest/no-restricted-matchers`
(#23247 ) (Sysix)
- 539f036 linter: Add schema for `jest/vitest/no-restricted-*-methods`
(#23246 ) (Sysix)
- dd1b927 linter/vue: Implement require-default-prop rule (#22951 ) (bab)
- 3f018e7 linter: Add schema for `unicorn/no-instanceof-builtins`
(#23225 ) (Mikhail Baev)
- 5b9a793 linter/react-perf: Support `nativeAllowList` config (#22996 )
(Cole Ellison)
- b4e19d4 linter: Improve promise/catch-or-return termination
diagnostics (#23218 ) (camc314)
- 9b72a41 linter/promise/catch-or-return: Add support for
`allowThenStrict` option (#23206 ) (camc314)
- e0d0f78 linter: Verify promise/no-callback-in-promise schema (#23141 )
(beanscg)
- 123d4f4 linter: Add schema for `jest/vitest/valid-expect` (#23185 )
(Sysix)
- 46c8a21 linter: Add schema for
`jest/vitest/require-top-level-describe` (#23184 ) (Sysix)
- 41465cf linter: Add schema for `jest/vitest/prefer-snapshot-hint`
(#23183 ) (Sysix)
- d068b9b linter: Add schema for `jest/vitest/prefer-expect-assertions`
(#23181 ) (Sysix)
- 064a1ee linter: Add schema for `jest/prefer-ending-with-an-expect`
(#23180 ) (Sysix)
- d046797 linter: Add schema for `jest/vitest/no-standalone-expect`
(#23179 ) (Sysix)
- 137b9a6 linter: Add schema for `jest/vitest/no-large-snapshots`
(#23178 ) (Sysix)
- 0f3e4a5 linter: Add schema for `jest/vitest/no-hooks` (#23177 ) (Sysix)
- 00244d8 parser: Report definite property initializer errors (#23160 )
(camc314)
- cd0b384 linter: Add schema for `unicorn/explicit-length-check`
(#23155 ) (Mikhail Baev)
- 01b74c4 linter: Add schema for `jest/no-deprecated-functions` (#23136 )
(Sysix)
- 9d6a387 linter: Add schema for `unicorn/catch-error-name` (#23137 )
(Mikhail Baev)
- 0da8efa linter: Add schema for `jest/vitest/max-nested-describe`
(#23131 ) (Sysix)
- d71c9fd linter: Add schema for `eslint/no-use-before-define` (#23129 )
(Sysix)
### 🐛 Bug Fixes
- 019be2e linter/unicorn: Align throw-new-error parity (#23437 )
(camc314)
- b9e5e51 linter/jest: Validate no-restricted-jest-methods config
(#23436 ) (camc314)
- f302f41 linter: Normalize oxlint jsPlugin prefixes (#23335 ) (konh)
- 2bdf8ce linter/jest: Validate no-restricted-matchers config (#23434 )
(camc314)
- 5c2fb45 linter/eslint: Validate max-depth config (#23430 ) (camc314)
- eafc280 linter/eslint: Validate no-unused-vars config (#23433 )
(camc314)
- 25aebb0 linter/typescript: Validate no-empty-object-type config
(#23432 ) (camc314)
- 7cafe3b linter/unicorn: Validate catch-error-name config (#23431 )
(camc314)
- af1b897 linter/unicorn: Validate prefer-object-from-entries config
(#23429 ) (camc314)
- 68d48fe linter/eslint: Validate max-classes-per-file config (#23428 )
(camc314)
- 02932b6 linter/eslint: Validate `complexity` config (#23427 ) (camc314)
- 375e574 linter/eslint: Use shared id-length regex config (#23426 )
(camc314)
- ba3e2e0 linter/eslint: Preserve used imports in no-unused-vars fixer
(#23425 ) (camc314)
- 26ddac6 linter: Avoid config schema generation for
`jsx_a11y/no-noninteractive-element-interactions` (#23385 ) (Sysix)
- 40556ad linter: Parse `jsx-a11y/control-has-associated-label` config
with `DefaultRuleConfig` (#23373 ) (Sysix)
- dacbda8 linter/unicorn/prefer-string-starts-ends-with: Mark rule as
deprecated (#23342 ) (camc314)
- 956309a lsp: Use protocol line breaks for positions (#23329 ) (konh)
- 71e9648 linter: Expose no-noninteractive-element-interactions schema
(#23283 ) (camc314)
- 4c4c19c linter: `no-noninteractive-element-interactions` fix default
values (#23288 ) (Sysix)
- e63a139 linter/jsx-a11y: Restore control label defaults (#22737 )
(konh)
- 0e4e59f linter/jsx-a11y: No-redundant-roles attribute-aware implicit
roles for `<input>`, skip ancestor-conditional elements (#23015 ) (Gaurav
Dubey)
- 06e215e linter/vitest: Validate `consistent-each-for` config (#23278 )
(camc314)
- cd278e1 linter/promise: Validate param-names config (#23277 ) (camc314)
- 7f46013 linter/react/display-name: Handle default export function
correctly (#23271 ) (camc314)
- 22ff6a6 linter/unicorn: Deserialize filename-case config with serde
(#23266 ) (camc314)
- b644da0 linter/eslint: Add fixer for `sort_vars` (#23262 ) (Cason
Kervis)
- 778af4d linter/unicorn: Support array of patterns for
`unicorn/filename-case` `ignore` option (#23260 ) (kapobajza)
- 127fb2c linter: Deserialize rule config with serde for
`unicorn/prefer-object-from-entries` (#23253 ) (Sysix)
- f89b909 linter/react/jsx-no-target-blank: Handle compound conditions
(#23245 ) (camc314)
- c30419a linter/typescript: Deserialize rule config with serde for
`consistent-generic-constructors` (#23238 ) (camc314)
- 7d17d37 linter/react: Report invalid exhaustive-deps config (#23239 )
(camc314)
- 1060186 linter/eslint: Add `deny_unknown_fields` to
`prefer-destructuring` (#23237 ) (camc314)
- fd2e4eb linter/react: Add `deny_unknown_fields` to `exhaustive-deps`
(#23236 ) (camc314)
- 6c3c904 linter/react/jsx-curly-brace-presence: Avoid false positive
with comment within braces (#23234 ) (camc314)
- 6c86d1c linter/react-perf: Correct nativeAllowList all schema (#23229 )
(camc314)
- c393760 linter/react/rules-of-hooks: Align try/catch semantics
(#23221 ) (camc314)
- 4dd52de linter/react-perf: Re-generate stale snapshots (#23228 )
(camc314)
- de2d23b linter/unicorn/prefer-dom-node-dataset: Preserve optional
chaining in fixer (#23148 ) (Bruno Carvalho)
- d7038de linter/react/exhaustive-deps: Ignore non `React` namespace
hooks (#23175 ) (camc314)
- 7111903 linter/react/exhaustive-deps: FP with wrapped literal
expressions (#23172 ) (camc314)
- 93326e7 linter/react: Align hook errors with anonomous async callbacks
(#23158 ) (camc314)
- 8f3db61 linter: Allow options for `eslint/capitalized-comments`
(#23139 ) (Sysix)
- f533565 linter: Support nofunc string option in no-use-before-define
(#23115 ) (bab)
### ⚡ Performance
- f09707e linter: `jest/no-deprecated-functions` store config version as
`usize` (#23138 ) (Sysix)
- da1a6c6 diagnostics: Migrate to allocation-optimized oxc-miette
(#23094 ) (Boshen)
### 📚 Documentation
- f682e25 linter: Remove manually written options doc for
`eslint/prefer-arrow-callback` (#23438 ) (Mikhail Baev)
- 64c942c linter: Remove manually written options doc for
`eslint/no-sequences` (#23420 ) (Mikhail Baev)
- d6d1189 linter: Add `short_descriptions` to more rules (#23417 )
(Connor Shea)
- b979722 linter: Clarify valid-define-emits description (#23408 )
(camc314)
- ccd0a69 linter: Clarify only-used-in-recursion description (#23407 )
(camc314)
- b0fd30b linter: Clarify no-sync-scripts description (#23406 ) (camc314)
- c23290d linter: Clarify no-cycle description (#23405 ) (camc314)
- 3612e0b linter: Clarify no-nodejs-modules description (#23403 )
(camc314)
- c67c5b1 linter: Clarify no-misused-new description (#23402 ) (camc314)
- 88bf0bc linter: Clarify require-render-return description (#23401 )
(camc314)
- 9fff263 linter: Add short descriptions to more rules that lacked them
(#23389 ) (Connor Shea)
- ac69042 linter: Add short_description fields to more lint rules
(#23391 ) (Connor Shea)
- 99a3c78 linter: Add info for more skipped rule schemas (#23380 )
(Sysix)
- c966384 linter: Fix the example of `unicorn/prefer-string-replace-all`
(#23367 ) (Liang)
- 2120ecf linter: Describe problems on not verified rules schema
(#23351 ) (Sysix)
- 14abf32 linter/react-perf: Use autogenerated docs (#23227 ) (camc314)
# Oxfmt
### 🚀 Features
- 9a2788b linter/unicorn: Implement `prefer-export-from` rule (#22935 )
(AliceLanniste)
- 0c6fb23 oxfmt: Format `parser:json-stringify` files by
`oxc_formatter_json` (#23194 ) (leaysgur)
- 8cc82c4 formatter_json: Implement json-stringify variant (#23192 )
(leaysgur)
### 🐛 Bug Fixes
- 956309a lsp: Use protocol line breaks for positions (#23329 ) (konh)
- 769de65 oxfmt: Handle compound json extensions (#23198 ) (leaysgur)
- b0b5d39 formatter_json: Support JSON5/JSON6 value in json/jsonc/json5
(#23193 ) (leaysgur)
### 📚 Documentation
- 4986613 formatter_json: Update AGENTS.md (#23199 ) (leaysgur)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com >
2026-06-15 13:58:15 +01:00
oxc-guard[bot]
44ae845fe1
release(apps): oxlint v1.69.0 && oxfmt v0.54.0 ( #23116 )
...
# Oxlint
### 🚀 Features
- e805174 linter: Add schema for `jest/vitest/max-expects` (#23105 )
(Sysix)
- 7850577 linter: Add schema for `jest/vitest/expect-expect` (#23104 )
(Sysix)
- 75f641a linter: Add schema for `jest/vitest/consistent-test-it`
(#23103 ) (Sysix)
- 5125f89 linter/unicorn: Support no-null `checkArguments` option
(#23098 ) (camc314)
- b8b9797 linter: Add schema for `import-max-dependencies` (#23096 )
(Sysix)
- 65cb47a linter/eslint: Support no-unused-expressions
`ignoreDirectives` option (#23097 ) (camc314)
- f6c36d5 linter: Add schema for `import/prefer-default-export` (#23091 )
(Sysix)
- 0d4a5d1 linter: Add schema for `eslint/sort-vars` (#23090 ) (Sysix)
- fdb5bf5 linter: Add schema for `eslint/radix` (#23082 ) (Sysix)
- 05b4dcf linter: Add schema for `eslint/prefer-const` (#23081 ) (Sysix)
- 5a06c4d linter/vue: Implement next-tick-style rule (#23041 ) (Alex
Peshkov)
- e38a36a linter: Add schema for `eslint/operator-assignment` (#23080 )
(Sysix)
- 907cee7 linter: Add schema for `eslint/no-warning-comments` (#23075 )
(Sysix)
- 9470bb2 linter: Add schema for `eslint/no-unused-vars` (#23073 )
(Sysix)
- 234b5cf linter: Add schema for `eslint/no-shadow` (#23072 ) (Sysix)
- de0dd8b linter: Add schema for `eslint/no-restricted-exports` (#23020 )
(Sysix)
- faa3e0d linter: Add schema for `eslint/no-param-reassign` (#23018 )
(Sysix)
- dbc9c27 linter: Add schema for `eslint/no-magic-numbers` (#23017 )
(Sysix)
- 38d3569 linter: Add schema for `eslint/no-inner-declarations` (#23016 )
(Sysix)
- 008fa41 linter: Add schema for `eslint/no-constant-condition` (#22991 )
(Sysix)
- ca44623 linter: Add schema for `eslint/no-empty-function` (#22988 )
(Sysix)
- 43eb04d linter: Add schema for `eslint/id-match` (#22987 ) (Sysix)
- a800f27 linter: Add schema for `eslint/capitalized-comments` (#22984 )
(Sysix)
- 96e2d32 linter: Add schema for `eslint/id-length` (#22963 ) (Sysix)
- 545493f linter: Add schema for `eslint/complexity` (#22960 ) (Sysix)
- 5f0b558 linter: Add schema for `eslint/class-methods-use-this`
(#22959 ) (Sysix)
- 719b720 linter: Add schema for simple rule configurations (#22948 )
(Sysix)
- fd00966 linter: Add right schema for `eslint/max-*` rules (#22923 )
(Sysix)
- 1226d78 linter: Fill schema with rule configurations (#22907 ) (Sysix)
- 8f423c1 linter/vue: Implement `require-direct-export` rule (#17623 )
(yefan)
- 78e915b linter/vue: Implement no-reserved-props rule (#22914 ) (bab)
- 0f200a9 linter/vue: Implement require-prop-types rule (#22083 ) (Alex
Peshkov)
- 5da9da9 linter/vue: Implement no-reserved-keys rule (#21780 ) (bab)
- 75e14a8 linter/vue: Implement prop-name-casing rule (#22892 ) (bab)
- 85efabf semantic: Make building the class table optional, off by
default (#22862 ) (Boshen)
### 🐛 Bug Fixes
- a49b0cf linter/no-map-spread: Remove ineffective autofix (#22956 )
(camc314)
- cf53285 parser: Report reserved type-declaration names in the parser
(#23035 ) (Boshen)
- 0383e61 linter: Fix schema for rules without a config (#22946 ) (Sysix)
- 4d722e0 parser: Report duplicate switch `default` clause in the parser
(#23012 ) (Boshen)
- 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)
- 742fd0b linter/double-comparisons: Make fixer a suggestion (#22968 )
(camc314)
- 93f4494 linter: Respect default child config plugin when extending
parent config (#22903 ) (Sysix)
- 594ed86 linter: Deny unknown options for some rules (#22924 ) (Sysix)
- 3253038 linter/expect-expect: Align default rule options (#22890 )
(camc314)
- bbe44ea linter: Respect default plugins from extended config (#22896 )
(Sysix)
### ⚡ 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)
### 📚 Documentation
- 7b0380d linter: Remove preserve-caught-error note (#22994 ) (camc314)
- dadafe3 oxlint, oxfmt: Mention migrate skills in npm READMEs (#22965 )
(Boshen)
# Oxfmt
### 🚀 Features
- 3da77e0 oxfmt: Format `parser:json5` files by `oxc_formatter_json`
(#22990 ) (leaysgur)
- c786f0d oxfmt: Format `parser:jsonc` files by `oxc_formatter_json`
(#22913 ) (leaysgur)
- 27a6db8 formatter_json: Implement jsonc variant (#22912 ) (leaysgur)
### 🐛 Bug Fixes
- 2aedd52 oxfmt: Avoid JS promise rejects for all TSFN call sites
(#23107 ) (leaysgur)
- 01e0871 formatter,formatter_json: Handle PS/LS as line terminator
(#22978 ) (leaysgur)
- 23902d9 formatter_json: Handle CR only line breaks (#22977 ) (leaysgur)
- 136b72b formatter_json: Use line_suffix for line comment outside array
(#22931 ) (leaysgur)
- 44e40fa formatter_json: Expand line comment inside array (#22911 )
(leaysgur)
- 2c86896 formatter_json: Avoid example binary name collision (#22904 )
(camc314)
### 📚 Documentation
- cc69d8d formatter_json: Update AGENTS.md (#22981 ) (leaysgur)
- 0490721 formatter_json: Update AGENTS.md (#22976 ) (leaysgur)
- dadafe3 oxlint, oxfmt: Mention migrate skills in npm READMEs (#22965 )
(Boshen)
- f88961a oxfmt: Annotate each config option with supported languages
(#22953 ) (leaysgur)
- 7e514bf formatter_json: Update AGENTS.md (#22930 ) (leaysgur)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com >
2026-06-08 21:58:18 +08:00
oxc-guard[bot]
964a758084
release(apps): oxlint v1.68.0 && oxfmt v0.53.0 ( #22883 )
...
# Oxlint
### 🚀 Features
- e4b1f46 linter/typescript: Implement `method-signature-style` rule
(#22679 ) (Mikhail Baev)
- bc462ca linter/vue: Implement no-reserved-component-names rule
(#22741 ) (bab)
- ef9e751 linter/vue: Implement component-definition-name-casing rule
(#22818 ) (bab)
- d67f51a linter/vue: Implement require-prop-type-constructor rule
(#22708 ) (bab)
- 1444f82 linter/promise/spec-only: Add `Promise.try` to `Promise`
static methods (#22812 ) (Ben Saufley)
- 8422e8b linter/jsdoc: Implement `require-yields-description` rule
(#22805 ) (Mikhail Baev)
- fe93f97 linter/eslint: Implement `prefer-named-capture-group` rule
(#22759 ) (Sebastian Poxhofer)
- 1a7798b linter: Add suggestion for `unicorn/no-new-array` (#22682 )
(Sysix)
### 🐛 Bug Fixes
- 760a9f9 linter: Report errors when writing to the filesystem (#22881 )
(camc314)
- e5a2748 linter: Avoid no-unreachable false positive after conditional
loop (#22869 ) (camc314)
- 39d92d6 linter/arrow-body-style: Preserve comments within function
(#22854 ) (Sysix)
- 3d13e29 parser: Reject `declare` in an already-ambient context
(TS1038) (#22850 ) (Boshen)
- 5152854 parser: Reject statements in ambient contexts (TS1036)
(#22849 ) (Boshen)
- 2eafea6 parser: Reject function implementations in ambient contexts
(TS1183) (#22845 ) (Boshen)
- c645615 parser: Reject incompatible class member modifiers (#22843 )
(Boshen)
- 4a1ca4a linter/export: Detect duplicate explicit exports (#22798 )
(camc314)
- 0a9a735 linter/no-loop-func: Allow safe let closures (#22811 )
(camc314)
- 1599f11 linter: Align lsp extends default plugins (#22788 ) (camc314)
- db32ec9 linter/no-accumulating-spread: Use loop as primary span
(#22800 ) (camc314)
- 33ec6b4 linter/consistent-test-it: Avoid adjacent describe leakage
(#22796 ) (camc314)
- 2606069 linter/no-array-sort: Unwrap parenthesized sort args (#22794 )
(camc314)
- 9f2f709 linter/no-array-sort: Skip non compare fn sort arguments
(#22752 ) (Gaurav Dubey)
- 27268a0 linter/no-else-return: Preserve statement boundary in fixer
(#22687 ) (camc314)
- d9cb6d8 linter/no-empty-function: Allow functions callbacks with
`allow: functions` (#22764 ) (camc314)
- a40a314 linter/no-shadow-restricted-names: Ignore enum members
(#22762 ) (camc314)
- 82366d9 linter/no-cond-assign: Align ternary handling (#22761 )
(camc314)
### 📚 Documentation
- 5e113ba linter: Add license notices for ported ESLint plugins (#22768 )
(Boshen)
# Oxfmt
### 🚀 Features
- d75cbbf oxfmt: Format `parser:json` files by `oxc_formatter_json`
(#22709 ) (leaysgur)
- 49db054 formatter_json: Implement `oxc_formatter_json` (json variant
only) (#22641 ) (leaysgur)
- 9c71f2e ast, codegen, formatter: Add `WithClauseKeyword::as_str`
helper and use it (#22791 ) (camc314)
### 🐛 Bug Fixes
- d3cdd62 oxfmt: Skip formatting for whitespace-only file (#22780 )
(leaysgur)
- 23f0cc8 formatter: Don't move comments inside variable declaration in
for in loop (#22776 ) (leaysgur)
- f200c40 formatter: Don't move comments inside variable declaration in
for of loop (#22773 ) (Leonabcd123)
### 📚 Documentation
- 845f393 oxfmt,formatter,formatter_json,formatter_core: Add/update
AGENTS.md (#22873 ) (leaysgur)
2026-06-01 17:31:52 +01:00
oxc-guard[bot]
68b455d84f
release(apps): oxlint v1.67.0 && oxfmt v0.52.0 ( #22735 )
...
# Oxlint
### 🚀 Features
- 10da26b linter: `no-misleading-character-class` add suggestions for
regex literal (#22681 ) (Sysix)
- b84941e linter/vue: Implement no-expose-after-await rule (#22675 )
(bab)
- 98b98c1 linter/vue: Implement no-computed-properties-in-data rule
(#22674 ) (bab)
- 868e2e8 linter: Add suggestion for `no-misleading-character-class`
(#22631 ) (Sysix)
- 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)
- fa7c463 semantic: Correct TS enum member symbol spans (#22689 )
(camc314)
- ed445ba linter: Respect flags overrides for `RegExp(/regex/i, "u")`
(#22678 ) (Sysix)
- 26b9396 semantic: Resolve parameter decorators outside parameter scope
(#22623 ) (camc314)
- 203952d linter: `no-misleading-character-class` fix
`is_unicode_code_point_escape` check (#22655 ) (Sysix)
- 2f64d3d linter: `no-misleading-character-class` own diagnostic for
surrogate pairs without u flag (#22654 ) (Sysix)
- 0c6ebc2 linter/eslint/no-lone-blocks: Do not flag empty loops (#22649 )
(Mikhail Baev)
- 2a7562e linter/no-focused-tests: Mark fixer as a suggestion (#22645 )
(camc314)
- dbe644f linter: Respect args none for unused rest parameters (#22627 )
(camc314)
- d0211b0 linter: Allow undefined in DummyRuleMap index (#22626 )
(camc314)
- 36fc0ec oxlint/lsp: "ignore this" actions merge with existing
directive (#22604 ) (Sysix)
- f7f370e linter/vitest/prefer-expect-type-of: Recommend `toBeTypeOf`
instead of `expectTypeOf` (#22612 ) (Mikhail Baev)
- 77063e5 linter/consistent-indexed-object-style: Preserve interface
modifiers in fixes (#22579 ) (camc314)
- 4f33aa7 linter: Treat `TSGlobalDeclaration` as ambient in
`has_ambient_typescript_ancestor` (#22577 ) (camc314)
### ⚡ Performance
- c22938d linter/no-async-endpoint-handlers: Populate node types
(#22601 ) (camc314)
- 607486e linter/no-negated-condition: Populate node types (#22602 )
(camc314)
- 4dcaa59 linter/consistent-type-imports: Populate node types (#22600 )
(camc314)
- 5bd3b25 linter/no-unused-vars: Avoid cloned ancestor iterator (#22598 )
(camc314)
- 97fe9ba linter/no-extra-non-null-assertion: Reduce node matches
(#22588 ) (camc314)
- ae98296 linter/consistent-indexed-object-style: Populate node types
(#22578 ) (camc314)
# Oxfmt
### 🚀 Features
- 16b8058 oxfmt: Support `vite-plus/resolveConfig` for vite.config.ts
(#22454 ) (leaysgur)
### 🐛 Bug Fixes
- 5a26479 formatter: Preserve import phases (#22692 ) (Cameron)
### ⚡ Performance
- 78cf83f formatter: Pre-size output buffer using source text length
(#22594 ) (Dunqing)
Co-authored-by: Dunqing <29533304+Dunqing@users.noreply.github.com >
2026-05-26 14:34:02 +08:00
oxc-guard[bot]
557020642e
release(apps): oxlint v1.66.0 && oxfmt v0.51.0 ( #22528 )
...
# Oxlint
### 🚀 Features
- 1ae291e linter/no-underscore-dangle: Add `allowInUsingDeclarations`
option (#22483 ) (吴杨帆)
- 0440b0f linter/eslint: Implement `id-match` rule (#22379 ) (Vladislav
Sayapin)
- 65bf119 linter: Implement react no-object-type-as-default-prop
(#22481 ) (uhyo)
- 2a6ddce linter/eslint: Implement `no-implied-eval` rule (#22391 )
(Vladislav Sayapin)
- 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)
- 602dfd6 linter/promise/no-return-wrap: Detect Promise calls in all
branches (#22474 ) (zennnnnnn11)
- e182aee linter: Allow dialogs and popovers for no_autofocus (#22289 )
(mehm8128)
- 7ffb710 linter/jest/vitest: Jest/no-standalone-expect ignores
additionalTestBlockFunctions option for jest/vitest hooks (#22477 )
(kapobajza)
- c6f2d3f linter: Add more expression support for iframe-has-title
(#22460 ) (mehm8128)
- 5747ff1 linter: Avoid enabling jest with vitest plugin (#22499 )
(camc314)
- 863984f linter/no-find-dom-node: Run on all files (#22479 ) (bab)
### ⚡ Performance
- 2afef79 linter: Optimize `no-loop-func` (#22491 ) (camchenry)
- 4c9ca72 oxlint: Align walker thread count with rayon pool (#22494 )
(Boshen)
### 📚 Documentation
- f7967c7 linter/id-match: Clarify `onlyDeclarations` config docs
(#22523 ) (camc314)
- 1e0c97f linter: Fix closing code block in documentation for
`padding-around-after-all-blocks` rule. (#22513 ) (connorshea)
- a9049fd linter: Exclude directly provide autoFocus to dialog pattern
(#22510 ) (mehm8128)
# Oxfmt
### 🐛 Bug Fixes
- 8ee946f formatter/sort_imports: Use label to classify lines (#22512 )
(leaysgur)
- 8c1da44 formatter: Normalize destructuring keys in DCR (#22478 )
(camc314)
2026-05-18 12:09:34 +01:00
oxc-guard[bot]
25e5cbc76f
release(apps): oxlint v1.65.0 && oxfmt v0.50.0 ( #22458 )
...
# Oxlint
### 🚀 Features
- 5478fb5 linter/jsdoc: Implement `require-throws-description` rule
(#22386 ) (Mikhail Baev)
- b46d4de linter: Add `--debug` options and add per-rule timing info
(#22282 ) (camchenry)
- c73225e linter/eslint: Implement `prefer-arrow-callback` rule (#22312 )
(박천(Cheon Park))
- de82b59 linter: Add support for `eslint-plugin-jsx-a11y-x` (#22356 )
(mehm8128)
- b170da3 linter: Implement no-implicit-globals (#22249 ) (Jovi De
Croock)
- f44b6c8 linter: Fill schemas `DummyRuleMap` with built-in rules
(#22288 ) (Sysix)
- 5cdb80d linter/jsx-a11y/: Implement
no-interactive-element-to-noninteractive-role (#22332 ) (anarefolio)
- 2749422 linter/jsx-a11y: Add no-noninteractive-element-interactions
(#22337 ) (Pablo Tovar)
- ba2a1d3 linter/jsdoc: Implement `require-throws-type` rule (#22358 )
(Mikhail Baev)
- d90729d linter/jsx-a11y: Implement control-has-associated-label
(#21985 ) (mehm8128)
- 1d04903 linter/jsdoc: Implement `require-yields-type` rule (#22331 )
(Mikhail Baev)
### 🐛 Bug Fixes
- 04c4609 linter/no-nullable-type-assertion-style: Mark as suggestion
(#22450 ) (camc314)
- 1c2b7ec linter/no-unused-vars: Handle shadowed self assignments
(#22387 ) (camc314)
- 9faa1d5 linter/no-noninteractive-tabindex: Check conditional
expressions (#22435 ) (camc314)
- 0854b3a linter/prefer-arrow-callback: Preserve TSX generic arrows in
fixer (#22434 ) (camc314)
- 410b814 linter: Supply `source_type` to codegen fixer (#22433 )
(camc314)
- 3c1bb6f linter: Skip per-node dispatch for run_once-only rules in
large files (#22398 ) (Connor Shea)
- 5206cde linter/no-unused-vars: Improve type-only rest parameters
diagnostic (#22385 ) (camc314)
- c9a22b5 linter/consistent-function-scoping: Allow imported bindings
(#22384 ) (camc314)
- c1e966d linter: Report type-only unused parameters in no-unused-vars
(#22368 ) (camchenry)
- 4818d98 linter: Check whether path is under root before ignoring it
(#20101 ) (Leonabcd123)
- 41fcdcf linter: Fix rule count not including override rules (#19898 )
(Daniel Osmond)
- 59b4f0e linter: Fix 'explicit-module-boundary-types' false positive
with 'allowOverloadFunctions' (#22341 ) (camchenry)
### ⚡ Performance
- 6d42395 linter: Narrow no-unsafe-optional-chaining dispatch (#22437 )
(camchenry)
- 08595fb linter: Optimize no-unreachable (#22397 ) (camchenry)
- 3b46a8d linter: Optimize `no-loss-of-precision` (#22395 ) (camchenry)
- b3e2dc9 linter: Optimize `oxc/bad-array-method-on-arguments` (#22393 )
(camchenry)
### 📚 Documentation
- dcbf62c linter: Remove some duplicate spaces (#22359 ) (camc314)
# Oxfmt
### 💥 BREAKING CHANGES
- 21bb5d1 oxfmt: [**BREAKING**] Avoid config pre-scan (#22258 )
(leaysgur)
### 🐛 Bug Fixes
- 441d724 oxfmt: Fix "race probe" logic with unit tests (#22378 )
(leaysgur)
- e49ee26 formatter: Respect `singleQuote` for jsdoc `import()` type
paths (#22353 ) (Colin Lienard)
- 43b9978 formatter/sort_imports: Treat subpath imports as internal
(#22440 ) (leaysgur)
- 7c5cfa0 formatter: Handle jsx trailing comment with parens (#22370 )
(leaysgur)
- ac5f120 formatter: Fix erroneous formatting inside a template literal
with parentheses (#22262 ) (Jovi De Croock)
- 3c53a95 formatter/sort_imports: Handle ignore comment as boundary
(#22369 ) (leaysgur)
- 4dd83dd oxfmt: Send expandedStates variants as shared refs (#22366 )
(leaysgur)
- 055cc61 formatter: Expand JSX logical chain with leading line comment
(#22346 ) (leaysgur)
- 8046222 formatter: Preserve type alias comment break (#22261 ) (Jovi De
Croock)
### ⚡ Performance
- 123c493 oxfmt: Reduce more syscalls (#22380 ) (leaysgur)
Co-authored-by: overlookmotel <557937+overlookmotel@users.noreply.github.com >
2026-05-15 15:40:11 +01:00
oxc-guard[bot]
d652a55619
release(apps): oxlint v1.64.0 && oxfmt v0.49.0 ( #22318 )
...
# Oxlint
### 💥 BREAKING CHANGES
- 00ce512 oxlint/lsp: [**BREAKING**] Don't fix suggestions on fixAll
code actions & command (#22195 ) (Sysix)
### 🚀 Features
- 0eeceaf linter/no-unused-vars: Rename parameter with initializer
(#22308 ) (camc314)
- fa0232b linter/no-unused-vars: Add param rename suggestion (#22285 )
(Ryota Misumi)
- ae59305 linter/promise/no-promise-in-callback: Add
`exemptDeclarations` option (#22275 ) (Mikhail Baev)
- 60bed4a linter: Extends `no-redundant-roles` and
`prefer-tag-over-role` support roles (#22069 ) (mehm8128)
- 545c80f linter/eslint: Implement `prefer-regex-literals` rule (#22192 )
(Mikhail Baev)
- cf86d7a linter: Bulk suppression (#19328 ) (Said Atrahouch)
- 23abd22 linter/jsx-a11y: Implement
no-noninteractive-element-to-interactive-role (#21264 ) (Pedro Tainha)
- fbb8f22 linter: Support `ignores` in overrides (#22148 ) (camc314)
- 5a4414d oxlint/lsp: Support `rulesCustomization` lsp option (#21858 )
(Sysix)
### 🐛 Bug Fixes
- 610f4c7 linter/no-unused-vars: Avoid renaming captured vars (#22310 )
(camc314)
- 6b50f23 oxlint/cli: Load root config by searching up parent
directories (#22272 ) (Sysix)
- 31a5de7 linter: Rename override `ignores` to `excludeFiles` (#22283 )
(camc314)
- 26d5d7b linter: Add missing vitest/valid-describe-callback
functionality (#22279 ) (camchenry)
- 784530f linter: `valid-title`: detect `String.raw` strings (#22271 )
(Sysix)
- 080d90e linter: Move `no-debugger` fix to suggestion (#22256 ) (Sysix)
- 25b7017 linter: Undocument override `ignores` option (#22213 )
(camc314)
- 7bb00dd linter: Fix role-has-required-aria-props (#22097 ) (mehm8128)
- d25279e linter/disable-directives: Improve parsing of names,
descriptions (#22184 ) (camc314)
- a59e447 linter/disable-directives: Ignore invalid enable suffixes
(#22179 ) (camc314)
- aafef0f ci: Disable bulk supression test on big endian (#22175 )
(camc314)
- 281daec linter/vue/define-props-destructuring: Add
`only-when-assigned` config opt (#22142 ) (camc314)
- 46ab679 linter/plugins: Trim leading newline for partial sources
(#20928 ) (bab)
- 29ff6d9 linter: Update docs for no_alias_methods rule to be
Vitest-specific and add toThrowError alias (#22129 ) (camchenry)
### ⚡ Performance
- 9414bee linter/role-has-required-aria-props: Avoid intermediate vec
(#22212 ) (camc314)
- 3883ea3 linter/no-useless-escape: Drop unnecessary Vec collect
(#22171 ) (connorshea)
- 42c3029 linter/check-property-names: Replace split-collect-pop-join
with rfind (#22172 ) (connorshea)
- 9551d53 linter: Remove unnecessary Vec collect in CFG edge traversal
(#22167 ) (connorshea)
- 26fa2fc linter/aria-role: Remove unnecessary string allocations in run
method (#22168 ) (connorshea)
- c9ce045 linter/getter-return: Remove unnecessary Vec collect in CFG
edge traversal (#22166 ) (connorshea)
- 72bd846 linter/no-this-in-sfc: Reorder cheap name check, avoid String
allocation (#22164 ) (connorshea)
### 📚 Documentation
- 4da212a linter/no-unused-vars: Add docs to
`rename_unused_function_parameter` (#22311 ) (camc314)
- 27c4628 linter/forbid-dom-props: Escape jsx examples in lint rule docs
(#22254 ) (4MBL)
- 3f81147 linter: Improve the `react/jsx-key` rule docs. (#22162 )
(connorshea)
- 07f03cc linter/consistent-return: Add note about `noImplicitReturns`
coverage (#22156 ) (camc314)
- 7c1e049 oxlint/lsp: Improve autogenerated lsp docs (#22154 ) (Sysix)
- 87b3e38 linter: Update docs to be vitest-specific for
consistent-test-it (#22128 ) (camchenry)
# Oxfmt
### 💥 BREAKING CHANGES
- 5c6c390 oxfmt: [**BREAKING**] Respect more git ignore options, align
with Oxlint (#22210 ) (leaysgur)
### 🚀 Features
- 6e8e818 oxfmt: Experimental .svelte support (#21700 ) (leaysgur)
### 🐛 Bug Fixes
- e2a20b6 formatter: Add space after commas in import attributes
(#22274 ) (Leonabcd123)
### ⚡ Performance
- b756682 oxfmt: Optimize nested config prescan (#22232 ) (Jovi De
Croock)
- f14e81e formatter/sort_imports: Skip sort for single import runs
(#22204 ) (leaysgur)
- 32255b1 formatter: Process `ImportDeclaration`s in a run (#22079 )
(overlookmotel)
### 📚 Documentation
- 4da6f4c formatter: Correct comment (#22217 ) (overlookmotel)
- ef3507d formatter/sort_imports: Refresh docs (#22203 ) (leaysgur)
Co-authored-by: Cameron <cameron.clark@hey.com >
2026-05-11 16:02:53 +01:00
oxc-guard[bot]
5921a25e37
release(apps): oxlint v1.63.0 && oxfmt v0.48.0 ( #22109 )
...
# Oxlint
### 🚀 Features
- 1d40d60 linter: Implement SARIF formatter (#22067 ) (camchenry)
- c0982fe linter/eslint: Implement no-restricted-properties rule
(#22080 ) (AJ Bienz)
- 5699d53 linter: Add help text to `agent` formatter (#22064 )
(camchenry)
- fe7194d oxlint: Add agent output mode (#21955 ) (Jovi De Croock)
- fb2f052 linter: Suggest moving shared branch code (#22022 ) (camc314)
- 5868335 linter/no-else-return: Improve nested if diagnostic spans
(#22009 ) (camc314)
- 8b4829b linter: Split `no-negated-condition` rule to unicorn & eslint
(#21998 ) (Sysix)
- fea301a linter: Split jest/prefer-to-be into separate vitest rule
(#21977 ) (camchenry)
- 44aa0d6 linter: Split jest/prefer-strict-equal into separate vitest
rule (#21976 ) (camchenry)
- 2262b27 linter: Split jest/prefer-spy-on into separate vitest rule
(#21975 ) (camchenry)
- fef9143 linter: Split jest/prefer-mock-return-shorthand into separate
vitest rule (#21974 ) (camchenry)
- 2bda504 linter: Split jest/prefer-mock-promise-shorthand into separate
vitest rule (#21973 ) (camchenry)
- 6ef6c7d linter: Split jest/prefer-lowercase into separate vitest rule
(#21972 ) (camchenry)
- f4d2498 linter: Split jest/prefer-hooks-on-top into separate vitest
rule (#21971 ) (camchenry)
- fb8e366 linter: Split jest/prefer-hooks-in-order into separate vitest
rule (#21970 ) (camchenry)
- adcd85c linter: Split jest/prefer-expect-resolves into separate vitest
rule (#21969 ) (camchenry)
- 8ddc7ec linter: Split jest/prefer-equality-matcher into separate
vitest rule (#21968 ) (camchenry)
- 46bb1f3 linter: Split jest/prefer-each into separate vitest rule
(#21967 ) (camchenry)
- bdbff66 linter: Implement interactive-supports-focus (#21767 )
(mehm8128)
- 733b094 linter: Split `prefer-to-have-been-called-times` rule (#21898 )
(Said Atrahouch)
- 8804425 linter/eslint: Implement `logical-assignment-operators` rule
(#21900 ) (Mikhail Baev)
- 296d147 linter: Split jest/prefer-comparison-matcher into separate
vitest rule (#21929 ) (camchenry)
- 38146b6 linter: Split jest/prefer-called-with into separate vitest
rule (#21927 ) (camchenry)
- 6f86175 linter/vue: Implement return-in-computed-property rule
(#21909 ) (bab)
- dc2d0e4 linter: Split jest/no-unneeded-async-expect-function into
separate vitest rule (#21878 ) (camchenry)
- a03fc37 linter: Split jest/no-test-return-statement into separate
vitest rule (#21877 ) (camchenry)
- f11313e linter: Split jest/no-test-prefixes into separate vitest rule
(#21876 ) (camchenry)
- 4380812 linter: Split `prefer-to-have-length` rule (#21893 ) (Said
Atrahouch)
- 511bcc1 linter: Split jest `require-hook` rule (#21889 ) (Said
Atrahouch)
- 64a8180 linter: Split `jest/prefer-snapshot-hint` into a Jest rule and
a Vitest rule. (#21881 ) (connorshea)
- ae7924a linter/vue: Implement no-deprecated-model-definition rule
(#21886 ) (bab)
- 0dfe8b3 linter: Split `jest/require-to-throw-message` into Jest and
Vitest rules. (#21879 ) (connorshea)
- 51229ff linter: Split jest `valid-describe-callback` rule (#21882 )
(Said Atrahouch)
- 2d102fd linter: Split `no-standalone-expect` rule into jest and vitest
(#21862 ) (Sysix)
- ee46a29 linter: Split `no-restricted-matchers` rule into jest and
vitest (#21860 ) (Sysix)
- 1f29459 linter: Split `no-restricted-jest-methods` rule into jest and
vitest (#21859 ) (Sysix)
- e7f8d55 linter: Remove eslint prefixes from plugin names in
diagnostics (#21806 ) (Connor Shea)
- 89fff8b linter: Split valid-expect-in-promise/jest rule into jest and
vitest rules (#21854 ) (Said Atrahouch)
### 🐛 Bug Fixes
- 0b48848 linter/prefer-array-some: Make find rewrite a suggestion
(#22103 ) (camc314)
- d24027e linter/prefer-array-some: Preserve find comparison fixes
(#22094 ) (camc314)
- af2d26c linter/astro: Handle js `---` after frontmatter in .astro
files (#22091 ) (Andrew Powell)
- 78d4ff0 linter/jsdoc/require-returns: Only look at the nearest jsdoc
block (#22077 ) (camc314)
- fa88857 linter/no-map-spread: Use default codegen options for fix
(#22074 ) (camc314)
- 2047a35 linter: Treat adjacent fixes as overlapping (#22071 ) (camc314)
- 75fc551 linter: Handle no-extra-boolean-cast edge cases (#22031 )
(camc314)
- e9d5284 linter/sort-keys: Don't autofix if comment could be misplaced
(#22052 ) (Amund Eggen Svandal)
- d7230b0 linter/no-constant-condition: Handle generator yields (#22046 )
(camc314)
- e8dbc56 linter/array-type: Enable edge case tests (#22047 ) (camc314)
- d57b51f linter/no-constant-condition: Propagate config errors (#22045 )
(camc314)
- bdb6d95 linter/typescript: Remove duplicate rule tests (#22044 )
(camc314)
- 0beaffc linter: Print resolved extended config (#22040 ) (camc314)
- 192ad0e linter/react/only-export-components: Align rule with upstream
cases (#22039 ) (camc314)
- cdf4c53 linter/only-export-components: Support tanstack router
(#21937 ) (camc314)
- 893e18f linter: Stop gitignore lookup at repo boundary (#22033 )
(camc314)
- 7100712 linter/constructor-super: Clarify duplicate super diagnostics
(#22035 ) (camc314)
- fce5b7c linter/constructor-super: Improve invalid `super` calls
diagnostic (#22032 ) (camc314)
- b3de93c linter/rules-of-hooks: Clarify conditional diagnostics
(#22030 ) (camc314)
- 4f9f629 linter/rules-of-hooks: Clarify loop diagnostics (#22029 )
(camc314)
- e6f0978 linter/rules-of-hooks: Clarify async component diagnostics
(#22024 ) (camc314)
- e262f51 linter/rules-of-hooks: Improve diagnostic for hook inside
class component (#22023 ) (camc314)
- 7b71b0d linter/no-restricted-imports: Report once per import
declaration (#22021 ) (camc314)
- 3d5ae3d linter/vitest/require-mock-type-parameters: Handle chained
typed mocks (#22019 ) (camc314)
- 959a2db linter/reporter/github: Omit empty `file` annotations (#22017 )
(camc314)
- 16003a1 linter/unicorn: Remove duplicate rule tests (#22018 ) (camc314)
- 86b7547 linter/no-unreachable: Suppress nested unreachable diagnostics
(#22011 ) (camc314)
- 1d92ae8 linter/oxc: Remove duplicate rule tests (#22013 ) (camc314)
- f270246 linter/branches-sharing-code: Ignore empty statements (#22012 )
(camc314)
- f1c25dd linter: Stabilize debug diagnostic comparison (#22010 )
(camc314)
- b6bc421 linter: Skip linting astro scripts with non JS script types
(#21954 ) (camc314)
- a77547d linter: Support plugin-qualified disable directives (#21999 )
(camc314)
- 079cfdd linter: Match disable directive rule names exactly, not by
substring (#21906 ) (Christian Vuerings)
- 11a4e67 linter: Comptibles rules need to be disabled in jest and
vitest at same time (#21982 ) (Said Atrahouch)
- ce62f16 linter: `jsx-a11y/prefer-tag-over-role` detect more roles
(#21933 ) (bab)
- 024c390 linter/jest/vitest: Padding around after all blocks not
working as expected (#21952 ) (kapobajza)
- 05a8f75 linter/jest/no-standalone-expect: False positive with expect
in an `ObjectProperty` (#21948 ) (Said Atrahouch)
- 6a37c98 linter/no-unused-vars: Report unused re-exported imports
(#21938 ) (camc314)
- 2d5fc16 linter: `jsx-a11y/media-has-caption` report only once for
self-closing tags (#21934 ) (bab)
- 5adca29 linter: `jsx-a11y/no-autofocus` ignore `false` attribute
values (#21918 ) (Sysix)
- 2e5c18e linter/max-nested-describe: Reset nested describe depth
(#21891 ) (camc314)
### ⚡ Performance
- a77f0f7 linter/require-returns: Avoid jsdoc tag vec allocation
(#22081 ) (camc314)
- 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
- d58f594 oxlint/lsp: Auto generate docs for LSP options (#22082 )
(Sysix)
- 9adc3b3 linter/no-misused-new: Clarify construct signatures behaviour
(#22016 ) (camc314)
- 1caf5ad linter/plugins: Reformat comments (#21873 ) (overlookmotel)
# Oxfmt
### 🐛 Bug Fixes
- ef0db6b formatter: Sequence expression in arrow function body
collapses onto one line (#21183 ) (Justin Mecham)
- 5d5d808 formatter: Preserve blank line after directive with trailing
comment (#21153 ) (Justin Mecham)
### ⚡ Performance
- 2fd907d formatter: Sort imports during IR construction (#22065 )
(overlookmotel)
---------
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com >
Co-authored-by: Cameron Clark <cameron.clark@hey.com >
2026-05-05 10:03:31 +01:00
oxc-guard[bot]
d82f698000
release(apps): oxlint v1.62.0 && oxfmt v0.47.0 ( #21838 )
...
# Oxlint
### 💥 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
- b4acdbd linter/vue: Implement no-deprecated-delete-set rule (#21766 )
(bab)
- 613bfef linter: Split jest/prefer-to-contain into a jest and a vitest
rule. (#21821 ) (connorshea)
- c629719 linter/vue: Implement no-deprecated-events-api rule (#21793 )
(Alex Peshkov)
- f2a8528 linter: Split jest/require-top-level-describe rule into a Jest
and a Vitest rule. (#21822 ) (connorshea)
- ea4b358 linter: Split jest/prefer-todo into a shared rule and a
vitest-specific rule. (#21820 ) (connorshea)
- 3a66819 linter: Split jest/no-mocks-import into vitest/no-mocks-import
(#21818 ) (camchenry)
- 0b3ffce linter: Split jest/no-large-snapshots into
vitest/no-large-snapshots (#21814 ) (camchenry)
- d1cf22e linter: Split jest/no-interpolation-in-snapshots into
vitest/no-interpolation-in-snapshots (#21812 ) (camchenry)
- bb0c359 linter: Split jest/no-identical-title into
vitest/no-identical-title (#21810 ) (camchenry)
- c26ea41 linter: Split jest/no-hooks into vitest/no-hooks (#21809 )
(camchenry)
- 46b32f2 linter: Split jest/no-focused-tests into
vitest/no-focused-tests (#21804 ) (camchenry)
- acf41a8 linter: Split jest/no-duplicate-hooks into
vitest/no-duplicate-hooks (#21803 ) (camchenry)
- 54d787f linter: Split jest/no-disabled-tests into
vitest/no-disabled-tests (#21802 ) (camchenry)
- 9c9a676 linter/vue: Implement no-deprecated-data-object-declaration
rule (#21764 ) (bab)
- 4445855 linter: Split `jest/no-conditional-in-test` into
`vitest/no-conditional-in-test` (#21763 ) (camchenry)
- b8604de linter: Split `jest/no-conditional-expect` into
`vitest/no-conditional-expect` (#21762 ) (camchenry)
- 0dbd650 linter: Split `jest/no-commented-out-tests` into
`vitest/no-commented-out-tests` (#21761 ) (camchenry)
- 7f1a97c linter: Split `jest/no-alias-methods` into
`vitest/no-alias-methods` (#21760 ) (camchenry)
- eb97c49 linter: Split `jest/max-nested-describe` into
`vitest/max-nested-describe` (#21759 ) (camchenry)
- d870cad linter: Split `jest/max-expects` into `vitest/max-expects`
(#21758 ) (camchenry)
- 1b97124 linter/vue: Implement no-deprecated-vue-config-keycodes rule
(#21699 ) (bab)
- 5f81883 linter/eslint: Implement `func-name-matching` rule (#21708 )
(Mikhail Baev)
- 348f46c linter: Add `respectEslintDisableDirectives` option (#21384 )
(Christian Vuerings)
- 63ec351 linter: Support nested vite+ config discovery (#21638 )
(camc314)
- 560feb4 linter: Introduce `Vite` variant to `DiscoveredConfigFile`
(#21637 ) (camc314)
- 07dc41e linter/eslint: Implement `no-underscore-dangle` rule (#21630 )
(Paul-Arthur THIERY)
- e270d54 linter/react: Impl react/no-did-update-set-state (#17322 )
(Kenzo Wada)
- ca81199 linter/react: Implement `forbid-component-props` rule (#20005 )
(Mikhail Baev)
- 6776403 linter/branches-sharing-code: Move rule from nursery to
pedantic (#21621 ) (camc314)
- ce7a4dc linter/no-unreachable: Move rule from nursery to correctness
(#21618 ) (camc314)
- e3b5e78 linter/getter-return: Move rule from nursery to correctness
(#21617 ) (camc314)
- d3a7e9a linter/unicorn: Implement suggestion for
`no-useless-iterator-to-array` rule (#21610 ) (Mikhail Baev)
- a0c883c oxlint/lsp: Add vite plus version to server info (#21587 )
(Sysix)
- 67ff860 linter/no-unknown-property: Support React 19 `precedence` prop
(#21590 ) (João Pedro Schmitz)
### 🐛 Bug Fixes
- aace797 linter: Detect Svelte TS and module scripts correctly (#20819 )
(mustafa0x)
- 3612db1 linter/prefer-default-parameters: Skip reporting on
object/class setters (#21836 ) (camc314)
- 28c3521 oxlint/lsp: Remove overlapping edits for
`source.fixAllDangerous.oxc` code action (#21785 ) (Sysix)
- 705a82c linter/no-non-null-asserted-nullish-coalescing: Add fixer
(#21827 ) (yyh)
- 33f5535 linter: Add checks that `Program` is in current allocator
chunk before JS plugins linting (#21774 ) (overlookmotel)
- d122877 linter/no-extra-non-null-assertions: Add fixer (#21744 ) (yyh)
- 37f0731 linter: `with_plugin_vitest(true)` working realiable in test
mode (#21769 ) (Said Atrahouch)
- e42e6a6 linter/role-supports-aria-props: False positive with
`combobox` and `haspopup` (#21725 ) (Leonabcd123)
- e24324f linter: Iframe-has-title false positive for template literals
(#21714 ) (Leonabcd123)
- 41a6510 linter/vitest/hoisted-apis-on-top: Only check first member
(#20068 ) (Sidharth Vinod)
- 98ed888 linter: Check initializer for allowConstantExport in
only-export-components (#20608 ) (Eyüp Can Akman)
- 1946e8b linter: Avoid applying override plugin categories to eslint
rules (#21521 ) (bab)
- 3d1e83a linter: Parse `<script>` tag attributes with curly braces in
Svelte files (#21089 ) (bab)
- bc6ade5 linter: Report actual disable directive prefix (#21682 )
(camc314)
- bf84466 linter: Respect category settings in overrides (#19411 )
(Connor Shea)
- 52ecb45 linter/vitest: Don't treat `test.extend` or `it.extend` as
test functions (#21668 ) (Said Atrahouch)
- aa1a00c linter: Support jsx-a11y attributes setting in anchor-is-valid
rule (#21665 ) (camchenry)
- 30e0ad3 linter/prefer-default-parameters: Preserve TS annotations in
fixer (#21655 ) (camc314)
- 8c425db linter: Allow string for jest version in config schema
(#21649 ) (camc314)
- 3617864 linter/react/display-name: Fix false positive for named
default class (#21643 ) (Mikhail Baev)
- f3a02cc linter/no-non-null-assertion: Improve diagnostic message
(#21616 ) (Cameron)
- c2ada2c linter: Make `--fix-dangerously` fix dangerous fixes and
suggestions as documented (#13366 ) (Ulrich Stark)
- 8265ed9 linter/sort-keys: Handle CRLF separated groups (#21608 )
(camc314)
- 96c559e linter/no-shadow: Add note explaining enum member shadowing
(#21607 ) (camc314)
- 3b49389 linter: No-irregular-whitespace: add config options (#21559 )
(camchenry)
### ⚡ Performance
- cdc9eae oxlint/lsp: Avoid clones on lsp options deserializion (#21748 )
(Sysix)
- be2db80 linter/sort-keys: Reduce allocations (#21560 ) (camchenry)
### 📚 Documentation
- 453d647 linter: Remove now-unnecessary compatibility notes from shared
Jest/Vitest rules. (#21826 ) (connorshea)
- b1574a2 linter: Fix the configuration docs for no-underscore-dangle
rule. (#21801 ) (connorshea)
- 6946aee linter: Remove no-longer-relevant documentation about vitest
compatibility from shared Jest/Vitest rules. (#21799 ) (connorshea)
- 0652ea2 linter: Misc grammar cleanup for Vitest rules. (#21755 )
(connorshea)
- 99f0b68 linter: Improve docs for `vitest/require-mock-type-parameters`
rule. (#21754 ) (connorshea)
- 9e2796b linter: Improve the docs for the `vitest/hoisted-apis-on-top`
rule. (#21753 ) (connorshea)
- 2ccede2 linter: Improve function usage examples in doc comments
(#21718 ) (overlookmotel)
- 43adae9 linter: Add version section to rules page (#21601 ) (camchenry)
- d15dad2 linter: Export rule version metadata (#21588 ) (Old Autumn)
# Oxfmt
### 💥 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
- 3bc54a9 oxfmt: Respect nested config for `--stdin-filepath` (#21627 )
(leaysgur)
- 144f27a oxfmt: Respect ignore settings for `--stdin-filepath` (#21625 )
(leaysgur)
- 81c7ae4 oxfmt/lsp: Add vite plus version to server info (#21586 )
(Sysix)
### 🐛 Bug Fixes
- 477435b formatter/sort_imports: Keep leading blank line when
decreasing group transitions (#21835 ) (leaysgur)
- 38d1e82 oxfmt/lsp: Format non `file://` URIs without a authority
(#21647 ) (Sysix)
- 5eb8e2b formatter/sort_imports: Preserve blank lines around ignored
side-effect imports (#21692 ) (leaysgur)
- 0dce3c6 oxfmt: Handle invalid `overrides` config without panic
(#21661 ) (Yuji Sugiura)
- 9f82ed4 formatter: Escape backticks in JSDoc inline code spans
(#21577 ) (bab)
### ⚡ Performance
- db6c603 oxfmt/lsp: Avoid clones on lsp options deserializion (#21749 )
(Sysix)
- 6a96c76 formatter: Avoid heap alloc for jsdoc delimiter (#21597 )
(leaysgur)
---------
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com >
Co-authored-by: Cameron Clark <cameron.clark@hey.com >
2026-04-27 12:36:04 +01:00
oxc-guard[bot]
f5bd1dd35f
release(apps): oxlint v1.61.0 && oxfmt v0.46.0 ( #21583 )
...
# Oxlint
### 💥 BREAKING CHANGES
- 24fb7eb allocator: [**BREAKING**] Rename `Box` and `Vec` methods
(#21395 ) (overlookmotel)
### 🚀 Features
- 38d8090 linter/jest: Implemented jest `version` settings in config
file. (#21522 ) (Said Atrahouch)
- 7dbbb99 linter/eslint: Implement suggestion for `no-case-declarations`
rule (#21508 ) (Mikhail Baev)
- 9b4d9f6 linter/prefer-template: Implement autofix (#21502 ) (François)
- daa64ed linter/no-empty-pattern: Add `allowObjectPatternsAsParameters`
option (#21474 ) (camc314)
- cf2d281 linter/typescript: Implement explicit-member-accessibility
(#21447 ) (Hunter Tunnicliff)
- d48de6f linter/unicorn: Add help messages to 3 rule diagnostics
(#21459 ) (Mukunda Rao Katta)
- cffdc2e linter: Backfill rule version metadata (#21391 ) (Old Autumn)
### 🐛 Bug Fixes
- 1e69b91 linter/no-useless-assignment: Improve diagnostic spans
(#21581 ) (camc314)
- f272594 linter/plugins: Align `RuleMeta.replacedBy` type with ESLint
(#21544 ) (bab)
- 4d57851 linter/eslint: Enhance `no-empty-function` rule to support
async and generator functions in VariableDeclarator (#21542 ) (Mikhail
Baev)
- 00fc136 codegen: Preserve coverage comments before object properties
(#21312 ) (bab)
- a56b7b9 oxlint: Dont enable gitlab formatter by default (#21501 )
(camc314)
- 9c9b6a2 linter/array-callback-return: Ignore non-exit CFG dead ends
(#21497 ) (camc314)
- 61088e0 linter/unicorn: Handle computed property access in
`prefer-dom-node-remove` rule (#21470 ) (Mikhail Baev)
- eab5934 linter: Report an error on unsupported `extends` values
(#21406 ) (John Costa)
- 3289ba0 linter/valid-expect-in-promise: Check a jest fn to be `test`
instead of `describe` (#21422 ) (Said Atrahouch)
- 4417fe3 linter/prefer-ending-with-an-expect: Ignore vi.mock factory
callbacks (#21414 ) (Cédric Exbrayat)
- a904883 linter/consistent-type-imports: Ignore vue/svelte/astro files
(#21415 ) (bab)
- 2498fe6 linter/no-unused-vars: Allow segments of dotted namespace
declarations (#21416 ) (bab)
- 44b5b35 linter: Preserve vitest-compatible jest rules when applying
overrides (#21389 ) (Cameron)
- 7bd8331 linter/prefer-ending-with-an-expect: Add missing `version`
docs (#21390 ) (Said Atrahouch)
- 43d8f0d linter/no-useless-assignment: Ignore writes read by closures
(#21380 ) (camc314)
### 📚 Documentation
- c1eeae3 linter: Add version to `rule.json` (#21547 ) (camchenry)
- 0ec6ab2 linter: Improve the `vitest/no-importing-vitest-globals` rule
documentation. (#21557 ) (connorshea)
# Oxfmt
### 💥 BREAKING CHANGES
- 24fb7eb allocator: [**BREAKING**] Rename `Box` and `Vec` methods
(#21395 ) (overlookmotel)
### 🚀 Features
- 5aa7fe1 oxfmt: Add `--disable-nested-config` CLI flag (#21514 )
(leaysgur)
- b5cb8d1 oxfmt: Update prettier to 3.8.3 (#21451 ) (leaysgur)
- 16713d5 oxfmt/cli: Support per-directory config (#21103 ) (leaysgur)
- 952de06 oxfmt/lsp: Support per-directory config (#21081 ) (leaysgur)
### 🐛 Bug Fixes
- a501a53 formatter: Handle comments after pipe in single-member union
types (#21487 ) (John Costa)
- 6f49fad oxfmt: Respect nested config.`ignorePatterns` (#21489 )
(leaysgur)
- 7c98d52 oxfmt: Do not panic on finding invalid nested config (#21461 )
(leaysgur)
- 41bb2d5 formatter: Preserve more `intrinsic` parens (#21449 )
(leaysgur)
- f894750 formatter: Preserve parens around `intrinsic` in type alias
annotation (#21410 ) (Dunqing)
### ⚡ Performance
- df27b48 oxfmt: Skip ancestors check when no nested config found
(#21517 ) (leaysgur)
- 5e1522a oxfmt: Do not occupy the rayon thread solely for handover
(#21408 ) (leaysgur)
Co-authored-by: camc314 <18101008+camc314@users.noreply.github.com >
2026-04-20 20:31:11 +01:00
Boshen
e16848eb4c
release(apps): oxlint v1.60.0 && oxfmt v0.45.0 ( #21375 )
...
# Oxlint
### 💥 BREAKING CHANGES
- 382958a span: [**BREAKING**] Remove re-exports of string types from
`oxc_span` crate (#21246 ) (overlookmotel)
- c4aedfa str: [**BREAKING**] Add `static_ident!` macro (#21245 )
(overlookmotel)
- 7354f3c linter: [**BREAKING**] Error on no matched files (#21144 )
(camc314)
### 🚀 Features
- 91f2c79 linter/eslint-jest-plugin: Implemented
`prefer-importing-jest-globals` rule (#21303 ) (Said Atrahouch)
- a02f32c linter: Add release version for existing rules (#21363 )
(camchenry)
- b9e93da linter: Allow tagging rules with release version (#21362 )
(camchenry)
- f99ecda oxlint: Gate `vite.config.ts` recognition behind `VP_VERSION`
env var (#21298 ) (leaysgur)
- cf459d3 linter: Implement suggestion for `no-empty-function` rule
(#21347 ) (Mikhail Baev)
- 7213d61 linter: Adding pending suggestions fix to `valid_expect`
rules. (#21249 ) (Said Atrahouch)
- ae45312 linter: Introduce `--type-check-only` flag (#21184 ) (camc314)
- 1ce8b90 linter: Implemented `valid-expect-in-promise` vitest and jest
rule (#21170 ) (Said Atrahouch)
- 39f7fda linter: Add auto-fix to `unicorn/prefer-default-parameters`
(#21166 ) (yefan)
- 15574bc linter/unicorn: Implement consistent-template-literal-escape
(#21126 ) (AliceLanniste)
- c5c8c03 linter/prefer-readonly-parameter-types: Move rule from nursery
to pedantic (#21114 ) (camc314)
- 1893be1 linter/no-useless-default-assignment: Move rule from nursery
to correctness (#21113 ) (camc314)
- 5462ff9 linter/strict-void-return: Move rule from nursery to pedantic
(#21115 ) (camc314)
- c2989bd linter/no-unnecessary-type-parameters: Move rule from nursery
to suspicious (#21112 ) (camc314)
- 79d339a linter/no-unnecessary-qualifier: Move rule from nursery to
style (#21111 ) (camc314)
### 🐛 Bug Fixes
- b577efc linter/unicorn: Handle optional chaining in
`prefer-array-flat` and `no-invalid-remove-event-listener` (#21299 )
(Mikhail Baev)
- 5e55735 oxlint/lsp: Skip .git directories in LSP walkers (#21316 )
(camc314)
- ec7f6ed oxlint, oxfmt: Apply `check_for_writer_error` to `.flush()`
(#21343 ) (Craig Morrison)
- a17a08a linter/no-useless-assignment: Handle continue edges in loop
analysis (#21358 ) (camc314)
- a0eac12 linter/array-type: Move match to first stmt (#21357 ) (camc314)
- 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)
- a0a8c62 linter/no-fallthrough: Check from start of switch case for
empty lines (#21324 ) (Josh Cartmell)
- 36f0bc4 linter/no-cycle: Report all cyclic dependencies inside a file
(#21259 ) (camc314)
- 3f80536 linter: Ignore regex flags other than `g`/`u`/`v` in
`prefer-string-replace-all` (#21203 ) (bab)
- f21d3aa linter/unicorn: Report on optional in
`require-number-to-fixed-digits-argument` rule (#21207 ) (Mikhail Baev)
- af8e122 linter: Render each config error as a separate diagnostic
(#21120 ) (bab)
- a950f55 linter/unicorn: Do not report on optionals in
`no-single-promise-in-promise-methods` (#21157 ) (Mikhail Baev)
- 472f8ee linter: Mark complete comment for unused disable directives +
lsp fix (#21092 ) (copilot-swe-agent)
- edd0865 linter/no-array-index-key: False positive when index is inside
an expression within a template literal (#21123 ) (bab)
- 7e8d520 linter/unicorn: Report on optional `foo?.postMessage` in
`require-post-message-target-origin` rule (#21104 ) (Mikhail Baev)
### ⚡ 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
- 7888280 linter: Move config docs for `no-restricted-exports` (#21360 )
(camchenry)
- 162d26c linter: Improve docs for `typescript/array-type` (#21356 )
(camchenry)
- a2dbaec linter: Add missing docs for options for
`typescript/class-literal-property-style` (#21355 ) (camchenry)
- 79593eb linter: Improve docs for
`typescript/consistent-type-assertions` (#21353 ) (camchenry)
- f9d20d2 linter: Move config option docs for
`typescript/no-empty-object-type` (#21352 ) (camchenry)
- a8f650d linter: Add missing config option docs for
`prefer-string-start-ends-with` (#21332 ) (camchenry)
- cfd8a4f linter: Don't rely on old eslint doc for available globals
(#21334 ) (Nicolas Le Cam)
- 03865fa linter: Jest/prefer-snapshot-hint: add doc comment for
snapshot hint mode (#21290 ) (camchenry)
- a6fe09b linter: Add missing docs for config options in `react` plugin
(#21289 ) (camchenry)
- 60eaf47 linter: Add missing docs for config options in unicorn plugin
(#21288 ) (camchenry)
- c3c2055 linter: `jsx-a11y/label-has-associated-control`: document the
`assert` options (#21287 ) (camchenry)
- a928ed9 linter: Add missing config docs for vitest plugin rules
(#21285 ) (camchenry)
- 7e07c7c linter: `id-length`: move enum docs to doc comments (#21281 )
(camchenry)
- 9746bdf linter: Add missing docs for `class-methods-use-this` config
(#21278 ) (camchenry)
- 6ffe7a5 linter: Move docs for `Target` variant onto enum (#21277 )
(camchenry)
- 305350d linter/plugins: Correct comments (#21130 ) (overlookmotel)
# Oxfmt
### 💥 BREAKING CHANGES
- 382958a span: [**BREAKING**] Remove re-exports of string types from
`oxc_span` crate (#21246 ) (overlookmotel)
### 🚀 Features
- e3081e1 oxfmt: Gate `vite.config.ts` recognition behind `VP_VERSION`
env var (#21295 ) (leaysgur)
- 5b0b573 oxfmt: Update prettier to 3.8.2 (#21294 ) (leaysgur)
- 0d67834 oxfmt: Show hint for all files are ignored case (#21154 )
(leaysgur)
### 🐛 Bug Fixes
- 2871fc2 oxfmt: Non idempotent formatting on comments in TS (#20449 )
(Cat Chen)
- ec7f6ed oxlint, oxfmt: Apply `check_for_writer_error` to `.flush()`
(#21343 ) (Craig Morrison)
- 1a8c225 formatter: Preserve newline between self-closing JSX element
and single-char text (#21149 ) (Justin Mecham)
- 407b725 oxfmt: Indent dangling comments in empty enum with block
indent (#21163 ) (Leonabcd123)
- d13fd37 formatter: Remove extra outer parentheses on return with JSDoc
type cast (#21109 ) (bab)
- 22babde oxfmt: Fix unicode char escaping (#21162 ) (leaysgur)
- 4da53e5 formatter: Preserve trailing comma in TSX arrow functions with
default type params (#21151 ) (Justin Mecham)
- 94fe774 oxfmt: Handle paths with consecutive leading slashes (#21155 )
(leaysgur)
- 50c389b oxfmt: Support `.editorconfig` `quote_type` (#20989 )
(leaysgur)
### ⚡ Performance
- 0ce619f formatter: Use `Allocator::alloc_concat_strs_array` instead of
`StringBuilder::from_strs_array_in` (#21339 ) (overlookmotel)
2026-04-13 11:26:07 +01:00
Boshen
a69e707344
release(apps): oxlint v1.59.0 && oxfmt v0.44.0 ( #21085 )
...
# Oxlint
### 💥 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)
- 9cfe57e linter/unicorn: Implement prefer-import-meta-properties rule
(#20662 ) (Irfan - ئىرفان)
- 1edb391 linter/eslint: Implement `no-restricted-exports` rule (#20592 )
(Nicolas Le Cam)
- 0f12bcd linter/react: Implement `hook-use-state` rule (#20986 ) (Khaled
Labeb)
- 1513a9f oxlint/lsp: Show note field for lsp diagnostic (#20983 )
(Sysix)
- 7fdf722 linter/unicorn: Implement `no-useless-iterator-to-array` rule
(#20945 ) (Mikhail Baev)
- 39c8f2c linter/jest: Implement padding-around-after-all-blocks
(#21034 ) (Sapphire)
- ac39e51 linter/eslint-vitest-plugin: Prefer importing vitest globals
(#20960 ) (Said Atrahouch)
- 0b84de1 oxlint: Support allow option for prefer-promise-reject-errors
(#20934 ) (camc314)
- 23db851 linter/consistent-return: Move rule from nursery to suspicious
(#20920 ) (camc314)
- 9a27e32 linter/no-unnecessary-type-conversion: Move rule from nursery
to suspicious (#20919 ) (camc314)
- 1ca7b58 linter/dot-notation: Move rule from nursery to style (#20918 )
(camc314)
- 73ba81a linter/consistent-type-exports: Move rule from nursery to
style (#20917 ) (camc314)
- b9199b1 linter/unicorn: Implement switch-case-break-position (#20872 )
(Mikhail Baev)
- 3435ff8 linter: Implements `prefer-snapshot-hint` rule in Jest and
Vitest (#20870 ) (Said Atrahouch)
- 98510d2 linter: Implement react/prefer-function-component (#19652 )
(Connor Shea)
- 871f9d9 linter: Implement no-useless-assignment (#15466 ) (Zhaoting
Zhou)
- 0f01fbd linter: Implement eslint/object-shorthand (#17688 ) (yue)
### 🐛 Bug Fixes
- dd2df87 npm: Export package.json for oxlint and oxfmt (#20784 ) (kazuya
kawaguchi)
- 9bc77dd linter/no-unused-private-class-members: False positive with
await expr (#21067 ) (camc314)
- 60a57cd linter/const-comparisons: Detect equality contradictions
(#21065 ) (camc314)
- 2bb2be2 linter/no-array-index-key: False positive when index is passed
as function argument (#21012 ) (bab)
- 6492953 linter/no-this-in-sfc: Only flag `this` used as member
expression object (#20961 ) (bab)
- 9446dcc oxlint/lsp: Skip `node_modules` in oxlint config walker
(#21004 ) (copilot-swe-agent)
- af89923 linter/no-namespace: Support glob pattern matching against
basename (#21031 ) (bab)
- 64a1a7e oxlint: Don't search for nested config outside base config
(#21051 ) (Sysix)
- 3b953bc linter/button-has-type: Ignore `document.createElement` calls
(#21008 ) (Said Atrahouch)
- 8c36070 linter/unicorn: Add support for `Array.from()` for
`prefer-set-size` rule (#21016 ) (Mikhail Baev)
- c1a48f0 linter: Detect vitest import from vite-plus/test (#20976 )
(Said Atrahouch)
- 5c32fd1 lsp: Prevent corrupted autofix output from overlapping text
edits (#19793 ) (Peter Wagenet)
- ca79960 linter/no-array-index-key: Move span to `key` property
(#20947 ) (camc314)
- 2098274 linter: Add suggestion for `jest/prefer-equality-matcher`
(#20925 ) (eryue0220)
- 6eb77ec linter: Allow default-import barrels in import/named (#20757 )
(Bazyli Brzóska)
- 9c218ef linter/eslint-vitest-plugin: Remove pending fix status for
require-local-test-context-for-concurrent-snapshot (#20890 ) (Said
Atrahouch)
### ⚡ 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)
# Oxfmt
### 🚀 Features
- 35cf6e8 oxfmt: Add node version hint for ts config import failures
(#21046 ) (camc314)
### 🐛 Bug Fixes
- dd2df87 npm: Export package.json for oxlint and oxfmt (#20784 ) (kazuya
kawaguchi)
- 9d45511 oxfmt: Propagate file write errors instead of panicking
(#20997 ) (leaysgur)
- 139ddd9 formatter: Handle leading comment after array elision (#20987 )
(leaysgur)
- 4216380 oxfmt: Support `.editorconfig` `tab_width` fallback (#20988 )
(leaysgur)
- d10df39 formatter: Resolve pending space in fits measurer before
expanded-mode early exit (#20954 ) (Dunqing)
- f9ef1bd formatter: Avoid breaking after `=>` when arrow body has JSDoc
type cast (#20857 ) (bab)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com >
2026-04-07 09:35:15 +09:00
Boshen
0384f4b225
release(apps): oxlint v1.58.0 && oxfmt v0.43.0 ( #20867 )
...
# Oxlint
### 💥 BREAKING CHANGES
- c0ebbce linter: [**BREAKING**] Report error on unknown builtin rule (#20464 ) (camc314)
### 🚀 Features
- 04f85e5 linter/no-unused-vars: Add safe-fix option for import fixes (#20839 ) (Marcell Toth)
- 32a3706 linter/eslint-vitest-plugin: Implements `require-test-timeout` rule (#20806 ) (Said Atrahouch)
- ae03653 linter: Implement suggestion for `eslint/no-useless-computed-key` rule (#20805 ) (Mikhail Baev)
- 6624513 linter/prefer-string-starts-ends-with: Move rule from nursery to style (#20797 ) (camc314)
- 58941f8 linter/prefer-readonly: Move rule from nursery to style (#20796 ) (camc314)
- 8837ffd linter/prefer-regexp-exec: Move rule from nursery to style (#20795 ) (camc314)
- 7e88871 linter/prefer-find: Move rule out of nursery (#20794 ) (camc314)
- ca6e5bc linter/vitest: Implement prefer-called-exactly-once-with (#17562 ) (Said Atrahouch)
- e80c0bf linter/eslint-plugin-vitest: Implement `require-mock-type-parameters` (#20785 ) (Said Atrahouch)
- cec8b8f linter/vitest: Implement require-awaited-expect-poll rule (#20702 ) (Said Atrahouch)
- d8e9d01 linter/eslint-plugin-vitest: Set `prefer-to-have-been-called-times` compatible with jest (#20703 ) (Said Atrahouch)
- caf8231 linter: Enhance import plugin diagnostics with help messages (#20766 ) (离谱)
- f44adfa linter: Improve the oxlint config generated by `--init`. (#20632 ) (connorshea)
- 43f4827 linter: Add help text to jest and promise diagnostics (#20640 ) (kszongic)
- 16516de linter: Enhance types for `DummyRule` (#20751 ) (camc314)
- 27374e8 linter: Add hint about node version when ts config fail to import (#20570 ) (camc314)
- 8e34150 linter/eslint-plugin-vitest: Sync rule with JS implementation (#20679 ) (Said Atrahouch)
### 🐛 Bug Fixes
- df057d5 linter/no-noninteractive-tabindex: Add missing composite widget … (#20860 ) (bab)
- bb34073 linter: Mark vitest/valid-title as a compatible jest rules (#20463 ) (Nicolas Le Cam)
- bd2c76b linter: Handle shadowed locals in no-restricted-globals (#20811 ) (Ulrich Stark)
- 62e39be linter: Sort nested object keys in fix of `eslint/sort-keys` in one pass (#20838 ) (Ulrich Stark)
- 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)
- c610666 linter/no-shadow: Respect env settings when builtinGlobals is enabled (#20429 ) (vvnikita74)
- 6bb502f linter/no-invalid-void-type: Allow void generic args in heritage clauses (#20780 ) (camc314)
- 365bb7d linter: Skip typed nested literals in explicit-module-boundary-types (#20776 ) (camc314)
- 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)
- 7e394ec linter: Clarify empty replacement fixer help text (#20698 ) (camc314)
- d15a99c linter/jsx-curly-brace-presence: Flag empty string literals (#20690 ) (camc314)
### 📚 Documentation
- c722495 linter: Update JS Plugins + LS references (#20843 ) (camc314)
- e1f9748 linter/jsdoc/require-property: Fix typo (#20792 ) (Benjaming61001)
- be3dcc1 linter: Add note about node version + custom TS plugin (#19381 ) (camc314)
# Oxfmt
### 🚀 Features
- 6ef440a oxfmt: Support bool for object style options (#20853 ) (leaysgur)
- 23050fa oxfmt: Support markdown-in-js substitution (#20683 ) (leaysgur)
- 4087295 oxfmt: Support angular-in-js substitution (#20676 ) (leaysgur)
2026-03-30 10:15:21 +00:00
Boshen
8b0f61d2a0
release(apps): oxlint v1.57.0 && oxfmt v0.42.0 ( #20680 )
2026-03-24 17:48:53 +08:00
Boshen
b33fbdeda6
Revert "release(apps): oxlint v1.57.0 && oxfmt v0.42.0 ( #20680 )"
...
This reverts commit 027ce4a8ad .
2026-03-24 17:38:39 +08:00
Boshen
027ce4a8ad
release(apps): oxlint v1.57.0 && oxfmt v0.42.0 ( #20680 )
2026-03-24 12:54:43 +08:00
Boshen
180dd0f8f6
Revert "release(apps): oxlint v1.57.0 && oxfmt v0.42.0 ( #20649 )"
...
This reverts commit a8f45a841f .
2026-03-24 12:46:35 +08:00
Boshen
a8f45a841f
release(apps): oxlint v1.57.0 && oxfmt v0.42.0 ( #20649 )
2026-03-23 17:58:47 +08:00
Boshen
5446ebde41
release(apps): oxlint v1.56.0 && oxfmt v0.41.0 ( #20423 )
...
# Oxlint
### 🚀 Features
- c95951f linter/plugins: Implement `sourceCode.markVariableAsUsed` (#20357 ) (overlookmotel)
- 7a2a7d0 linter: Implement `n/handle-callback-err` rule (#19616 ) (Mikhail Baev)
### 🐛 Bug Fixes
- f8fbd6e linter/plugins: Remove `hashbang` property from AST (#20365 ) (overlookmotel)
- 6eb5b01 linter/prefer-await-to-then: Ignore Promise static methods (#20347 ) (camc314)
- a4b61f7 linter: Remove `defineConfig` check (#20308 ) (camc314)
- 3ad7f53 linter/explicit-module-boundary-types: False positive with satisfies expr (#20309 ) (camc314)
- f547401 linter/no-unused-private-class-members: Treat switch discriminants as read (#20307 ) (camc314)
- 1c07b3b diagnostics: Handle `WouldBlock` in stdout writes to prevent panic (#20295 ) (Boshen)
### ⚡ Performance
- e4f7248 linter: Remove unnecessary clone of owned String in drain loop (#20388 ) (Boshen)
- 4a67f1d linter: Eliminate Vec allocation in disable directive matching (#20387 ) (Boshen)
- 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)
- 5474d0a semantic: V8-style walk-up reference resolution (#20292 ) (Boshen)
- 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
- 24490b5 linter: Improve formatting for 80ish rules' docs. (#20411 ) (connorshea)
- 3383523 linter: Improve `--tsconfig` flag docs (#20342 ) (camc314)
# Oxfmt
### 🚀 Features
- d22c443 oxfmt: Export `OxfmtConfig` type (#20275 ) (leaysgur)
- a11ecff oxfmt/lsp: Respect `angular` language id as `.component.html` file (#20242 ) (Sysix)
### 🐛 Bug Fixes
- ce65099 formatter: Preserve parentheses around as expression before private field access (#20419 ) (bab)
- f908742 oxfmt: Revert #20326 partially (#20413 ) (leaysgur)
- 4ef93ea formatter: Honor trailing ignore comments after list separators (#19925 ) (Andreas Lubbe)
- 68fb0d0 oxfmt: Skip vite.config.ts which fails to import (#20326 ) (leaysgur)
- 88ee826 oxfmt: Handle literalline for script-in-vue (#20130 ) (leaysgur)
- 1c07b3b diagnostics: Handle `WouldBlock` in stdout writes to prevent panic (#20295 ) (Boshen)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com >
2026-03-16 10:29:46 +00:00
Boshen
6a26b9316a
release(apps): oxlint v1.55.0 && oxfmt v0.40.0 ( #20293 )
...
# Oxlint
### 🐛 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)
# Oxfmt
### 🐛 Bug Fixes
- 96f761f oxfmt: Ensure stdin blocking mode is set for non-TTY environments (#20289 ) (camc314)
- bc20217 oxlint,oxfmt: Omit useless `| null` for `Option<T>` field from schema (#20273 ) (leaysgur)
2026-03-12 14:57:45 +00:00
Boshen
36e7d29d8f
release(apps): oxlint v1.54.0 && oxfmt v0.39.0 ( #20267 )
...
# Oxlint
### 🐛 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)
- 89b7ca9 linter/no-duplicate-imports: Only check aggregated exports
(#20178 ) (kennytm)
- 691f556 linter/explicit-module-boundary-types: Ignore constructor
callbacks (#20221 ) (camc314)
### ⚡ Performance
- d160dca linter/plugins: Reduce array lookups in visitor compilation
(#20249 ) (overlookmotel)
### 📚 Documentation
- 0c7da4f linter: Fix extra closing brace in example config. (#20253 )
(connorshea)
- 13606c3 linter/plugins: Update conformance README (#20234 )
(overlookmotel)
# Oxfmt
### 🐛 Bug Fixes
- 4ea67de oxlint,oxfmt: Skip `vite.config.ts` exports `defineConfig(fn)`
(#20260 ) (leaysgur)
- 11a2b45 oxfmt: Skip `vite.config.ts` w/o `.fmt` field in
auto-discovery (#20254 ) (leaysgur)
Co-authored-by: leaysgur <6259812+leaysgur@users.noreply.github.com >
2026-03-12 14:34:08 +09:00
Boshen
856781f99c
release(apps): oxlint v1.53.0 && oxfmt v0.38.0 ( #20218 )
...
# Oxlint
### 🚀 Features
- 04a5ce0 oxlint: Support `vite.config.ts` `.lint` field (#20214 )
(leaysgur)
- 1735215 linter: Implement `react/no-clone-element` rule. (#20129 )
(connorshea)
- 68e6f6f linter: Implement `react/no-react-children` rule. (#20104 )
(connorshea)
- fe3b32e linter/plugins: Add `oxlint-plugin-eslint` package (#20009 )
(overlookmotel)
### 🐛 Bug Fixes
- 05f6a09 linter/no-inline-comments: Deserialize rule options with serde
(#20207 ) (camc314)
- c7eb09d linter/default-case: Deserialize rule options with serde
(#20206 ) (camc314)
- f85e16c linter/plugins: Fix types for visitor compilation (#20203 )
(overlookmotel)
- 44e24e0 linter/exhaustive-deps: Ignore type-only typeof deps (#20201 )
(camc314)
- 0b04998 linter/no-fallthrough: Deserialize rule options with serde
(#20192 ) (camc314)
- a1031cb linter/new-cap: Deserialize rule options with serde (#20161 )
(camc314)
- 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)
- a9acb2b linter: Check `globals` entry for `no-undef`, only check
es2026 globals for `no-extend-native` and
`no-constant-binary-expression` (#20089 ) (Sysix)
- 5559f0d linter/no-unused-vars: `reportUsedIgnorePattern` should not
report used rest siblings (#20108 ) (Don Isaac)
- 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)
- 542a04a linter: Add a link to the cyclomatic complexity Wikipedia
article in `eslint/complexity` (#20174 ) (connorshea)
# Oxfmt
### 🚀 Features
- 95943aa oxfmt: Support `vite.config.*` `.fmt` field (#20197 )
(leaysgur)
- 172fc07 oxfmt: .js/.ts config file support (#20135 ) (leaysgur)
### 🐛 Bug Fixes
- e483569 oxfmt: Avoid double-escaping in css-in-js (#20211 ) (leaysgur)
Co-authored-by: leaysgur <6259812+leaysgur@users.noreply.github.com >
2026-03-11 14:27:15 +09:00
Boshen
9870467e00
release(apps): oxlint v1.52.0 && oxfmt v0.37.0 ( #20143 )
...
# Oxlint
### 🚀 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)
- b6e9499 linter: Fix the logic for `unicorn/prefer-dom-node-remove` to
handle literal callees as well as arguments. (#20059 ) (connorshea)
- 3874ae1 linter: Update `unicorn/prefer-query-selector` to also catch
`getElementsByName()`. (#20060 ) (connorshea)
- 77c93fb linter: Handle array-type shorthand inside union members
(#20034 ) (camc314)
- 50eb160 linter/no-unused-vars: Allow unused type params in ambient
module blocks (#19615 ) (Don Isaac)
- 1dd0d21 linter/no-restricted-imports: Apply regex pattern checks to
side-effect imports (#20028 ) (camc314)
- 7f3d735 linter: Error when --type-check is used without --type-aware
(#20025 ) (camc314)
- eea201c unicorn/prefer-string-slice: Avoid unsafe autofix for
substr-to-slice (#20010 ) (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)
- 753e27e linter/role-supports-aria-props: Add `aria-posinset` to
supported `option` ARIA properties (#20003 ) (JongKyung Lee)
- f57b2c9 linter/plugins: Fix return types of tokens methods (#19985 )
(overlookmotel)
- 27ee4fc linter/no-loss-of-precision: Avoid double rounding for
negative exponents (#19999 ) (camc314)
- 77a94bb linter: Avoid no-loss-of-precision false positive for 3e-308
(#19992 ) (camc314)
- 6245c56 linter/no-unused-private-class-members: Treat logical lhs
access as usage (#19991 ) (camc314)
- 65891e3 linter: Avoid prefer-const false positive for mixed-scope
destructuring (#19982 ) (camc314)
- 89991fe linter: Avoid prefer-const false positive for operator
reassignments (#19975 ) (camc314)
- 87318e7 oxlint/lsp: Load js config with reforcing fs read (#19551 )
(Sysix)
- d40a942 linter/no-useless-constructor: Mark fixer as suggestion
(#19961 ) (camc314)
- ccbd959 linter/prefer-code-point: Report String.fromCharCode member
references (#19931 ) (camc314)
- 14fbbfc linter: Add help text to oxc/no-rest-spread-properties rule
(#19900 ) (Subin Kim)
### ⚡ 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)
- 94b597a linter/plugins: Store tokens as a `Box<[Token]>` (#19969 )
(overlookmotel)
### 📚 Documentation
- 2c0010a linter/plugins: Move comment about "bivariance hack" into
generated code (#20082 ) (overlookmotel)
- 7538f09 linter: Improve `import/extensions` and
`import/no-named-as-default` rule docs. (#20053 ) (connorshea)
- 1f909cf linter: Improve docs for
`unicorn/require-post-message-target-origin` rule. (#20061 ) (connorshea)
- 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)
- d54c275 linter: Improve rule docs for 27 unicorn rules (#19903 )
(connorshea)
# Oxfmt
### 🚀 Features
- ee26215 oxfmt: Support css-in-js substitution (#20019 ) (leaysgur)
- 0f0ff51 oxfmt: Display default settings was used message in cli stats
(#19939 ) (leaysgur)
- 88815b8 oxfmt: Reintroduce stats line for write mode (#19938 )
(leaysgur)
### 🐛 Bug Fixes
- ee0491e apps,napi: Explicitly specify libs in tsconfigs (#20071 )
(camc314)
- 92f4490 oxfmt: Apply `is_ignored_dir` for glob paths too (#20056 )
(leaysgur)
- 114f974 oxfmt/lsp: Prefer language_id over file extension when
formatting (#19977 ) (copilot-swe-agent)
### ⚡ Performance
- 2baa5fb napi: Unify build-test profile to coverage for cache sharing
(#20090 ) (Boshen)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com >
2026-03-09 10:49:39 +00:00
Boshen
3d7b2ec91a
release(apps): oxlint v1.51.0 && oxfmt v0.36.0 ( #19912 )
...
# Oxlint
### 🚀 Features
- 2e0e1d0 linter/no-unused-vars: Add experimental fix mode controls
(off|suggestion|fix) (#19774 ) (camc314)
- f34f6fa linter: Introduce typeCheck config option (#19764 ) (camc314)
- 694be7d linter: Introduce typeAware as config options (#19614 )
(camc314)
- 655c38f semantic: Add "did you mean?" suggestions to undefined name
errors (#19102 ) (copilot-swe-agent)
- e97a57e linter/id-length: Use serde to deserialize rule options
(#19636 ) (camc314)
- c4a3677 parser: Report error for initializer in ambient context
(#19187 ) (camc314)
- 346045a linter/id-length: Add `checkGeneric` option (#19634 ) (camc314)
### 🐛 Bug Fixes
- 1b7a937 linter: Correct double-comparisons fix with swapped operands
(#19846 ) (camc314)
- c308857 linter/consistent_type_imports: Add missing help and notes to
diagnostics (#19827 ) (Daniel Osmond)
- 7682e5a linter/plugins: Decode escapes in identifier tokens (#19838 )
(overlookmotel)
- f368fcd linter/consistent_type_assertions: Add missing with_help and
with_note to diagnostics (#19826 ) (Daniel Osmond)
- 04e6223 npm: Add `preferUnplugged` for Yarn PnP compatibility (#19829 )
(Boshen)
- 86d5037 linter: Add help text to no-extend-native,
no-useless-backreference (#19733 ) (Anthony Amaro)
- 50e8eff linter: Add .with_help() to operator-assignment,
no-nonoctal-decimal-escape (#19732 ) (Anthony Amaro)
- 1417bdc linter/no-wrapper-object-types: Add help messages to missing
diagnostics (#19771 ) (Daniel Osmond)
- 0838477 linter/ban_ts_comment: Add help and notes to missing
diagnostics (#19781 ) (Daniel Osmond)
- e8c77cf linter/adjacent_overload_signatures: Add missing diagnostics
(#19780 ) (Daniel Osmond)
- 28834ac linter/ban_types: Add missing help and note to diagnostics
(#19782 ) (Daniel Osmond)
- fd938d3 linter/prefer-enum-initializers: Add help messages to missing
diagnostics (#19772 ) (Daniel Osmond)
- eb928ee linter/no-dynamic-delete: Add help messages to missing
diagnostics (#19768 ) (Daniel Osmond)
- a985666 linter/no-empty-interface: Add help messages to missing
diagnostics (#19769 ) (Daniel Osmond)
- 2dc0ceb linter/no-extra-non-null-assertion: Add help messages to
missing diagnostics (#19770 ) (Daniel Osmond)
- 95d5d66 linter/no-dupe-keys: Handle `__proto__` proto setters in
(#19762 ) (camc314)
- 24ff0db linter/exhaustive-deps: False positive for member expressions
in IIFEs (#19751 ) (Dennis Chen)
- 7243a58 linter/no-use-before-define: Honor `ignoreTypeReferences` when
value and type name collisions (#19747 ) (Dimava)
- eefd818 linter/explicit-module-boundary-types: Add help messages to
missing diagnostics (#19736 ) (Daniel Osmond)
- 0440e9a linter: Add help text to no_control_regex, no_fallthrough,
no_param_reassign (#19655 ) (Anthony Amaro)
- e84cb2f react/display-name: Handle merged type+value context symbols
(#19608 ) (camc314)
- ce7e253 linter/prefer-object-from-entries: Require exact path match in
unicorn helper (#19687 ) (camc314)
- f5694ce estree/tokens: Reverse field order of `regex` object in tokens
(#19679 ) (overlookmotel)
- b2b7a55 estree/tokens: Generate tokens for files with BOM (#19535 )
(overlookmotel)
- 0722721 linter/jsx-curly-brace-presence: False positive with prop &
mixed quotes (#19674 ) (camc314)
- 3496acd linter: Enhance diagnostic help messages for eslint rules
(#19653 ) (Anthony Amaro)
- e384e94 linter: Enhance help diagnostic messages for more eslint rules
(#19658 ) (Anthony Amaro)
- a4d5b34 linter: Avoid non-promise catch false positives (#19574 )
(camc314)
- 5706f38 linter: `unicorn/no-array-callback-reference` skip `Effect.*`
array-like methods name. (#19633 ) (Said Atrahouch)
### ⚡ 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
- d86f59e linter: Improve docs for no-useless-concat, mark as pending
fixer. (#19859 ) (connorshea)
- caa091d linter/plugins: Correct doc comments for `initTokens` (#19530 )
(overlookmotel)
- 2fa936f README.md: Map npm package links to npmx.dev (#19666 ) (Boshen)
- dc0ff73 linter/no-useless-constructor: Warn for parameter properties
as well (#19638 ) (Ole Asteo)
# Oxfmt
### 🚀 Features
- 5141bc2 formatter: Support trailing ignore comments (#19304 ) (Andreas
Lubbe)
- 4888a99 oxfmt/lsp: Support other schemes beside `file://` and
`untitled://` (#19872 ) (Sysix)
- 14a0181 oxfmt: Support `graphql()` variant for gql-in-js (#19703 )
(leaysgur)
- ca68ea6 oxfmt: Support gql-in-js substitution (#19670 ) (leaysgur)
- 035933c formatter,oxfmt: Support js-in-vue (partially) (#19514 )
(leaysgur)
- 9e11dc6 parser,estree,coverage: Collect tokens in parser and convert
to ESTree format (#19497 ) (camc314)
### 🐛 Bug Fixes
- 8e3842d oxfmt: Avoid embedded TSFN crash by returning errors as data
(take2) (#19806 ) (Yuji Sugiura)
- 04e6223 npm: Add `preferUnplugged` for Yarn PnP compatibility (#19829 )
(Boshen)
- e540585 oxfmt: Support tailwind sort for CSS/LESS/SCSS (#19803 )
(leaysgur)
- 93bb861 formatter: Trim trailing whitespace before breaking line
(#19740 ) (leaysgur)
- b85f97b formatter: Drop blank line between terminal call and first
chain member (#19659 ) (Dunqing)
### ⚡ Performance
- b3b2d30 parser: Introduce `ParserConfig` (#19637 ) (overlookmotel)
### 📚 Documentation
- 2fa936f README.md: Map npm package links to npmx.dev (#19666 ) (Boshen)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com >
2026-03-02 11:22:06 +00:00
Boshen
a08c28d763
release(apps): oxlint v1.50.0 && oxfmt v0.35.0 ( #19627 )
...
# Oxlint
### 🚀 Features
- 46177dd linter: Implement unicorn/prefer-module (#19603 ) (camc314)
- 42f78bb linter: Implement unicorn/prefer-ternary (#19605 ) (camc314)
### 🐛 Bug Fixes
- 43df857 react/exhaustive-deps: Normalize .current callback deps
(#19610 ) (camc314)
- 574f48f linter/no-throw-literal: Close warning block (#19612 )
(camc314)
- 79fe3b4 linter/prefer-mock-return-shorthand: Avoid unsafe autofixes
for call-like returns (#19581 ) (camc314)
- 85045e8 linter: Check protected members in
explicit-module-boundary-types (#19594 ) (camc314)
- e38115e linter: Catch missing return type on exported arrow/function
expressions (#19587 ) (Peter Wagenet)
- 419d3fd linter: Fix false negatives in typescript/no-require-imports
(#19589 ) (Peter Wagenet)
- 7958b56 linter: Fix syntax error reporting in some output formatters.
(#19590 ) (connorshea)
- 024f51c linter: Add help text to more eslint diagnostics (#19591 )
(Anthony Amaro)
- a8489a1 linter: Warning `eslint/no-throw-literal` rule to be
deprecated, better use `typescript/only-throw-error` (#19593 ) (Said
Atrahouch)
- 50fc70d linter/type-aware: Use correct span for disable directives
(#19576 ) (camc314)
- 421a99c linter: Add help guidance to eslint diagnostic messages
(#19562 ) (Anthony Amaro)
- e81364a linter: Add help text to eslint rule diagnostics (#19560 )
(Anthony Amaro)
- 89b58d0 linter: Add help text to more eslint rule diagnostics (#19561 )
(Anthony Amaro)
- 74f7833 linter/jest/prefer-mock-return-shorthand: Preserve typed arrow
returns (#19556 ) (camc314)
- bdd6f34 linter: Restrict prefer-import-in-mock to mock calls (#19555 )
(camc314)
### 📚 Documentation
- a331993 linter: Improve docs for `eslint/radix` rule. (#19611 )
(connorshea)
### 🛡️ Security
- c67f9dc linter: Update ajv version. (#19613 ) (connorshea)
# Oxfmt
### 🚀 Features
- 984dc07 oxfmt: Strip `"experimental"SortXxx` prefix (#19567 )
(leaysgur)
### 🐛 Bug Fixes
- d7b63a4 oxfmt: Update API types for `sortPackageJsonOptions` (#19569 )
(leaysgur)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com >
2026-02-23 10:07:22 +00:00
Boshen
3f0d1dd78b
release(apps): oxlint v1.49.0 && oxfmt v0.34.0 ( #19553 )
...
# Oxlint
### 💥 BREAKING CHANGES
- 4315594 oxlint: [**BREAKING**] Deprecate `"always"` and `"as-needed"`
options of the radix rule (#19408 ) (Sysix)
- d4c7af3 linter: [**BREAKING**] Remove
`allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing` option (#19451 )
(camc314)
### 🚀 Features
- 82ca5c3 linter: Add typescript/dot-notation rule (#19442 ) (camc314)
- 6db0811 linter: Implement
eslint-plugin-vitest/no-importing-vitest-globals (#18694 ) (Said
Atrahouch)
- c7fe8ae linter: Implement eslint-plugin-vitest/prefer-import-in-mock
(#17966 ) (Said Atrahouch)
- 0abb39a linter: Implement
eslint-vitest-jest-plugin/prefer-mock-return-shorthand (#18002 ) (Said
Atrahouch)
- 2b95537 linter: Implement `n/no-path-concat` rule (#19502 ) (Mikhail
Baev)
- 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)
### 🐛 Bug Fixes
- daad7bc linter/array-callback-return: Check `allowVoid` option
(#19506 ) (Said Atrahouch)
- 638cf94 linter: Add help text to eslint rule diagnostics (#19508 )
(Kyle Tse)
- 79fc6d7 linter: Move no-use-before-define to eslint plugin (#19438 )
(camc314)
- c832a9f linter: Add `onScrollEnd` and `onScrollEndCapture` to
`react/no-unknown-property`. (#19536 ) (connorshea)
- 999a0db linter: Add help text to `symbol-description` diagnostics
(#19538 ) (Anthony Amaro)
- f064482 linter: Add help text to eslint rule diagnostics (#19539 )
(Anthony Amaro)
- fd11073 linter/react/no-unknown-property: Add missing `fetchPriority`
prop (#19525 ) (João Pedro Schmitz)
- a9bb604 linter/no-shadow: Align initializer shadow handling with
typescript-eslint (#19462 ) (camc314)
- 32e6eb9 linter: Handle typed arrays/array buffers in `prefer-spread`
rule. (#19478 ) (connorshea)
- e309f84 linter: Handle additional cases in
`typescript/consistent-generic-constructors` rule. (#19477 ) (connorshea)
- 71db91a linter/array-callback-return: Check `fromAsync`, update test
cases (#19483 ) (Said Atrahouch)
- 2a12d74 linter: Handle optional chaining in
`no-array-method-this-argument` rule. (#19476 ) (connorshea)
- f65310b linter: Handle optional chaining in
`prefer-object-from-entries` rule. (#19475 ) (connorshea)
- 840acf4 linter: Handle optional chain in
`no-unnecessary-array-flat-depth` rule. (#19471 ) (connorshea)
- 85a19e9 linter: Skip string literal imports in `consistent-assert`
rule. (#19474 ) (connorshea)
### ⚡ Performance
- 6155ac4 linter/constructor-super: Use node_id over nodes loop (#19489 )
(camc314)
- a02496d linter/consistent-index-object-style: Resolve circular type
refs semantically (#19490 ) (camc314)
# Oxfmt
### 🚀 Features
- 652c346 oxfmt/lsp: Support `untitled://` schema (#19287 ) (Sysix)
### 🐛 Bug Fixes
- 6c61b70 oxfmt: Fix outdated `sortImports.groups` doc comments (#19513 )
(leaysgur)
Co-authored-by: camc314 <18101008+camc314@users.noreply.github.com >
2026-02-19 19:47:15 +00:00
Boshen
761e54c177
release(apps): oxlint v1.48.0 && oxfmt v0.33.0 ( #19430 )
...
# Oxlint
### 💥 BREAKING CHANGES
- 7711821 oxlint: [**BREAKING**] `no-shadow-restricted-names` report
`globalThis` by default (#19407 ) (Sysix)
### 🚀 Features
- ce1baa0 linter: Implement eslint/no-shadow (#18979 ) (Víctor Fernández)
- 7a333c1 linter: Support dynamic configs via CLI arguments (#19384 )
(camc314)
- 1bf569b linter: Implement typescript/unified-signatures (#19375 )
(camc314)
- 6562a9b linter: Implement typescript/parameter-properties (#19374 )
(camc314)
- 94d8d74 linter: Implement typescript/no-use-before-define (#19373 )
(camc314)
- 80b002a linter: Implement fixer for unicorn/no-instanceof-builtins
(#19371 ) (camc314)
- 5c3784b linter: Implement eslint/no-unmodified-loop-condition (#19341 )
(Vincent R)
- cc00a59 linter/const-comparisons: Improve diagnostics when mixing
logical/comparison operators (#19370 ) (camc314)
- ea2c401 linter: Add support for no constructed context values (#18067 )
(Jovi De Croock)
- f2440eb linter: Mark eslint/no-return-assign as having no fixer
(#19327 ) (camc314)
- 8588670 linter/unicorn: Implement suggestion for
`unicorn/no-await-in-promise-methods` rule (#19359 ) (Mikhail Baev)
- f0af965 linter: Move `jsx-a11y/no-static-element-interactions` rule
out of the nursery. (#19355 ) (connorshea)
- be0ce50 linter/tsgolint: Add support for labeled ranges in tsgolint
diagnostics (#19201 ) (camchenry)
- b5bc900 linter: Implement fixer for unicorn/no-new-buffer (#19326 )
(camc314)
- 1612932 linter: Add typescript/no-unnecessary-condition (#19130 )
(camc314)
- 37dc6c5 linter: Implement fixer for unicorn/prefer-includes (#19323 )
(camc314)
### 🐛 Bug Fixes
- c2b1870 linter: Enforce config options for `react/forbid-dom-props`
rule. (#19387 ) (connorshea)
- 3d24e44 linter: Honor no-empty-function allow getters/setters for
object literals (#19393 ) (camc314)
- bbced8d linter: Enforce config options for `eslint/no-empty-function`
rule, improve docs. (#19390 ) (connorshea)
- 6bc8aec linter: Fix the behavior of `import/extensions` rule for a
file that has multiple extensions. (#18919 ) (connorshea)
- c62a295 linter/img-redundant-alt: Enforce whole-word matching for
redundant alt text (#19367 ) (camc314)
- 98956fe linter/describe-function-title: Skip autofix for type-only
imports (#19329 ) (camc314)
- d96d26d linter/plugins: Provide `parser.version` (#19364 )
(overlookmotel)
- 81f0039 linter_codegen: Compute rule IDs relative to previous rule
(#19350 ) (camchenry)
- b7ef0a8 linter/consistent-indexed-object-style: Avoid unsafe Record
conversions for mapped types (#19320 ) (camc314)
### 📚 Documentation
- 3a6059f linter: Improve docs for `eslint/require-await` rule. (#19361 )
(connorshea)
- b069269 linter/plugins: Add comment about deprecated `ScopeManager`
methods (#19363 ) (overlookmotel)
- 2d8aaf9 linter: Disable formatting for `eslint/no-unsafe-negation`
examples. (#19347 ) (connorshea)
- fb87806 linter: Ensure that we do not auto-format the docs for
`unicorn/number-literal-case` rule. (#19346 ) (connorshea)
- 8d3ae27 linter/typescript: Skip docs for deprecated type aware rule
options (#19324 ) (camc314)
# Oxfmt
### 💥 BREAKING CHANGES
- 00135b5 formatter/sort_imports: [**BREAKING**] Change default `groups`
order (#19427 ) (leaysgur)
- 9c34f72 formatter/sort_imports: [**BREAKING**] Report invalid group
name with renaming `side-effect` > `side_effect` (#19416 ) (leaysgur)
### 🚀 Features
- 4baebef formatter/sort_imports: Support `{ newlinesBetween: bool }`
inside `groups` (#19358 ) (leaysgur)
- d1c2fb6 formatter/sort_imports: Support `customGroups`
attributes(`selector` and `modifiers`) (#19356 ) (leaysgur)
### 🐛 Bug Fixes
- f084ea6 oxfmt: Explicitly pass `process.env` for the forked process
(#19380 ) (Long Ho)
- 2bc7a14 formatter: Arrow function body incorrectly broken when return
type has comment (#19368 ) (Dunqing)
- 90ec3d2 oxfmt: Update tailwind plugin which fixes crash on non-js file
(#19353 ) (leaysgur)
- e9c5b1e formatter: Treat `PrivateFieldExpression` as simple call
argument (#19348 ) (Dunqing)
- 80643d5 formatter: Match Prettier union indentation with leading
comments (#19271 ) (Dunqing)
### ⚡ Performance
- c169c77 syntax: Optimize `is_identifier_name_patched` (#19386 )
(sapphi-red)
2026-02-16 13:04:15 +00:00
Boshen
65b94f9641
release(apps): oxlint v1.47.0 && oxfmt v0.32.0 ( #19315 )
...
# Oxlint
### 🚀 Features
- ebb80b3 ast: Add `node_id` field to all AST struct nodes (#18138 )
(Boshen)
- 2879fc5 linter: Implement fixer for unicorn/prefer-math-trunc (#19275 )
(camc314)
- a204eda linter: Implement fixer for unicorn/no-typeof-undefined
(#19274 ) (camc314)
- ab46d9c linter: Implement typescript/class-literal-property-style
(#19252 ) (Vincent R)
- 1a61f58 linter: Implement typescript/no-invalid-void-type (#19242 )
(Vincent R)
### 🐛 Bug Fixes
- 45adda2 oxlint/lsp: Use blocking stdio in Oxlint (#19292 )
(overlookmotel)
- 05bc855 linter/import: Count unique module sources in max-dependencies
(#19270 ) (camc314)
- 8566b44 linter: Check for preceeding token in math trunc fixer
(#19277 ) (camc314)
- f16f2b6 linter/import-no-cycle: Avoid traversal-order false negatives
with type-only edges (#19267 ) (camc314)
- d4937e7 linter: Recognize module-scoped callback refs as stable in
exhaustive-deps (#19220 ) (Sreetam Das)
- 140c9bd linter: Detect fallthrough from `default` when it is not the
last case (#19261 ) (Boshen)
- 740a009 linter: Accept digits after 'use' in hook names (#19254 )
(Sreetam Das)
- 31b562f linter: Update `import/no-named-as-default` to allow named
import if equivalent to the default import (#19100 ) (connorshea)
- 79c82cc linter: Avoid applying object-level docs to nested object
methods in require-param (#19231 ) (camc314)
### ⚡ Performance
- 5670291 linter/class-literal-property-style: Avoid unneeded string
allocations (#19262 ) (camc314)
# Oxfmt
### 🚀 Features
- ebb80b3 ast: Add `node_id` field to all AST struct nodes (#18138 )
(Boshen)
### 🐛 Bug Fixes
- 1957908 formatter: Avoid unnecessary parentheses for string literal in
labeled statement (#19272 ) (Dunqing)
Co-authored-by: camc314 <18101008+camc314@users.noreply.github.com >
2026-02-12 10:43:26 +00:00
overlookmotel
9fd3bd6605
feat(linter/plugins): add @oxlint/plugins NPM package ( #18824 )
...
Alternative to #18796 . Part of #18610 .
## Overview
Add `@oxlint/plugins` package.
`@oxlint/plugins` package has no dependency on `oxlint`, which solves the problem raised in https://github.com/oxc-project/oxc/pull/18796#discussion_r2751286894 , and is also what we wanted in the end anyway. We don't actually want plugins packages to have to depend on `oxlint`.
## Differences from other Oxc packages
This package is different from all our other packages, in that it's intended to work not only with Oxlint's ecosystem, but also with ESLint's ecosystem.
`@oxlint/plugins` will be a *runtime* dependency of plugin packages that the community create, and they may want their plugin to be compatible with both Oxlint and ESLint - this package provides the `eslintCompatPlugin` function for exactly this purpose.
Our aim is to allow plugin authors to migrate from ESLint's `create` API to Oxlint's `createOnce` API with minimum friction, and without breaking changes for their users:
1. Their plugin should remain compatible with ESLint.
2. They do not need to alter the versions of NodeJS they support (no change to `engines` field in `package.json`).
3. They can continue to publish their plugin as a CommonJS package, if that's the format they currently use.
## Package composition
Due to these requirements, the make-up of `@oxlint/plugins` is different from our other packages:
### Dual Format
This package is in "dual package" format, with both ESM and CommonJS entry points.
### Older NodeJS versions support
This package supports NodeJS versions back to v12.22.0.
https://github.com/oxc-project/oxc/blob/9938dc476f8533b7011af03cdbac328b0d00d344/npm/oxlint-plugins/package.json#L40-L42
This matches `engines` field in all ESLint 8.x.x releases:
* 8.0.0: https://www.npmjs.com/package/eslint/v/8.0.0?activeTab=code
* 8.57.1: https://www.npmjs.com/package/eslint/v/8.57.1?activeTab=code
Therefore, `@oxlint/plugins` can be used by any plugin which supports ESLint 8 or later.
Note: Download counts for ESLint 8 are still roughly equal to ESLint 9, even though v9 was released 2 years ago.
#### Notes
* Changing `target` in TSDown to `"node12"` does not result in any changes to built files. See 3rd commit in this PR.
* `exports` field in `package.json` is supported (without experimental flag) from NodeJS v12.17.0 + v14.0.0.
* `.cjs` file extension supported from NodeJS v12.0.0.
## Building the package
This PR adds 2 extra builds to TSDown config, which generate the files for the package. `build.ts` script moves the files into `npm/oxlint-plugins` directory.
Later on, we'll move the logic for moving the files into the CI release workflow, so we don't need to check the generated build files into Git.
## `@oxlint/plugins-dev`
In #18610 we decided to also add an `@oxlint/plugins-dev` to contain `RuleTester`, so we can move that out of `oxlint` package. This PR *does not* add that package. I've skipped that for now as (a) it's trickier and (b) it's much less important.
2026-02-03 15:46:17 +00:00