fix(linter/jsdoc): false positive in check-tag-names for @ in email addresses and npm scopes#19021
Conversation
There was a problem hiding this comment.
Pull request overview
This PR fixes false positives in the jsdoc/check-tag-names linter rule where @ symbols appearing mid-line in tag descriptions (such as in email addresses like <[email protected]> or npm scoped packages like @vue/shared) were incorrectly parsed as new JSDoc tags.
Changes:
- Modified JSDoc parser to only recognize
@as a tag start when it appears at the logical start of a line (after optional whitespace and*markers) - Updated tests to reflect the corrected parsing behavior, removing tests that expected mid-line
@to be recognized as tags - Added new test cases for email addresses and npm scoped packages to verify the fix
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| crates/oxc_semantic/src/jsdoc/parser/parse.rs | Introduced at_line_start tracking to ensure @ symbols are only recognized as tags when they appear at the start of a line (after optional whitespace and * markers) |
| crates/oxc_semantic/src/jsdoc/parser/jsdoc_tag.rs | Removed test cases that expected mid-line @ to be recognized as tags; updated @@ test case to reflect new parsing behavior |
| crates/oxc_semantic/src/jsdoc/parser/jsdoc.rs | Updated test expectations for single-line and multi-line JSDoc comments where mid-line @ should not be recognized as tags |
| crates/oxc_linter/src/rules/jsdoc/check_tag_names.rs | Added passing test cases for email addresses in license tags and npm scoped packages to verify the fix |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Merging this PR will not alter performance
Comparing Footnotes
|
Merge activity
|
…il addresses and npm scopes (#19021) ## Summary - Only recognize `@` as a JSDoc tag start when it appears at the logical start of a line (after optional whitespace and `*` markers), matching the JSDoc specification for block tags - Fixes false positives where email addresses (e.g. `<[email protected]>`) and npm scoped packages (e.g. `@vue/shared`) in tag descriptions were incorrectly parsed as new tags Closes #18380 🤖 Generated with [Claude Code](https://claude.com/claude-code)
b428a02 to
6067a49
Compare
### 💥 BREAKING CHANGES - 2bf7293 mangler: [**BREAKING**] Enable `top_level` by default for modules and commonjs (#18278) (sapphi-red) - 48b0542 span: [**BREAKING**] SourceType::ts should set module to unambigious (#18873) (Boshen) ### 🚀 Features - 500d071 minifier: Local traverse ctx and generated minifier traverse (#19106) (Boshen) - 142a1be parser: Detect binary files with TS1490 error (#19047) (Boshen) - e316857 allocator/bitset: Add `Ones` iterator to `BitSet` (#19027) (sapphi-red) - 742ad3f minifier: Default `invalid_import_side_effects` to `false` (#18916) (sapphi-red) - 0eff6be parser: Error JSX-like type assertions and generics in `.mts`/`.cts` (#18910) (Boshen) - 18320c6 span: Store file extension in `SourceType` (#18893) (Boshen) ### 🐛 Bug Fixes - a7514e4 isolated-declarations: Preserve const context in literal type inference (#19178) (camc314) - 312e756 isolated-declarations: Preserve readonly literal initializers (#19177) (camc314) - d0ca8d0 isolated-declarations: Skip parenthesis when inferring type (#19176) (camc314) - 110c300 oxc_ecmascript: `+[false]` and `+[true]` should evaluate to `NaN` (#19174) (copilot-swe-agent) - f32ea19 semantic: Report redeclaration error for import bindings conflicting with value declarations (#19068) (Boshen) - 3aeba7a semantic: Report redeclaration error for `function a() {} var a` in module mode (#19041) (Boshen) - 35e32c6 coverage: Match Babel's options.json inheritance for test fixtures (#19002) (Boshen) - 463d60d semantic: Skip TS2391 for standalone computed-name class methods (#19025) (Boshen) - 56c086b parser: Add modifier ordering validation (TS1029) (#19024) (Boshen) - 6067a49 linter/jsdoc: False positive in `check-tag-names` for `@` in email addresses and npm scopes (#19021) (Boshen) - b13bb70 semantic/jsdoc: Inline tags like `{@link}` break jsdoc parsing (#19019) (Boshen) - e3609e3 regular_expression: Preserve UnicodeEscape CharacterKind in string literals (#18998) (Boshen) - 57917ee parser: Parse decorators on rest parameters (#18938) (Boshen) - 487601b napi: Disable mimalloc on Windows to fix worker_threads crash (#18923) (Boshen) - 1f6b193 parser: Validate TypeScript import type options (#18889) (Boshen) - 1663184 parser: Allow conditional types in function type parameters (#18886) (Boshen) - 5758046 parser: Error on property access after instantiation expression (#18887) (Boshen) - 5eb4a94 parser: Handle `<<` as two `<` tokens in type argument contexts (#18885) (Boshen) ### ⚡ Performance - ed8c054 oxc_str: Add precomputed hash to Ident for fast HashMap lookups (#19143) (Boshen) - d4a0867 transformer_plugins: Switch ReplaceGlobalDefines from Traverse to VisitMut (#19146) (Boshen) - 9eb16b3 syntax: Pack ASCII identifier tables into single bitflag table (#19088) (Boshen) - e7595d1 mangler: Use BitSet for exported symbols set (#19023) (sapphi-red) - 2537924 semantic: Optimize scope resolution with fast paths and inlining (#19029) (Boshen) - 69a8d85 mangler: Use BitSet for keep_names symbols set (#19028) (sapphi-red) - f78c525 parser: Try hybrid parsing for jsx children and closing element/fragments (#18789) (camchenry) Co-authored-by: camc314 <[email protected]>
# Oxlint ### 🚀 Features - aef2af5 linter/unicorn: Add fixer for `unicorn/relative-url-style` rule (#19186) (Mikhail Baev) - 80eba6f linter/max-params: Support `countThis` option (#19175) (camc314) - e19bc45 linter/no-new-func: Improve rule diagnostic with note and actionable help message (#19132) (Sean Gallen) - e3dc5f6 linter/plugins: `RuleTester` test suggestions (#19104) (overlookmotel) - 6054249 linter/plugins: Add `recursive` option to `RuleTester` (#19093) (overlookmotel) - 27c241b linter/plugins: `RuleTester` test fixes (#19091) (overlookmotel) - 7318275 linter/new-cap: Tighten diagnostic spans and add help text (#19131) (camchenry) - ac2b16b linter: Improve `no-misleading-character-class` diagnostic spans (#19109) (Sysix) - 7be8613 linter: Move `no-misleading-chracter-class` to `correctness` (#19006) (Sysix) - 87a920d ci: Add riscv64 and s390x napi targets for oxlint and oxfmt (#19039) (Boshen) - ee2925b oxlint/lsp: Enable JS plugins (#18834) (overlookmotel) - 533013d linter/unicorn: Implement suggestion for `unicorn/prefer-dom-node-dataset` (#19051) (Mikhail Baev) - 384abae linter/oxc/no-async-endpoint-handlers: Improve diagnostic message (#19001) (camc314) - d35ece3 linter/array-callback-return: Improve diagnostic hints for some cases (#18993) (camc314) - dd0f754 linter/array-callback-return: Improve diagnostic message for `forEach` case (#18992) (camc314) - e2d28fe linter/plugins: Implement suggestions (#18963) (overlookmotel) - a398152 linter: Promote the `eslint/no-iterator` rule to correctness, which makes it a default rule (#18915) (connorshea) - bb1eb97 linter: Improve diagnostic message for circular configs (#18947) (camc314) - 3184f36 linter: Ban relative js plugin specifiers in js extends config (#18944) (camc314) - 749972f linter: Validate dynamic config extends shape (#18943) (camc314) - b270739 linter: Support extends in oxlint.config.ts (#18942) (camc314) - 6024ddf linter: Implement suggestion for `unicorn/prefer-reflect-apply` (#18932) (Mikhail Baev) - b06b3a9 linter: Implement `typescript/consistent-type-assertions` (#18869) (Bazyli Brzóska) - 9fd3bd6 linter/plugins: Add `@oxlint/plugins` NPM package (#18824) (overlookmotel) - 5ee7b2f linter/vitest: Implements `prefer-expect-type-of` rule (#17957) (Said Atrahouch) - a7b360a linter/unicorn: Implement `unicorn/relative-url-style` rule (#18857) (Mikhail Baev) - 9788a96 oxlint,oxfmt: Add more native builds (#18853) (Boshen) - b23395a linter: Enforce exporting an object with `defineConfig` (#18858) (camc314) ### 🐛 Bug Fixes - 7800fc5 linter/prefer-event-target: Ignore EventEmitter imported from packages (#19188) (camc314) - 03b2955 linter/typescript/ban-types: Mark rule as deprecated (#19179) (camc314) - a5b8766 oxlint/lsp: Disable rule for this line should not be preferred (#19083) (Sysix) - e08157e linter/jsx-filename-extension: Include filename in as-needed diagnostic (#19172) (camc314) - 1773acb oxlint: Re-generate envs (#19169) (camc314) - 51c3fc8 linter/no-array-for-each: Skip `Effect.forEach` calls (#19127) (camc314) - 825f148 linter/plugins: `RuleTester` consider adjacent fixes as overlapping in ESLint compat mode (#19094) (overlookmotel) - ecd2456 linter/plugins: Handle fix with -1 offsets in file with BOM (#19092) (overlookmotel) - 5969d26 linter/no-array-sort: Avoid false positives for effect Chunk.sort (#19125) (camc314) - de10f04 linter: `no-misleading-character-class`: do not skip reporting on first invalid sequence of the checking group (#19111) (Sysix) - 8c0ce78 linter: Scope no-misleading-character-class sequences to single character class (#19108) (copilot-swe-agent) - 879e3a0 linter: `no-misleading-character-class`: split sequences on all `CharacterSet` (#19107) (Sysix) - 2ad33cc oxlint/lsp: Search parent directories for root oxlint config (#19062) (copilot-swe-agent) - f969d5e linter/prefer-dom-node-dataset: Address some edge cases in the fixer (#19065) (camc314) - ed759d1 linter/plugins: Fix error messages for invalid suggestions (#19059) (overlookmotel) - 34851a7 linter/plugins: Error not panic if invalid fix range (#19058) (overlookmotel) - 4823b58 linter/plugins: Fix fixes in files with BOM (#19056) (overlookmotel) - 2ef405e linter/no-map-spread: Improve actionability of error message (#19007) (Artyom Alekseevich) - 56c086b parser: Add modifier ordering validation (TS1029) (#19024) (Boshen) - 6067a49 linter/jsdoc: False positive in `check-tag-names` for `@` in email addresses and npm scopes (#19021) (Boshen) - 6d46ed9 linter/capitalized-comments: Ignore prettier and oxfmt directives (#19008) (Artyom Alekseevich) - a46c878 linter/react/no-array-index-key: Look for keys in expressions (#18997) (camc314) - 7d61704 linter/prefer-at: Skip autofix for `arguments` (#18991) (camc314) - 3ebae53 linter/preserve-caught-error: Skip traversing into nested try/catch stmts (#18990) (camc314) - e94d37e linter/react/no-unknown-property: Add missing `popover` related props (#18953) (Christoph Nakazawa) - 04b0d99 linter: Normalize relative paths with `./` prefix in overrides. (#18954) (connorshea) - 57917ee parser: Parse decorators on rest parameters (#18938) (Boshen) - 07742ea linter/prefer-as-const: Implement fixer for type annotation (#18899) (camc314) - d64bfdd linter/plugins: Ensure `after` hook always runs last in rule converted for ESLint (#18904) (overlookmotel) - ec39944 linter/jsx-a11y/no-distracting-elements: Support elements option (#18892) (camc314) - f609cb6 linter/prefer-expect-type-of: Handle computed elements in fixer correctly (#18890) (camc314) - ecf11e5 linter/dynamic-config: Set `ExternalPlugin.config_dir` to fix js plugins loading (#18854) (camc314) - 01b7838 linter/plugins: Do not destroy workspaces (#18833) (overlookmotel) - dc51d6b linter: Normalize paths slashes for snapshots on windows (#18825) (camc314) - dbfdc40 linter/bad-replace-all-args: Skip extracting flags from conditional expressions (#18844) (camc314) ### ⚡ Performance - ed8c054 oxc_str: Add precomputed hash to Ident for fast HashMap lookups (#19143) (Boshen) - 18f58bd oxlint/lsp: Transform unused disable directive directly to DiagnosticReport (#19112) (Sysix) - 4ce3772 linter: Remove pointless string cloning when combining suggestions (#19075) (overlookmotel) - c417bf5 linter: Avoid allocating `Vec` when compiling `PossibleFixes` (#19074) (overlookmotel) - adb2baa linter/plugins: Avoid allocation when rule provides single suggestion (#19071) (overlookmotel) - 2537924 semantic: Optimize scope resolution with fast paths and inlining (#19029) (Boshen) ### 📚 Documentation - 6e8ef38 linter/plugins: Correct and expand JSDoc comment for `RuleTester` config (#19156) (overlookmotel) - e7ec06a linter: Improve docs for `import/max-dependencies` rule. (#19119) (connorshea) - 367f730 linter/consistent-test-filename: Escape file names fixes #19114 (#19123) (camc314) - 8753a54 linter: Rewrite the docs for the `jsx-a11y/no-redundant-roles` rule. (#19117) (connorshea) - dd44b1a linter: Fix invalid directive in example code for `import/no-nodejs-modules`. (#19115) (connorshea) - 726e273 linter/plugins: Improve JSDoc comment for `DiagnosticReport` (#19103) (overlookmotel) - 9561e7f linter/plugins: Alter JS plugins example (#18900) (overlookmotel) - 501e3b6 linter: Regenerate `config.generated.ts` (#18897) (overlookmotel) - b425a0c linter: Document jsPlugins examples (#18671) (Cameron) - df2b7fa linter: Expand settings example with reference to custom plugins (#18670) (camc314) # Oxfmt ### 💥 BREAKING CHANGES - 856a01f formatter/sort_imports: [**BREAKING**] Replace prefix match with glob pattern in `customGroups.elementNamePattern` (#19066) (leaysgur) ### 🚀 Features - 91e67f3 oxfmt/lsp: Do not refer `.gitignore` (#19206) (leaysgur) - 23c0753 oxfmt: Better Tailwind CSS intergration (#19000) (Dunqing) - 87a920d ci: Add riscv64 and s390x napi targets for oxlint and oxfmt (#19039) (Boshen) - 8536dce oxfmt: Support glob for CLI paths (#18976) (leaysgur) - 6ee2d59 oxfmt: Use `oxc_formatter` in js-in-xxx part (#18373) (leaysgur) - 9788a96 oxlint,oxfmt: Add more native builds (#18853) (Boshen) ### 🐛 Bug Fixes - 119348b oxfmt: Resolve relative -> absolute path for other usages (#19207) (leaysgur) - 5f4cf30 oxfmt: Fix relative -> absolute path resolution with refactoring (#19202) (leaysgur) - dc335d1 oxfmt: Temporarily disable the override for js-in-xxx (not ready yet) (#19043) (leaysgur) - 5ea5bda oxfmt: Handle `isSingleJsxExpressionStatementInMarkdown()` check for js-in-md (#19042) (leaysgur) - 5243307 formatter: Preserve numeric separators in number literals (#19015) (Dunqing) - 9b205b3 formatter: Fallback to formatting when package.json sorting fails (#19097) (Boshen) - b79c065 formatter: Preserve comment between callee and optional chaining operator (#19020) (Dunqing) - 01d1be1 formatter: Remove unnecessary parentheses for single-member union types (#19018) (Dunqing) - f5c7e75 formatter: Preserve parentheses around await with private field access (#19014) (Dunqing) - 5a75785 formatter: Preserve parentheses around nested sequence expressions (#19013) (Dunqing) - f39c96c oxfmt: Do not override `babel-ts` for now (#19030) (leaysgur) - 0ef11bb formatter: Add space before type annotation with leading comment (#19012) (Dunqing) - cc232e1 formatter: Keep spread with callback on same line (#18999) (Dunqing) - ef5bfab oxfmt: Workaround Node.js ThreadsafeFunction cleanup race condition (#18980) (Boshen) - d53f5c4 formatter: Require string first arg in test calls (#18935) (Dunqing) - 57917ee parser: Parse decorators on rest parameters (#18938) (Boshen) - 2db8c05 formatter: Avoid breaking generic call assignments (#18933) (Dunqing) - 1e023e1 formatter: Preserve trailing comma in mts/cts arrow generics (#18928) (Dunqing) - 7c4e558 formatter/detect_code_removal: Do not count `TemplateLiteral` content (#18848) (leaysgur) ### ⚡ Performance - 467724f oxfmt: Collect glob paths in parallel (#19209) (leaysgur) - 61e0efa oxfmt: Use RwLock instead of Mutex for TSFN handles (#18888) (Boshen) Co-authored-by: camc314 <[email protected]>
### 💥 BREAKING CHANGES - 2bf7293 mangler: [**BREAKING**] Enable `top_level` by default for modules and commonjs (oxc-project#18278) (sapphi-red) - 48b0542 span: [**BREAKING**] SourceType::ts should set module to unambigious (oxc-project#18873) (Boshen) ### 🚀 Features - 500d071 minifier: Local traverse ctx and generated minifier traverse (oxc-project#19106) (Boshen) - 142a1be parser: Detect binary files with TS1490 error (oxc-project#19047) (Boshen) - e316857 allocator/bitset: Add `Ones` iterator to `BitSet` (oxc-project#19027) (sapphi-red) - 742ad3f minifier: Default `invalid_import_side_effects` to `false` (oxc-project#18916) (sapphi-red) - 0eff6be parser: Error JSX-like type assertions and generics in `.mts`/`.cts` (oxc-project#18910) (Boshen) - 18320c6 span: Store file extension in `SourceType` (oxc-project#18893) (Boshen) ### 🐛 Bug Fixes - a7514e4 isolated-declarations: Preserve const context in literal type inference (oxc-project#19178) (camc314) - 312e756 isolated-declarations: Preserve readonly literal initializers (oxc-project#19177) (camc314) - d0ca8d0 isolated-declarations: Skip parenthesis when inferring type (oxc-project#19176) (camc314) - 110c300 oxc_ecmascript: `+[false]` and `+[true]` should evaluate to `NaN` (oxc-project#19174) (copilot-swe-agent) - f32ea19 semantic: Report redeclaration error for import bindings conflicting with value declarations (oxc-project#19068) (Boshen) - 3aeba7a semantic: Report redeclaration error for `function a() {} var a` in module mode (oxc-project#19041) (Boshen) - 35e32c6 coverage: Match Babel's options.json inheritance for test fixtures (oxc-project#19002) (Boshen) - 463d60d semantic: Skip TS2391 for standalone computed-name class methods (oxc-project#19025) (Boshen) - 56c086b parser: Add modifier ordering validation (TS1029) (oxc-project#19024) (Boshen) - 6067a49 linter/jsdoc: False positive in `check-tag-names` for `@` in email addresses and npm scopes (oxc-project#19021) (Boshen) - b13bb70 semantic/jsdoc: Inline tags like `{@link}` break jsdoc parsing (oxc-project#19019) (Boshen) - e3609e3 regular_expression: Preserve UnicodeEscape CharacterKind in string literals (oxc-project#18998) (Boshen) - 57917ee parser: Parse decorators on rest parameters (oxc-project#18938) (Boshen) - 487601b napi: Disable mimalloc on Windows to fix worker_threads crash (oxc-project#18923) (Boshen) - 1f6b193 parser: Validate TypeScript import type options (oxc-project#18889) (Boshen) - 1663184 parser: Allow conditional types in function type parameters (oxc-project#18886) (Boshen) - 5758046 parser: Error on property access after instantiation expression (oxc-project#18887) (Boshen) - 5eb4a94 parser: Handle `<<` as two `<` tokens in type argument contexts (oxc-project#18885) (Boshen) ### ⚡ Performance - ed8c054 oxc_str: Add precomputed hash to Ident for fast HashMap lookups (oxc-project#19143) (Boshen) - d4a0867 transformer_plugins: Switch ReplaceGlobalDefines from Traverse to VisitMut (oxc-project#19146) (Boshen) - 9eb16b3 syntax: Pack ASCII identifier tables into single bitflag table (oxc-project#19088) (Boshen) - e7595d1 mangler: Use BitSet for exported symbols set (oxc-project#19023) (sapphi-red) - 2537924 semantic: Optimize scope resolution with fast paths and inlining (oxc-project#19029) (Boshen) - 69a8d85 mangler: Use BitSet for keep_names symbols set (oxc-project#19028) (sapphi-red) - f78c525 parser: Try hybrid parsing for jsx children and closing element/fragments (oxc-project#18789) (camchenry) Co-authored-by: camc314 <[email protected]>
# Oxlint ### 🚀 Features - aef2af5 linter/unicorn: Add fixer for `unicorn/relative-url-style` rule (oxc-project#19186) (Mikhail Baev) - 80eba6f linter/max-params: Support `countThis` option (oxc-project#19175) (camc314) - e19bc45 linter/no-new-func: Improve rule diagnostic with note and actionable help message (oxc-project#19132) (Sean Gallen) - e3dc5f6 linter/plugins: `RuleTester` test suggestions (oxc-project#19104) (overlookmotel) - 6054249 linter/plugins: Add `recursive` option to `RuleTester` (oxc-project#19093) (overlookmotel) - 27c241b linter/plugins: `RuleTester` test fixes (oxc-project#19091) (overlookmotel) - 7318275 linter/new-cap: Tighten diagnostic spans and add help text (oxc-project#19131) (camchenry) - ac2b16b linter: Improve `no-misleading-character-class` diagnostic spans (oxc-project#19109) (Sysix) - 7be8613 linter: Move `no-misleading-chracter-class` to `correctness` (oxc-project#19006) (Sysix) - 87a920d ci: Add riscv64 and s390x napi targets for oxlint and oxfmt (oxc-project#19039) (Boshen) - ee2925b oxlint/lsp: Enable JS plugins (oxc-project#18834) (overlookmotel) - 533013d linter/unicorn: Implement suggestion for `unicorn/prefer-dom-node-dataset` (oxc-project#19051) (Mikhail Baev) - 384abae linter/oxc/no-async-endpoint-handlers: Improve diagnostic message (oxc-project#19001) (camc314) - d35ece3 linter/array-callback-return: Improve diagnostic hints for some cases (oxc-project#18993) (camc314) - dd0f754 linter/array-callback-return: Improve diagnostic message for `forEach` case (oxc-project#18992) (camc314) - e2d28fe linter/plugins: Implement suggestions (oxc-project#18963) (overlookmotel) - a398152 linter: Promote the `eslint/no-iterator` rule to correctness, which makes it a default rule (oxc-project#18915) (connorshea) - bb1eb97 linter: Improve diagnostic message for circular configs (oxc-project#18947) (camc314) - 3184f36 linter: Ban relative js plugin specifiers in js extends config (oxc-project#18944) (camc314) - 749972f linter: Validate dynamic config extends shape (oxc-project#18943) (camc314) - b270739 linter: Support extends in oxlint.config.ts (oxc-project#18942) (camc314) - 6024ddf linter: Implement suggestion for `unicorn/prefer-reflect-apply` (oxc-project#18932) (Mikhail Baev) - b06b3a9 linter: Implement `typescript/consistent-type-assertions` (oxc-project#18869) (Bazyli Brzóska) - 9fd3bd6 linter/plugins: Add `@oxlint/plugins` NPM package (oxc-project#18824) (overlookmotel) - 5ee7b2f linter/vitest: Implements `prefer-expect-type-of` rule (oxc-project#17957) (Said Atrahouch) - a7b360a linter/unicorn: Implement `unicorn/relative-url-style` rule (oxc-project#18857) (Mikhail Baev) - 9788a96 oxlint,oxfmt: Add more native builds (oxc-project#18853) (Boshen) - b23395a linter: Enforce exporting an object with `defineConfig` (oxc-project#18858) (camc314) ### 🐛 Bug Fixes - 7800fc5 linter/prefer-event-target: Ignore EventEmitter imported from packages (oxc-project#19188) (camc314) - 03b2955 linter/typescript/ban-types: Mark rule as deprecated (oxc-project#19179) (camc314) - a5b8766 oxlint/lsp: Disable rule for this line should not be preferred (oxc-project#19083) (Sysix) - e08157e linter/jsx-filename-extension: Include filename in as-needed diagnostic (oxc-project#19172) (camc314) - 1773acb oxlint: Re-generate envs (oxc-project#19169) (camc314) - 51c3fc8 linter/no-array-for-each: Skip `Effect.forEach` calls (oxc-project#19127) (camc314) - 825f148 linter/plugins: `RuleTester` consider adjacent fixes as overlapping in ESLint compat mode (oxc-project#19094) (overlookmotel) - ecd2456 linter/plugins: Handle fix with -1 offsets in file with BOM (oxc-project#19092) (overlookmotel) - 5969d26 linter/no-array-sort: Avoid false positives for effect Chunk.sort (oxc-project#19125) (camc314) - de10f04 linter: `no-misleading-character-class`: do not skip reporting on first invalid sequence of the checking group (oxc-project#19111) (Sysix) - 8c0ce78 linter: Scope no-misleading-character-class sequences to single character class (oxc-project#19108) (copilot-swe-agent) - 879e3a0 linter: `no-misleading-character-class`: split sequences on all `CharacterSet` (oxc-project#19107) (Sysix) - 2ad33cc oxlint/lsp: Search parent directories for root oxlint config (oxc-project#19062) (copilot-swe-agent) - f969d5e linter/prefer-dom-node-dataset: Address some edge cases in the fixer (oxc-project#19065) (camc314) - ed759d1 linter/plugins: Fix error messages for invalid suggestions (oxc-project#19059) (overlookmotel) - 34851a7 linter/plugins: Error not panic if invalid fix range (oxc-project#19058) (overlookmotel) - 4823b58 linter/plugins: Fix fixes in files with BOM (oxc-project#19056) (overlookmotel) - 2ef405e linter/no-map-spread: Improve actionability of error message (oxc-project#19007) (Artyom Alekseevich) - 56c086b parser: Add modifier ordering validation (TS1029) (oxc-project#19024) (Boshen) - 6067a49 linter/jsdoc: False positive in `check-tag-names` for `@` in email addresses and npm scopes (oxc-project#19021) (Boshen) - 6d46ed9 linter/capitalized-comments: Ignore prettier and oxfmt directives (oxc-project#19008) (Artyom Alekseevich) - a46c878 linter/react/no-array-index-key: Look for keys in expressions (oxc-project#18997) (camc314) - 7d61704 linter/prefer-at: Skip autofix for `arguments` (oxc-project#18991) (camc314) - 3ebae53 linter/preserve-caught-error: Skip traversing into nested try/catch stmts (oxc-project#18990) (camc314) - e94d37e linter/react/no-unknown-property: Add missing `popover` related props (oxc-project#18953) (Christoph Nakazawa) - 04b0d99 linter: Normalize relative paths with `./` prefix in overrides. (oxc-project#18954) (connorshea) - 57917ee parser: Parse decorators on rest parameters (oxc-project#18938) (Boshen) - 07742ea linter/prefer-as-const: Implement fixer for type annotation (oxc-project#18899) (camc314) - d64bfdd linter/plugins: Ensure `after` hook always runs last in rule converted for ESLint (oxc-project#18904) (overlookmotel) - ec39944 linter/jsx-a11y/no-distracting-elements: Support elements option (oxc-project#18892) (camc314) - f609cb6 linter/prefer-expect-type-of: Handle computed elements in fixer correctly (oxc-project#18890) (camc314) - ecf11e5 linter/dynamic-config: Set `ExternalPlugin.config_dir` to fix js plugins loading (oxc-project#18854) (camc314) - 01b7838 linter/plugins: Do not destroy workspaces (oxc-project#18833) (overlookmotel) - dc51d6b linter: Normalize paths slashes for snapshots on windows (oxc-project#18825) (camc314) - dbfdc40 linter/bad-replace-all-args: Skip extracting flags from conditional expressions (oxc-project#18844) (camc314) ### ⚡ Performance - ed8c054 oxc_str: Add precomputed hash to Ident for fast HashMap lookups (oxc-project#19143) (Boshen) - 18f58bd oxlint/lsp: Transform unused disable directive directly to DiagnosticReport (oxc-project#19112) (Sysix) - 4ce3772 linter: Remove pointless string cloning when combining suggestions (oxc-project#19075) (overlookmotel) - c417bf5 linter: Avoid allocating `Vec` when compiling `PossibleFixes` (oxc-project#19074) (overlookmotel) - adb2baa linter/plugins: Avoid allocation when rule provides single suggestion (oxc-project#19071) (overlookmotel) - 2537924 semantic: Optimize scope resolution with fast paths and inlining (oxc-project#19029) (Boshen) ### 📚 Documentation - 6e8ef38 linter/plugins: Correct and expand JSDoc comment for `RuleTester` config (oxc-project#19156) (overlookmotel) - e7ec06a linter: Improve docs for `import/max-dependencies` rule. (oxc-project#19119) (connorshea) - 367f730 linter/consistent-test-filename: Escape file names fixes oxc-project#19114 (oxc-project#19123) (camc314) - 8753a54 linter: Rewrite the docs for the `jsx-a11y/no-redundant-roles` rule. (oxc-project#19117) (connorshea) - dd44b1a linter: Fix invalid directive in example code for `import/no-nodejs-modules`. (oxc-project#19115) (connorshea) - 726e273 linter/plugins: Improve JSDoc comment for `DiagnosticReport` (oxc-project#19103) (overlookmotel) - 9561e7f linter/plugins: Alter JS plugins example (oxc-project#18900) (overlookmotel) - 501e3b6 linter: Regenerate `config.generated.ts` (oxc-project#18897) (overlookmotel) - b425a0c linter: Document jsPlugins examples (oxc-project#18671) (Cameron) - df2b7fa linter: Expand settings example with reference to custom plugins (oxc-project#18670) (camc314) # Oxfmt ### 💥 BREAKING CHANGES - 856a01f formatter/sort_imports: [**BREAKING**] Replace prefix match with glob pattern in `customGroups.elementNamePattern` (oxc-project#19066) (leaysgur) ### 🚀 Features - 91e67f3 oxfmt/lsp: Do not refer `.gitignore` (oxc-project#19206) (leaysgur) - 23c0753 oxfmt: Better Tailwind CSS intergration (oxc-project#19000) (Dunqing) - 87a920d ci: Add riscv64 and s390x napi targets for oxlint and oxfmt (oxc-project#19039) (Boshen) - 8536dce oxfmt: Support glob for CLI paths (oxc-project#18976) (leaysgur) - 6ee2d59 oxfmt: Use `oxc_formatter` in js-in-xxx part (oxc-project#18373) (leaysgur) - 9788a96 oxlint,oxfmt: Add more native builds (oxc-project#18853) (Boshen) ### 🐛 Bug Fixes - 119348b oxfmt: Resolve relative -> absolute path for other usages (oxc-project#19207) (leaysgur) - 5f4cf30 oxfmt: Fix relative -> absolute path resolution with refactoring (oxc-project#19202) (leaysgur) - dc335d1 oxfmt: Temporarily disable the override for js-in-xxx (not ready yet) (oxc-project#19043) (leaysgur) - 5ea5bda oxfmt: Handle `isSingleJsxExpressionStatementInMarkdown()` check for js-in-md (oxc-project#19042) (leaysgur) - 5243307 formatter: Preserve numeric separators in number literals (oxc-project#19015) (Dunqing) - 9b205b3 formatter: Fallback to formatting when package.json sorting fails (oxc-project#19097) (Boshen) - b79c065 formatter: Preserve comment between callee and optional chaining operator (oxc-project#19020) (Dunqing) - 01d1be1 formatter: Remove unnecessary parentheses for single-member union types (oxc-project#19018) (Dunqing) - f5c7e75 formatter: Preserve parentheses around await with private field access (oxc-project#19014) (Dunqing) - 5a75785 formatter: Preserve parentheses around nested sequence expressions (oxc-project#19013) (Dunqing) - f39c96c oxfmt: Do not override `babel-ts` for now (oxc-project#19030) (leaysgur) - 0ef11bb formatter: Add space before type annotation with leading comment (oxc-project#19012) (Dunqing) - cc232e1 formatter: Keep spread with callback on same line (oxc-project#18999) (Dunqing) - ef5bfab oxfmt: Workaround Node.js ThreadsafeFunction cleanup race condition (oxc-project#18980) (Boshen) - d53f5c4 formatter: Require string first arg in test calls (oxc-project#18935) (Dunqing) - 57917ee parser: Parse decorators on rest parameters (oxc-project#18938) (Boshen) - 2db8c05 formatter: Avoid breaking generic call assignments (oxc-project#18933) (Dunqing) - 1e023e1 formatter: Preserve trailing comma in mts/cts arrow generics (oxc-project#18928) (Dunqing) - 7c4e558 formatter/detect_code_removal: Do not count `TemplateLiteral` content (oxc-project#18848) (leaysgur) ### ⚡ Performance - 467724f oxfmt: Collect glob paths in parallel (oxc-project#19209) (leaysgur) - 61e0efa oxfmt: Use RwLock instead of Mutex for TSFN handles (oxc-project#18888) (Boshen) Co-authored-by: camc314 <[email protected]>
### 💥 BREAKING CHANGES - 2bf7293 mangler: [**BREAKING**] Enable `top_level` by default for modules and commonjs (oxc-project#18278) (sapphi-red) - 48b0542 span: [**BREAKING**] SourceType::ts should set module to unambigious (oxc-project#18873) (Boshen) ### 🚀 Features - 500d071 minifier: Local traverse ctx and generated minifier traverse (oxc-project#19106) (Boshen) - 142a1be parser: Detect binary files with TS1490 error (oxc-project#19047) (Boshen) - e316857 allocator/bitset: Add `Ones` iterator to `BitSet` (oxc-project#19027) (sapphi-red) - 742ad3f minifier: Default `invalid_import_side_effects` to `false` (oxc-project#18916) (sapphi-red) - 0eff6be parser: Error JSX-like type assertions and generics in `.mts`/`.cts` (oxc-project#18910) (Boshen) - 18320c6 span: Store file extension in `SourceType` (oxc-project#18893) (Boshen) ### 🐛 Bug Fixes - a7514e4 isolated-declarations: Preserve const context in literal type inference (oxc-project#19178) (camc314) - 312e756 isolated-declarations: Preserve readonly literal initializers (oxc-project#19177) (camc314) - d0ca8d0 isolated-declarations: Skip parenthesis when inferring type (oxc-project#19176) (camc314) - 110c300 oxc_ecmascript: `+[false]` and `+[true]` should evaluate to `NaN` (oxc-project#19174) (copilot-swe-agent) - f32ea19 semantic: Report redeclaration error for import bindings conflicting with value declarations (oxc-project#19068) (Boshen) - 3aeba7a semantic: Report redeclaration error for `function a() {} var a` in module mode (oxc-project#19041) (Boshen) - 35e32c6 coverage: Match Babel's options.json inheritance for test fixtures (oxc-project#19002) (Boshen) - 463d60d semantic: Skip TS2391 for standalone computed-name class methods (oxc-project#19025) (Boshen) - 56c086b parser: Add modifier ordering validation (TS1029) (oxc-project#19024) (Boshen) - 6067a49 linter/jsdoc: False positive in `check-tag-names` for `@` in email addresses and npm scopes (oxc-project#19021) (Boshen) - b13bb70 semantic/jsdoc: Inline tags like `{@link}` break jsdoc parsing (oxc-project#19019) (Boshen) - e3609e3 regular_expression: Preserve UnicodeEscape CharacterKind in string literals (oxc-project#18998) (Boshen) - 57917ee parser: Parse decorators on rest parameters (oxc-project#18938) (Boshen) - 487601b napi: Disable mimalloc on Windows to fix worker_threads crash (oxc-project#18923) (Boshen) - 1f6b193 parser: Validate TypeScript import type options (oxc-project#18889) (Boshen) - 1663184 parser: Allow conditional types in function type parameters (oxc-project#18886) (Boshen) - 5758046 parser: Error on property access after instantiation expression (oxc-project#18887) (Boshen) - 5eb4a94 parser: Handle `<<` as two `<` tokens in type argument contexts (oxc-project#18885) (Boshen) ### ⚡ Performance - ed8c054 oxc_str: Add precomputed hash to Ident for fast HashMap lookups (oxc-project#19143) (Boshen) - d4a0867 transformer_plugins: Switch ReplaceGlobalDefines from Traverse to VisitMut (oxc-project#19146) (Boshen) - 9eb16b3 syntax: Pack ASCII identifier tables into single bitflag table (oxc-project#19088) (Boshen) - e7595d1 mangler: Use BitSet for exported symbols set (oxc-project#19023) (sapphi-red) - 2537924 semantic: Optimize scope resolution with fast paths and inlining (oxc-project#19029) (Boshen) - 69a8d85 mangler: Use BitSet for keep_names symbols set (oxc-project#19028) (sapphi-red) - f78c525 parser: Try hybrid parsing for jsx children and closing element/fragments (oxc-project#18789) (camchenry) Co-authored-by: camc314 <[email protected]>
# Oxlint ### 🚀 Features - aef2af5 linter/unicorn: Add fixer for `unicorn/relative-url-style` rule (oxc-project#19186) (Mikhail Baev) - 80eba6f linter/max-params: Support `countThis` option (oxc-project#19175) (camc314) - e19bc45 linter/no-new-func: Improve rule diagnostic with note and actionable help message (oxc-project#19132) (Sean Gallen) - e3dc5f6 linter/plugins: `RuleTester` test suggestions (oxc-project#19104) (overlookmotel) - 6054249 linter/plugins: Add `recursive` option to `RuleTester` (oxc-project#19093) (overlookmotel) - 27c241b linter/plugins: `RuleTester` test fixes (oxc-project#19091) (overlookmotel) - 7318275 linter/new-cap: Tighten diagnostic spans and add help text (oxc-project#19131) (camchenry) - ac2b16b linter: Improve `no-misleading-character-class` diagnostic spans (oxc-project#19109) (Sysix) - 7be8613 linter: Move `no-misleading-chracter-class` to `correctness` (oxc-project#19006) (Sysix) - 87a920d ci: Add riscv64 and s390x napi targets for oxlint and oxfmt (oxc-project#19039) (Boshen) - ee2925b oxlint/lsp: Enable JS plugins (oxc-project#18834) (overlookmotel) - 533013d linter/unicorn: Implement suggestion for `unicorn/prefer-dom-node-dataset` (oxc-project#19051) (Mikhail Baev) - 384abae linter/oxc/no-async-endpoint-handlers: Improve diagnostic message (oxc-project#19001) (camc314) - d35ece3 linter/array-callback-return: Improve diagnostic hints for some cases (oxc-project#18993) (camc314) - dd0f754 linter/array-callback-return: Improve diagnostic message for `forEach` case (oxc-project#18992) (camc314) - e2d28fe linter/plugins: Implement suggestions (oxc-project#18963) (overlookmotel) - a398152 linter: Promote the `eslint/no-iterator` rule to correctness, which makes it a default rule (oxc-project#18915) (connorshea) - bb1eb97 linter: Improve diagnostic message for circular configs (oxc-project#18947) (camc314) - 3184f36 linter: Ban relative js plugin specifiers in js extends config (oxc-project#18944) (camc314) - 749972f linter: Validate dynamic config extends shape (oxc-project#18943) (camc314) - b270739 linter: Support extends in oxlint.config.ts (oxc-project#18942) (camc314) - 6024ddf linter: Implement suggestion for `unicorn/prefer-reflect-apply` (oxc-project#18932) (Mikhail Baev) - b06b3a9 linter: Implement `typescript/consistent-type-assertions` (oxc-project#18869) (Bazyli Brzóska) - 9fd3bd6 linter/plugins: Add `@oxlint/plugins` NPM package (oxc-project#18824) (overlookmotel) - 5ee7b2f linter/vitest: Implements `prefer-expect-type-of` rule (oxc-project#17957) (Said Atrahouch) - a7b360a linter/unicorn: Implement `unicorn/relative-url-style` rule (oxc-project#18857) (Mikhail Baev) - 9788a96 oxlint,oxfmt: Add more native builds (oxc-project#18853) (Boshen) - b23395a linter: Enforce exporting an object with `defineConfig` (oxc-project#18858) (camc314) ### 🐛 Bug Fixes - 7800fc5 linter/prefer-event-target: Ignore EventEmitter imported from packages (oxc-project#19188) (camc314) - 03b2955 linter/typescript/ban-types: Mark rule as deprecated (oxc-project#19179) (camc314) - a5b8766 oxlint/lsp: Disable rule for this line should not be preferred (oxc-project#19083) (Sysix) - e08157e linter/jsx-filename-extension: Include filename in as-needed diagnostic (oxc-project#19172) (camc314) - 1773acb oxlint: Re-generate envs (oxc-project#19169) (camc314) - 51c3fc8 linter/no-array-for-each: Skip `Effect.forEach` calls (oxc-project#19127) (camc314) - 825f148 linter/plugins: `RuleTester` consider adjacent fixes as overlapping in ESLint compat mode (oxc-project#19094) (overlookmotel) - ecd2456 linter/plugins: Handle fix with -1 offsets in file with BOM (oxc-project#19092) (overlookmotel) - 5969d26 linter/no-array-sort: Avoid false positives for effect Chunk.sort (oxc-project#19125) (camc314) - de10f04 linter: `no-misleading-character-class`: do not skip reporting on first invalid sequence of the checking group (oxc-project#19111) (Sysix) - 8c0ce78 linter: Scope no-misleading-character-class sequences to single character class (oxc-project#19108) (copilot-swe-agent) - 879e3a0 linter: `no-misleading-character-class`: split sequences on all `CharacterSet` (oxc-project#19107) (Sysix) - 2ad33cc oxlint/lsp: Search parent directories for root oxlint config (oxc-project#19062) (copilot-swe-agent) - f969d5e linter/prefer-dom-node-dataset: Address some edge cases in the fixer (oxc-project#19065) (camc314) - ed759d1 linter/plugins: Fix error messages for invalid suggestions (oxc-project#19059) (overlookmotel) - 34851a7 linter/plugins: Error not panic if invalid fix range (oxc-project#19058) (overlookmotel) - 4823b58 linter/plugins: Fix fixes in files with BOM (oxc-project#19056) (overlookmotel) - 2ef405e linter/no-map-spread: Improve actionability of error message (oxc-project#19007) (Artyom Alekseevich) - 56c086b parser: Add modifier ordering validation (TS1029) (oxc-project#19024) (Boshen) - 6067a49 linter/jsdoc: False positive in `check-tag-names` for `@` in email addresses and npm scopes (oxc-project#19021) (Boshen) - 6d46ed9 linter/capitalized-comments: Ignore prettier and oxfmt directives (oxc-project#19008) (Artyom Alekseevich) - a46c878 linter/react/no-array-index-key: Look for keys in expressions (oxc-project#18997) (camc314) - 7d61704 linter/prefer-at: Skip autofix for `arguments` (oxc-project#18991) (camc314) - 3ebae53 linter/preserve-caught-error: Skip traversing into nested try/catch stmts (oxc-project#18990) (camc314) - e94d37e linter/react/no-unknown-property: Add missing `popover` related props (oxc-project#18953) (Christoph Nakazawa) - 04b0d99 linter: Normalize relative paths with `./` prefix in overrides. (oxc-project#18954) (connorshea) - 57917ee parser: Parse decorators on rest parameters (oxc-project#18938) (Boshen) - 07742ea linter/prefer-as-const: Implement fixer for type annotation (oxc-project#18899) (camc314) - d64bfdd linter/plugins: Ensure `after` hook always runs last in rule converted for ESLint (oxc-project#18904) (overlookmotel) - ec39944 linter/jsx-a11y/no-distracting-elements: Support elements option (oxc-project#18892) (camc314) - f609cb6 linter/prefer-expect-type-of: Handle computed elements in fixer correctly (oxc-project#18890) (camc314) - ecf11e5 linter/dynamic-config: Set `ExternalPlugin.config_dir` to fix js plugins loading (oxc-project#18854) (camc314) - 01b7838 linter/plugins: Do not destroy workspaces (oxc-project#18833) (overlookmotel) - dc51d6b linter: Normalize paths slashes for snapshots on windows (oxc-project#18825) (camc314) - dbfdc40 linter/bad-replace-all-args: Skip extracting flags from conditional expressions (oxc-project#18844) (camc314) ### ⚡ Performance - ed8c054 oxc_str: Add precomputed hash to Ident for fast HashMap lookups (oxc-project#19143) (Boshen) - 18f58bd oxlint/lsp: Transform unused disable directive directly to DiagnosticReport (oxc-project#19112) (Sysix) - 4ce3772 linter: Remove pointless string cloning when combining suggestions (oxc-project#19075) (overlookmotel) - c417bf5 linter: Avoid allocating `Vec` when compiling `PossibleFixes` (oxc-project#19074) (overlookmotel) - adb2baa linter/plugins: Avoid allocation when rule provides single suggestion (oxc-project#19071) (overlookmotel) - 2537924 semantic: Optimize scope resolution with fast paths and inlining (oxc-project#19029) (Boshen) ### 📚 Documentation - 6e8ef38 linter/plugins: Correct and expand JSDoc comment for `RuleTester` config (oxc-project#19156) (overlookmotel) - e7ec06a linter: Improve docs for `import/max-dependencies` rule. (oxc-project#19119) (connorshea) - 367f730 linter/consistent-test-filename: Escape file names fixes oxc-project#19114 (oxc-project#19123) (camc314) - 8753a54 linter: Rewrite the docs for the `jsx-a11y/no-redundant-roles` rule. (oxc-project#19117) (connorshea) - dd44b1a linter: Fix invalid directive in example code for `import/no-nodejs-modules`. (oxc-project#19115) (connorshea) - 726e273 linter/plugins: Improve JSDoc comment for `DiagnosticReport` (oxc-project#19103) (overlookmotel) - 9561e7f linter/plugins: Alter JS plugins example (oxc-project#18900) (overlookmotel) - 501e3b6 linter: Regenerate `config.generated.ts` (oxc-project#18897) (overlookmotel) - b425a0c linter: Document jsPlugins examples (oxc-project#18671) (Cameron) - df2b7fa linter: Expand settings example with reference to custom plugins (oxc-project#18670) (camc314) # Oxfmt ### 💥 BREAKING CHANGES - 856a01f formatter/sort_imports: [**BREAKING**] Replace prefix match with glob pattern in `customGroups.elementNamePattern` (oxc-project#19066) (leaysgur) ### 🚀 Features - 91e67f3 oxfmt/lsp: Do not refer `.gitignore` (oxc-project#19206) (leaysgur) - 23c0753 oxfmt: Better Tailwind CSS intergration (oxc-project#19000) (Dunqing) - 87a920d ci: Add riscv64 and s390x napi targets for oxlint and oxfmt (oxc-project#19039) (Boshen) - 8536dce oxfmt: Support glob for CLI paths (oxc-project#18976) (leaysgur) - 6ee2d59 oxfmt: Use `oxc_formatter` in js-in-xxx part (oxc-project#18373) (leaysgur) - 9788a96 oxlint,oxfmt: Add more native builds (oxc-project#18853) (Boshen) ### 🐛 Bug Fixes - 119348b oxfmt: Resolve relative -> absolute path for other usages (oxc-project#19207) (leaysgur) - 5f4cf30 oxfmt: Fix relative -> absolute path resolution with refactoring (oxc-project#19202) (leaysgur) - dc335d1 oxfmt: Temporarily disable the override for js-in-xxx (not ready yet) (oxc-project#19043) (leaysgur) - 5ea5bda oxfmt: Handle `isSingleJsxExpressionStatementInMarkdown()` check for js-in-md (oxc-project#19042) (leaysgur) - 5243307 formatter: Preserve numeric separators in number literals (oxc-project#19015) (Dunqing) - 9b205b3 formatter: Fallback to formatting when package.json sorting fails (oxc-project#19097) (Boshen) - b79c065 formatter: Preserve comment between callee and optional chaining operator (oxc-project#19020) (Dunqing) - 01d1be1 formatter: Remove unnecessary parentheses for single-member union types (oxc-project#19018) (Dunqing) - f5c7e75 formatter: Preserve parentheses around await with private field access (oxc-project#19014) (Dunqing) - 5a75785 formatter: Preserve parentheses around nested sequence expressions (oxc-project#19013) (Dunqing) - f39c96c oxfmt: Do not override `babel-ts` for now (oxc-project#19030) (leaysgur) - 0ef11bb formatter: Add space before type annotation with leading comment (oxc-project#19012) (Dunqing) - cc232e1 formatter: Keep spread with callback on same line (oxc-project#18999) (Dunqing) - ef5bfab oxfmt: Workaround Node.js ThreadsafeFunction cleanup race condition (oxc-project#18980) (Boshen) - d53f5c4 formatter: Require string first arg in test calls (oxc-project#18935) (Dunqing) - 57917ee parser: Parse decorators on rest parameters (oxc-project#18938) (Boshen) - 2db8c05 formatter: Avoid breaking generic call assignments (oxc-project#18933) (Dunqing) - 1e023e1 formatter: Preserve trailing comma in mts/cts arrow generics (oxc-project#18928) (Dunqing) - 7c4e558 formatter/detect_code_removal: Do not count `TemplateLiteral` content (oxc-project#18848) (leaysgur) ### ⚡ Performance - 467724f oxfmt: Collect glob paths in parallel (oxc-project#19209) (leaysgur) - 61e0efa oxfmt: Use RwLock instead of Mutex for TSFN handles (oxc-project#18888) (Boshen) Co-authored-by: camc314 <[email protected]>
Summary
@as a JSDoc tag start when it appears at the logical start of a line (after optional whitespace and*markers), matching the JSDoc specification for block tags<[email protected]>) and npm scoped packages (e.g.@vue/shared) in tag descriptions were incorrectly parsed as new tagsCloses #18380
🤖 Generated with Claude Code