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
leaysgur
5f9580dce2
fix(oxfmt): bump prettier-plugin-tailwindcss ( #26273 )
...
Contains https://github.com/tailwindlabs/prettier-plugin-tailwindcss/pull/472
2026-09-03 06:24:19 +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
leaysgur
9d0e3d34f3
chore(oxfmt): bump tinypool ( #26191 )
...
Security fixes: https://github.com/tinylibs/tinypool/releases
2026-08-31 01:16:52 +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
leaysgur
f5bfec5014
chore(oxfmt): update prettier to 3.9.6 ( #24880 )
...
https://github.com/prettier/prettier/blob/3.9.6/CHANGELOG.md#396
2026-07-24 05:39:15 +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
renovate
577cbbe3ed
chore(deps): update dependency execa to v10 ( #24695 )
...
This PR contains the following updates:
| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/ ) | [Adoption](https://docs.renovatebot.com/merge-confidence/ ) | [Passing](https://docs.renovatebot.com/merge-confidence/ ) | [Confidence](https://docs.renovatebot.com/merge-confidence/ ) |
|---|---|---|---|---|---|
| [execa](https://redirect.github.com/sindresorhus/execa ) | [`^9.6.0` → `^10.0.0`](https://renovatebot.com/diffs/npm/execa/9.6.1/10.0.0 ) |  |  |  |  |
---
### Release Notes
<details>
<summary>sindresorhus/execa (execa)</summary>
### [`v10.0.0`](https://redirect.github.com/sindresorhus/execa/releases/tag/v10.0.0 )
[Compare Source](https://redirect.github.com/sindresorhus/execa/compare/v9.6.1...v10.0.0 )
##### Breaking
- Require Node.js 22. ([#​1243](https://redirect.github.com/sindresorhus/execa/issues/1243 )) [`04b4454`](https://redirect.github.com/sindresorhus/execa/commit/04b4454 )
- The subprocess is now a normal promise, instead of a [`ChildProcess`](https://nodejs.org/api/child_process.html#class-childprocess ) instance augmented with promise methods. All the methods and properties [documented by Execa](docs/api.md#subprocess) are unchanged. Node.js-specific `ChildProcess` APIs (such as `.on()`, `.send()`, `.ref()` and `.unref()`) must now be accessed through the new [`subprocess.nodeChildProcess`](docs/api.md#subprocessnodechildprocess) property. ([#​1255](https://redirect.github.com/sindresorhus/execa/issues/1255 )) [`ade74bf`](https://redirect.github.com/sindresorhus/execa/commit/ade74bf )
```diff
const subprocess = execa('node', ['file.js']);
- subprocess.on('spawn', onSpawn);
+ subprocess.nodeChildProcess.on('spawn', onSpawn);
```
- Removed `execaCommand()` and `execaCommandSync()`. Use the [template string syntax](docs/execution.md#template-string-syntax) instead, which splits on spaces. If the command is a dynamic string, split it with [`parseCommandString()`](docs/api.md#parsecommandstringcommand). ([#​1244](https://redirect.github.com/sindresorhus/execa/issues/1244 )) [`3ced394`](https://redirect.github.com/sindresorhus/execa/commit/3ced394 )
```diff
- await execaCommand('npm run build');
+ await execa`npm run build`;
- await execaCommand(commandString);
+ await execa`${parseCommandString(commandString)}`;
```
- Removed the old undocumented `stdio: [..., 'ipc']` syntax. Use the [`ipc: true`](docs/api.md#optionsipc) option instead. ([#​1245](https://redirect.github.com/sindresorhus/execa/issues/1245 )) [`dcf611c`](https://redirect.github.com/sindresorhus/execa/commit/dcf611c )
```diff
- await execa('node', ['file.js'], {stdio: ['pipe', 'pipe', 'pipe', 'ipc']});
+ await execa('node', ['file.js'], {ipc: true});
```
- When the [`input`](docs/api.md#optionsinput) or [`inputFile`](docs/api.md#optionsinputfile) option is combined with an inherited [`stdin`](docs/api.md#optionsstdin) (for example `stdio: 'inherit'`), the explicit input is now used, instead of being ignored. To combine [multiple inputs](docs/input.md#multiple-inputs), pass an array like `stdin: ['inherit', {string: 'input'}]`. ([#​1232](https://redirect.github.com/sindresorhus/execa/issues/1232 )) [`3ed0544`](https://redirect.github.com/sindresorhus/execa/commit/3ed0544 )
##### Improvements
- Terminate the subprocess' [descendant processes](docs/termination.md#killing-descendant-processes) by using the [`killDescendants`](docs/api.md#optionskilldescendants) option. This is useful when the subprocess spawns its own processes, such as when using the [`shell`](docs/api.md#optionsshell) option. ([#​1256](https://redirect.github.com/sindresorhus/execa/issues/1256 )) [`84fa0ec`](https://redirect.github.com/sindresorhus/execa/commit/84fa0ec )
```js
await execa('npm', ['run', 'build'], {killDescendants: true, timeout: 5000});
```
- [Convert the subprocess](docs/streams.md#converting-a-subprocess-to-a-web-stream) to a web stream by using [`subprocess.readableStream()`](docs/api.md#subprocessreadablestreamreadableoptions), [`subprocess.writableStream()`](docs/api.md#subprocesswritablestreamwritableoptions) or [`subprocess.transformStream()`](docs/api.md#subprocesstransformstreamduplexoptions). ([#​1254](https://redirect.github.com/sindresorhus/execa/issues/1254 )) [`29d9cfc`](https://redirect.github.com/sindresorhus/execa/commit/29d9cfc )
```js
await execa`npm run build`
.readableStream()
.pipeTo(writableWebStream);
```
- The value returned by [`subprocess.pipe()`](docs/api.md#subprocesspipefile-arguments-options) now exposes the destination subprocess' methods, so the piped output can be consumed directly: [iterate](docs/pipe.md#iterate-stream-and-ipc) over its output lines, [convert it to a stream](docs/streams.md#converting-a-subprocess-to-a-stream), or [exchange IPC messages](docs/ipc.md#exchanging-messages). ([#​1252](https://redirect.github.com/sindresorhus/execa/issues/1252 )) [`c31c94c`](https://redirect.github.com/sindresorhus/execa/commit/c31c94c )
```js
for await (const line of execa`npm run build`.pipe`sort`) {
console.log(line);
}
```
- Use an [additional file descriptor as input](docs/input.md#additional-file-descriptors) by wrapping its [`stdio`](docs/api.md#optionsstdio) value as a `{value, input: true}` object. Direction-ambiguous values (`'pipe'`, `'inherit'`, [files](docs/input.md#file-input) and [transforms](docs/transform.md)) default to output on additional file descriptors. ([#​1246](https://redirect.github.com/sindresorhus/execa/issues/1246 ), [#​1249](https://redirect.github.com/sindresorhus/execa/issues/1249 )) [`487a3a4`](https://redirect.github.com/sindresorhus/execa/commit/487a3a4 ) [`9fbf5ba`](https://redirect.github.com/sindresorhus/execa/commit/9fbf5ba )
```js
const subprocess = execa({stdio: ['pipe', 'pipe', 'pipe', {value: 'pipe', input: true}]})`npm run scaffold`;
const writable = subprocess.writable({to: 'fd3'});
```
- The [transform](docs/transform.md) generator function's `chunk` argument is now typed based on the transform's mode, instead of always being `unknown`: `string` for line transforms, `Uint8Array` for [binary transforms](docs/binary.md#transforms), and `unknown` in [object mode](docs/transform.md#object-mode). ([#​1247](https://redirect.github.com/sindresorhus/execa/issues/1247 )) [`0a7b4f8`](https://redirect.github.com/sindresorhus/execa/commit/0a7b4f8 )
##### Fixes
- Fixed [fd-specific options](docs/output.md#stdoutstderr-specific-options) ([`verbose`](docs/api.md#optionsverbose), [`maxBuffer`](docs/api.md#optionsmaxbuffer), etc.) when the [`ipc`](docs/api.md#optionsipc) option is `true`: `fd3` and `ipc` no longer target the same file descriptor. ([#​1241](https://redirect.github.com/sindresorhus/execa/issues/1241 )) [`b886883`](https://redirect.github.com/sindresorhus/execa/commit/b886883 )
***
</details>
---
### Configuration
📅 **Schedule**: (in timezone Asia/Shanghai)
- Branch creation
- "before 10am on monday"
- Automerge
- At any time (no schedule defined)
🚦 **Automerge**: Enabled.
♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about this update again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/ ). View the [repository job log](https://developer.mend.io/github/oxc-project/oxc ).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNjUuMSIsInVwZGF0ZWRJblZlciI6IjQzLjI2NS4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
2026-07-20 07:17:09 +00: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
leaysgur
a8f825eac1
chore(oxfmt): update prettier to 3.9.5 ( #24424 )
2026-07-13 00:13:32 +00: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
leaysgur
b732abd8dd
chore(oxfmt): update prettier to 3.9.4 ( #24201 )
...
Update to the latest before our release.
2026-07-06 02:00:31 +00:00
leaysgur
7d663d3fd0
chore(oxfmt): update prettier to 3.9.1 ( #23931 )
...
Part of https://github.com/oxc-project/oxc/issues/23923
2026-07-03 07:12:06 +00: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
leaysgur
439214b97c
chore(oxfmt): update prettier-plugin-svelte@4.1.1 ( #23696 )
2026-06-22 01:11:28 +00: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
leaysgur
4503faa630
chore(oxfmt): update prettier@3.8.4 ( #23312 )
...
> https://github.com/prettier/prettier/releases/tag/3.8.4
Only fixes bug in markdown.
2026-06-12 02:30:03 +00: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
leaysgur
5d1117a707
chore(oxfmt): update svelte@5.56 to support declaration tags ( #23108 )
...
Follow up on #23087 + #22993 , thanks @firatciftci !
NOTE: This is internal updates. If users want it, need to update `svelte` deps by yourself.
2026-06-08 03:47:16 +00:00
renovate[bot]
cdc0ac4aef
chore(deps): update npm packages ( #23087 )
...
This PR contains the following updates:
| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/ ) |
[Adoption](https://docs.renovatebot.com/merge-confidence/ ) |
[Passing](https://docs.renovatebot.com/merge-confidence/ ) |
[Confidence](https://docs.renovatebot.com/merge-confidence/ ) |
|---|---|---|---|---|---|
|
[@arethetypeswrong/core](https://redirect.github.com/arethetypeswrong/arethetypeswrong.github.io )
([source](https://redirect.github.com/arethetypeswrong/arethetypeswrong.github.io/tree/HEAD/packages/core ))
| [`0.18.2` →
`0.18.3`](https://renovatebot.com/diffs/npm/@arethetypeswrong%2fcore/0.18.2/0.18.3 )
|

|

|

|

|
| [@codspeed/vitest-plugin](https://codspeed.io )
([source](https://redirect.github.com/CodSpeedHQ/codspeed-node )) |
[`5.4.0` →
`5.5.0`](https://renovatebot.com/diffs/npm/@codspeed%2fvitest-plugin/5.4.0/5.5.0 )
|

|

|

|

|
|
[@typescript-eslint/parser](https://typescript-eslint.io/packages/parser )
([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser ))
| [`8.60.0` →
`8.60.1`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fparser/8.60.0/8.60.1 )
|

|

|

|

|
|
[@typescript-eslint/scope-manager](https://typescript-eslint.io/packages/scope-manager )
([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/scope-manager ))
| [`8.60.0` →
`8.60.1`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fscope-manager/8.60.0/8.60.1 )
|

|

|

|

|
| [@typescript-eslint/visitor-keys](https://typescript-eslint.io )
([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/visitor-keys ))
| [`8.60.0` →
`8.60.1`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fvisitor-keys/8.60.0/8.60.1 )
|

|

|

|

|
| [@vitest/browser](https://vitest.dev/guide/browser/ )
([source](https://redirect.github.com/vitest-dev/vitest/tree/HEAD/packages/browser ))
| [`4.1.7` →
`4.1.8`](https://renovatebot.com/diffs/npm/@vitest%2fbrowser/4.1.7/4.1.8 )
|

|

|

|

|
|
[@vitest/browser-playwright](https://vitest.dev/config/browser/playwright )
([source](https://redirect.github.com/vitest-dev/vitest/tree/HEAD/packages/browser-playwright ))
| [`4.1.7` →
`4.1.8`](https://renovatebot.com/diffs/npm/@vitest%2fbrowser-playwright/4.1.7/4.1.8 )
|

|

|

|

|
| [degit](https://redirect.github.com/Rich-Harris/degit ) | [`3.3.2` →
`3.4.1`](https://renovatebot.com/diffs/npm/degit/3.3.2/3.4.1 ) |

|

|

|

|
| [eslint](https://eslint.org )
([source](https://redirect.github.com/eslint/eslint )) | [`10.4.0` →
`10.4.1`](https://renovatebot.com/diffs/npm/eslint/10.4.0/10.4.1 ) |

|

|

|

|
|
[prettier-plugin-svelte](https://redirect.github.com/sveltejs/prettier-plugin-svelte )
| [`4.0.1` →
`4.1.0`](https://renovatebot.com/diffs/npm/prettier-plugin-svelte/4.0.1/4.1.0 )
|

|

|

|

|
| [svelte](https://svelte.dev )
([source](https://redirect.github.com/sveltejs/svelte/tree/HEAD/packages/svelte ))
| [`5.55.10` →
`5.56.1`](https://renovatebot.com/diffs/npm/svelte/5.55.10/5.56.1 ) |

|

|

|

|
| [tsx](https://tsx.hirok.io )
([source](https://redirect.github.com/privatenumber/tsx )) | [`4.22.3` →
`4.22.4`](https://renovatebot.com/diffs/npm/tsx/4.22.3/4.22.4 ) |

|

|

|

|
| [type-fest](https://redirect.github.com/sindresorhus/type-fest ) |
[`5.6.0` →
`5.7.0`](https://renovatebot.com/diffs/npm/type-fest/5.6.0/5.7.0 ) |

|

|

|

|
| [vitest](https://vitest.dev )
([source](https://redirect.github.com/vitest-dev/vitest/tree/HEAD/packages/vitest ))
| [`4.1.7` →
`4.1.8`](https://renovatebot.com/diffs/npm/vitest/4.1.7/4.1.8 ) |

|

|

|

|
|
[vscode-languageserver-protocol](https://redirect.github.com/Microsoft/vscode-languageserver-node )
([source](https://redirect.github.com/Microsoft/vscode-languageserver-node/tree/HEAD/protocol ))
| [`3.17.5` →
`3.18.0`](https://renovatebot.com/diffs/npm/vscode-languageserver-protocol/3.17.5/3.18.0 )
|

|

|

|

|
---
### Release Notes
<details>
<summary>arethetypeswrong/arethetypeswrong.github.io
(@​arethetypeswrong/core)</summary>
###
[`v0.18.3`](https://redirect.github.com/arethetypeswrong/arethetypeswrong.github.io/blob/HEAD/packages/core/CHANGELOG.md#0183 )
##### Patch Changes
-
[`14e61d5`](https://redirect.github.com/arethetypeswrong/arethetypeswrong.github.io/commit/14e61d5 ):
Update [@​types/node](https://redirect.github.com/types/node ), use
[@​typescript/native-preview](https://redirect.github.com/typescript/native-preview )
for local build/check
-
[`25031aa`](https://redirect.github.com/arethetypeswrong/arethetypeswrong.github.io/commit/25031aa ):
- Fix "Cannot read properties of undefined (reading 'filename')" caused
by fflate 0.8.3
([#​258](https://redirect.github.com/arethetypeswrong/arethetypeswrong.github.io/issues/258 ))
- Bump fflate to ^0.8.3
</details>
<details>
<summary>CodSpeedHQ/codspeed-node
(@​codspeed/vitest-plugin)</summary>
###
[`v5.5.0`](https://redirect.github.com/CodSpeedHQ/codspeed-node/releases/tag/v5.5.0 )
[Compare
Source](https://redirect.github.com/CodSpeedHQ/codspeed-node/compare/v5.4.0...v5.5.0 )
### Highlights
We are introducing `@codspeed/playwright`, for walltime benchmarking and
profiling of end to end browser applications through playwright.
Here's an example usage, but head to the
[docs](https://codspeed.io/docs/benchmarks/nodejs/playwright ) for more
information
```typescript
import { bench, type Page } from "@​codspeed/playwright-plugin";
import electronExecutable from "electron";
import path from "node:path";
import { fileURLToPath } from "node:url";
const __dirname = path.dirname(fileURLToPath(import.meta.url));
const appRoot = path.resolve(__dirname, "..");
async function waitUntilSettled(page: Page): Promise<void> {
await page.waitForFunction(() => {
const main = document.getElementById("main");
return !!main && !main.classList.contains("loading");
});
}
await bench(
"inbox-search-archive-threads",
async ({ page }) => {
await page.fill("#search", "update");
await waitUntilSettled(page);
await page.click("#select-visible-btn");
await page.click("#archive-btn");
await waitUntilSettled(page);
await page.click('#sidebar nav button[data-view="threads"]');
await waitUntilSettled(page);
},
{
target: {
kind: "electron",
appPath: path.join(appRoot, "out/main/index.js"),
cwd: appRoot,
},
beforeRound: async ({ page }) => {
page.setDefaultTimeout(180_000);
await page.waitForSelector("#main");
await waitUntilSettled(page);
},
},
);
```
Note: this plugin is only compatible with the walltime instrument.
#### What's Changed
- Add playwright profiling package by
[@​GuillaumeLagrange](https://redirect.github.com/GuillaumeLagrange )
in
[#​80](https://redirect.github.com/CodSpeedHQ/codspeed-node/pull/80 )
**Full Changelog**:
<https://github.com/CodSpeedHQ/codspeed-node/compare/v5.4.0...v5.5.0 >
</details>
<details>
<summary>typescript-eslint/typescript-eslint
(@​typescript-eslint/parser)</summary>
###
[`v8.60.1`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#8601-2026-06-01 )
[Compare
Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.60.0...v8.60.1 )
This was a version bump only for parser to align it with other projects,
there were no code changes.
See [GitHub
Releases](https://redirect.github.com/typescript-eslint/typescript-eslint/releases/tag/v8.60.1 )
for more information.
You can read about our [versioning
strategy](https://typescript-eslint.io/users/versioning ) and
[releases](https://typescript-eslint.io/users/releases ) on our website.
</details>
<details>
<summary>typescript-eslint/typescript-eslint
(@​typescript-eslint/scope-manager)</summary>
###
[`v8.60.1`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/scope-manager/CHANGELOG.md#8601-2026-06-01 )
[Compare
Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.60.0...v8.60.1 )
This was a version bump only for scope-manager to align it with other
projects, there were no code changes.
See [GitHub
Releases](https://redirect.github.com/typescript-eslint/typescript-eslint/releases/tag/v8.60.1 )
for more information.
You can read about our [versioning
strategy](https://typescript-eslint.io/users/versioning ) and
[releases](https://typescript-eslint.io/users/releases ) on our website.
</details>
<details>
<summary>typescript-eslint/typescript-eslint
(@​typescript-eslint/visitor-keys)</summary>
###
[`v8.60.1`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/visitor-keys/CHANGELOG.md#8601-2026-06-01 )
[Compare
Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.60.0...v8.60.1 )
This was a version bump only for visitor-keys to align it with other
projects, there were no code changes.
See [GitHub
Releases](https://redirect.github.com/typescript-eslint/typescript-eslint/releases/tag/v8.60.1 )
for more information.
You can read about our [versioning
strategy](https://typescript-eslint.io/users/versioning ) and
[releases](https://typescript-eslint.io/users/releases ) on our website.
</details>
<details>
<summary>vitest-dev/vitest (@​vitest/browser)</summary>
###
[`v4.1.8`](https://redirect.github.com/vitest-dev/vitest/releases/tag/v4.1.8 )
[Compare
Source](https://redirect.github.com/vitest-dev/vitest/compare/v4.1.7...v4.1.8 )
##### 🐞 Bug Fixes
- **browser**:
- Disable client `cdp` API when `allowWrite/allowExec: false` \[backport
to v4] - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa )
and **Codex** in
[#​10450](https://redirect.github.com/vitest-dev/vitest/issues/10450 )
[<samp>(e4067)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/e4067b3b1 )
- Remove orphaned Playwright route when same module is mocked via
multiple ids \[backport to v4] - by
[@​toxik](https://redirect.github.com/toxik ) and
[@​Zelys-DFKH](https://redirect.github.com/Zelys-DFKH ) in
[#​10474](https://redirect.github.com/vitest-dev/vitest/issues/10474 )
[<samp>(675b4)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/675b4343f )
##### [View changes on
GitHub](https://redirect.github.com/vitest-dev/vitest/compare/v4.1.7...v4.1.8 )
</details>
<details>
<summary>Rich-Harris/degit (degit)</summary>
###
[`v3.4.1`](https://redirect.github.com/Rich-Harris/degit/compare/v3.4.0...v3.4.1 )
[Compare
Source](https://redirect.github.com/Rich-Harris/degit/compare/v3.4.0...v3.4.1 )
###
[`v3.4.0`](https://redirect.github.com/Rich-Harris/degit/compare/v3.3.2...v3.4.0 )
[Compare
Source](https://redirect.github.com/Rich-Harris/degit/compare/v3.3.2...v3.4.0 )
</details>
<details>
<summary>eslint/eslint (eslint)</summary>
###
[`v10.4.1`](https://redirect.github.com/eslint/eslint/releases/tag/v10.4.1 )
[Compare
Source](https://redirect.github.com/eslint/eslint/compare/v10.4.0...v10.4.1 )
#### Bug Fixes
-
[`e557467`](https://redirect.github.com/eslint/eslint/commit/e557467db7496220eebcbe2ac5ea6d38c12bb1ec )
fix: update `@eslint/plugin-kit` version to 0.7.2
([#​20930](https://redirect.github.com/eslint/eslint/issues/20930 ))
(Francesco Trotta)
-
[`d4ce898`](https://redirect.github.com/eslint/eslint/commit/d4ce898796ca22c3b96aa70d3014cb85f4bac1cd )
fix: propagate failures from delegated commands
([#​20917](https://redirect.github.com/eslint/eslint/issues/20917 ))
(Minh Vu)
-
[`f4f3507`](https://redirect.github.com/eslint/eslint/commit/f4f3507460bc016b5be979c05d2969793f570cbf )
fix: prefer-arrow-callback invalid autofix with newline after `async`
([#​20916](https://redirect.github.com/eslint/eslint/issues/20916 ))
(kuldeep kumar)
-
[`c5bc78b`](https://redirect.github.com/eslint/eslint/commit/c5bc78b37e08b9054a11f0cc2d81808bb24acb85 )
fix: false positive for reference in `finally` block
([#​20655](https://redirect.github.com/eslint/eslint/issues/20655 ))
(Tanuj Kanti)
-
[`27538c0`](https://redirect.github.com/eslint/eslint/commit/27538c01f5df4e9306f6f4ba867b2dd6307fae59 )
fix: add missing CodePath and CodePathSegment types
([#​20853](https://redirect.github.com/eslint/eslint/issues/20853 ))
(Pixel998)
#### Documentation
-
[`61b0add`](https://redirect.github.com/eslint/eslint/commit/61b0add61ffc52665562be7bb96f526690a78b30 )
docs: remove deprecated rule from related rules of `max-params`
([#​20921](https://redirect.github.com/eslint/eslint/issues/20921 ))
(Tanuj Kanti)
-
[`305d5b9`](https://redirect.github.com/eslint/eslint/commit/305d5b91aeac24d36fde42f75625a8f183d4ce43 )
docs: remove deprecated rules from related rules section
([#​20911](https://redirect.github.com/eslint/eslint/issues/20911 ))
(Tanuj Kanti)
-
[`49b0202`](https://redirect.github.com/eslint/eslint/commit/49b0202d01918b8061720d586dffd7c68047090c )
docs: fix `display: none` of ad
([#​20901](https://redirect.github.com/eslint/eslint/issues/20901 ))
(Tanuj Kanti)
-
[`9067f94`](https://redirect.github.com/eslint/eslint/commit/9067f9492ec998afc5b4f057a477ecf6ebd45e44 )
docs: switch build to Node.js 24
([#​20893](https://redirect.github.com/eslint/eslint/issues/20893 ))
(Milos Djermanovic)
-
[`c91b041`](https://redirect.github.com/eslint/eslint/commit/c91b0417e3420c76807ce1fa2aea76e2de87ab86 )
docs: Update README (GitHub Actions Bot)
-
[`e349265`](https://redirect.github.com/eslint/eslint/commit/e349265cb37f3ebc837e178e48a725bb782bd870 )
docs: clarify semver strings in rule deprecation objects
([#​20885](https://redirect.github.com/eslint/eslint/issues/20885 ))
(Milos Djermanovic)
#### Chores
-
[`b0e466b`](https://redirect.github.com/eslint/eslint/commit/b0e466b6ab47bfc7de43d8de0c315d8ee83aa584 )
test: add `data` property to invalid tests cases for rules
([#​20924](https://redirect.github.com/eslint/eslint/issues/20924 ))
(Tanuj Kanti)
-
[`f78838b`](https://redirect.github.com/eslint/eslint/commit/f78838bc4c86d487e1bcc7cede260c4467721c46 )
test: add CodePath type coverage
([#​20904](https://redirect.github.com/eslint/eslint/issues/20904 ))
(Pixel998)
-
[`1daa4bd`](https://redirect.github.com/eslint/eslint/commit/1daa4bd734b79a62e317d0394394a6b38cff49f9 )
chore: update `eslint-plugin-eslint-comments` test data to latest commit
([#​20922](https://redirect.github.com/eslint/eslint/issues/20922 ))
(Francesco Trotta)
-
[`002942c`](https://redirect.github.com/eslint/eslint/commit/002942ce988ea28b78e0a2f3b074081e638b552c )
ci: declare contents:read on update-readme workflow
([#​20919](https://redirect.github.com/eslint/eslint/issues/20919 ))
(Arpit Jain)
-
[`64bca24`](https://redirect.github.com/eslint/eslint/commit/64bca24e7bed35bc3c864fc625cb2d89eca87d5b )
chore: update ecosystem plugins
([#​20912](https://redirect.github.com/eslint/eslint/issues/20912 ))
(ESLint Bot)
-
[`6d7c832`](https://redirect.github.com/eslint/eslint/commit/6d7c832950d5e92499d88e504080661f888f8f56 )
chore: ignore fflate updates in renovate
([#​20908](https://redirect.github.com/eslint/eslint/issues/20908 ))
(Pixel998)
-
[`b2c8638`](https://redirect.github.com/eslint/eslint/commit/b2c86382164d87c6203b78d52068cd6a2a6ffe30 )
ci: bump pnpm/action-setup from 6.0.7 to 6.0.8
([#​20889](https://redirect.github.com/eslint/eslint/issues/20889 ))
(dependabot\[bot])
-
[`a9b8d7f`](https://redirect.github.com/eslint/eslint/commit/a9b8d7f74c50211701cfc49710fa541fd91b2aa5 )
chore: increase maxBuffer for ecosystem tests
([#​20881](https://redirect.github.com/eslint/eslint/issues/20881 ))
(sethamus)
-
[`b702ead`](https://redirect.github.com/eslint/eslint/commit/b702ead5e1ed7cb9f28238a454797662efb37396 )
chore: update ecosystem update PR settings
([#​20884](https://redirect.github.com/eslint/eslint/issues/20884 ))
(Pixel998)
-
[`507f60e`](https://redirect.github.com/eslint/eslint/commit/507f60e9a78c9a902bc8759f066ae17a1ea6cd81 )
chore: update ecosystem plugins
([#​20882](https://redirect.github.com/eslint/eslint/issues/20882 ))
(ESLint Bot)
-
[`92f5c5b`](https://redirect.github.com/eslint/eslint/commit/92f5c5bb6bf3a5d167c8ee53a430833410295c6d )
test: add unit test for message-count
([#​20878](https://redirect.github.com/eslint/eslint/issues/20878 ))
(kuldeep kumar)
-
[`df32108`](https://redirect.github.com/eslint/eslint/commit/df321080af5758b1fa25e4b9a40e26135642dd6e )
chore: add
[@​eslint/markdown](https://redirect.github.com/eslint/markdown )
and typescript-eslint ecosystem tests
([#​20837](https://redirect.github.com/eslint/eslint/issues/20837 ))
(sethamus)
-
[`327f91d`](https://redirect.github.com/eslint/eslint/commit/327f91d36aa49f2a50ded931d841a16374fd875f )
chore: use includeIgnoreFile internally
([#​20876](https://redirect.github.com/eslint/eslint/issues/20876 ))
(Kirk Waiblinger)
-
[`f0dc4bd`](https://redirect.github.com/eslint/eslint/commit/f0dc4bd893fb3a9f44e4ddc3ad7063ffb0beacd3 )
chore: pin fflate\@​0.8.2
([#​20877](https://redirect.github.com/eslint/eslint/issues/20877 ))
(Milos Djermanovic)
-
[`0f4bd25`](https://redirect.github.com/eslint/eslint/commit/0f4bd257a67a082b756de746d9e0c4842ab764ca )
ci: run Discord alert for ecosystem test failures
([#​20873](https://redirect.github.com/eslint/eslint/issues/20873 ))
(Copilot)
</details>
<details>
<summary>sveltejs/prettier-plugin-svelte
(prettier-plugin-svelte)</summary>
###
[`v4.1.0`](https://redirect.github.com/sveltejs/prettier-plugin-svelte/blob/HEAD/CHANGELOG.md#410 )
[Compare
Source](https://redirect.github.com/sveltejs/prettier-plugin-svelte/compare/prettier-plugin-svelte@4.0.1...prettier-plugin-svelte@4.1.0 )
##### Minor Changes
- feat: support Svelte 5 declaration tags
([#​533](https://redirect.github.com/sveltejs/prettier-plugin-svelte/pull/533 ))
</details>
<details>
<summary>sveltejs/svelte (svelte)</summary>
###
[`v5.56.1`](https://redirect.github.com/sveltejs/svelte/blob/HEAD/packages/svelte/CHANGELOG.md#5561 )
[Compare
Source](https://redirect.github.com/sveltejs/svelte/compare/svelte@5.56.0...svelte@5.56.1 )
##### Patch Changes
- fix: error at compile time on duplicate snippet/declaration tag
definitions
([#​18351](https://redirect.github.com/sveltejs/svelte/pull/18351 ))
- fix: parse declaration tag contents more robustly
([#​18353](https://redirect.github.com/sveltejs/svelte/pull/18353 ))
- fix: correctly transform references to earlier declarators in a
declaration tag (e.g. `{let a = $state(0), b = $derived(a * 2)}`)
([#​18348](https://redirect.github.com/sveltejs/svelte/pull/18348 ))
- fix: avoid spurious `state_referenced_locally` warnings for `$derived`
declarations in declaration tags
([#​18348](https://redirect.github.com/sveltejs/svelte/pull/18348 ))
- fix: tolerate whitespace before `let`/`const` in declaration tags
([#​18348](https://redirect.github.com/sveltejs/svelte/pull/18348 ))
- fix: prevent infinite loop when a tag's expression ends with a
trailing `/` at the end of the input
([#​18350](https://redirect.github.com/sveltejs/svelte/pull/18350 ))
- fix: more robust parsing of declaration tags with regards to `type`
([#​18330](https://redirect.github.com/sveltejs/svelte/pull/18330 ))
- fix: preserve newlines in spread input values when the `type`
attribute is applied after `value`
([#​18345](https://redirect.github.com/sveltejs/svelte/pull/18345 ))
- fix: update `SvelteURLSearchParams` when setting duplicate keys to the
same joined value
([#​18336](https://redirect.github.com/sveltejs/svelte/pull/18336 ))
- fix: check references for blockers on server, too
([#​18352](https://redirect.github.com/sveltejs/svelte/pull/18352 ))
###
[`v5.56.0`](https://redirect.github.com/sveltejs/svelte/blob/HEAD/packages/svelte/CHANGELOG.md#5560 )
[Compare
Source](https://redirect.github.com/sveltejs/svelte/compare/svelte@5.55.10...svelte@5.56.0 )
##### Minor Changes
- feat: allow declarations in the template
([#​18282](https://redirect.github.com/sveltejs/svelte/pull/18282 ))
##### Patch Changes
- perf: use `createElement` instead of `createElementNS` for HTML
elements
([#​18262](https://redirect.github.com/sveltejs/svelte/pull/18262 ))
- perf: store `current_sources` as a `Set` for O(1) membership checks
([#​18278](https://redirect.github.com/sveltejs/svelte/pull/18278 ))
- perf: deduplicate identical hoisted templates within a component
([#​18320](https://redirect.github.com/sveltejs/svelte/pull/18320 ))
- perf: hoist `rest_props` exclude list as a module-scope `Set`
([#​18252](https://redirect.github.com/sveltejs/svelte/pull/18252 ))
</details>
<details>
<summary>privatenumber/tsx (tsx)</summary>
###
[`v4.22.4`](https://redirect.github.com/privatenumber/tsx/releases/tag/v4.22.4 )
[Compare
Source](https://redirect.github.com/privatenumber/tsx/compare/v4.22.3...v4.22.4 )
##### Bug Fixes
- resolve CommonJS directory requires inside dependencies
([#​803](https://redirect.github.com/privatenumber/tsx/issues/803 ))
([1ce8463](https://redirect.github.com/privatenumber/tsx/commit/1ce846335b7c445a3328c7d27f06424949356d97 ))
***
This release is also available on:
- [npm package (@​latest
dist-tag)](https://www.npmjs.com/package/tsx/v/4.22.4 )
</details>
<details>
<summary>sindresorhus/type-fest (type-fest)</summary>
###
[`v5.7.0`](https://redirect.github.com/sindresorhus/type-fest/releases/tag/v5.7.0 )
[Compare
Source](https://redirect.github.com/sindresorhus/type-fest/compare/v5.6.0...v5.7.0 )
##### New types
-
[`RemoveSuffix`](https://redirect.github.com/sindresorhus/type-fest/blob/main/source/remove-suffix.d.ts )
([#​1439](https://redirect.github.com/sindresorhus/type-fest/issues/1439 ))
[`d685b77`](https://redirect.github.com/sindresorhus/type-fest/commit/d685b77 )
-
[`UnwrapRequired`](https://redirect.github.com/sindresorhus/type-fest/blob/main/source/unwrap-required.d.ts )
([#​1410](https://redirect.github.com/sindresorhus/type-fest/issues/1410 ))
[`3bfee8e`](https://redirect.github.com/sindresorhus/type-fest/commit/3bfee8e )
##### Improvements
- `ExtendsStrict`: Add `distributiveUnions`, `strictNever` & `strictAny`
options
([#​1408](https://redirect.github.com/sindresorhus/type-fest/issues/1408 ))
[`9ea810b`](https://redirect.github.com/sindresorhus/type-fest/commit/9ea810b )
- `TupleOf`: Improve implementation
([#​1441](https://redirect.github.com/sindresorhus/type-fest/issues/1441 ))
[`391e1bb`](https://redirect.github.com/sindresorhus/type-fest/commit/391e1bb )
##### Fixes
- `RemovePrefix`: Fix: Remove incorrect optimization and always fallback
to `string` for non-literal prefixes
([#​1438](https://redirect.github.com/sindresorhus/type-fest/issues/1438 ))
[`9f35398`](https://redirect.github.com/sindresorhus/type-fest/commit/9f35398 )
- `DelimiterCase`: Fix behavior with non-single character delimiters
([#​1424](https://redirect.github.com/sindresorhus/type-fest/issues/1424 ))
[`9b36590`](https://redirect.github.com/sindresorhus/type-fest/commit/9b36590 )
- `RemovePrefix`: Fix `any` prefix behavior in non-strict mode
([#​1423](https://redirect.github.com/sindresorhus/type-fest/issues/1423 ))
[`c49cb75`](https://redirect.github.com/sindresorhus/type-fest/commit/c49cb75 )
- `DelimiterCase`: Fix behavior with union delimiters
([#​1422](https://redirect.github.com/sindresorhus/type-fest/issues/1422 ))
[`96172c0`](https://redirect.github.com/sindresorhus/type-fest/commit/96172c0 )
- `ApplyDefaultOptions`: Fix behavior with generic instantiations &
`any` values
([#​1411](https://redirect.github.com/sindresorhus/type-fest/issues/1411 ))
[`c46020d`](https://redirect.github.com/sindresorhus/type-fest/commit/c46020d )
- `ApplyDefaultOptions`: Fix behavior with explicit `undefined`
([#​1407](https://redirect.github.com/sindresorhus/type-fest/issues/1407 ))
[`60bfd3f`](https://redirect.github.com/sindresorhus/type-fest/commit/60bfd3f )
***
</details>
---
### Configuration
📅 **Schedule**: (in timezone Asia/Shanghai)
- Branch creation
- "before 10am on monday"
- Automerge
- At any time (no schedule defined)
🚦 **Automerge**: Enabled.
♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.
👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://redirect.github.com/renovatebot/renovate/discussions ) if
that's undesired.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/ ).
View the [repository job
log](https://developer.mend.io/github/oxc-project/oxc ).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yMDkuNCIsInVwZGF0ZWRJblZlciI6IjQzLjIwOS40IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Cameron Clark <cameron.clark@hey.com >
2026-06-07 17:44:09 +01: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
leaysgur
b3185b96ab
chore(deps): Bump degit and use from catalog ( #22707 )
2026-05-25 05:34:28 +00:00
leaysgur
a474264ac8
chore(oxfmt): Bump svelte and tailwind plugin version ( #22705 )
...
Upadte `prettier-plugin-svelte` along with `prettier-plugin-tailwindcss`.
- `prettier-plugin-svelte@4` has just released
- This plugin requires Svelte 5 and uses new AST internally
- This breaks `prettier-plugin-tailwindcss`, which does not support new AST shape
- So we also update `prettier-plugin-tailwindcss` to support new AST
While `prettier-plugin-svelte@3` previously supported Svelte 4 and below, this new version has dropped that support. (= breaking change)
However, since Oxfmt has specified Svelte 5 as a peer dependency ever since adding Svelte support, it has never supported Svelte 4 or earlier.
In that sense, this is not a breaking change for Oxfmt.
2026-05-25 05:09:17 +00:00
leaysgur
16b8058cd6
feat(oxfmt): Support vite-plus/resolveConfig for vite.config.ts ( #22454 )
...
Closes #21603 , fixes #21418
To simplify the review process, I'll first add support to Oxfmt.
In the next PR, I'll move that implementation to `shared`.
2026-05-20 08:21:37 +00: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
leaysgur
37d49fcd40
refactor(oxlint,oxfmt): Share src-js code via apps/shared ( #22452 )
...
New place to share code for use in `src-js`, similar to how `crates/oxc_config` works.
Initially, I considered creating an `apps/oxc_cli` and moving `crates/oxc_config` there. However, it felt unnatural deps for `crates/oxc_linter` -> `apps/oxc_cli`, so I decided to keep the Rust code as is for now and share only the JS code.
Since `apps/shared` exports `.ts` files directly, each app is responsible for bundling them via `@oxapps/shared`. Tests still live in `apps/shared`, so separate CI is also added and hooked by each app.
To start, I've only shared the function that reports TS incompatibility errors. This is just for verification purposes and will be fixed in a later PR.
2026-05-18 07:56:26 +00: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
leaysgur
f2c01e17b2
chore(oxfmt): Bump bundled prettier-plugin-svelte version ( #22338 )
...
https://github.com/sveltejs/prettier-plugin-svelte/blob/master/CHANGELOG.md#352
2026-05-12 00:45:23 +00: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
leaysgur
6e8e8185c0
feat(oxfmt): Experimental .svelte support ( #21700 )
...
Part of #19715
Note that:
> Users are required to perform 2 steps below
> 1️⃣ Install svelte/compiler@^5.0.0 and/or @astrojs/compiler@^2.9.1 manually
> 2️⃣ Enable option in config
2026-05-11 01:24:37 +00: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
renovate[bot]
82dbbec0b7
chore(deps): update npm packages (major) ( #21558 )
...
This PR contains the following updates:
| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/ ) |
[Adoption](https://docs.renovatebot.com/merge-confidence/ ) |
[Passing](https://docs.renovatebot.com/merge-confidence/ ) |
[Confidence](https://docs.renovatebot.com/merge-confidence/ ) |
|---|---|---|---|---|---|
| [diff](https://redirect.github.com/kpdecker/jsdiff ) | [`^8.0.3` →
`^9.0.0`](https://renovatebot.com/diffs/npm/diff/8.0.4/9.0.0 ) |

|

|

|

|
| [eslint](https://eslint.org )
([source](https://redirect.github.com/eslint/eslint )) | [`^9.13.0` →
`^10.0.0`](https://renovatebot.com/diffs/npm/eslint/9.39.4/10.2.1 ) |

|

|

|

|
| [eslint](https://eslint.org )
([source](https://redirect.github.com/eslint/eslint )) | [`9.39.4` →
`10.2.1`](https://renovatebot.com/diffs/npm/eslint/9.39.4/10.2.1 ) |

|

|

|

|
---
### Release Notes
<details>
<summary>kpdecker/jsdiff (diff)</summary>
###
[`v9.0.0`](https://redirect.github.com/kpdecker/jsdiff/blob/HEAD/release-notes.md#900 )
[Compare
Source](https://redirect.github.com/kpdecker/jsdiff/compare/8.0.4...v9.0.0 )
(All changes part of PR
[#​672](https://redirect.github.com/kpdecker/jsdiff/pull/672 ).)
- **ES5 support is dropped**. `parsePatch` now uses `TextDecoder` and
`Uint8Array`, which are not available in ES5, and TypeScript is now
compiled with the "es6" `target`. From now on, I intend to freely use
any features that are deemed "Widely available" by
[Baseline](https://web.dev/baseline ). Users who need ES5 support should
stick to version 8.
- **C-style quoted strings in filename headers are now properly
supported**.
When the name of either the old or new file in a patch contains "special
characters", both GNU `diff` and Git quote the filename in the patch's
headers and escape special characters using the same escape sequences
that are used in string literals in C, including octal escapes for all
non-ASCII characters. Previously, jsdiff had very little support for
this; `parsePatch` would remove the quotes, and unescape any escaped
backslashes, but would not unescape other escape sequences.
`formatPatch`, meanwhile, did not quote or escape special characters at
all.
Now, `parsePatch` parses all the possible escape sequences that GNU diff
(or Git) ever output, and `formatPatch` quotes and escapes filenames
containing special characters in the same way GNU diff does.
- **`formatPatch` now omits file headers when `oldFileName` or
`newFileName` in the provided patch object are `undefined`**, regardless
of the `headerOptions` parameter. (Previously, it would treat the
absence of `oldFileName` or `newFileName` as indicating the filename was
the word "undefined" and emit headers `--- undefined` / `+++
undefined`.)
- **`formatPatch` no longer outputs trailing tab characters at the end
of `---`/`+++` headers.**
Previously, if `formatPatch` was passed a patch object to serialize that
had empty strings for the `oldHeader` or `newHeader` property, it would
include a trailing tab character after the filename in the `---` and/or
`+++` file header. Now, this scenario is treated the same as when
`oldHeader`/`newHeader` is `undefined` - i.e. the trailing tab is
omitted.
- **`formatPatch` no longer mutates its input** when serializing a patch
containing a hunk where either the old or new content contained zero
lines. (Such a hunk occurs only when the hunk has no context lines and
represents a pure insertion or pure deletion, which for instance will
occur whenever one of the two files being diffed is completely empty.)
Previously `formatPatch` would provide the correct output but also
mutate the `oldLines` or `newLines` property on the hunk, changing the
meaning of the underlying patch.
- **Git-style patches are now supported by `parsePatch`, `formatPatch`,
and `reversePatch`**.
Patches output by `git diff` can include some features that are unlike
those output by GNU `diff`, and therefore not handled by an ordinary
unified diff format parser. An ordinary diff simply describes the
differences between the *content* of two files, but Git diffs can also
indicate, via "extended headers", the creation or deletion of
(potentially empty) files, indicate that a file was renamed, and contain
information about file mode changes. Furthermore, when these changes
appear in a diff in the absence of a content change (e.g. when an empty
file is created, or a file is renamed without content changes), the
patch will contain no associated `---`/`+++` file headers nor any hunks.
jsdiff previously did not support parsing Git's extended headers, nor
hunkless patches. Now `parsePatch` parses some of the extended headers,
parses hunkless Git patches, and can determine filenames (e.g. from the
extended headers) when parsing a patch that includes no `---` or `+++`
file headers. The additional information conveyed by the extended
headers we support is recorded on new fields on the result object
returned by `parsePatch`. See `isGit` and subsequent properties in the
docs in the README.md file.
`formatPatch` now outputs extended headers based on these new
Git-specific properties, and `reversePatch` respects them as far as
possible (with one unavoidable caveat noted in the README.md file).
- **Unpaired file headers now cause `parsePatch` to throw**.
It remains acceptable to have a patch with no file headers whatsoever
(e.g. one that begins with a `@@​` hunk header on the very first
line), but a patch with *only* a `---` header or only a `+++` header is
now considered an error.
- **`parsePatch` is now more tolerant of "trailing garbage"**
That is: after a patch, or between files/indexes in a patch, it is now
acceptable to have arbitrary lines of "garbage" (so long as they
unambiguously have no syntactic meaning - e.g. trailing garbage that
leads with a `+`, `-`, or ` ` and thus is interpretable as part of a
hunk still triggers a throw).
This means we no longer reject patches output by tools that include
extra data in "garbage" lines not understood by generic unified diff
parsers. (For example, SVN patches can include "Property changes on:"
lines that generic unified diff parsers should discard as garbage;
jsdiff previously threw errors when encountering them.)
This change brings jsdiff's behaviour more in line with GNU `patch`,
which is highly permissive of "garbage".
- **The `oldFileName` and `newFileName` fields of `StructuredPatch` are
now typed as `string | undefined` instead of `string`**. This type
change reflects the (pre-existing) reality that `parsePatch` can produce
patches without filenames (e.g. when parsing a patch that simply
contains hunks with no file headers).
</details>
<details>
<summary>eslint/eslint (eslint)</summary>
###
[`v10.2.1`](https://redirect.github.com/eslint/eslint/compare/v10.2.0...4d1d8f9737236603f64bbe83d5bb8001627b5611 )
[Compare
Source](https://redirect.github.com/eslint/eslint/compare/v10.2.0...v10.2.1 )
###
[`v10.2.0`](https://redirect.github.com/eslint/eslint/releases/tag/v10.2.0 )
[Compare
Source](https://redirect.github.com/eslint/eslint/compare/v10.1.0...v10.2.0 )
#### Features
-
[`586ec2f`](https://redirect.github.com/eslint/eslint/commit/586ec2f43092779acc957866db4abe999112d1e1 )
feat: Add `meta.languages` support to rules
([#​20571](https://redirect.github.com/eslint/eslint/issues/20571 ))
(Copilot)
-
[`14207de`](https://redirect.github.com/eslint/eslint/commit/14207dee3939dc87cfa8b2fcfc271fff2cfd6471 )
feat: add `Temporal` to `no-obj-calls`
([#​20675](https://redirect.github.com/eslint/eslint/issues/20675 ))
(Pixel998)
-
[`bbb2c93`](https://redirect.github.com/eslint/eslint/commit/bbb2c93a2b31bd30924f32fe69a9acf41f9dfe35 )
feat: add Temporal to ES2026 globals
([#​20672](https://redirect.github.com/eslint/eslint/issues/20672 ))
(Pixel998)
#### Bug Fixes
-
[`542cb3e`](https://redirect.github.com/eslint/eslint/commit/542cb3e6442a4e6ee3457c799e2a0ee23bef0c6a )
fix: update first-party dependencies
([#​20714](https://redirect.github.com/eslint/eslint/issues/20714 ))
(Francesco Trotta)
#### Documentation
-
[`a2af743`](https://redirect.github.com/eslint/eslint/commit/a2af743ea60f683d0e0de9d98267c1e7e4f5e412 )
docs: add `language` to configuration objects
([#​20712](https://redirect.github.com/eslint/eslint/issues/20712 ))
(Francesco Trotta)
-
[`845f23f`](https://redirect.github.com/eslint/eslint/commit/845f23f1370892bf07d819497ac518c9e65090d6 )
docs: Update README (GitHub Actions Bot)
-
[`5fbcf59`](https://redirect.github.com/eslint/eslint/commit/5fbcf5958b897cc4df5d652924d18428db37f7ee )
docs: remove `sourceType` from ts playground link
([#​20477](https://redirect.github.com/eslint/eslint/issues/20477 ))
(Tanuj Kanti)
-
[`8702a47`](https://redirect.github.com/eslint/eslint/commit/8702a474659be786b6b1392e5e7c0c56355ae4a4 )
docs: Update README (GitHub Actions Bot)
-
[`ddeaded`](https://redirect.github.com/eslint/eslint/commit/ddeaded2ab36951383ff67c60fb64ec68d29a46a )
docs: Update README (GitHub Actions Bot)
-
[`2b44966`](https://redirect.github.com/eslint/eslint/commit/2b4496691266547784a7f7ad1989ce53381bab91 )
docs: add Major Releases section to Manage Releases
([#​20269](https://redirect.github.com/eslint/eslint/issues/20269 ))
(Milos Djermanovic)
-
[`eab65c7`](https://redirect.github.com/eslint/eslint/commit/eab65c700ebb16a6e790910c720450c9908961fd )
docs: update `eslint` versions in examples
([#​20664](https://redirect.github.com/eslint/eslint/issues/20664 ))
(루밀LuMir)
-
[`3e4a299`](https://redirect.github.com/eslint/eslint/commit/3e4a29903bf31f0998e45ad9128a265bce1edc56 )
docs: update ESM Dependencies policies with note for own-usage packages
([#​20660](https://redirect.github.com/eslint/eslint/issues/20660 ))
(Milos Djermanovic)
#### Chores
-
[`8120e30`](https://redirect.github.com/eslint/eslint/commit/8120e30f833474f47acc061d24d164e9f022264f )
refactor: extract no unmodified loop condition
([#​20679](https://redirect.github.com/eslint/eslint/issues/20679 ))
(kuldeep kumar)
-
[`46e8469`](https://redirect.github.com/eslint/eslint/commit/46e8469786be1b2bbb522100e1d44624d98d3745 )
chore: update dependency markdownlint-cli2 to ^0.22.0
([#​20697](https://redirect.github.com/eslint/eslint/issues/20697 ))
(renovate\[bot])
-
[`01ed3aa`](https://redirect.github.com/eslint/eslint/commit/01ed3aa68477f81a7188e1498cf4906e02015b7c )
test: add unit tests for unicode utilities
([#​20622](https://redirect.github.com/eslint/eslint/issues/20622 ))
(Manish chaudhary)
-
[`811f493`](https://redirect.github.com/eslint/eslint/commit/811f4930f82ee2b6ac8eae75cade9bed63de0781 )
ci: remove `--legacy-peer-deps` from types integration tests
([#​20667](https://redirect.github.com/eslint/eslint/issues/20667 ))
(Milos Djermanovic)
-
[`6b86fcf`](https://redirect.github.com/eslint/eslint/commit/6b86fcfc5c75d6a3b8a2cf7bcdb3ef60635a9a03 )
chore: update dependency npm-run-all2 to v8
([#​20663](https://redirect.github.com/eslint/eslint/issues/20663 ))
(renovate\[bot])
-
[`632c4f8`](https://redirect.github.com/eslint/eslint/commit/632c4f83bf32b77981c7d395cacddd1bb172ee25 )
chore: add `prettier` update commit to `.git-blame-ignore-revs`
([#​20662](https://redirect.github.com/eslint/eslint/issues/20662 ))
(루밀LuMir)
-
[`b0b0f21`](https://redirect.github.com/eslint/eslint/commit/b0b0f21927e03ba092400e3c70d7058f537765c8 )
chore: update dependency eslint-plugin-regexp to ^3.1.0
([#​20659](https://redirect.github.com/eslint/eslint/issues/20659 ))
(Milos Djermanovic)
-
[`228a2dd`](https://redirect.github.com/eslint/eslint/commit/228a2dd4b272c17f516ee3541f1dd69eca0a8ab0 )
chore: update dependency eslint-plugin-eslint-plugin to ^7.3.2
([#​20661](https://redirect.github.com/eslint/eslint/issues/20661 ))
(Milos Djermanovic)
-
[`3ab4d7e`](https://redirect.github.com/eslint/eslint/commit/3ab4d7e244df244102de9d0d250b2ff12456a785 )
test: Add tests for eslintrc-style keys
([#​20645](https://redirect.github.com/eslint/eslint/issues/20645 ))
(kuldeep kumar)
###
[`v10.1.0`](https://redirect.github.com/eslint/eslint/releases/tag/v10.1.0 )
[Compare
Source](https://redirect.github.com/eslint/eslint/compare/v10.0.3...v10.1.0 )
#### Features
-
[`ff4382b`](https://redirect.github.com/eslint/eslint/commit/ff4382be349035acdb170627a2dc92828e134562 )
feat: apply fix for `no-var` in `TSModuleBlock`
([#​20638](https://redirect.github.com/eslint/eslint/issues/20638 ))
(Tanuj Kanti)
-
[`0916995`](https://redirect.github.com/eslint/eslint/commit/0916995b51528872b15ba4fedb24172cf25fcb3f )
feat: Implement api support for bulk-suppressions
([#​20565](https://redirect.github.com/eslint/eslint/issues/20565 ))
(Blake Sager)
#### Bug Fixes
-
[`2b8824e`](https://redirect.github.com/eslint/eslint/commit/2b8824e6be4223980e929a20025602df20d05ea2 )
fix: Prevent `no-var` autofix when a variable is used before declaration
([#​20464](https://redirect.github.com/eslint/eslint/issues/20464 ))
(Amaresh S M)
-
[`e58b4bf`](https://redirect.github.com/eslint/eslint/commit/e58b4bff167e79afd067d1b0ee9360bec2d3393e )
fix: update eslint
([#​20597](https://redirect.github.com/eslint/eslint/issues/20597 ))
(renovate\[bot])
#### Documentation
-
[`b7b57fe`](https://redirect.github.com/eslint/eslint/commit/b7b57fe9942c572ff651230f1f96cefed787ca52 )
docs: use correct JSDoc link in require-jsdoc.md
([#​20641](https://redirect.github.com/eslint/eslint/issues/20641 ))
(mkemna-clb)
-
[`58e4cfc`](https://redirect.github.com/eslint/eslint/commit/58e4cfc7dbf0fe40c73f09bf0ff94ad944d0ba0e )
docs: add deprecation notice partial
([#​20639](https://redirect.github.com/eslint/eslint/issues/20639 ))
(Milos Djermanovic)
-
[`7143dbf`](https://redirect.github.com/eslint/eslint/commit/7143dbf99df27c61edf1552da981794e99a0b2f2 )
docs: update v9 migration guide for `@eslint/js` usage
([#​20540](https://redirect.github.com/eslint/eslint/issues/20540 ))
(fnx)
-
[`035fc4f`](https://redirect.github.com/eslint/eslint/commit/035fc4fbe506e3e4524882cf50db37a4e430adf4 )
docs: note that `globalReturn` applies only with `sourceType: "script"`
([#​20630](https://redirect.github.com/eslint/eslint/issues/20630 ))
(Milos Djermanovic)
-
[`e972c88`](https://redirect.github.com/eslint/eslint/commit/e972c88ab7474a74191ee99ac2558b00d0427a8a )
docs: merge ESLint option descriptions into type definitions
([#​20608](https://redirect.github.com/eslint/eslint/issues/20608 ))
(Francesco Trotta)
-
[`7f10d84`](https://redirect.github.com/eslint/eslint/commit/7f10d8440137f0cfd75f18f4746ba6a1c621b953 )
docs: Update README (GitHub Actions Bot)
-
[`aeed007`](https://redirect.github.com/eslint/eslint/commit/aeed0078ca2f73d4744cc522102178d45b5be64e )
docs: open playground link in new tab
([#​20602](https://redirect.github.com/eslint/eslint/issues/20602 ))
(Tanuj Kanti)
-
[`a0d1a37`](https://redirect.github.com/eslint/eslint/commit/a0d1a3772679d3d74bb860fc65b5b58678acd452 )
docs: Add AI Usage Policy
([#​20510](https://redirect.github.com/eslint/eslint/issues/20510 ))
(Nicholas C. Zakas)
#### Chores
-
[`a9f9cce`](https://redirect.github.com/eslint/eslint/commit/a9f9cce82d80b540a0e3549d0e91c16df28740d8 )
chore: update dependency eslint-plugin-unicorn to ^63.0.0
([#​20584](https://redirect.github.com/eslint/eslint/issues/20584 ))
(Milos Djermanovic)
-
[`1f42bd7`](https://redirect.github.com/eslint/eslint/commit/1f42bd7876ae4192cf7f7f4faf73b4ef3d2563cb )
chore: update `prettier` to 3.8.1
([#​20651](https://redirect.github.com/eslint/eslint/issues/20651 ))
(루밀LuMir)
-
[`c0a6f4a`](https://redirect.github.com/eslint/eslint/commit/c0a6f4a2b4169edeca2a81bf7b47783e39ade366 )
chore: update dependency
[@​eslint/json](https://redirect.github.com/eslint/json ) to ^1.2.0
([#​20652](https://redirect.github.com/eslint/eslint/issues/20652 ))
(renovate\[bot])
-
[`cc43f79`](https://redirect.github.com/eslint/eslint/commit/cc43f795c42e5ec2f19bb43b1f6d534ef2e469f3 )
chore: update dependency c8 to v11
([#​20650](https://redirect.github.com/eslint/eslint/issues/20650 ))
(renovate\[bot])
-
[`2ce4635`](https://redirect.github.com/eslint/eslint/commit/2ce4635b036ff2665c7009afddf9c0fb2274dceb )
chore: update dependency
[@​eslint/json](https://redirect.github.com/eslint/json ) to v1
([#​20649](https://redirect.github.com/eslint/eslint/issues/20649 ))
(renovate\[bot])
-
[`f0406ee`](https://redirect.github.com/eslint/eslint/commit/f0406eedcc3dc415babbbf6bbdb5db1eebfd487b )
chore: update dependency markdownlint-cli2 to ^0.21.0
([#​20646](https://redirect.github.com/eslint/eslint/issues/20646 ))
(renovate\[bot])
-
[`dbb4c95`](https://redirect.github.com/eslint/eslint/commit/dbb4c9582a00bac604d5c6ac671bb7111468a846 )
chore: remove trunk
([#​20478](https://redirect.github.com/eslint/eslint/issues/20478 ))
(sethamus)
-
[`c672a2a`](https://redirect.github.com/eslint/eslint/commit/c672a2a70579fddf1c6ce33dfa712d705726e1c9 )
test: fix CLI test for empty output file
([#​20640](https://redirect.github.com/eslint/eslint/issues/20640 ))
(kuldeep kumar)
-
[`c7ada24`](https://redirect.github.com/eslint/eslint/commit/c7ada2455680036bbfc42fcb1511ff28afe3c587 )
ci: bump pnpm/action-setup from 4.3.0 to 4.4.0
([#​20636](https://redirect.github.com/eslint/eslint/issues/20636 ))
(dependabot\[bot])
-
[`07c4b8b`](https://redirect.github.com/eslint/eslint/commit/07c4b8b4a9f49145e60a3448dd57853213ed4de3 )
test: fix `RuleTester` test without test runners
([#​20631](https://redirect.github.com/eslint/eslint/issues/20631 ))
(Francesco Trotta)
-
[`079bba7`](https://redirect.github.com/eslint/eslint/commit/079bba7ff17d0a99fdffe32bf991d005ba797fae )
test: Add tests for `isValidWithUnicodeFlag`
([#​20601](https://redirect.github.com/eslint/eslint/issues/20601 ))
(Manish chaudhary)
-
[`5885ae6`](https://redirect.github.com/eslint/eslint/commit/5885ae66216bcee9310bbf73786b7d7d5774aeaf )
ci: unpin Node.js 25.x in CI
([#​20615](https://redirect.github.com/eslint/eslint/issues/20615 ))
(Copilot)
-
[`f65e5d3`](https://redirect.github.com/eslint/eslint/commit/f65e5d3c0df65fdb317ad6d23f7ae113c5f4b6d7 )
chore: update pnpm/action-setup digest to
[`b906aff`](https://redirect.github.com/eslint/eslint/commit/b906aff )
([#​20610](https://redirect.github.com/eslint/eslint/issues/20610 ))
(renovate\[bot])
###
[`v10.0.3`](https://redirect.github.com/eslint/eslint/compare/v10.0.2...bfce7eaa0ec5d6591fd247b7ff57b51e45fb88a1 )
[Compare
Source](https://redirect.github.com/eslint/eslint/compare/v10.0.2...v10.0.3 )
###
[`v10.0.2`](https://redirect.github.com/eslint/eslint/compare/v10.0.1...55122d6f971119607c85b0df8e62942171c939f7 )
[Compare
Source](https://redirect.github.com/eslint/eslint/compare/v10.0.1...v10.0.2 )
###
[`v10.0.1`](https://redirect.github.com/eslint/eslint/releases/tag/v10.0.1 )
[Compare
Source](https://redirect.github.com/eslint/eslint/compare/v10.0.0...v10.0.1 )
#### Bug Fixes
-
[`c87d5bd`](https://redirect.github.com/eslint/eslint/commit/c87d5bded54c5cf491eb04c24c9d09bbbd42c23e )
fix: update eslint
([#​20531](https://redirect.github.com/eslint/eslint/issues/20531 ))
(renovate\[bot])
-
[`d841001`](https://redirect.github.com/eslint/eslint/commit/d84100115c14691691058f00779c94e74fca946a )
fix: update `minimatch` to `10.2.1` to address security vulnerabilities
([#​20519](https://redirect.github.com/eslint/eslint/issues/20519 ))
(루밀LuMir)
-
[`04c2147`](https://redirect.github.com/eslint/eslint/commit/04c21475b3004904948f02049f2888b401d82c78 )
fix: update error message for unused suppressions
([#​20496](https://redirect.github.com/eslint/eslint/issues/20496 ))
(fnx)
-
[`38b089c`](https://redirect.github.com/eslint/eslint/commit/38b089c1726feac0e31a31d47941bd99e29ce003 )
fix: update dependency
[@​eslint/config-array](https://redirect.github.com/eslint/config-array )
to ^0.23.1
([#​20484](https://redirect.github.com/eslint/eslint/issues/20484 ))
(renovate\[bot])
#### Documentation
-
[`5b3dbce`](https://redirect.github.com/eslint/eslint/commit/5b3dbce50a1404a9f118afe810cefeee79388a2a )
docs: add AI acknowledgement section to templates
([#​20431](https://redirect.github.com/eslint/eslint/issues/20431 ))
(루밀LuMir)
-
[`6f23076`](https://redirect.github.com/eslint/eslint/commit/6f23076037d5879f20fb3be2ef094293b1e8d38c )
docs: toggle nav in no-JS mode
([#​20476](https://redirect.github.com/eslint/eslint/issues/20476 ))
(Tanuj Kanti)
-
[`b69cfb3`](https://redirect.github.com/eslint/eslint/commit/b69cfb32a16c5d5e9986390d484fae1d21e406f9 )
docs: Update README (GitHub Actions Bot)
#### Chores
-
[`e5c281f`](https://redirect.github.com/eslint/eslint/commit/e5c281ffd038a3a7a3e5364db0b9378e0ad83020 )
chore: updates for v9.39.3 release (Jenkins)
-
[`8c3832a`](https://redirect.github.com/eslint/eslint/commit/8c3832adb77cd993b4a24891900d5eeaaf093cdc )
chore: update
[@​typescript-eslint/parser](https://redirect.github.com/typescript-eslint/parser )
to ^8.56.0
([#​20514](https://redirect.github.com/eslint/eslint/issues/20514 ))
(Milos Djermanovic)
-
[`8330d23`](https://redirect.github.com/eslint/eslint/commit/8330d238ae6adb68bb6a1c9381e38cfedd990d94 )
test: add tests for config-api
([#​20493](https://redirect.github.com/eslint/eslint/issues/20493 ))
(Milos Djermanovic)
-
[`37d6e91`](https://redirect.github.com/eslint/eslint/commit/37d6e91e88fa6a2ca6d8726679096acff21ba6cc )
chore: remove eslint v10 prereleases from eslint-config-eslint deps
([#​20494](https://redirect.github.com/eslint/eslint/issues/20494 ))
(Milos Djermanovic)
-
[`da7cd0e`](https://redirect.github.com/eslint/eslint/commit/da7cd0e79197ad16e17052eef99df141de6dbfb1 )
refactor: cleanup error message templates
([#​20479](https://redirect.github.com/eslint/eslint/issues/20479 ))
(Francesco Trotta)
-
[`84fb885`](https://redirect.github.com/eslint/eslint/commit/84fb885d49ac810e79a9491276b4828b53d913e5 )
chore: package.json update for
[@​eslint/js](https://redirect.github.com/eslint/js ) release
(Jenkins)
-
[`1f66734`](https://redirect.github.com/eslint/eslint/commit/1f667344b57c4c09b548d94bcfac1f91b6e5c63d )
chore: add `eslint` to `peerDependencies` of `@eslint/js`
([#​20467](https://redirect.github.com/eslint/eslint/issues/20467 ))
(Milos Djermanovic)
###
[`v10.0.0`](https://redirect.github.com/eslint/eslint/compare/v9.39.2...4e6c4ac042e321da8fc29ce53ed03c86dcaa44a7 )
[Compare
Source](https://redirect.github.com/eslint/eslint/compare/v9.39.4...v10.0.0 )
</details>
---
### Configuration
📅 **Schedule**: (in timezone Asia/Shanghai)
- Branch creation
- "before 10am on monday"
- Automerge
- At any time (no schedule defined)
🚦 **Automerge**: Enabled.
♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.
👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://redirect.github.com/renovatebot/renovate/discussions ) if
that's undesired.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/ ).
View the [repository job
log](https://developer.mend.io/github/oxc-project/oxc ).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMjMuOCIsInVwZGF0ZWRJblZlciI6IjQzLjE1OS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Cameron Clark <cameron.clark@hey.com >
2026-05-04 21:33:50 +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
leaysgur
b5cb8d1fc4
feat(oxfmt): Update prettier to 3.8.3 ( #21451 )
...
https://github.com/prettier/prettier/releases/tag/3.8.3
2026-04-15 01:45:24 +00: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
leaysgur
5b0b5731c0
feat(oxfmt): Update prettier to 3.8.2 ( #21294 )
...
https://github.com/prettier/prettier/releases/tag/3.8.2
This release only include fixes for Angular.
2026-04-10 03:30:26 +00: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
leaysgur
7ac69fa3f7
refactor(oxfmt): Arrange cli/js_config dir ( #21078 )
...
- Add `/js_config/` dir
- Use inline tests
- Always return `Error` instance
2026-04-06 02:27:59 +00: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