apps_v1.77.0
oxc-project/oxcapps_v1.77.0Aug 3, 2026by github-actions[bot]
AI Summary
Oxlint v1.77.0 adds GitHub format annotations for error messages, and Oxfmt v0.62.0 introduces support for TSX-in-Vue and begins formatting parser:yaml files using the YAML formatter.
Key Highlights
- Oxlint: Show file:line:col in github format annotation messages
- Oxfmt: Support tsx-in-vue
- BREAKING: Format parser:yaml files by oxc_formatter_yaml
- BREAKING: Store single parameter in `TSIndexSignature::parameter`
Breaking Changes
- oxfmt: [**BREAKING**] Format parser:yaml files by oxc_formatter_yaml
- ast: [**BREAKING**] Store single parameter in `TSIndexSignature::parameter`
- ast: [**BREAKING**] Change `TSIndexSignatureName::name` to `Ident`
- ast: [**BREAKING**] Introduce `ExportDeclaration`, `ExportFromDeclaration`
- ast: [**BREAKING**] Introduce `ArrowFunctionBody` enum
New Features
- linter/oxc/bad-char-at-comparison: Expand coverage
- oxlint: Show file:line:col in github format annotation messages
- oxfmt: Support tsx-in-vue
Full Release Notes
## Table of Contents - [Oxlint v1.77.0](#oxlint-v1.77.0) - [Oxfmt v0.62.0](#oxfmt-v0.62.0) ## Oxlint v1.77.0 ### π₯ 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 - a64b65d linter/unicorn/new-for-builtins: Detect parenthesized member expression object (#25249) (tanakalucky) - 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 v0.62.0 ### π₯ 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)