Skip to content

Releases: oxc-project/oxc

oxlint v1.25.0

30 Oct 05:07
Immutable release. Only release title and notes can be modified.
2ca7387

Choose a tag to compare

[1.25.0] - 2025-10-30

💥 BREAKING CHANGES

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

🚀 Features

  • ed24d60 linter: Expose tsgolint program diagnostics (#15080) (camc314)
  • 23660c9 linter: tsgolint: handle omitted fixes and suggestions (#15047) (camchenry)
  • f7bef73 linter/plugins: Scope manager API (#14890) (Arsh)
  • 3e15cdd linter/strict-boolean-expression: Add rule (#14930) (camc314)
  • bd74603 linter: Add support for vitest/valid-title rule (#12085) (Tyler Earls)

🐛 Bug Fixes

  • e41dee5 linter/consistent-type-definition: Skip comments when looking for token (#14909) (camc314)
  • 806f9ba linter: Search system PATH for tsgolint executable (#14861) (magic-akari)
  • ee68089 linter: Normalize JS plugin names (#15010) (Peter Wagenet)
  • 597340e ast-tools: Use oxfmt to format generated code (#15064) (camc314)
  • 5eaaa8e linter: Prevent underflow in count_comment_lines for JSX files (#15026) (ityuany)
  • 88577a8 import/no-namespace: Remove dot special case (#15032) (Arsh)
  • 55ee962 linter/vars-on-top: False positive with typescript declare block (#14952) (Hamir Mahal)
  • 2de9f39 linter/plugins: Fall back to package name if meta.name is missing (#14938) (Peter Wagenet)
  • 5ace84b linter/no-empty-object-type: Parse "allowWithName" as regular expressions (#14943) (Arsh)
  • 5a2832d editor: Stop client when delete .oxlintrc.json with oxc.requireConfig (#14897) (Liang Mi)
  • 3e29d23 linter: Use aliases when parsing cli rules (#14912) (Arsh)
  • b94b6aa linter/explicit-module-boundary-types: False negative with export default function (#14905) (camc314)
  • 7060863 linter/no-standaline-expect: False positive with expect in callback (#14902) (camc314)
  • dc5a71b linter/no-accumulating-spread: False positive in nested callbacks within reduce (#14898) (camc314)

🚜 Refactor

  • 8d8d508 editor: Flatten flags options (#15006) (Sysix)
  • b1e1531 language_server: Extract library interface from main.rs (#15036) (Boshen)
  • 5de99c2 formatter: Export unified way to get_parse_options (#15027) (leaysgur)
  • b55df7f language_server: Move sub option for flags to the root + deprecate flags (#14933) (Sysix)

📚 Documentation

  • e15c91c linter: Add configuration option docs for eslint/init-declarations rule. (#15085) (Connor Shea)
  • f4505bc linter: Add configuration option docs for eslint/id-length rule. (#15083) (Connor Shea)
  • dd4c9d2 linter: Add configuration option docs for eslint/getter-return rule. (#15081) (Connor Shea)
  • 008e67a linter: Add configuration option docs for jest/no-large-snapshots rule. (#15079) (Connor Shea)
  • 31daf79 linter: Add configuration option docs for import/no-commonjs rule. (#15077) (Connor Shea)
  • 9bf8ebe linter: Add configuration option docs for jsdoc/check-tag-names rule. (#15076) (Connor Shea)
  • 491ab5e linter: Add configuration option docs for jsdoc/no-defaults rule. (#15074) (Connor Shea)
  • 2602d7e linter: Add configuration option docs for jsdoc/empty-tags rule. (#15072) (Connor Shea)
  • c3a92e0 linter: Add configuration option docs for oxc/no-rest-spread-properties rule. (#15070) (Connor Shea)
  • c7c9213 linter: Add configuration option docs for oxc/no-optional-chaining rule. (#15071) (Connor Shea)
  • 47a616f linter: Add configuration option docs for typescript/no-empty-object-type rule. (#14968) (Connor Shea)
  • fcc1e25 linter: Add configuration option docs for typescript/no-explicit-any rule. (#15051) (Connor Shea)
  • 1b88934 linter: Add configuration option docs for eslint/no-multi-assign rule. (#15052) (Connor Shea)
  • 909d4b9 linter: Add configuration option docs for eslint/no-unsafe-negation rule. (#15053) (Connor Shea)
  • f60763b linter: Add configuration option docs for eslint/no-useless-computed-key rule. (#15054) (Connor Shea)
  • c8911d4 linter: Add configuration option docs for eslint/no-unneeded-ternary rule. (#15056) (Connor Shea)
  • 9fc6374 linter: Add configuration option docs for eslint/no-misleading-character-class rule. (#15058) (Connor Shea)
  • 7656e2b linter: Add configuration option docs for eslint/sort-imports rule. (#15013) (Connor Shea)
  • bb06039 linter: Add configuration option docs for unicorn/no-instanceof-builtins rule. (#14999) (Connor Shea)
  • a4af5ff linter: Add configuration option docs for unicorn/no-typeof-undefined rule. (#15001) (Connor Shea)
  • ac2ed39 linter: Add configuration option docs for unicorn/numeric-separators-style rule. (#15002) (Connor Shea)
  • 5ce3e33 linter: Add configuration option docs for unicorn/prefer-object-from-entries rule. (#15003) (Connor Shea)
  • 07aea72 linter: Add configuration option docs for eslint/sort-keys rule. (#15014) (Connor Shea)
  • 35b36e0 linter: Add configuration option docs for eslint/no-eval rule. (#15015) (Connor Shea)
  • d222b85 linter: Add configuration option docs for eslint/no-empty rule. (#15017) (Connor Shea)
  • 83bbc37 linter: Add configuration option docs for eslint/no-extend-native rule. (#15018) (Connor Shea)
  • aade2fe linter: Add configuration option docs for eslint/no-extra-boolean-cast rule. (#15019) (Connor Shea)
  • bae0c09 linter: Add configuration option docs for jsdoc/require-yields rule. (#15024) (Connor Shea)
  • 06c77b6 linter: Add configuration option docs for unicorn/prefer-at rule. (#15023) (Connor Shea)
  • 54b2cb4 linter: Add configuration option docs for eslint/max-classes-per-file rule. (#15022) (Connor Shea)
  • b5acda7 linter: Add configuration option docs for typescript/explicit-module-boundary-types rule. (#15021) (Connor Shea)
  • a0c6162 linter: Add configuration option docs for vue/max-props rule. (#14966) (Connor Shea)
  • 3ec59c0 linter: Add configuration option docs for no-async-endpoint-handlers rule. (#14965) (Connor Shea)
  • 7a275fd linter: Add configuration option docs for no-map-spread rule. (#14964) (Connor Shea)
  • 0002b7c linter: Add configuration option docs for no-barrel-file rule. (#14963) (Connor Shea)
  • fd4b7ab linter: Add configuration option docs for unicorn/consistent-function-scoping rule. (#14969) (Connor Shea)
  • aa339b3 linter: Add configuration option docs for eslint/no-void rule. (#14970) (Connor Shea)
  • af8bdae linter: Add configuration option docs for import/no-anonymous-default-export rule. (#14971) (Connor Shea)
  • 5a81953 linter: Add configuration option docs for jest/require-hook rule. (#14972) (Connor Shea)
  • 1be268d linter: Add configuration option docs for jest/require-top-level-describe rule. (#14973) (Connor Shea)
  • 860a58c linter: Add configuration option docs for jest/no-hooks rule. (#14974) (Connor Shea)
  • b69b586 linter: Add configuration option docs for jest/max-expects rule. (#14975) (Connor Shea)
  • 2e02fe0 linter: Add configuration option docs for jest/no-deprecated-functions rule (#14976) (Connor Shea)
  • cdc6c4f linter: Add configuration option docs for unicorn/no-array-sort rule. (#14977) (Connor Shea)
  • 40eb394 linter/no-unassigned-import-config: Add auto generated config docs (#14918) (camc314)

⚡ Performance

  • a9f68b2 linter: Move up rule retainment into initial collection to reduce allocation size (#14822) (camchenry)
  • b27c5b9 linter: Add codegen support for regex nodes (#14874) (camchenry)

🧪 Testing

  • bf898e5 linter: Increase stability of tsgolint test cases (#15063) (camc314)
  • 49da411 linter/no-standalone-expect: Fix tests (#14901) (camc314)

💼 Other

oxfmt v0.9.0

30 Oct 04:15
Immutable release. Only release title and notes can be modified.
2ca7387

Choose a tag to compare

oxfmt v0.9.0 Pre-release
Pre-release

[0.9.0] - 2025-10-30

🚀 Features

  • 8fe7e85 formatter: Support printing Formatter IR (#14855) (Dunqing)

🐛 Bug Fixes

  • a6b6ef8 formatter: Correct calculating layout for TSNonNullExpression in StaticMemberExpression (#15065) (Dunqing)
  • 99bd995 formatter: Print parenthesis for sequence expression in ReturnStatement and ExpressionStatement (#15062) (Dunqing)
  • f3fb998 formatter: Correct printing comments for TSAsExpression (#15061) (Dunqing)
  • 1e4a018 formatter: Correct checking of the short argument for CallArguments (#15055) (Dunqing)
  • c0dfd9b formatter: Print comments before fat arrow as-is for ArrowFunctionExpression (#15050) (Dunqing)
  • 206b519 formatter: Should hug parameter with TSMappedType type annotation (#15049) (Dunqing)
  • e48c604 formatter: Incorrect formatting of a function with this parameter (#15031) (Dunqing)
  • a9f0c45 formatter: Decorators and class method on the same line shouldn't be broken by a leading comment of the method (#15029) (Dunqing)
  • 43d74e4 formatter: Handle <CRLF> for SourceText (#15016) (leaysgur)
  • 34fab40 formatter: Correct calculating layout for ChainExpression in StaticMemberExpression (#14986) (Dunqing)
  • 68dc101 formatter: Should not break when the parent of root of StaticMemberExpression is used as the Argument of NewExpression (#14985) (Dunqing)
  • 071b739 formatter: Align the short argument handling for UnaryExpression with Prettier (#14984) (Dunqing)
  • 3940f3a formatter: BestFitting doesn't exactly matches the conditinalGroup behavior in Prettier (#14983) (Dunqing)
  • 4a84e44 formatter: Align the logic of printing type parameters, parameters, and return type for functions with Prettier (#14942) (Dunqing)
  • 68c1f2a formatter: Non-nested static member expressions will never break (#14929) (Dunqing)
  • 42adc47 formatter: Check whether a type alias is complex when its right hand side never break (#14928) (Dunqing)
  • e501f13 formatter: Should not add a trailing comma for long curried calls when trailingComma is es5 (#14913) (Dunqing)

🚜 Refactor

  • 7d64291 formatter: Simplify printing ClassElement with a semicolon (#15030) (Dunqing)
  • 5de99c2 formatter: Export unified way to get_parse_options (#15027) (leaysgur)
  • f6f22e2 formatter: Clean up unneeded implementations for printing comments (#14935) (Dunqing)
  • 7a2b9d1 formatter: Improve printing trailing comments (#14934) (Dunqing)
  • ba10caa formatter: Align printing trailing comments with Prettier (#14927) (Dunqing)
  • 597c9e8 formatter: Remove redundunt public API (#14915) (leaysgur)

⚡ Performance

  • 467b3a1 formatter: Optimize grouping logic for call arguments (#15033) (Dunqing)

💼 Other

oxlint v1.24.0

22 Oct 12:41
Immutable release. Only release title and notes can be modified.
90add74

Choose a tag to compare

[1.24.0] - 2025-10-22

🚀 Features

  • dd1fdd4 linter: Add react/forbid-dom-props rule (#14365) (Mikhail Baev)
  • e3d65c3 language_server: Search both .json and .jsonc config file (#14868) (Sysix)
  • 54ec8e3 linter: Add cwd property to JS plugin Context (#14814) (magic-akari)
  • 8b02074 linter: Merge vitest/prefer-to-be rule into existing jest/prefer-to-be rule implementation (#14738) (Tyler Earls)
  • 9700a56 linter/plugins: Comment-related APIs (#14715) (Arsh)
  • ba6517b linter: Add no-warning-comments rule (#14734) (Iván Ovejero)
  • 5858641 linter: Implement constructor-super rule (#14506) (Tyler Earls)
  • 8b322d4 editor: Support oxc.fmt.configPath configuration (#14639) (Sysix)
  • 2609c74 language_server: Watch for fmt.configPath file content change (#14509) (Sysix)
  • ae2003c semantic: Add symbol_id to ts function type binding idents (#14673) (camc314)
  • bec7a7d semantic: Add scope to TSConstructorType (#14676) (camc314)
  • fec2ed9 oxfmt: Use Prettier style config key and value (#14612) (leaysgur)
  • 9cd7a67 linter/no-unused-vars: Support ignoreUsingDeclarations option (#14632) (camc314)
  • 1b58521 oxfmt,language_server: Enable JSX for all JS source type (#14605) (leaysgur)
  • b1a9a03 linter/plugins: Implement SourceCode#getAllComments (#14589) (Arsh)

🐛 Bug Fixes

  • 831974f linter: Postmessage is not called on window (#14192) (Kenzo Wada)
  • 644dfd4 language_server: Make unused directives fixable again (#14872) (Sysix)
  • 801e1d1 linter: Error on unexpected tokens when declaring lint rule (#14881) (howen)
  • dc03c3a linter/no-invalid-fetch-options: Ignore non static method (#14806) (camc314)
  • 28e76ec oxlint: Resolving JS plugin failing when extends is used (#14556) (camc314)
  • aa562f7 linter/no-unused-private-class-members: Fix false positive in default param (#14801) (camc314)
  • ad12974 linter: no-unused-vars: allow updates in for loop test/update (#14766) (camchenry)
  • 78ee7b8 linter/plugins: Handle utf16 characters within comment spans (#14768) (Arsh)
  • 47d8db1 linter/plugins: Prevent comments being accessed after file is linted (#14727) (overlookmotel)
  • c69201c linter: Copy over js plugins when applying overrides (#14542) (Arsh)
  • 6bb9902 linter: Improve jest/no_export heuristic (#14620) (Arsh)
  • c8ea37d linter: unicorn/filename-case report only on the first js block for astro, vue and svelte files (#14599) (Sysix)
  • e560cc1 language_server: Fix panic when "disable rule for this line" position is after error span (#14597) (Sysix)
  • 5238891 linter/plugins: Add comments field to TS type def for Program (#14626) (overlookmotel)
  • 84b2605 linter/plugins: Remove parent property from comments (#14624) (overlookmotel)
  • baab7eb semantic: Fix quote handling in jsdoc parser(#13776) (#14561) (Li Wei)
  • 0961c3a oxlint,oxfmt: Skip traversing .git directories (#14590) (Boshen)

🚜 Refactor

  • 1e93ceb linter/no-unwanted-polyfillio: Move NEXT_POLYFILLED_FEATURES to shared utils (#14793) (shulaoda)
  • 4520695 linter/plugins: Reorganise SourceCode methods (#14773) (overlookmotel)
  • 6942d75 linter/plugins: Shorten import of comment-related SourceCode methods (#14772) (overlookmotel)
  • b9a3f46 linter/plugins: Move scope-related SourceCode methods into separate file (#14771) (overlookmotel)
  • cd068aa linter/plugins: Move token-related SourceCode methods into separate file (#14770) (overlookmotel)
  • ec816ba linter/plugins: Move comments-related code into separate file (#14753) (overlookmotel)
  • e9c3b18 linter/plugins: Update outdated comment (#14750) (overlookmotel)
  • 699c91c language_server: Improve file watching for different tools (#14645) (Sysix)
  • 14de671 linter/plugins: Simplify comments getter (#14728) (overlookmotel)
  • b402024 linter/plugins: Rename function (#14726) (overlookmotel)
  • 85a2743 linter/plugins, napi/parser: Remove extraneous code from raw transfer deserializers (#14683) (overlookmotel)
  • 3bfb8e1 linter: Make Message.span public (#14601) (Sysix)
  • 544c092 linter/no-process-env: Restructure match to improve generated node types (#14643) (camc314)
  • 9a589ca language_server: Use Message span for Diagnostic's Range (#14600) (Sysix)
  • 2b14abc napi/parser: Shorten raw transfer deserializer for Comment (#14623) (overlookmotel)
  • 90f5f89 linter: Remove run_on_symbol (#14610) (camchenry)
  • b301795 linter: Remove unused allocator param in Runtime for LSP & tests (#14489) (Sysix)

📚 Documentation

  • 3f1c3c7 linter: Add documentation on ignoreRestSiblings option for no-unused-vars rule (#14807) (howen)
  • 9cd4160 linter: Fix documentation formatting for max_params options (#14744) (Connor Shea)
  • cbdf261 linter: Document no-shadow-restricted-names rule config options. (#14843) (Connor Shea)
  • a6f720b linter: Expose use-isnan rule config options. (#14844) (Connor Shea)
  • 7dc609b linter: Add docs for no-param-reassign config options. (#14849) (Connor Shea)
  • 983c31c linter: Improve the Options documentation for no-empty-function rule (#14789) (Connor Shea)
  • 77e4b30 linter: Add autogen doc support for max_nested_describe in jest plugin. (#14797) (Connor Shea)
  • b6402dd linter: Move documentation comments for the valid-typeof rule to the struct (#14841) (Connor Shea)
  • a02567f linter: Update no-invalid-regexp rule to expose documentation for config options (#14838) (Connor Shea)
  • ebca4a6 linter: Update no-plusplus rule to expose documentation for config options (#14837) (Connor Shea)
  • 1665ab4 linter: Add doc comments for func_style options. (#14847) (Connor Shea)
  • b1fb269 linter: Add configuration docs info for import/namespace rule (#14799) (Connor Shea)
  • c80da95 linter: Add configuration docs to no-useless-escape lint rule. (#14791) (Connor Shea)
  • 7b64f27 linter: Improve no-plusplus and no-irregular-whitespace rule docs (#14790) (Connor Shea)
  • 207b62b linter/plugins: Correct JSDoc comments for SourceCode tokens methods (#14776) (overlookmotel)
  • cd266b4 linter/plugins: Improve docs for comments APIs (#14754) (overlookmotel)

⚡ Performance

  • 11b055e linter: no-unused-private-class-members: only run when there are any classes (#14869) (camchenry)
  • 5493278 linter: no-dupe-class-members: only run when there are any classes (#14867) (camchenry)
  • ef53462 linter: no-this-before-super: only run when file contains super or this (#14866) (camchenry)
  • 19d168a linter: max-classes-per-file: skip when no classes (#14865) (camchenry)
  • b8f8ce5 linter: id-length: reduce allocations and add more ASCII checks (#14821) (camchenry)
  • bb4347c linter: Use precomputed extension (#14819) (camchenry)
  • 92b4302 linter: id-length: check if ident is ASCII before segmenting (#14767) (camchenry)
  • 7be9489 linter: Cache file extension (#14794) (camchenry)
  • 10182e8 linter/plugins: Use binary search (#14778) (Arsh)
  • 86ecae1 linter: Remove simple phf_map! calls (#14701) (camchenry)
  • e6f351d linter/plugins: Speed up SourceCode#getAncestors (#14747) (overlookmotel)
  • df48416 language_server: Return Diagnostic when relinting all files (#14737) (Sysix)
  • 22ee19f language_server: Avoid creating HashMap in Backend::did_change_configuration (#14736) (Sysix)
  • ed922ec language_server: Avoid creating HashMap in Backend::did_change_watched_files (#14735) (Sysix)
  • 58ba6d6 linter/plugins: Lazy deserialize comments array (#14637) (Arsh)
  • 2fe9dfa linter: Update prefer-node-protocol to use diverging match (#14699) (camchenry)
  • 07db921 linter: Update catch-error-name to use top-level match (#14698) (camchenry)
  • 2582a50 linter: Update no-extra-non-null-assertion to use diverging match (#14697) (camchenry)
  • 231bac0 linter: Update typescript/array-type to only have top-level match (#14696) (camchenry)
  • 6b9b972 linter: Refactor jsdoc/require-yields to deref instead of self.0 (#14695) (camchenry)
  • 9ac561c linter: Inline is_function_node calls for some jsdoc rules (#14694) (camchenry)
  • 5e014cb linter: Refactor jest/require-hook to use top-level match (#14693) (camchenry)
  • c8d775c linter: Refactor jest/no-conditional-in-test to use diverging match (#14692) (camchenry)
  • b666c26 linter: Move root scope check into match arms in import/no-webpack-loader-syntax (#14691) (camchenry)
  • be33a15 linter: Refactor no-amd to do scope check after node type check (#14690) (camchenry)
  • 71cfeaa linter: Refactor no-unsafe-finally to have a diverging match as first statement (#14689) (camchenry)
  • 801bb10 linter: Refactor no-labels to use top-level match on node kind (#14688) (camchenry)
  • 1217411 linter: Refactor class-methods-use-this to be analyzed (#14687) (camchenry)
  • f830bea linter: Add codegen support for is_member_expression_kind in match (#14677) (camchenry)
  • 400a99a linter: Switch if !matches!(node.kind(), ...) to match block (#14650) (camchenry)
  • f2c33f5 linter: Rearrange rules for node type analysis (#14648) (camchenry)
  • 73f2cbb linter: Support getting as_member_expression_kind() variants (#14642) (camchenry)
  • 58e17ae linter: Only check for call expr once in unicorn/no-array-method-this (#14641) (camchenry)
  • 12a9934 linter: Detect diverging match blocks for node type skipping (#14631) (camchenry)
  • 82196e7 linter: Update react/prefer-es6-class to use top-level match (#14630) (camchenry)
  • 48e3348 linter: Update linter codegen to support wildcard with empty tuple (#14611) (camchenry)
  • 0485859 linter: Update no-const-assign to run on nodes instead of symbols (#14609) (camchenry)
  • 976bde0 linter: Run next/no-duplicate-head on nodes instead of symbols (#14607) (camchenry)
  • c821c50 linter: Switch no-param-reassign to run on nodes (#14604) (camchenry)
  • 676ee99 linter: Run no-class-assign on class nodes instead of symbols (#14578) (camchenry)
  • 463be73 linter: Support as_* for node type codegen (#14582) (camchenry)
  • 8df1e24 linter: Use top-level match for const-comparisons (#14581) (camchenry)

🎨 Styling

🧪 Testing

Read more

oxfmt v0.8.0

22 Oct 09:50
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

oxfmt v0.8.0 Pre-release
Pre-release

[0.8.0] - 2025-10-22

🚀 Features

  • 381e08c oxfmt: More friendly JSON schema (#14879) (leaysgur)
  • 006708d oxfmt: Support ignorePatterns in oxfmtrc (#14875) (leaysgur)

🐛 Bug Fixes

  • 64b8226 formatter: Corrct printing leading own line comments before method body (#14886) (Dunqing)
  • 6ce1162 formatter: Remove a redundant space for TSMappedType (#14885) (Dunqing)
  • 5b962a7 formatter: Remove redundant leading space when only the rest part of the array exists (#14884) (Dunqing)
  • 8301d8f formatter: No need to wrap parenthesis for ObjectExpression when it is an expression of a template literal (#14883) (Dunqing)
  • 9397472 formatter: Should not wrap parenthesis for ComputedMemberExpression when it is not an option or it doesn't contain a call expression (#14882) (Dunqing)
  • 3e62277 formatter: Should not add a soft line for the arrow function inside ExpressionContainer with a trailing comment (#14878) (Dunqing)
  • 990916a formatter: Correct handling of leading own line before arrow function body (#14877) (Dunqing)
  • 4a499b5 formatter: Correct printing trailing comments for if statement with non-block consequent (#14857) (Dunqing)

🧪 Testing

  • 868ff99 formatter: Fix tests using TS syntax with .js (#14880) (leaysgur)

💼 Other

oxfmt v0.7.0

21 Oct 10:18
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

oxfmt v0.7.0 Pre-release
Pre-release

[0.7.0] - 2025-10-21

🚀 Features

  • 6dfcd80 oxfmt: Search both .json and .jsonc config file (#14848) (leaysgur)
  • aa024d9 formatter: Wrap parenthesis for AssignmentExpression that are inside ComputedMemberExpression (#14834) (Dunqing)

🐛 Bug Fixes

  • 88fb768 formatter: Correct handling of ignore comment for TSUnionType and TSMappedType (#14824) (Dunqing)
  • f7727c7 formatter: Ignore comment doesn't work for the expression statement (#14817) (Dunqing)
  • 7a420a1 oxfmt: Handle .d.ts file correctly (#14835) (leaysgur)

🚜 Refactor

  • 6fa7420 oxfmt: Use custom ignore builder (#14850) (leaysgur)
  • 9d914a3 formatter: Improve comments handling (#14816) (Dunqing)
  • f52863d formatter: Improve handling of type cast node (#14815) (Dunqing)

💼 Other

oxfmt v0.6.0

20 Oct 10:10
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

oxfmt v0.6.0 Pre-release
Pre-release

[0.6.0] - 2025-10-20

🚀 Features

  • 7f91a26 oxfmt: Handle ignoring files (#14798) (leaysgur)
  • 199a2c6 oxfmt: Support --with-node-modules option (#14713) (leaysgur)
  • 6bf8bac formatter: Reimplement formatting for ImportExpression (#14712) (Dunqing)
  • 3f2e036 formatter: Introduce AstNode<ExpressionStatement>::is_arrow_function_body (#14709) (Dunqing)
  • df225e9 formatter: Add AstNode::ancestor and AstNode::grand_parent methods (#14700) (Dunqing)
  • 26c5f5a oxfmt: Ignore VCS directories by default (#14616) (leaysgur)
  • fec2ed9 oxfmt: Use Prettier style config key and value (#14612) (leaysgur)
  • 1b58521 oxfmt,language_server: Enable JSX for all JS source type (#14605) (leaysgur)

🐛 Bug Fixes

  • 21c4285 formatter: Correct printing remaining trailing comments for TSMappedType (#14761) (Dunqing)
  • 1d1573e formatter: Correct adding semicolons for TypeScript left-hand side nodes (#14760) (Dunqing)
  • 4cc3b10 formatter: Improve handling of new lines between comments in MemberChain (#14759) (Dunqing)
  • e6bce8e formatter: Break the left hand side of AssignmentLike node if it is an ObjectPattern with three properties (#14756) (Dunqing)
  • dc57a2b formatter: Incorrect handling of VariableDeclarator with an ArrowFunctionExpression initializer (#14731) (Dunqing)
  • 537185d formatter: Should always group the left side of AssignmentPattern (#14730) (Dunqing)
  • ef02760 oxfmt: Handle relative path starts with dot (#14708) (leaysgur)
  • ee37f5d oxfmt: Handle default cwd correctly (#14704) (leaysgur)
  • 4283fd8 formatter: Correct printing comments for JSXAttributeValue (#14719) (Dunqing)
  • 59c9e1b formatter: Avoid conditional being broken in arguments by trailing comments (#14718) (Dunqing)
  • 7d64b96 formatter: Should wrap parentheses with JSX arguments of NewExpression (#14717) (Dunqing)
  • 2068a63 formatter: Should indent TemplateExpression if it is a member expression that is part of ChainExpression (#14714) (Dunqing)
  • 5ea3bb6 formatter: Incorrect handling of ObjectPattern as an AssignmentPattern of a parameter (#14711) (Dunqing)
  • eb52529 formatter: Incorrect handling of ObjectPattern as a parameter (#14670) (Dunqing)
  • 8ac10da formatter: Correct checking assignment layout for the right side with ownline comment and it is a PrivateFieldExpression (#14664) (Dunqing)
  • 6cba9b1 formatter: Should not merge tail with head for MemberChain when its parent is ArrowFunctionExpression (#14663) (Dunqing)
  • f44d3c0 formatter: Should not indent BinaryLikeExpression when its parent is NewExpression (#14662) (Dunqing)
  • bf953b8 formatter: Should group nested test for TSConditionalType (#14661) (Dunqing)
  • 63dc57b formatter: Correct handling if a template literal should be printed as a signle line (#14660) (Dunqing)
  • 0150ad5 formatter: Should group type parameters and parameters for method-like and function-like nodes (#14659) (Dunqing)
  • 392bf74 formatter: Improve handling of dangling comments in if statements (#14658) (Dunqing)
  • fd52b10 formatter: Don't print CallExpression as MemberChain style when its only has one argument and it is a TemplateLiteral on its own line (#14657) (Dunqing)
  • 29c3c60 formatter: Don't group nested await expression when its is the leftmost expression (#14656) (Dunqing)
  • 72c7503 formatter: Correct checking function composition when the arguments have an call expression before function (#14655) (Dunqing)
  • 2b645e2 formatter: Don't wrap parenthesis for type when its grandparent isn't a ExpressionStatement (#14654) (Dunqing)
  • e0eb966 formatter: Skip the leading semicolon when calculating leading lines (#14653) (Dunqing)
  • 0961c3a oxlint,oxfmt: Skip traversing .git directories (#14590) (Boshen)

🚜 Refactor

  • b7926f3 oxfmt: Update CLI --help details (#14796) (leaysgur)
  • 173168b oxfmt: Refactor walk.rs and format.rs relationship (#14795) (leaysgur)
  • aea9d79 oxfmt: Pass PathBuf from walk.rs to service.rs (#14716) (leaysgur)
  • 83e783a formatter: Organize utils structure (#14710) (Dunqing)
  • 58dd74a formatter: Remove all without_parentheses usages (#14707) (Dunqing)
  • 75dfcad formatter: Simplify ExpressionLeftSide (#14706) (Dunqing)
  • 273f0fe formatter: Remove unnecessary lifetimes for the implementations of NeedsParentheses (#14703) (Dunqing)
  • bae5f11 formatter: Improve AstNode and AstNodes (#14686) (Dunqing)

⚡ Performance

  • c6395c7 formatter: Optimize string reservation in print_text (#14751) (Boshen)

🧪 Testing

  • 7c42ea0 oxfmt: Remove args from snapshot file name (#14800) (leaysgur)
  • 42d8c62 formatter: Add tests for sort-imports (#14685) (leaysgur)

💼 Other

oxfmt v0.5.0

14 Oct 08:28
Immutable release. Only release title and notes can be modified.
cf9f56c

Choose a tag to compare

oxfmt v0.5.0 Pre-release
Pre-release

[0.5.0] - 2025-10-14

🚀 Features

  • 8077f9b oxfmt: Provide JSON schema for .oxfmtrc.json (#14399) (leaysgur)
  • 51ddfa8 oxfmt: Support .oxfmtrc.json(c) config file (#14398) (leaysgur)

🐛 Bug Fixes

  • c4e12df formatter: Correct checking comments around the return argument (#14585) (Dunqing)
  • 454303b formatter: Check empty lines between arguments incorrectly (#14584) (Dunqing)
  • a5554a8 formatter: Print a line break incorrectly for directives (#14577) (Dunqing)
  • 5db9774 formatter: Correct printing comments that are around the StaticMemberExpression (#14543) (Dunqing)
  • 620dbac formatter: No need to wrap a parenthesis for TSConditionalType and TSFunctionType when its parent is TSUnionType and it only has one element (#14540) (Dunqing)
  • 1aec74f formatter: Missing parenthesis for ComputedMemberExpression when its parent is an NewExpression (#14530) (Dunqing)
  • 59f1d8f formatter: Missing parenthesis for PrivateInExpression when its parent is an UnaryExpression (#14529) (Dunqing)
  • b06059e formatter: Correct printing comments for logical expression (#14500) (Dunqing)
  • be38095 formatter: Should break even if the right side of the assignment is a require when it has a leading own line comment (#14499) (Dunqing)
  • 4d55654 formatter: Correct printing comments for the end of union type (#14498) (Dunqing)
  • 4994872 formatter: Correct printing comments for try statement (#14497) (Dunqing)
  • 9a4da3d formatter: Should expand the parent if the member chain will break (#14487) (Dunqing)
  • bba9689 formatter: Correct printing comments around the expression of ComputedMemberExpression (#14486) (Dunqing)
  • dc5e08a formatter: Correct printing yield argument (#14485) (Dunqing)
  • b8a0905 formatter: No need to wrap with parentheses for a type cast node (#14484) (Dunqing)
  • b159215 formatter: Ignore the leading line break for the first argument of the call expression (#14483) (Dunqing)
  • ea8f9ed formatter: Correct checking comments between the operator and the right side for assignment like nodes (#14482) (Dunqing)
  • 4f19504 formatter: Block comments without a leading linebreak that are around the operator of the conditional expression should be printed as-is (#14474) (Dunqing)
  • ef77997 formatter: Correct printing comments for for statements (#14473) (Dunqing)
  • 31595c3 formatter: Correct printing comments for assignment pattern (#14469) (Dunqing)
  • 0f19be0 oxfmt: Normalize path delimiter on Windows (#14463) (leaysgur)
  • 5856bc9 oxc_formatter: Fix arrow_parentheses: 'avoid' > 'as-needed' (#14462) (leaysgur)

🚜 Refactor

  • 7bc86f4 formatter: Simplify foramtting import and export (#14576) (Dunqing)
  • 29c3cf2 formatter: Remove SiblingNode (#14551) (Dunqing)
  • 893bdac formatter: Improve printing comments for special nodes (#14544) (Dunqing)
  • 97bb964 formatter: Improve line break detaching logic in SourceText (#14539) (Dunqing)

🧪 Testing

  • bb43dc5 formatter: Add snapshot-based test infrastructure (#14400) (Dunqing)

💼 Other

oxlint v1.23.0

13 Oct 16:51
Immutable release. Only release title and notes can be modified.
0082cda

Choose a tag to compare

[1.23.0] - 2025-10-13

🚀 Features

  • 452d128 linter: Node/no_process_env (#14536) (Kenneth Skovhus)
  • a9e1261 linter: Implement react-refresh/only-export-components (#14122) (Rintaro Itokawa)
  • a8d542b linter/no-duplicate-imports: Support allowSeparateTypeImports option (#14527) (camc314)
  • 75a529c linter: Add run info about what functions rules implement (#13839) (camchenry)
  • 4fbdef2 language_server: Support fmt.configPath configuration (#14502) (Sysix)
  • 4d3ce2e language_server: Autodetect root .oxfmtrc.json (#14466) (Sysix)

🐛 Bug Fixes

  • fb4a20d language_server: Add whitespace for // oxlint-disable-next-line fix (#14356) (Sysix)
  • 6fce7f4 oxlint/changelog: Remove duplicate changelog entries (#14528) (camc314)
  • 74e52f3 linter/plugins: Resolve JS plugins with ESM condition names (#14541) (magic-akari)
  • 9965676 linter/exhaustive-deps: Ignore empty strings passed to additionalHooks option (#14464) (Redas)
  • d0a8e3e linter: vue/no_required_prop_with_default called Option::unwrap() on a None value (#14491) (Sysix)
  • 1192ea2 linter: Correct nextjs/no-typos path handling (#14480) (shulaoda)
  • 2796b16 tsgolint: Pipe tsgolints stderr (#14477) (camc314)

🚜 Refactor

  • 6440cde linter: Remove lifetime of Message (#14481) (Sysix)
  • f599bef language_server: Move Message to DiagnosticReport transformation to one place (#14447) (Sysix)
  • 4f301de napi/parser, linter/plugins: Improve formatting of generated code (#14554) (overlookmotel)
  • 68c0252 napi/parser, linter/plugins: Shorten generated raw transfer deserializer code (#14553) (overlookmotel)
  • 20e884e linter: Store LintService in LintRunner (#14471) (Sysix)
  • 9e9c5ba linter: Simplify built-in lint plugin checks (#14518) (camchenry)
  • 1986e0f linter/no-ex-assign: Use let-else chain (#14526) (camc314)
  • ce9bcf0 linter/no-func-assign: Use let-else chain (#14525) (camc314)
  • a9cea7c language_server: Use FxHashSet for ServerLinter::extended_paths (#14517) (Sysix)
  • ea5838e linter/no-import-assign: Use let-else chain (#14524) (camc314)
  • f977700 language_server: Pass LintOptions to Worker::refresh_server_linter (#14510) (Sysix)
  • 54b001f linter/no-new-require: Improve diagnostic message clarity (#14511) (shulaoda)
  • 650ea68 linter: Improve nextjs/no-typos rule (#14476) (shulaoda)

📚 Documentation

  • 198f2e9 linter: Fix code example for branches-sharing-code (#14514) (camc314)
  • d776a17 linter: Improve nextjs/no-typos rule documentation (#14470) (shulaoda)

⚡ Performance

  • b44a30e language_server: Transform Message to DiagnosticReport with one call (#14448) (Sysix)
  • 31766fd linter/plugins: Provide loc via prototype (#14552) (overlookmotel)
  • aec0c08 linter: Allow analyzing node types in match blocks with guards (#14459) (camchenry)
  • 9044187 linter: Skip running node-specific rule if file contains no relevant nodes (#14457) (camchenry)
  • 422f54e linter: Only run rule run functions if implemented (#14454) (camchenry)
  • 2c228ae liner: Use top-level match for no_obj_calls (#14523) (camchenry)
  • c49d891 linter: Use match for no_negated_condition (#14522) (camchenry)
  • e222fc2 linter: Use match for no_multi_assign (#14521) (camchenry)
  • 4440516 linter: Refactor rules to take advantage of node type skipping (#14519) (camchenry)
  • 78261d6 linter: Refactor no-invalid-fetch-options to be more easily analyzed (#14458) (camchenry)

🧪 Testing

  • 8d8881d linter/plugins: Expand tests for module resolution of plugins (#14559) (overlookmotel)
  • 33b6cde language_server: Add basic tests for WorkspaceWorker::did_change_configuration (#14531) (Sysix)
  • bfe1ecd language_server: Add tests for WorkspaceWorker::init_watchers (#14516) (Sysix)

💼 Other

oxfmt v0.4.0

09 Oct 03:53
8c3be35

Choose a tag to compare

oxfmt v0.4.0 Pre-release
Pre-release

[0.4.0] - 2025-10-09

🚀 Features

  • 142e7ac formatter/sort-imports: Implement options.ignoreCase: bool (#14367) (leaysgur)
  • 5c8bd31 formatter/sort-imports: Implement options.sortSideEffects: bool (#14293) (leaysgur)
  • 593c416 formatter/sort-imports: Add options.order: asc|desc (#14292) (leaysgur)
  • f1a1f89 formatter/sort-imports: Implement basic sorting with tests (#14291) (leaysgur)
  • f75b8f7 formatter/sort-imports: Wrap ImportDeclaration with JsLabels (#14109) (leaysgur)
  • 6be4ae5 formatter/sort-imports: Experimental sort-imports base (#14105) (leaysgur)
  • cb29117 formatter: Correct printing parameters with return_type for function-like node (#14084) (Dunqing)
  • 90fd46f formatter: Normalize key of TSPropertySignature (#14083) (Dunqing)
  • 6cfce80 formatter: Implement formatting for TSTypeAliasDeclaration (#14040) (Dunqing)
  • 3097b60 formatter: Implement formatting for TSMappedType (#14025) (Dunqing)
  • cd620bd formatter: Correct printing for Class (#14024) (Dunqing)
  • 03244f1 formatter: Correct printing for TSConditionalType (#14023) (Dunqing)
  • f6dc981 formatter: Implement formatting for TSTupletype (#14019) (Dunqing)
  • 10a41ab formatter: Export doc() API to inspect IR in example (#14068) (leaysgur)
  • 06a1df6 formatter: Implement formatting for TSTypeParameters and TSTypeParameterInstantiation (#13919) (Dunqing)
  • 9b46dd7 formatter: Implement formatting for TSTypeAssertion (#13911) (Dunqing)
  • 5710b13 formatter: Implement formatting for TSIntersectiontype (#13910) (Dunqing)
  • 2d18144 formatter: Implement formatting for TSUnionType (#13893) (Dunqing)
  • 0f15ed3 formatter: Implement formatting for TSAsExpression and TSSatisfiesExpression (#13892) (Dunqing)

🐛 Bug Fixes

  • 59dc17e oxfmt: Change bin script to ESM (#14263) (Boshen)
  • ad5c18a formatter: Correct parentheses in TSIntersectionType (#14098) (Noel Kim (김민혁))
  • 7c09b20 formatter: Print comments incorrectly if the node is without following a node (#14110) (Dunqing)
  • ed33fad formatter: Merge the right side of LogicalExpression if it's a LogicalExpression and both have the same operator (#14097) (Dunqing)
  • 1b0519c formatter: Correct printing comments within the type annotation of ArrayPattern and ObjectPattern (#14077) (Dunqing)
  • e299ab0 formatter: Correct printing comments around decorators (#14076) (Dunqing)
  • 7d11047 formatter: Correct a bunch of implementations for TypeScript (#14069) (Dunqing)
  • 57cbf84 formatter: Correct preserving parentheses for TSXXXType nodes (#14022) (Dunqing)
  • 134f255 formatter: Missing parenthesis for NewExpression whose callee is a TSNonNullExpression with TaggedTemplateExpression (#14021) (Dunqing)
  • 1e9ce4e formatter: Skip the parent node if it is a TSNonNullExpression or AstNodes::ChainExpression for StaticMemberExpression (#14020) (Dunqing)
  • 3ce0775 formatter: Missing semicolon for declare function (#13928) (Dunqing)

🚜 Refactor

  • 70bd141 formatter: Improve formatting of Function and ArrowFunctionExpression with types (#14070) (Dunqing)
  • 226deee oxfmt: Rename build script to .js (#14046) (overlookmotel)

💼 Other

oxlint v1.22.0

08 Oct 21:52
b2af43a

Choose a tag to compare

[1.22.0] - 2025-10-08

🚀 Features

  • 9f9d25f linter/oxc: Implement branches-sharing-code (#14440) (camc314)

🐛 Bug Fixes

  • 5c29bb6 linter: Fix compile error with test target (#14449) (camc314)
  • 0dcdbd1 oxlint: Bundle esquery (#14450) (camc314)

💼 Other