# Changelog

All notable changes to this package will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0).

## [0.59.0] - 2026-07-13

### 🚀 Features

- 92f154a oxlint,oxfmt: Auto-discover `.mts` config files (#24357) (camc314)

### 🐛 Bug Fixes

- 8337835 linter: Error on `ignorePatterns` that cannot match files aoutside the config directory (#24341) (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)

## [0.58.0] - 2026-07-06

### 🚀 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)

### 🐛 Bug Fixes

- 2121a55 oxfmt: Reuse tinypool process during the same LSP process (#24197) (leaysgur)
- cd2452e formatter_css: Align SCSS output to Prettier 3.9.1 (#24097) (leaysgur)
- ea5d095 oxfmt: Update `--migrate prettier` (#23963) (leaysgur)

## [0.57.0] - 2026-06-29

### 💥 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

- 01de9ec oxfmt: Format `parser:graphql` files by `oxc_formatter_graphql` (#23318) (leaysgur)

### 🐛 Bug Fixes

- 48e2d78 formatter_css: Improve major prettier diffs (#23327) (leaysgur)
- 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)

### 📚 Documentation

- b4d0dc9 oxfmt,formatter,formatter_css,formatter_core: Update AGENTS.md (#23814) (leaysgur)

## [0.56.0] - 2026-06-22

### 🐛 Bug Fixes

- 37a34a1 oxfmt/lsp: Avoid newlines line ending changes (#23463) (Sysix)

## [0.55.0] - 2026-06-15

### 🚀 Features

- 0c6fb23 oxfmt: Format `parser:json-stringify` files by `oxc_formatter_json` (#23194) (leaysgur)

### 🐛 Bug Fixes

- 956309a lsp: Use protocol line breaks for positions (#23329) (konh)
- 769de65 oxfmt: Handle compound json extensions (#23198) (leaysgur)

## [0.54.0] - 2026-06-08

### 🚀 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)

### 🐛 Bug Fixes

- 2aedd52 oxfmt: Avoid JS promise rejects for all TSFN call sites (#23107) (leaysgur)

### 📚 Documentation

- f88961a oxfmt: Annotate each config option with supported languages (#22953) (leaysgur)

## [0.53.0] - 2026-06-01

### 🚀 Features

- d75cbbf oxfmt: Format `parser:json` files by `oxc_formatter_json` (#22709) (leaysgur)

### 🐛 Bug Fixes

- d3cdd62 oxfmt: Skip formatting for whitespace-only file (#22780) (leaysgur)

### 📚 Documentation

- 845f393 oxfmt,formatter,formatter_json,formatter_core: Add/update AGENTS.md (#22873) (leaysgur)

## [0.52.0] - 2026-05-26

### 🚀 Features

- 16b8058 oxfmt: Support `vite-plus/resolveConfig` for vite.config.ts (#22454) (leaysgur)

## [0.51.0] - 2026-05-19

### 🐛 Bug Fixes

- 8ee946f formatter/sort_imports: Use label to classify lines (#22512) (leaysgur)
- 8c1da44 formatter: Normalize destructuring keys in DCR (#22478) (camc314)

## [0.50.0] - 2026-05-15

### 💥 BREAKING CHANGES

- 21bb5d1 oxfmt: [**BREAKING**] Avoid config pre-scan (#22258) (leaysgur)

### 🐛 Bug Fixes

- 441d724 oxfmt: Fix "race probe" logic with unit tests (#22378) (leaysgur)
- 43b9978 formatter/sort_imports: Treat subpath imports as internal (#22440) (leaysgur)
- 4dd83dd oxfmt: Send expandedStates variants as shared refs (#22366) (leaysgur)

### ⚡ Performance

- 123c493 oxfmt: Reduce more syscalls (#22380) (leaysgur)

## [0.49.0] - 2026-05-11

### 💥 BREAKING CHANGES

- 5c6c390 oxfmt: [**BREAKING**] Respect more git ignore options, align with Oxlint (#22210) (leaysgur)

### 🚀 Features

- 6e8e818 oxfmt: Experimental .svelte support (#21700) (leaysgur)

### ⚡ Performance

- b756682 oxfmt: Optimize nested config prescan (#22232) (Jovi De Croock)

## [0.48.0] - 2026-05-05

### 🛡️ Security

- 82dbbec deps: Update npm packages (major) (#21558) (renovate[bot])

## [0.47.0] - 2026-04-27

### 🚀 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

- 38d1e82 oxfmt/lsp: Format non `file://` URIs without a authority (#21647) (Sysix)
- 0dce3c6 oxfmt: Handle invalid `overrides` config without panic (#21661) (Yuji Sugiura)

### ⚡ Performance

- db6c603 oxfmt/lsp: Avoid clones on lsp options deserializion (#21749) (Sysix)

## [0.46.0] - 2026-04-20

### 🚀 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

- 6f49fad oxfmt: Respect nested config.`ignorePatterns` (#21489) (leaysgur)
- 7c98d52 oxfmt: Do not panic on finding invalid nested config (#21461) (leaysgur)

### ⚡ 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)

## [0.45.0] - 2026-04-13

### 🚀 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

- ec7f6ed oxlint, oxfmt: Apply `check_for_writer_error` to `.flush()` (#21343) (Craig Morrison)
- 22babde oxfmt: Fix unicode char escaping (#21162) (leaysgur)
- 94fe774 oxfmt: Handle paths with consecutive leading slashes (#21155) (leaysgur)
- 50c389b oxfmt: Support `.editorconfig` `quote_type` (#20989) (leaysgur)

## [0.44.0] - 2026-04-06

### 🚀 Features

- 35cf6e8 oxfmt: Add node version hint for ts config import failures (#21046) (camc314)

### 🐛 Bug Fixes

- 9d45511 oxfmt: Propagate file write errors instead of panicking (#20997) (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)

## [0.43.0] - 2026-03-30

### 🚀 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)

## [0.42.0] - 2026-03-24

### 🚀 Features

- 416865a formatter,oxfmt: Add doc comments for `JsdocConfig` (#20644) (leaysgur)
- 4fec907 formatter: Add JSDoc comment formatting support (#19828) (Dunqing)
- c21c5a7 oxfmt: Support html-in-js substitution (#20193) (leaysgur)
- c5aeae4 formatter,oxfmt: Support `/* LANG */` comment for gql|html-in-js (#20224) (leaysgur)

### 🐛 Bug Fixes

- 828b56a oxfmt: Re-export all nested types (#20636) (leaysgur)
- c1b461b oxfmt/lsp: Revert #19977, prefer file extension over languageId for format strategy (#20623) (Sysix)
- d35b25f formatter,oxfmt: Remove redundant space after soft_line_break_or_space (#20562) (leaysgur)
- f8c452a formatter,oxfmt: Handle css-in-js comment inside template (#20452) (leaysgur)
- 7c233f4 formatter,oxfmt: Handle nested `BinaryExpression` for tailwind trailing spaces (#20450) (leaysgur)
- 71628e6 formatter,oxfmt: Sort imports should not flush Empty line (#20443) (leaysgur)

## [0.41.0] - 2026-03-16

### 🚀 Features

- d22c443 oxfmt: Export `OxfmtConfig` type (#20275) (leaysgur)
- a11ecff oxfmt/lsp: Respect `angular` language id as `.component.html` file (#20242) (Sysix)

### 🐛 Bug Fixes

- f908742 oxfmt: Revert #20326 partially (#20413) (leaysgur)
- 68fb0d0 oxfmt: Skip vite.config.ts which fails to import (#20326) (leaysgur)
- 88ee826 oxfmt: Handle literalline for script-in-vue (#20130) (leaysgur)
- 1c07b3b diagnostics: Handle `WouldBlock` in stdout writes to prevent panic (#20295) (Boshen)

## [0.40.0] - 2026-03-12

### 🐛 Bug Fixes

- 96f761f oxfmt: Ensure stdin blocking mode is set for non-TTY environments (#20289) (camc314)
- bc20217 oxlint,oxfmt: Omit useless `| null` for `Option<T>` field from schema (#20273) (leaysgur)

## [0.39.0] - 2026-03-12

### 🐛 Bug Fixes

- 4ea67de oxlint,oxfmt: Skip `vite.config.ts` exports `defineConfig(fn)` (#20260) (leaysgur)
- 11a2b45 oxfmt: Skip `vite.config.ts` w/o `.fmt` field in auto-discovery (#20254) (leaysgur)

## [0.38.0] - 2026-03-11

### 🚀 Features

- 95943aa oxfmt: Support `vite.config.*` `.fmt` field (#20197) (leaysgur)
- 172fc07 oxfmt: .js/.ts config file support (#20135) (leaysgur)

### 🐛 Bug Fixes

- e483569 oxfmt: Avoid double-escaping in css-in-js (#20211) (leaysgur)

## [0.37.0] - 2026-03-09

### 🚀 Features

- ee26215 oxfmt: Support css-in-js substitution (#20019) (leaysgur)
- 0f0ff51 oxfmt: Display default settings was used message in cli stats (#19939) (leaysgur)
- 88815b8 oxfmt: Reintroduce stats line for write mode (#19938) (leaysgur)

### 🐛 Bug Fixes

- ee0491e apps,napi: Explicitly specify libs in tsconfigs (#20071) (camc314)
- 92f4490 oxfmt: Apply `is_ignored_dir` for glob paths too (#20056) (leaysgur)
- 114f974 oxfmt/lsp: Prefer language_id over file extension when formatting (#19977) (copilot-swe-agent)

### ⚡ Performance

- 2baa5fb napi: Unify build-test profile to coverage for cache sharing (#20090) (Boshen)

## [0.36.0] - 2026-03-02

### 🚀 Features

- 4888a99 oxfmt/lsp: Support other schemes beside `file://` and `untitled://` (#19872) (Sysix)
- 14a0181 oxfmt: Support `graphql()` variant for gql-in-js (#19703) (leaysgur)
- ca68ea6 oxfmt: Support gql-in-js substitution (#19670) (leaysgur)
- 035933c formatter,oxfmt: Support js-in-vue (partially) (#19514) (leaysgur)

### 🐛 Bug Fixes

- 8e3842d oxfmt: Avoid embedded TSFN crash by returning errors as data (take2) (#19806) (Yuji Sugiura)
- e540585 oxfmt: Support tailwind sort for CSS/LESS/SCSS (#19803) (leaysgur)
- 93bb861 formatter: Trim trailing whitespace before breaking line (#19740) (leaysgur)

## [0.35.0] - 2026-02-23

### 🚀 Features

- 984dc07 oxfmt: Strip `"experimental"SortXxx` prefix (#19567) (leaysgur)

### 🐛 Bug Fixes

- d7b63a4 oxfmt: Update API types for `sortPackageJsonOptions` (#19569) (leaysgur)

## [0.34.0] - 2026-02-19

### 🚀 Features

- 652c346 oxfmt/lsp: Support `untitled://` schema (#19287) (Sysix)

### 🐛 Bug Fixes

- 6c61b70 oxfmt: Fix outdated `sortImports.groups` doc comments (#19513) (leaysgur)

## [0.33.0] - 2026-02-16

### 💥 BREAKING CHANGES

- 9c34f72 formatter/sort_imports: [**BREAKING**] Report invalid group name with renaming `side-effect` > `side_effect` (#19416) (leaysgur)

### 🚀 Features

- 4baebef formatter/sort_imports: Support `{ newlinesBetween: bool }` inside `groups` (#19358) (leaysgur)
- d1c2fb6 formatter/sort_imports: Support `customGroups` attributes(`selector` and `modifiers`) (#19356) (leaysgur)

### 🐛 Bug Fixes

- f084ea6 oxfmt: Explicitly pass `process.env` for the forked process (#19380) (Long Ho)
- 90ec3d2 oxfmt: Update tailwind plugin which fixes crash on non-js file (#19353) (leaysgur)

## [0.29.0] - 2026-02-10

### 💥 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)
- 9b205b3 formatter: Fallback to formatting when package.json sorting fails (#19097) (Boshen)
- f39c96c oxfmt: Do not override `babel-ts` for now (#19030) (leaysgur)
- ef5bfab oxfmt: Workaround Node.js ThreadsafeFunction cleanup race condition (#18980) (Boshen)

### ⚡ Performance

- 467724f oxfmt: Collect glob paths in parallel (#19209) (leaysgur)
- 61e0efa oxfmt: Use RwLock instead of Mutex for TSFN handles (#18888) (Boshen)

## [0.28.0] - 2026-02-02

### 🚀 Features

- ee30de9 oxfmt: Add config migration from biome (#18638) (Luca Fischer)

### 🐛 Bug Fixes

- e754b18 oxfmt/migrate-prettier: Set `experimentalSortPackagejson: false` by default (#18831) (leaysgur)
- 34ee194 formatter: Tailwindcss sorting doesn't work for object property keys (#18773) (Dunqing)
- 48f1e35 oxfmt: Prevent ThreadsafeFunction crash on Node.js exit (#18723) (Boshen)
- c3d05c1 formatter,oxfmt: Handle CRLF with embedded formatting (#18686) (leaysgur)
- ac1ff4e oxfmt: Use `empty_line` IR for empty xxx-in-js line (#18623) (leaysgur)
- 8f76900 oxfmt: Dedent xxx-in-js templates before calling prettier (#18622) (leaysgur)
- 6b726ef oxfmt: Trim whitespace only xxx-in-js templates (#18621) (leaysgur)

## [0.27.0] - 2026-01-26

### 🚀 Features

- d71c15d oxfmt: Enable tailwind sort inside xxx-in-js (#18417) (leaysgur)
- 52b5003 formatter,oxfmt: Support Angular `@Component({ template, styles })` (#18324) (leaysgur)

### 🐛 Bug Fixes

- 224140c oxfmt: Canonicalize `..` component in config path (#18570) (leaysgur)
- 7e6c15b oxfmt: Increase Tailwind CSS test timeout for Windows CI (#18339) (Boshen)

### ⚡ Performance

- b2df8fb oxfmt: Enable tailwind plugin only for relevant parser (#18418) (leaysgur)

## [0.26.0] - 2026-01-19

### 🐛 Bug Fixes

- 864b4ab oxfmt: Use `format_config` for `external_options` override (#18252) (leaysgur)
- 90ce4b7 oxfmt: Restore `customGroups` handling lost (#18243) (leaysgur)

## [0.25.0] - 2026-01-19

### 🚀 Features

- a95b9bb oxfmt: Support oxfmtrc `overrides` config (#18068) (leaysgur)
- 984d5c1 oxfmt/sort-imports: Support `options.customGroups` (#17576) (nilptr)
- fd2c792 formatter: Support css prop, styled jsx, and member/computed `styled.tags` (#17990) (magic-akari)
- 361a8f1 oxfmt: Upgrade `prettier` to 3.8.0 (#18024) (Dunqing)
- 873c683 oxfmt: Add more tracing logs (#18015) (Yuji Sugiura)
- cc3e74b oxfmt: Add Prettier specific fields in `Oxfmtrc` (#17981) (leaysgur)
- 6ffe315 oxfmt: Add more `Oxfmtrc` fields description (#17979) (leaysgur)

### 🐛 Bug Fixes

- 2a397f8 oxlint/lsp: Don't send `workspace/diagnostic/refresh` notification on watched file changes (#17885) (Sysix)
- efacb13 oxfmt: Do not wrap with `block_indent()` if `format_embedded` fails (#17975) (leaysgur)
- 9d0f551 oxfmt: Do not panic with subdirectry and config (#17955) (leaysgur)
- 9d96cc6 oxfmt: Use `std(out/err)._handle.setBlocking(true)` to handle `WouldBlock` error in Rust (#17950) (leaysgur)

## [0.24.0] - 2026-01-12

### 🚀 Features

- 2e03ebf oxfmt/lsp: Use `SourceFormatter` to support non-JS files and napi features (#17655) (leaysgur)
- 623f7eb oxfmt/sort_package_json: Use `options.sort_scripts` (#17740) (leaysgur)
- 86c0168 oxfmt/sort_package_json: Handle `oxfmtrc.sort_scripts` option (#17738) (leaysgur)
- 256636a oxfmt/lsp: Add `.editorconfig` to `get_watcher_patterns` (#17694) (leaysgur)
- 3f3db39 oxfmt/lsp: Use `ConfigResolver` to align with CLI (#17654) (leaysgur)

### 🐛 Bug Fixes

- 9e89389 formatter/tailwindcss: Nested class string doesn't respect `singleQuote: true` (#17838) (Dunqing)
- f0cedd4 formatter/tailwindcss: Class name is broken after sorting when its contains single quotes with `singleQuote: true` (#17790) (Dunqing)
- 1864142 oxfmt/tailwindcss: Bundle `prettier/plugins/*` (#17782) (leaysgur)
- 3a9d43b oxfmt: Ignore explicit positional path which is ignored by directory (#17732) (leaysgur)
- 0563217 formatter: Classes will be stripped out when both `experimentalTailwindcss` and `experimentalSortImports` are enabled (#17726) (Dunqing)

### 📚 Documentation

- 62b7a01 formatter: Clarify `experimentalTailwindcss` configuration comments (#17898) (Dunqing)

## [0.23.0] - 2026-01-06

### 🚀 Features

- a19cc93 oxfmt: Add debug logging to oxfmt LSP to troubleshoot resolved options at runtime (#17695) (Nicholas Rayburn)

### 🐛 Bug Fixes

- dcfdd41 formatter: Should not set up tailwindcss callback when no tailwindcss configuration is set (#17696) (Dunqing)

## [0.22.0] - 2026-01-05

### 🚀 Features

- 8fd4ea9 oxfmt: `options.embeddedLanguageFormatting` is now `"auto"` by default (#17649) (leaysgur)

### 🐛 Bug Fixes

- 174375d oxfmt,oxlint: Disable mimalloc for 32-bit Arm targets (#17473) (Yaksh Bariya)

### ⚡ Performance

- abb28dc oxfmt: Turn of pretty print from sort-package-json (#17452) (Boshen)

## [0.21.0] - 2025-12-29

### 🚀 Features

- 4df8063 oxfmt: Respect `.gitignore` in sub directries (#17352) (leaysgur)

### 🐛 Bug Fixes

- c6690d1 rust: Remove unsupported tokio io-std feature for WASM compatibility (#17311) (Boshen)

## [0.20.0] - 2025-12-22

### 🚀 Features

- 97a02d1 oxfmt: Add `insertFinalNewline` option (#17251) (leaysgur)
- a3f3c58 oxfmt: Support TOML(v1.0 only) files (#17113) (leaysgur)

### 🐛 Bug Fixes

- 7b810f4 oxfmt: Use correct root dir with ignore and overrides for nested cwd (#17244) (leaysgur)
- cdb80d4 oxfmt: Resolve `.editorconfig` root dir from `cwd` (#17093) (leaysgur)

## [0.19.0] - 2025-12-19

### 🚀 Features

- 15dfb55 oxfmt: Respect single nearest `.editorconfig` (#17043) (leaysgur)
- 8c33ff4 oxfmt: Expose Node.js API: `format(fileName, sourceText, options?)` (#16939) (leaysgur)

### 🐛 Bug Fixes

- d340c87 oxfmt: Update api `FormatOptions` type with `& Record<string, unknown>` (#17036) (leaysgur)
- 827a256 oxfmt: Place ignorePatterns at bottom of JSON in --migrate prettier (#16926) (Boshen)

## [0.18.0] - 2025-12-15

### 🚀 Features

- 5e3ceb8 oxfmt: Support `oxfmt --stdin-filepath` (#16868) (leaysgur)
- d4c0bb7 oxfmt: Support `oxfmt --migrate prettier` (JS side) (#16773) (leaysgur)
- 2b9c3fe oxfmt: Support `oxfmt --migrate [prettier]` (Rust side) (#16771) (leaysgur)
- 47c8710 oxfmt: Arrange cli mode and update help (#16728) (leaysgur)
- 559eff1 oxfmt: Support `oxfmt --init` (#16720) (leaysgur)
- 28e0682 oxfmt: Enable experimental `package.json` sorting by default (#16593) (leaysgur)
- feffe48 oxfmt: Trace which files are being formatted via `OXC_LOG=debug` (#16627) (Boshen)

### 🐛 Bug Fixes

- bc2e0f8 oxfmt: Report `exitCode` correctly (#16770) (leaysgur)
- d719988 oxfmt: Make Rust CLI as just formatting CLI (#16768) (leaysgur)
- 2577814 oxfmt: Remove `jsonc` parser override for `(j|t)sconfig(.*)?.json` (#16762) (leaysgur)
- 02f59ba oxfmt: Always respect ignored files even specified (#16632) (leaysgur)
- 37c1a06 oxfmt: Exclude lock files to be formatted (#16629) (leaysgur)

### ⚡ Performance

- 10b4f9f oxfmt: Make time measurement conditional (#16634) (Boshen)
- 6f3aaba oxfmt: Use `worker_threads` by `tinypool` for prettier formatting (#16618) (leaysgur)

## [0.17.0] - 2025-12-08

### 🚀 Features

- 3184f17 oxfmt: Pass filepath field to prettier formatting (#16591) (Yuji Sugiura)
- 7bb3304 oxfmt: Pass populated config to prettier formatting (#16584) (leaysgur)
- 69f84d2 oxfmt: Pass raw config to prettier formatting (#16582) (leaysgur)
- a83a2ec oxfmt: Expose `setupConfig(configJSON: string)` napi callback (#16579) (leaysgur)
- af76b0e oxfmt: Support formatting HTML, YAML, GraphQL, Handlerbars, Markdown, CSS files (#16524) (leaysgur)
- 66b64ef oxfmt: Support formatting JSON files (#16523) (leaysgur)
- 4767926 oxfmt: Prepare non-js/ts file support with prettier (#16480) (leaysgur)
- 2b4ce5d oxfmt: Use dedicated `format_by_xxx_formatter` method by `SourceType` (#16417) (leaysgur)
- 0867d2f oxfmt: Set up JS `formatFile()` function for Rust via napi (#16415) (leaysgur)
- b6feb66 oxfmt: Rename `embedded.ts` with preparing `formatFile()` function (#16414) (leaysgur)
- dd2cb62 oxfmt: Not error on explicit `--write` flag used (#16376) (leaysgur)

## [0.16.0] - 2025-12-01

### 🚀 Features

- 116e0d1 website: Auto generate oxfmt docs (#15985) (Boshen)

### 🐛 Bug Fixes

- 0faa978 oxfmt: JsFormatEmbeddedCb types (#16324) (Brooooooklyn)
- 653fa6c oxlint/oxfmt/lsp: Tell client the real tool name & version (#16212) (Sysix)
- 38b7bc4 oxfmt: Make no-napi build work (#16134) (leaysgur)
- 14b0a6a oxfmt: Fix JS-ish file detection (#16092) (leaysgur)

## [0.15.0] - 2025-11-24

### 🚀 Features

- f9a502c oxfmt: `oxfmt --lsp` support (#15765) (leaysgur)

## [0.14.0] - 2025-11-17

### 🚀 Features

- 99823ad oxfmt: Print nothing for default(write) mode (#15583) (leaysgur)

### ⚡ Performance

- d99a83f oxfmt: Use simdutf8 based read_to_string (#15614) (leaysgur)

### 📚 Documentation

- 3d15805 linter: Reformat doc comments (#15670) (overlookmotel)

## [0.12.0] - 2025-11-10

### 🚀 Features

- 3251000 oxfmt: Use `prettier` directly and bundle `prettier` (#15544) (Dunqing)
- 7b1e6f3 apps: Add pure rust binaries and release to github (#15469) (Boshen)
- 33ad374 oxfmt: Disable embedded formatting by default for alpha (#15402) (leaysgur)

### ⚡ Performance

- a6808a0 oxfmt: Use `AllocatorPool` to reuse allocator between threads (#15412) (leaysgur)


## [0.10.0] - 2025-11-04

### 🚀 Features

- b77f254 oxfmt,formatter: Support `embeddedLanguageFormatting` option (#15216) (leaysgur)
- 898d6fe oxfmt: Add embedded language formatting with Prettier integration (#14820) (Boshen)

### 🐛 Bug Fixes

- daacf85 oxfmt: Release build fails (#15262) (Dunqing)
- f5d0348 oxfmt: Sync `dependencies` with `npm/oxfmt` and `apps/oxfmt` (#15261) (leaysgur)

### 🚜 Refactor

- 27b4f36 diagnostic: Remove `path` from sender (#15130) (camc314)


## [0.9.0] - 2025-10-30

### 🚜 Refactor

- 5de99c2 formatter: Export unified way to get_parse_options (#15027) (leaysgur)

### 💼 Other

- aceff66 oxfmt: V0.9.0 (#15088) (Boshen)



## [0.8.0] - 2025-10-22

### 🚀 Features

- 006708d oxfmt: Support `ignorePatterns` in oxfmtrc (#14875) (leaysgur)


## [0.7.0] - 2025-10-21

### 🚀 Features

- 6dfcd80 oxfmt: Search both .json and .jsonc config file (#14848) (leaysgur)

### 🐛 Bug Fixes

- 7a420a1 oxfmt: Handle `.d.ts` file correctly (#14835) (leaysgur)

### 🚜 Refactor

- 6fa7420 oxfmt: Use custom ignore builder (#14850) (leaysgur)


## [0.6.0] - 2025-10-20

### 🚀 Features

- 7f91a26 oxfmt: Handle ignoring files (#14798) (leaysgur)
- 199a2c6 oxfmt: Support `--with-node-modules` option (#14713) (leaysgur)
- 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

- ef02760 oxfmt: Handle relative path starts with dot (#14708) (leaysgur)
- ee37f5d oxfmt: Handle default cwd correctly (#14704) (leaysgur)
- 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)

### 🧪 Testing

- 7c42ea0 oxfmt: Remove args from snapshot file name (#14800) (leaysgur)


## [0.5.0] - 2025-10-14

### 🚀 Features

- 51ddfa8 oxfmt: Support `.oxfmtrc.json(c)` config file (#14398) (leaysgur)

### 🐛 Bug Fixes

- 0f19be0 oxfmt: Normalize path delimiter on Windows (#14463) (leaysgur)



## [0.3.0] - 2025-09-19

### 🐛 Bug Fixes

- 55775ce oxfmt: Fix up the half-finished lines (#13840) (leaysgur)

### ⚡ Performance

- 59db021 oxfmt: Walk and format at the same time (#13838) (leaysgur)


## [0.2.0] - 2025-09-16

### 💥 BREAKING CHANGES

- d90bebc oxfmt: [**BREAKING**] Change default behavior more `cargo fmt` like (#13794) (leaysgur)

### 🧪 Testing

- afa2297 oxfmt: Fix failing tests on Windows (#13801) (leaysgur)
- 5fbffcf oxfmt: Enable changing `cwd` during tests (#13797) (leaysgur)


## [0.1.0] - 2025-09-12

### 🚀 Features

- 1d72f8b oxfmt: Support --no-error-on-unmatched-pattern (#13671) (leaysgur)

### 🐛 Bug Fixes

- d6628bf oxfmt: Print sorted output (#13709) (leaysgur)
- 056f6de oxfmt: Set preserve_parens: false to prevent panic (#13666) (leaysgur)

### 🚜 Refactor

- 6b74078 formatter: Move `is_supported_source_type` to `oxc_formatter` crate (#13702) (Sysix)

### 🧪 Testing

- 83d735b oxfmt: Use normalized path separator (#13726) (leaysgur)
- 289ef9b oxfmt: Add tests setup (#13684) (leaysgur)



