#1592ed67eb7 Thanks @baseballyama! - Exclude deprecated rules from the all configuration while keeping active rules enabled.
#1594af288cd Thanks @baseballyama! - Recognize browser from SvelteKit's $app/env alias as a browser guard in no-top-level-browser-globals.
#15889814b51 Thanks @baseballyama! - Include all active extension rules in the Extension Rules documentation table while preserving their primary-category entries.
#158957863c5 Thanks @baseballyama! - Keep the documented project service configuration consistent across TypeScript and Svelte files to avoid unnecessary project reloads.
#15934ad2c67 Thanks @baseballyama! - Limit require-each-key diagnostics to the opening each tag instead of the whole block.
#159990d7b09 Thanks @baseballyama! - Enable no-navigation-without-resolve on SvelteKit 3 so the recommended config reports internal links and navigation calls that omit resolve().
#1590a28563f Thanks @baseballyama! - Fix false positives in no-immutable-reactive-statements for TypeScript components when ecmaFeatures.globalReturn is enabled.
#15984607a2c Thanks @baseballyama! - Recognize SvelteKit 3 in rule conditions, including prereleases, and document version detection and routes configuration.
fix: tab cannot activate the accessibility layer on a fresh page by @synath in #12220
Pressing Tab now activates the accessibility layer on a fresh page when activateOnTab is left at its default of true. This restores the documented default, which regressed in v8.14.0. To keep Tab from activating it:
fix: apply accessibleText to button and recycled accessible elements by @synath in #12221
accessibleText now applies to the default button type and to accessible elements recycled from the pool.
🎁 Added
feat: add a federated contextmenu event by @Zyie in #12250
Containers now receive contextmenu and contextmenucapture events, also available as the oncontextmenu handler property. The event is a FederatedPointerEvent that PixiJS hit-tests and propagates like pointerdown, and eventFeatures.click gates it.
sprite.eventMode='static';sprite.on('contextmenu',(event)=>{event.preventDefault();// keeps the browser menu closed
openMenuAt(event.global);});
New transient renderer option (WebGPU, with antialias) discards the canvas's multisample depth/stencil buffer at the end of each pass, and its color buffer too on GPUs that aren't tile-based.
fix: decompose mirrored matrix into rotation and negative scale by @cpruijsen in #12200
Matrix.decompose() and setFromMatrix() (plus reparentChild(), reparentChildAt() and replaceChild()) now turn a mirrored matrix into a real rotation, zero skew and a negative scale.x. Previously they returned rotation = 0 with a nonzero skew. Rendering is identical; only the values you read back change. The flip always lands on scale.x, so a scale(1, -1) matrix now gives scale (-1, 1) with rotation = -π. Re-check any flip detection or tweens that start from decomposed values.
PixiJS types now compile on TypeScript 6 and 7 as well as 5. TypeScript 5 needs no changes; PixiJS still adds @webgpu/types for you. On TypeScript 6 and 7, which include WebGPU types built in, remove @webgpu/types from compilerOptions.types and use @types/web in place of the "dom" lib, since some releases leave out parts such as GPUTextureUsage. See the new TypeScript guide.
feat: add renderer loader extensions for lazy backend imports by @Zyie in #12175
New ExtensionType.WebGLLoader, ExtensionType.WebGPULoader and ExtensionType.CanvasLoader extensions register an async load() hook that the matching renderer awaits during init(), before it creates its systems and pipes. Plugins can import() backend-only code this way, so each backend stays in its own chunk and only the active one loads. Loaders are deduplicated by name and are skipped when skipExtensionImports is true.
import{Application,extensions,ExtensionType}from'pixi.js';extensions.add({extension:{type:ExtensionType.WebGLLoader,name:'my-plugin'},load:()=>import('./gl/register'),},{extension:{type:ExtensionType.WebGPULoader,name:'my-plugin'},load:()=>import('./gpu/register'),},);constapp=newApplication();awaitapp.init({preference:'webgpu'});// only the WebGPU loader runs
feat: add Geometry.indexCount for drawing a prefix of a shared index buffer by @GoodBoyDigital in #12182
Geometry gains an indexCount property (also a constructor option), the index-buffer counterpart to instanceCount. Several geometries can share one index buffer while each draws only its first N indices. Changing it never re-uploads anything. The default 0 draws the whole buffer, and an explicit size on the draw call still takes precedence.
import{Buffer,BufferUsage,Geometry}from'pixi.js';constmaxQuads=1000;constindices=newUint32Array(maxQuads*6);for(leti=0,v=0;i<indices.length;i+=6,v+=4){indices.set([v,v+1,v+2,v,v+2,v+3],i);}constsharedIndices=newBuffer({data: indices,usage: BufferUsage.INDEX|BufferUsage.COPY_DST});constgeometry=newGeometry({attributes:{aPosition: newFloat32Array(maxQuads*8)},indexBuffer: sharedIndices,indexCount: 10*6,// draw only the first 10 quads
});geometry.indexCount=25*6;// grow later without a re-upload
feat: replace frontFaceInverted with isFrontFaceInverted(target, flipY) by @GoodBoyDigital in #12206
renderer.renderTarget.isFrontFaceInverted() replaces the frontFaceInverted getter, which is now deprecated. Pass a target and flipY to get the winding for a target before you bind it, so 3D pipelines can pick a projection first. flipY defaults to false, matching bind().
import{RenderTexture}from'pixi.js';// before (deprecated)
constinvertedNow=renderer.renderTarget.frontFaceInverted;// after: the currently bound target
constinverted=renderer.renderTarget.isFrontFaceInverted();// after: a target that isn't bound yet, as if bound with flipY: true
consttarget=renderer.renderTarget.getRenderTarget(RenderTexture.create({width: 512,height: 512}));constwillInvert=renderer.renderTarget.isFrontFaceInverted(target,true);
feat: cap pooled textures to the screen size and take pool requests as options by @GoodBoyDigital in #12198
TexturePool and CanvasPool now size pooled textures to the screen instead of always rounding up to a power of two, which saves a lot of GPU memory on fullscreen filters (a 1170x2532 phone used to get 2048x4096 textures). Requests larger than every screen still round up to a power of two. getOptimalTexture() and createTexture() now take a TexturePoolRequest object with per-request format and scaleMode; the positional signatures still work but are deprecated.
import{TexturePool}from'pixi.js';// before (deprecated)
constlegacy=TexturePool.getOptimalTexture(800,600,2,true);// after
consttexture=TexturePool.getOptimalTexture({width: 800,height: 600,resolution: 2,antialias: true,scaleMode:'nearest',});TexturePool.returnTexture(texture);
feat: WGSL shader overrides, depth-stencil formats, partial buffer updates & view caching by @Zyie in #12089
StructsAndGroups.isUniform is replaced by accessMode, which also describes storage buffers. This one fails quietly; the old property reads undefined rather than throwing.
// before
if(group.isUniform){/* ... */}// after
if(group.accessMode==='uniform'){/* ... */}
fix: apply render group world color and alpha to ParticleContainer by @TheOnlyJason in #12132
ParticleContainer ignored the tint and alpha of any ancestor render group, staying fully opaque while everything else faded. Particles now inherit both, so scenes with a ParticleContainer under a tinted or faded render group will look different. Remove any manual compensation you added.
State.clockwiseFrontFace reached the WebGPU pipeline as a cull mode rather than a winding, so @builtin(front_facing) in WGSL reported the opposite of gl_FrontFacing in GLSL. Which triangles survive culling is unchanged, but WGSL shaders branching on front_facing with clockwiseFrontFace: true now take the other branch; revert any workaround that inverted it.
fix: align Polygon.strokeContains with the drawn stroke by @Jaybhade in #12137
strokeContains split the stroke width on the squared width and ignored winding order, so at the default alignment: 0.5 the hit area was ~41% wider than the drawn line, and at alignment 0 or 1 it sat on the opposite side of the edge. Hit testing now matches what's drawn.
constgraphics=newGraphics().poly([0,0,100,0,100,100,0,100],true).stroke({width: 20,alignment: 0});graphics.containsPoint({x:-10,y: 50});// now true, inside the drawn stroke
graphics.containsPoint({x: 10,y: 50});// now false, nothing is drawn there
containsRect tested the right and bottom edges with a strict <, so identical rectangles reported false. Identical rects, and any rect flush against the container's right or bottom edge, now return true. Code using it as a strict-interior test, or branching on false to mean "partially outside", now takes the other branch.
🎁 Added
feat: WGSL shader overrides, depth-stencil formats, partial buffer updates & view caching by @Zyie in #12089
feat: geometry vertexCount, WebGPU render bundles, depth-only targets & Safari WGSL fallback by @Zyie in #12090
feat: WebGPU-first RenderTarget attachment architecture & TextureView depth sampling by @Zyie in #12091
feat: copyDepthTexture for render targets (WebGPU/WebGL2) by @Zyie in #12092
RenderOptions.flipY inverts a render's Y orientation, flipping the projection and the winding/cull inversion together. That lets you capture a scene into a texture in screen orientation, which is what 3D geometry UVs expect, without a per-material flip at sample time and with back-face culling still correct. Absent or false is a no-op on both backends.
Container.updateTransform({ scaleX: 0, scaleY: 0 }) previously coerced a zero scale to 1 (the code used opts.scaleX || 1), so passing 0 left the container at full size. It now applies zero scale literally, matching scale.set(0, 0). If you relied on updateTransform ignoring a zero scale, stop passing 0 when you mean full scale.
ParticleContainer now respects the blend mode inherited from its ancestors. Previously the render pipe read the container's own local blendMode instead of the resolved groupBlendMode, so setting e.g. stage.blendMode = 'add' had no effect on particles. Particles nested under a parent with a non-default blend mode will now render differently (e.g. additive brightening) where they were silently ignored before. A blendMode set directly on the ParticleContainer is unchanged.
fix: FillPattern tiling and radial gradient sizing by @Zyie in #12037
FillPattern gains a textureSpace option ('global' | 'local'), while fixing several long-standing pattern/gradient sizing bugs. textureSpace defaults to 'global', so patterns now tile continuously across adjacent shapes instead of remapping per shape; setTransform(matrix) now applies the matrix you pass directly (it previously inverted and rescaled it by the texture size); and textureSpace: 'local' radial gradients now scale to the gradient's outer radius. Existing pattern fills and local radial gradients can render differently.
If you hand-compensated for the old setTransform behavior (pre-inverting or scaling by texture size), remove that compensation. The legacy positional new FillPattern(texture, repetition) form still works.
import{Assets,FillPattern,Graphics}from'pixi.js';consttexture=awaitAssets.load('pattern.png');// new options-object constructor with explicit textureSpace
constpattern=newFillPattern({texture,repetition:'repeat',textureSpace:'local'});constg=newGraphics().rect(0,0,200,100).fill({fill: pattern});
🎁 Added
feat: add HTML-in-Canvas texture support by @Zyie in #12053
A new opt-in pixi.js/html-source subpath renders live DOM elements into PixiJS textures while the element stays fully interactive in the browser (inputs editable, links clickable, CSS animations running). Use HTMLSource for a live element or ElementImageSource for an immutable snapshot. The element must be a direct child of the Pixi canvas. Importing the subpath also registers a lowest-priority Texture.from fallback for generic HTML elements, so it cannot affect apps that don't import it.
import{Application,Sprite}from'pixi.js';import{HTMLSource}from'pixi.js/html-source';constapp=newApplication();awaitapp.init({resizeTo: window});document.body.appendChild(app.canvas);constform=document.createElement('form');form.innerHTML='<input value="still editable" />';app.canvas.appendChild(form);// must be a direct child of the Pixi canvas
constsprite=Sprite.from(newHTMLSource({resource: form,autoUpdate: true}));app.stage.addChild(sprite);// live DOM mirrored to the GPU; the form stays interactive
feat: implement transientAttachment for MSAA RenderTextures for WebGPU by @GoodBoyDigital in #12050
Texture sources gain an opt-in transient flag so the WebGPU backend can discard the MSAA buffer at the end of a render pass (storeOp: 'discard') instead of writing it back to memory, and keep MSAA contents in tile memory on TBDR mobile GPUs where GPUTextureUsage.TRANSIENT_ATTACHMENT is available. This cuts memory bandwidth for single-pass MSAA render targets. Only set it on antialiased textures that follow a single-pass-then-discard pattern; a later loadOp: 'load' on a transient attachment yields undefined contents. Default is false, so existing code is unaffected. A WebGPU-only renderer.device.extensions.transientAttachment probe reports device support.
🐛 Fixed
fix: BitmapText trailing glyph after glyph-less word-break char by @Zyie in #12035
fix: SplitText crash when text begins with whitespace (#12040) by @Zyie in #12041
fix: TilingSprite tileRotation shears pattern on non-square sprites by @Zyie in #12062
fix: canvas renderer does not round anchor offset when roundPixels is enabled by @Clonex in #12051
fix: pass renderer's maxBatchableTextures to non-default batchers by @SerG-Y in #12029
fix: handle null from getShaderSource/getShaderInfoLog on lost context (#12032) by @Zyie in #12042
fix: GCSystem unload resources before nulling hash entry by @Zyie in #12038
🧹 Chores
chore: bundle pixijs-skills and add sync workflow by @Zyie in #12045
Ships 25 PixiJS v8 AI agent skills under skills/ in the published npm package, available at node_modules/pixi.js/skills/ after install.
chore: document blend mode resolution inheritance by @MFei8ht in #12067
chore: restrict postMessage origin in playground for better security by @RinZ27 in #12055
fix: text.width and word wrap returning incorrect values by @Zyie in #12007
Text/HTMLText/BitmapText with wordWrap: true and non-left align (center/right/justify) now return the true rendered width from text.width instead of reporting wordWrapWidth. If you relied on text.width === wordWrapWidth for layout, use wordWrapWidth directly or wrap the text in a sized container.
Adds graphicsContextToSvg(source, precision?), a pure function that serializes a Graphics or GraphicsContext to a self-contained SVG string. Supports rects, circles, ellipses, rounded rects, polygons, bezier/quadratic/arc paths, strokes, holes (via fill-rule="evenodd"), and linear/radial gradients.
feat: allow preference to accept an array of renderer types by @Zyie in #11963
autoDetectRenderer and Application.init now accept an array of renderer names for preference, letting you restrict the fallback chain (e.g. disable WebGPU entirely) rather than only reorder it. A new RendererPreference type is exported.
feat: provide a getter to the domElement via app.domContainerRoot by @carlos22 in #11974
Application exposes a read-only domContainerRoot getter returning the HTMLDivElement that wraps all DOMContainer elements, so apps can add CSS classes, inline styles, or customize the DOM overlay root.
MeshRope now accepts an explicit width for rope thickness, decoupling it from the texture's height. Omitting width preserves the previous texture.height default.
feat: add a default anchor to texture generation by @ksv90 in #12011
renderer.generateTexture() accepts a defaultAnchor option that's forwarded onto the produced Texture. RenderTexture.create() also gains a textureOptions parameter to pass through fields like defaultAnchor to the underlying Texture.
import{Graphics,Sprite}from'pixi.js';constshape=newGraphics().circle(0,0,50).fill(0xff3366);consttexture=app.renderer.generateTexture({target: shape,defaultAnchor:{x: 0.5,y: 0.5},});constsprite=newSprite(texture);sprite.position.set(200,200);// centered by default
🐛 Fixed
fix: stroke-only Graphics masks now render correctly on Canvas renderer by @DmitriyGolub in #11979
fix: skip _applyMipRange for single-mip textures (iOS 18.0–18.1) by @GoodBoyDigital in #11985
fix: stale TextureMatrix when pooled textures reuse the same reference by @GoodBoyDigital in #11997
fix: unhandled actions in GraphicsPath.transform() switch statement by @Zyie in #11996
fix(VideoSource): avoid play/mediaReady recursion before video dimensions (#11133) by @satoren in #12009
fix: text.width and word wrap returning incorrect values by @Zyie in #12007
BlurFilter now uses an optimized halving strength scheme by default, which changes visual output compared to previous versions. Set legacy: true to restore the old behavior.
newBlurFilter({legacy: true});// or globally:
BlurFilter.defaultOptions.legacy=true;
Text with align: 'justify' now uses wordWrapWidth for width calculation instead of maxLineWidth, matching CSS behavior. The last line is no longer stretched.
breakWords: true in HTMLText now correctly uses CSS word-break: break-word instead of break-all to match behavior of other text renderers.
🎁 Added
feat: add tagged text support to canvasTextSplit by @Zyie in #11949
SplitText now supports tagStyles, so styled runs (e.g. <red>Hello</red> <blue>World</blue>) are correctly split into per-character Text objects with individual styles preserved.
feat: Improves text rendering and layout handling by @Zyie in #11947
Bitmap text now supports whiteSpace modes (normal, pre, nowrap, pre-line, pre-wrap) with proper space/newline collapsing
Bitmap text word wrap supports break-after characters (hyphens, en-dash, em-dash, soft hyphen)
Canvas text and split text now render align: 'justify' by distributing extra word spacing
Dynamic bitmap fonts scale drop shadow blur and distance proportionally to font size
Bitmap font xAdvance now uses true advance width from measureText() instead of bounding-box width
Kerning values correctly scaled by fontScale in dynamic bitmap fonts
SplitText now more accurately splits Text across a wider range of TextStyle configurations. This may result in slight changes to character positioning.
Using SplitText.from from an existing Text now correctly transfers the source anchor to the new instance by mapping the anchor to pivot coordinates. This changes layout and positioning compared to previous behavior.
SplitBitmapText now correctly defaults to a white fill, matching the behavior of BitmapText.
HTMLText now correctly respects breakWords and no longer cuts off words that exceed wordWrapWidth.
HTMLText now respects the alpha value of its fill and stroke.
Text now correctly aligns when using align: 'right' or align: 'center', resulting in a small positional adjustment.
Container.cullArea is now correctly interpreted in the container’s local coordinate space and transformed to global coordinates before culling checks.
// cullArea is defined in local space and transformed during culling
container.cullArea=newRectangle(0,0,100,100);
graphics.texture(texture, 0x000000) will now correctly apply a black tint
Note: Currently only works for Text/HTMLText, BitmapText support coming soon
consttext=newText({text:'<bold>Important:</bold> This is <highlight>highlighted</highlight> text',style:{fontFamily:'Arial',fontSize: 28,fill:'white',tagStyles:{bold:{fontWeight:'bold',fill:'yellow'},highlight:{fill:'cyan',fontSize: 32}}}});
feat: improve stability of SplitText by @Zyie in #11858
SplitText now fully mirrors Text behavior and regenerates automatically when its TextStyle changes via text.styleChanged()
Markdown: Fix text with $ been incorrectly parsed as math syntax (#20140 by @fisker)
<!-- Input -->**Uses $FOO** from `a.sh` and `b.sh`, plus `$BAR` from `c.sh`, before anything else runs here.
<!-- Prettier 3.9.8 -->**Uses $FOO** from `a.sh` and `b.sh`, plus `$BAR`from`c.sh`, before anything else runs here.
<!-- Prettier 3.9.9 -->**Uses $FOO** from `a.sh` and `b.sh`, plus `$BAR` from `c.sh`, before anything else runs here.
Markdown: Don't let Liquid objects interrupt paragraphs (#20087 by @seiyab)
<!-- Input -->
If `module` is not a [`WebAssembly.Module`](/en-US/docs/WebAssembly/Reference/JavaScript_interface/Module) object instance, a
{{jsxref("TypeError")}} is thrown.
<!-- Prettier 3.9.7 -->
If `module` is not a [`WebAssembly.Module`](/en-US/docs/WebAssembly/Reference/JavaScript_interface/Module) object instance, a
{{jsxref("TypeError")}} is thrown.
<!-- Prettier 3.9.8 -->
If `module` is not a [`WebAssembly.Module`](/en-US/docs/WebAssembly/Reference/JavaScript_interface/Module) object instance, a
{{jsxref("TypeError")}} is thrown.
<!-- Input -->- [x] short first line.
second paragraph at six spaces that wraps
onto another line here.
<!-- Prettier 3.9.6 -->- [x] short first line.
second paragraph at six spaces that wraps
onto another line here.
<!-- Prettier 3.9.7 -->- [x] short first line.
second paragraph at six spaces that wraps
onto another line here.
JavaScript: Fix embedded template literal idempotency (#19725 by @fisker)
Markdown: Preserve single tildes in Markdown (#19739 by @lazerg)
Since 3.9.0, single-tilde spans like H~2~O were rewritten to double tildes, turning subscript syntax into strike-through. Only double tildes are treated that way now, matching GitHub.
Markdown: Cap ordered list mark at 999,999,999 (#19351 by @tats-u)
CommonMark parsers only support ordered list item numbers up to 999,999,999.
With this change, Prettier now caps the ordered list item number at 999,999,999 to ensure that the output is correctly parsed as an ordered list by CommonMark parsers. Numbers larger than 999,999,999 are not parsed as list item numbers and are left unchanged in the output:
<!-- Input -->999999998. text
999999998. text
999999998. text
999999998. text
1234567890123456789012) text
<!-- Prettier 3.9.4 -->999999998. text
999999999. text
1000000000. text
1000000001. text
1234567890123456789012) text
<!-- Prettier 3.9.5 -->999999998. text
999999999. text
999999999. text
999999999. text
1234567890123456789012) text
Markdown: Avoid corrupting empty link with title (#19487 by @andersk)
Do not remove <> from an inline link or image with an empty URL and a title, as this removal would change its interpretation.
CSS: Prevent addition space in type() with + (#19516 by @bigandy)
This fixes the addition space before + in CSS type() declaration. For example type(<number>+) was being converted into type(<number> +) which is invalid CSS and does not work.
Miscellaneous: Preserving comments' placement property (#19567 by @Janther)
Prettier@3.9.0 deleted an undocumented property on comments, which was already used by plugins, comment.placement is now available again after comment attach.
Flow: Stop enforcing empty module declaration to break (#19568 by @fisker)
Markdown: Fix unexpected removal of characters in liquid syntax (#19489 by @seiyab)
// Input
<!-- Input -->
{{ page.title
}} text
<!-- Prettier 3.9.1 -->
{{ page.title
text
<!-- Prettier 3.9.3 -->
{{ page.title
}} text
TypeScript: Allow decorators to be used with declare on class fields (#19492 by @evoactivity)
Extensively used within the Ember ecosystem, decorators with declare on class fields will ignore the babel parser error and allow Prettier to format the code without breaking it.
// Input
exportdefaultclassProjectStatusComponentextendsComponent<ProjectStatusSig>{@servicedeclareserver: ServerService;}// Prettier 3.9.1
// SyntaxError: Decorators can't be used with a declare field. (2:3)
// 1 | export default class ProjectStatusComponent extends Component<ProjectStatusSig> {
//> 2 | @service declare server: ServerService;
// | ^
// 3 | }
// Prettier 3.9.3
exportdefaultclassProjectStatusComponentextendsComponent<ProjectStatusSig>{@servicedeclareserver: ServerService;}
Markdown: Fix blank lines between list items and nested sub-lists being removed in Markdown/MDX (#17746 by @byplayer)
Prettier was removing blank lines between list items and their nested sub-lists, converting loose lists into tight lists and changing their semantic meaning.
<!-- Input -->- a
- b
- c
- d
<!-- Prettier 3.8.3 -->- a
- b
- c
- d
<!-- Prettier 3.8.4 -->- a
- b
- c
- d
This PR contains the following updates:
| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [@sveltejs/adapter-auto](https://svelte.dev/docs/kit/adapter-auto) ([source](https://github.com/sveltejs/kit/tree/HEAD/packages/adapter-auto)) | [`7.0.0` → `7.0.1`](https://renovatebot.com/diffs/npm/@sveltejs%2fadapter-auto/7.0.0/7.0.1) |  |  |
| [@sveltejs/eslint-config](https://github.com/sveltejs/eslint-config#readme) | [`10.0.1` → `10.0.4`](https://renovatebot.com/diffs/npm/@sveltejs%2feslint-config/10.0.1/10.0.4) |  |  |
| [eslint](https://eslint.org) ([source](https://github.com/eslint/eslint)) | [`10.4.1` → `10.13.0`](https://renovatebot.com/diffs/npm/eslint/10.4.1/10.13.0) |  |  |
| [eslint-plugin-svelte](https://sveltejs.github.io/eslint-plugin-svelte) ([source](https://github.com/sveltejs/eslint-plugin-svelte/tree/HEAD/packages/eslint-plugin-svelte)) | [`3.19.0` → `3.23.1`](https://renovatebot.com/diffs/npm/eslint-plugin-svelte/3.19.0/3.23.1) |  |  |
| [globals](https://github.com/sindresorhus/globals) | [`17.6.0` → `17.13.0`](https://renovatebot.com/diffs/npm/globals/17.6.0/17.13.0) |  |  |
| [gsap](https://gsap.com) ([source](https://github.com/greensock/GSAP)) | [`3.14.2` → `3.15.0`](https://renovatebot.com/diffs/npm/gsap/3.14.2/3.15.0) |  |  |
| [pixi.js](http://pixijs.com/) ([source](https://github.com/pixijs/pixijs)) | [`8.15.0` → `8.22.0`](https://renovatebot.com/diffs/npm/pixi.js/8.15.0/8.22.0) |  |  |
| [prettier](https://prettier.io) ([source](https://github.com/prettier/prettier)) | [`3.8.3` → `3.9.10`](https://renovatebot.com/diffs/npm/prettier/3.8.3/3.9.10) |  |  |
| [prettier-plugin-svelte](https://github.com/sveltejs/prettier-plugin-svelte) | [`4.1.0` → `4.1.1`](https://renovatebot.com/diffs/npm/prettier-plugin-svelte/4.1.0/4.1.1) |  |  |
| [svelte-check](https://github.com/sveltejs/language-tools) | [`4.3.5` → `4.7.7`](https://renovatebot.com/diffs/npm/svelte-check/4.3.5/4.7.7) |  |  |
| [typescript-eslint](https://typescript-eslint.io/packages/typescript-eslint) ([source](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint)) | [`8.60.1` → `8.72.0`](https://renovatebot.com/diffs/npm/typescript-eslint/8.60.1/8.72.0) |  |  |
---
### Release Notes
<details>
<summary>sveltejs/kit (@​sveltejs/adapter-auto)</summary>
### [`v7.0.1`](https://github.com/sveltejs/kit/blob/HEAD/packages/adapter-auto/CHANGELOG.md#701)
[Compare Source](https://github.com/sveltejs/kit/compare/@sveltejs/adapter-auto@7.0.0...@sveltejs/adapter-auto@7.0.1)
##### Patch Changes
- feat: update adapter-netlify to version 6 ([`77ab341`](https://github.com/sveltejs/kit/commit/77ab3414d548c79bf106408881c397c6039ee885))
</details>
<details>
<summary>eslint/eslint (eslint)</summary>
### [`v10.13.0`](https://github.com/eslint/eslint/releases/tag/v10.13.0)
[Compare Source](https://github.com/eslint/eslint/compare/v10.12.0...v10.13.0)
##### Features
- [`48d5cc4`](https://github.com/eslint/eslint/commit/48d5cc47e43478670ccf95a74f7a73e8408152b5) feat: report references inside IIFEs in `no-use-before-define` ([#​21238](https://github.com/eslint/eslint/issues/21238)) (Irfan fandi)
- [`a39d9fb`](https://github.com/eslint/eslint/commit/a39d9fb1fdb5db546f6407580cac531ba3370450) feat: add `globalThis` to `no-obj-calls` ([#​21382](https://github.com/eslint/eslint/issues/21382)) (synthex-byte)
- [`66ac583`](https://github.com/eslint/eslint/commit/66ac58383e076940c11a5d7213ad079028d1140e) feat: check `yield*` expressions in `no-unsafe-optional-chaining` ([#​21399](https://github.com/eslint/eslint/issues/21399)) (xbinaryx)
##### Bug Fixes
- [`87bd2ce`](https://github.com/eslint/eslint/commit/87bd2cef7b2309739c29598fb2be335f4bed71a3) fix: avoid redeclared `let` when `no-var` and `one-var` fix together ([#​21389](https://github.com/eslint/eslint/issues/21389)) (Daniel Pinto)
##### Documentation
- [`4783a68`](https://github.com/eslint/eslint/commit/4783a6806fb73ea4843ac46c6ae3d8285f56c288) docs: Update README (GitHub Actions Bot)
- [`43f0ac9`](https://github.com/eslint/eslint/commit/43f0ac90e7858a834a0e68309e6397fb4cfa72dd) docs: clarify parameter description in `getText` ([#​21287](https://github.com/eslint/eslint/issues/21287)) (lumir)
##### Chores
- [`b59d889`](https://github.com/eslint/eslint/commit/b59d889c7c18d8c73144e6ba46e9e7f3e7da0196) chore: update github/codeql-action action to v4.38.3 ([#​21412](https://github.com/eslint/eslint/issues/21412)) (renovate\[bot])
- [`95e51a0`](https://github.com/eslint/eslint/commit/95e51a0518b15015304eca9844b3f64c1fc167ca) ci: re-enable `@typescript-eslint/typescript-eslint` in ecosystem tests ([#​21410](https://github.com/eslint/eslint/issues/21410)) (Francesco Trotta)
- [`317fcb3`](https://github.com/eslint/eslint/commit/317fcb365f19e912a60d171a9d5a8d1f16fe4660) chore: update ecosystem plugins ([#​21409](https://github.com/eslint/eslint/issues/21409)) (ESLint Bot)
- [`b92decf`](https://github.com/eslint/eslint/commit/b92decf8ead7cc4082a18a4a0ab28f3c7c589887) perf: skip no-redeclare scan for single-declaration variables ([#​21365](https://github.com/eslint/eslint/issues/21365)) (James Ross)
- [`47b7063`](https://github.com/eslint/eslint/commit/47b7063b3f3f7bc7a5bcb87c082577e4e8b96e24) chore: update dependency [@​eslint/json](https://github.com/eslint/json) to ^2.1.1 ([#​21398](https://github.com/eslint/eslint/issues/21398)) (renovate\[bot])
- [`e5aea41`](https://github.com/eslint/eslint/commit/e5aea414cc00555ecd43f6e608bf80e0f9a6d4d6) chore: update ecosystem plugins ([#​21390](https://github.com/eslint/eslint/issues/21390)) (ESLint Bot)
### [`v10.12.0`](https://github.com/eslint/eslint/releases/tag/v10.12.0)
[Compare Source](https://github.com/eslint/eslint/compare/v10.11.0...v10.12.0)
##### Features
- [`4618052`](https://github.com/eslint/eslint/commit/4618052eed6bb3ef420cf0db0490bbda2fd835a5) feat: handle astral letters in `new-cap` ([#​21357](https://github.com/eslint/eslint/issues/21357)) (sary)
- [`4ec5168`](https://github.com/eslint/eslint/commit/4ec5168d6d6888e3f7b163eb82963d40e45a75fa) feat: allow `SourceCode#getText()` to accept tokens and comments ([#​21340](https://github.com/eslint/eslint/issues/21340)) (electrohyun)
##### Bug Fixes
- [`bc51eee`](https://github.com/eslint/eslint/commit/bc51eee6e3e816622b2dd1bc08acb9cfb2d3a6a7) fix: `prefer-arrow-callback` false positive in conditional test ([#​21373](https://github.com/eslint/eslint/issues/21373)) (Daniel Pinto)
- [`bbff86c`](https://github.com/eslint/eslint/commit/bbff86c41521cc435e20754e26007f657a843038) fix: skip lines with multiple comments in `max-lines-per-function` ([#​21332](https://github.com/eslint/eslint/issues/21332)) (xbinaryx)
- [`efc4d6b`](https://github.com/eslint/eslint/commit/efc4d6bdc4c4d1dfba8bdab6a8f44f27a1b1d00a) fix: astral letters in `consistent-return`, `no-eval`, `no-invalid-this` ([#​21360](https://github.com/eslint/eslint/issues/21360)) (lumir)
- [`93de066`](https://github.com/eslint/eslint/commit/93de066d4125f8df013d40305e8009f4634a5cba) fix: prefer-exponentiation-operator autofix for async function base ([#​21322](https://github.com/eslint/eslint/issues/21322)) (Vladimir Babin)
- [`02e34ff`](https://github.com/eslint/eslint/commit/02e34ffba6adbed72365177c7caee71d950834e5) fix: add missing space after `else` in `curly` autofix ([#​21355](https://github.com/eslint/eslint/issues/21355)) (Pixel)
- [`b14b8bc`](https://github.com/eslint/eslint/commit/b14b8bc213ccfc19d3edcfa9ce6af62622661160) fix: correct `id-length` message for long private names ([#​21348](https://github.com/eslint/eslint/issues/21348)) (Pixel)
- [`69aac01`](https://github.com/eslint/eslint/commit/69aac01d898837a934c9e735e0b7881cc1df09e8) fix: support `TSFunctionType` in `getFunctionHeadLoc` ([#​21335](https://github.com/eslint/eslint/issues/21335)) (xbinaryx)
- [`686630e`](https://github.com/eslint/eslint/commit/686630eb34ec1cddf399a4e6eaeebb080116a532) fix: `no-loss-of-precision` false positive with `0.e5` ([#​21337](https://github.com/eslint/eslint/issues/21337)) (sethamus)
##### Documentation
- [`67eb586`](https://github.com/eslint/eslint/commit/67eb586e2eda290813b329d4f40e605ad696bc4f) docs: Update README (GitHub Actions Bot)
- [`5370d7e`](https://github.com/eslint/eslint/commit/5370d7ee35a6523873f798e87f3ccc73779d5d21) docs: clarify `one-var` `separateRequires` matches any `require()` call ([#​21192](https://github.com/eslint/eslint/issues/21192)) (sethamus)
- [`8816c1d`](https://github.com/eslint/eslint/commit/8816c1ddfcfa31318ad17cddcfb68acffa30940f) docs: Update README (GitHub Actions Bot)
- [`3d2e7ce`](https://github.com/eslint/eslint/commit/3d2e7cedb7409d8a2c5f2c2fafb14fa22790e40e) docs: fix typo in no-unused-expressions documentation ([#​21346](https://github.com/eslint/eslint/issues/21346)) (bytedoe)
##### Chores
- [`152067f`](https://github.com/eslint/eslint/commit/152067f0f81f08b6cce9cf8eeaddb8558731b4f6) chore: update ecosystem plugins ([#​21362](https://github.com/eslint/eslint/issues/21362)) (ESLint Bot)
- [`b56d58e`](https://github.com/eslint/eslint/commit/b56d58e0b1f3c919a6b7661254af760cdd909d6e) chore: update github/codeql-action action to v4.38.2 ([#​21376](https://github.com/eslint/eslint/issues/21376)) (renovate\[bot])
- [`bfaea12`](https://github.com/eslint/eslint/commit/bfaea12ddc30b458fe4cfbb6c306a62b5299c177) perf: cache normalized config globals per languageOptions ([#​21364](https://github.com/eslint/eslint/issues/21364)) (James Ross)
- [`322209e`](https://github.com/eslint/eslint/commit/322209ef164e8a00a25ec7ca166969ddc853355c) ci: avoid Nx cache in ecosystem tests and disable failing test ([#​21369](https://github.com/eslint/eslint/issues/21369)) (Francesco Trotta)
- [`d166567`](https://github.com/eslint/eslint/commit/d166567901e09940c1de4ad0e95d572eeab5c927) chore: update dependency prettier to v3.9.9 ([#​21371](https://github.com/eslint/eslint/issues/21371)) (renovate\[bot])
- [`29585ce`](https://github.com/eslint/eslint/commit/29585ceba7ad35368d1b763bd1e80d899f28842c) chore: update dependency eslint-plugin-expect-type to ^0.7.0 ([#​21359](https://github.com/eslint/eslint/issues/21359)) (renovate\[bot])
- [`39d79ba`](https://github.com/eslint/eslint/commit/39d79ba9650542ac66d585d1899304abd630c07d) chore: update github/codeql-action action to v4.38.1 ([#​21354](https://github.com/eslint/eslint/issues/21354)) (renovate\[bot])
- [`182a6e9`](https://github.com/eslint/eslint/commit/182a6e993a8a5dbdad5a628b69ad7382d48bf24f) chore: update dependency prettier to v3.9.8 ([#​21352](https://github.com/eslint/eslint/issues/21352)) (renovate\[bot])
- [`f995127`](https://github.com/eslint/eslint/commit/f995127230dad258069c29b7f51971681bd53f00) chore: remove CLAUDE.md in favor of AGENTS.md ([#​21339](https://github.com/eslint/eslint/issues/21339)) (Jarren)
- [`b95fb6c`](https://github.com/eslint/eslint/commit/b95fb6cb335f82a0ccabb0944ac3b89c703bd947) chore: update dependency prettier to v3.9.7 ([#​21347](https://github.com/eslint/eslint/issues/21347)) (renovate\[bot])
- [`3782dd4`](https://github.com/eslint/eslint/commit/3782dd458fdfbe492e600d9a54b295a9721ed815) chore: update ecosystem plugins ([#​21342](https://github.com/eslint/eslint/issues/21342)) (ESLint Bot)
### [`v10.11.0`](https://github.com/eslint/eslint/releases/tag/v10.11.0)
[Compare Source](https://github.com/eslint/eslint/compare/v10.10.0...v10.11.0)
#### Features
- [`d136fa4`](https://github.com/eslint/eslint/commit/d136fa4b0d2dd4a9e738ca1c012cc674d1441127) feat: object-shorthand handle quoted properties for `ignoreConstructors` ([#​21271](https://github.com/eslint/eslint/issues/21271)) (Pavel)
- [`397b3b8`](https://github.com/eslint/eslint/commit/397b3b8134b8ce1a61cbf414d4c29c945ba25690) feat: report unsafe labeled `continue` in `no-unsafe-finally` rule ([#​21316](https://github.com/eslint/eslint/issues/21316)) (electrohyun)
- [`d3dd47f`](https://github.com/eslint/eslint/commit/d3dd47f42e4cb5f9da27e3a2e741aa21e02ea1a4) feat: only exempt `new-cap` built-ins that reference the global ([#​21290](https://github.com/eslint/eslint/issues/21290)) (sethamus)
#### Bug Fixes
- [`22b09f5`](https://github.com/eslint/eslint/commit/22b09f54f67a9512d4cea39ddbab9b6973d5c476) fix: ignore `__proto__` properties in `prefer-object-spread` ([#​21311](https://github.com/eslint/eslint/issues/21311)) (xbinaryx)
- [`b684bb1`](https://github.com/eslint/eslint/commit/b684bb1cd7e6be03ad1b7a951baead936d9c2166) fix: make TimePass.parse optional in types and docs ([#​21313](https://github.com/eslint/eslint/issues/21313)) (ntnyq)
- [`26d11bc`](https://github.com/eslint/eslint/commit/26d11bce3e0e21f223613d4bb4be3423839b229e) fix: don't report `__proto__` properties in `object-shorthand` ([#​21310](https://github.com/eslint/eslint/issues/21310)) (xbinaryx)
#### Documentation
- [`9ecfdc5`](https://github.com/eslint/eslint/commit/9ecfdc5319f83580cf3b81beab7e936015fef2fa) docs: note that --cache can serve stale results for cross-file rules ([#​21312](https://github.com/eslint/eslint/issues/21312)) (bytedoe)
- [`6c789ff`](https://github.com/eslint/eslint/commit/6c789ff39bc5420e94e8dafeb328bf2b7e3d35ab) docs: Update README (GitHub Actions Bot)
- [`5997825`](https://github.com/eslint/eslint/commit/5997825635dc9c4e81434894607ef2e3887e0ea3) docs: clarify preserve-caught-error known limitation ([#​21294](https://github.com/eslint/eslint/issues/21294)) (Akinyemi Toluwalase)
#### Chores
- [`520dd77`](https://github.com/eslint/eslint/commit/520dd77a35922fb537e2dbfb3c839d047acbdd68) perf: Implement fast paths in critical areas ([#​21210](https://github.com/eslint/eslint/issues/21210)) (Nicholas C. Zakas)
- [`92086c8`](https://github.com/eslint/eslint/commit/92086c87e042413a3d0363d8fc3fbb11db98d06a) test: update `EMFILE` error generation for Node.js 26.9.0 compatibility ([#​21330](https://github.com/eslint/eslint/issues/21330)) (Francesco Trotta)
- [`9ac7eb6`](https://github.com/eslint/eslint/commit/9ac7eb60525ec768c2fdc6699e5a292aa913ce9e) chore: update github/codeql-action action to v4.38.0 ([#​21331](https://github.com/eslint/eslint/issues/21331)) (renovate\[bot])
- [`24310e3`](https://github.com/eslint/eslint/commit/24310e3a0e22b3c086ca402f88448676f2e1cfcd) chore: update ecosystem plugins ([#​21324](https://github.com/eslint/eslint/issues/21324)) (ESLint Bot)
- [`45ad79e`](https://github.com/eslint/eslint/commit/45ad79e54a39b54b4ce8eb47e612bd2f72a7a651) ci: bump pnpm/action-setup from 6.0.10 to 6.1.0 ([#​21318](https://github.com/eslint/eslint/issues/21318)) (dependabot\[bot])
- [`ac74e37`](https://github.com/eslint/eslint/commit/ac74e37322ebf122ada676f153dc55c81f3caab0) chore: Add AGENTS.md with AI disclosure requirements ([#​21221](https://github.com/eslint/eslint/issues/21221)) (Nicholas C. Zakas)
- [`c832660`](https://github.com/eslint/eslint/commit/c8326608e710e670beaf982501aed80ea104919a) chore: Upgrade Stylelint to the latest version in docs ([#​21245](https://github.com/eslint/eslint/issues/21245)) (Jung Hyeon Jun)
- [`f9f88fc`](https://github.com/eslint/eslint/commit/f9f88fcccd965fdc162b89c4615dd4018e3cabdf) chore: update ecosystem plugins ([#​21308](https://github.com/eslint/eslint/issues/21308)) (ESLint Bot)
- [`fc81076`](https://github.com/eslint/eslint/commit/fc81076a5b8145360654d81cbc130cf7d25dca77) ci: add more types integration tests ([#​20395](https://github.com/eslint/eslint/issues/20395)) (Nitin Kumar)
### [`v10.10.0`](https://github.com/eslint/eslint/releases/tag/v10.10.0)
[Compare Source](https://github.com/eslint/eslint/compare/v10.9.1...v10.10.0)
#### Features
- [`264b434`](https://github.com/eslint/eslint/commit/264b4346d1963701df0c398b4aeb2f6e8b2af93e) feat: add `d` and `v` flags to `no-unexpected-multiline` ([#​21305](https://github.com/eslint/eslint/issues/21305)) (Gihyeon Jeong / 정기현)
- [`c6cc6c5`](https://github.com/eslint/eslint/commit/c6cc6c592f30901345d94ef75e0d42c1894fae6c) feat: check `Object.prototype` property names in `new-cap` ([#​21269](https://github.com/eslint/eslint/issues/21269)) (crimsonjay0)
- [`5661fa6`](https://github.com/eslint/eslint/commit/5661fa65fde9fd4c14f0b730e3cee6a42fc657c1) feat: no-extra-bind false negatives with class fields and static blocks ([#​21260](https://github.com/eslint/eslint/issues/21260)) (synthex-byte)
#### Bug Fixes
- [`bb47dc6`](https://github.com/eslint/eslint/commit/bb47dc6da2399a8f76c0c0c3273e6bc314c480e5) fix: update dependency file-entry-cache to v11 ([#​20801](https://github.com/eslint/eslint/issues/20801)) (Milos Djermanovic)
- [`427ac0a`](https://github.com/eslint/eslint/commit/427ac0a014066c36aa57fa8fa9af20fd9fb591e1) fix: use format strings in debug calls ([#​21247](https://github.com/eslint/eslint/issues/21247)) (Francesco Trotta)
- [`9d81532`](https://github.com/eslint/eslint/commit/9d8153223dbf47b9aecdc1474202aaee4845f146) fix: support `__proto__` in `/* exported */` comments ([#​21261](https://github.com/eslint/eslint/issues/21261)) (sethamus)
- [`87e0a08`](https://github.com/eslint/eslint/commit/87e0a082438264ad90b87fd74165ab4fd90f63ef) fix: prefer-object-has-own autofix breaks when Object is shadowed ([#​21282](https://github.com/eslint/eslint/issues/21282)) (김채영)
- [`8e2cb14`](https://github.com/eslint/eslint/commit/8e2cb142217f2efee1d10dcc02bfb75145ae775d) fix: `new-cap` false positive for `UTC` calls with `properties: false` ([#​21275](https://github.com/eslint/eslint/issues/21275)) (Pixel)
- [`9f4a364`](https://github.com/eslint/eslint/commit/9f4a364ab0ade048dfce1f37792b1d461d866e55) fix: Ignore static imports in no-unreachable ([#​21276](https://github.com/eslint/eslint/issues/21276)) (Taha Kotil)
#### Documentation
- [`2417cad`](https://github.com/eslint/eslint/commit/2417cad57d7d1bc4cf3ecf0f0575cfb10ff2011c) docs: Update README (GitHub Actions Bot)
- [`9cecb8a`](https://github.com/eslint/eslint/commit/9cecb8a0a2348070abf72321965d41919c7cc626) docs: document `\c` control letter escapes in no-control-regex ([#​21286](https://github.com/eslint/eslint/issues/21286)) (한국)
- [`8724829`](https://github.com/eslint/eslint/commit/8724829f69f8ed80c876e3a5a017da199ce78739) docs: update compat table links ([#​21263](https://github.com/eslint/eslint/issues/21263)) (fnx)
- [`5634542`](https://github.com/eslint/eslint/commit/5634542be580750ffb1a5766470f9e9c72719696) docs: Clarify eqeqeq suggestion behavior ([#​21256](https://github.com/eslint/eslint/issues/21256)) (Müslüm Yılmaz)
#### Chores
- [`b3d876b`](https://github.com/eslint/eslint/commit/b3d876b46083d67899eb1d9613118c1c583632a2) chore: disable npm audit in ecosystem tests ([#​21306](https://github.com/eslint/eslint/issues/21306)) (Francesco Trotta)
- [`1696682`](https://github.com/eslint/eslint/commit/1696682791661c13167eb905da2f38d1b8f4a3bf) ci: restore EMFILE test on Node.js 26 ([#​21297](https://github.com/eslint/eslint/issues/21297)) (Marry (Subin Yang))
- [`2c7f5d6`](https://github.com/eslint/eslint/commit/2c7f5d6f47a92e8c0847af103e40fdb2f4dc61ef) chore: update github/codeql-action action to v4.37.9 ([#​21296](https://github.com/eslint/eslint/issues/21296)) (renovate\[bot])
- [`3c753f1`](https://github.com/eslint/eslint/commit/3c753f18b461bfbf36d41a79a7863c093ef48489) chore: update eslint ([#​21289](https://github.com/eslint/eslint/issues/21289)) (renovate\[bot])
- [`1c73469`](https://github.com/eslint/eslint/commit/1c734690bf6f4f9c542bec428d5a1a5c6cc4a19b) chore: update ecosystem plugins ([#​21280](https://github.com/eslint/eslint/issues/21280)) (ESLint Bot)
- [`08a02be`](https://github.com/eslint/eslint/commit/08a02be429e21fc93d86c8dd16cec6dc945ea2c1) test: add error locations to `no-extra-boolean-cast` ([#​21266](https://github.com/eslint/eslint/issues/21266)) (lumir)
- [`77bb1db`](https://github.com/eslint/eslint/commit/77bb1db8e730b7da2347c647d60f215706aa349a) chore: update github/codeql-action action to v4.37.8 ([#​21270](https://github.com/eslint/eslint/issues/21270)) (renovate\[bot])
- [`007e81a`](https://github.com/eslint/eslint/commit/007e81ac0ad66bd0be4887d88a276df292ae0bed) ci: skip EMFILE test on Node.js 26 ([#​21265](https://github.com/eslint/eslint/issues/21265)) (lumir)
- [`0430280`](https://github.com/eslint/eslint/commit/0430280e7cca9dc0fdbf0bc50464e98e84285c49) chore: improve ecosystem tests compatibility on Windows ([#​21178](https://github.com/eslint/eslint/issues/21178)) (crimsonjay0)
### [`v10.9.1`](https://github.com/eslint/eslint/releases/tag/v10.9.1)
[Compare Source](https://github.com/eslint/eslint/compare/v10.9.0...v10.9.1)
#### Bug Fixes
- [`1e641c9`](https://github.com/eslint/eslint/commit/1e641c919fc1421493bf913feb607896982451a3) fix: no-loss-of-precision false positive with trailing decimal point ([#​21251](https://github.com/eslint/eslint/issues/21251)) (Aleksandr Shoronov)
#### Documentation
- [`ad74a8d`](https://github.com/eslint/eslint/commit/ad74a8dada2aaa17bfd0b8cc7b4119ff7a8ac04b) docs: add deprecation steps for EOL package versions ([#​21248](https://github.com/eslint/eslint/issues/21248)) (Francesco Trotta)
#### Chores
- [`3c3ae53`](https://github.com/eslint/eslint/commit/3c3ae53a43721162f0db76c69665ebd9d752ea52) chore: update ecosystem plugins ([#​21249](https://github.com/eslint/eslint/issues/21249)) (ESLint Bot)
### [`v10.9.0`](https://github.com/eslint/eslint/releases/tag/v10.9.0)
[Compare Source](https://github.com/eslint/eslint/compare/v10.8.1...v10.9.0)
#### Features
- [`08de88e`](https://github.com/eslint/eslint/commit/08de88e50294c4e01f6cae97eceeb578da55792b) feat: handle underflow in no-loss-of-precision ([#​21218](https://github.com/eslint/eslint/issues/21218)) (Rithish S)
- [`55db479`](https://github.com/eslint/eslint/commit/55db4791120ae591d88089c43127b7b0e16866d4) feat: add checkConditionalExpressions to `no-unmodified-loop-condition` ([#​21175](https://github.com/eslint/eslint/issues/21175)) (sethamus)
#### Bug Fixes
- [`2ba3025`](https://github.com/eslint/eslint/commit/2ba302554e7a24e9909bbdd026fd0c2d1d0d8638) fix: prevent unsafe `no-var` autofix with hoisted functions ([#​21213](https://github.com/eslint/eslint/issues/21213)) (sethamus)
- [`8e69622`](https://github.com/eslint/eslint/commit/8e6962219a605c5f5add10953aa31027da839194) fix: Prevent no-var autofix when var is shadowed by catch parameter ([#​21204](https://github.com/eslint/eslint/issues/21204)) (Yang Hyeonjong)
- [`684b579`](https://github.com/eslint/eslint/commit/684b57972e1ddf25e076fb36189c60bbcacee635) fix: prefer-template invalid autofix creates a tagged template call ([#​21207](https://github.com/eslint/eslint/issues/21207)) (김채영)
#### Documentation
- [`9ef407a`](https://github.com/eslint/eslint/commit/9ef407a3b051e74f50dc7fb8914e2bd89b3e5e53) docs: use eslint.config.\* wherever config file names are listed ([#​21216](https://github.com/eslint/eslint/issues/21216)) (Marry (Subin Yang))
- [`87f66f4`](https://github.com/eslint/eslint/commit/87f66f4435c4df7f4f6815c939d153196ec03e3c) docs: Update README (GitHub Actions Bot)
- [`585ef37`](https://github.com/eslint/eslint/commit/585ef37516c0dc29ddb91ce2a2cdcc46fdbbd610) docs: update architecture documentation ([#​21112](https://github.com/eslint/eslint/issues/21112)) (Francesco Trotta)
- [`f3993b0`](https://github.com/eslint/eslint/commit/f3993b0547bace7370e9728ee7408af49d367d76) docs: Update README (GitHub Actions Bot)
- [`ffc87d6`](https://github.com/eslint/eslint/commit/ffc87d6234b2aa4335eec069e5c4d6ac04832b9e) docs: fix broken links in Further Reading sections ([#​21203](https://github.com/eslint/eslint/issues/21203)) (Minsu)
- [`1a761e1`](https://github.com/eslint/eslint/commit/1a761e1d11b011fcb6bee181231a51010c500e4d) docs: update moved JSX specification links ([#​21198](https://github.com/eslint/eslint/issues/21198)) (Imran Mustafa)
- [`4d00ca4`](https://github.com/eslint/eslint/commit/4d00ca4064ae0d1a75b604a16c68ab9f386ad388) docs: update ESLint peer dependency to `^10.0.0` in shareable configs ([#​21202](https://github.com/eslint/eslint/issues/21202)) (lumir)
- [`510d1a2`](https://github.com/eslint/eslint/commit/510d1a2e87bc197219f42e195ddb638d2b183a5a) docs: Update README (GitHub Actions Bot)
#### Chores
- [`899dbf1`](https://github.com/eslint/eslint/commit/899dbf131ce12a194b394bb8d67307df23509d17) chore: update github/codeql-action action to v4.37.7 ([#​21243](https://github.com/eslint/eslint/issues/21243)) (renovate\[bot])
- [`9aa3873`](https://github.com/eslint/eslint/commit/9aa38732177935bd1d7f1493732c0b67666be28a) chore: update ecosystem plugins ([#​21235](https://github.com/eslint/eslint/issues/21235)) (ESLint Bot)
- [`dc1e7a8`](https://github.com/eslint/eslint/commit/dc1e7a8416937edefe04cf836ee202a6fc03bedd) chore: update ecosystem plugins ([#​21208](https://github.com/eslint/eslint/issues/21208)) (ESLint Bot)
- [`f878d21`](https://github.com/eslint/eslint/commit/f878d212e9622da9513bcd60d2aedb2e8bb4fc8b) ci: bump pnpm/action-setup from 6.0.9 to 6.0.10 ([#​21200](https://github.com/eslint/eslint/issues/21200)) (dependabot\[bot])
- [`4891e50`](https://github.com/eslint/eslint/commit/4891e50aceadb0e886ad7d8ab5ae2beab563de85) ci: bump github/codeql-action from 4.37.4 to 4.37.6 ([#​21199](https://github.com/eslint/eslint/issues/21199)) (dependabot\[bot])
### [`v10.8.1`](https://github.com/eslint/eslint/releases/tag/v10.8.1)
[Compare Source](https://github.com/eslint/eslint/compare/v10.8.0...v10.8.1)
#### Bug Fixes
- [`18eb0a7`](https://github.com/eslint/eslint/commit/18eb0a7e787b9fac3049ef3dad0e845d2bd940a4) fix: prevent ASI hazard in `no-unused-labels` autofix ([#​21173](https://github.com/eslint/eslint/issues/21173)) (dongkyu lee)
- [`151ba3f`](https://github.com/eslint/eslint/commit/151ba3f5834a0909e8b9b1736f4889ac694c0104) fix: false positives in `getter-return` and `accessor-pairs` ([#​21163](https://github.com/eslint/eslint/issues/21163)) (Grit)
- [`6898df9`](https://github.com/eslint/eslint/commit/6898df9364639ee64b9448a4cb6b08a30c16bd37) fix: ignore meta-property names in `id-denylist` ([#​21166](https://github.com/eslint/eslint/issues/21166)) (Pixel)
- [`4d7db66`](https://github.com/eslint/eslint/commit/4d7db6628e2badf0857cb88734fe641c3874bce9) fix: ignore meta-property names in `id-match` ([#​21167](https://github.com/eslint/eslint/issues/21167)) (Pixel)
- [`677214e`](https://github.com/eslint/eslint/commit/677214e7eea83d8bc6e4b79eea871577e1369d5f) fix: handle ASI hazards in no-unused-vars removeVar suggestion ([#​20935](https://github.com/eslint/eslint/issues/20935)) (kuldeep kumar)
#### Documentation
- [`7d0cbf8`](https://github.com/eslint/eslint/commit/7d0cbf81cfdb7526b5c4cb7b222ddc7f257db560) docs: Update README (GitHub Actions Bot)
- [`0a05812`](https://github.com/eslint/eslint/commit/0a05812adb12598b32e85297b98df5ad14501d60) docs: add missing backticks to `no-duplicate-imports.js` ([#​21183](https://github.com/eslint/eslint/issues/21183)) (Lee Daeun)
- [`678c90b`](https://github.com/eslint/eslint/commit/678c90b55da2889d4400cbf6e2584ab683faf202) docs: Update README (GitHub Actions Bot)
- [`8a10424`](https://github.com/eslint/eslint/commit/8a104242e8e1c5614940fab7324346974cff7d26) docs: Update README (GitHub Actions Bot)
- [`69bb948`](https://github.com/eslint/eslint/commit/69bb948061105426dbe6e3c931fcda783286e020) docs: Update README (GitHub Actions Bot)
#### Chores
- [`0a14800`](https://github.com/eslint/eslint/commit/0a148005051fded2ef1d14cc228ae505251b4b10) chore: update github/codeql-action action to v4.37.4 ([#​21196](https://github.com/eslint/eslint/issues/21196)) (renovate\[bot])
- [`05adcb1`](https://github.com/eslint/eslint/commit/05adcb13542061dc7fadde5cd58d23d405a96d93) test: fix failing ecosystem test for `eslint-plugin-unicorn` ([#​21191](https://github.com/eslint/eslint/issues/21191)) (Lazizbek Ergashev)
- [`5611035`](https://github.com/eslint/eslint/commit/56110356652dd614b3cf0933538abb551fc6bd6f) test: add error locations info to `no-void` ([#​21185](https://github.com/eslint/eslint/issues/21185)) (Lee Daeun)
- [`ee47333`](https://github.com/eslint/eslint/commit/ee47333aa681cfc3cb54df08c38f211ea219cc2a) ci: bump github/codeql-action from 4 to 4.37.3 ([#​21176](https://github.com/eslint/eslint/issues/21176)) (dependabot\[bot])
- [`f131c03`](https://github.com/eslint/eslint/commit/f131c034ad91bbf06bcbb6b5e931447a8e419a46) chore: improve ecosystem test failure reporting ([#​20937](https://github.com/eslint/eslint/issues/20937)) (crimsonjay0)
- [`1f6edde`](https://github.com/eslint/eslint/commit/1f6eddee609b369b50993eab08d437dda4700991) chore: update ecosystem plugins ([#​21182](https://github.com/eslint/eslint/issues/21182)) (ESLint Bot)
- [`d3266fb`](https://github.com/eslint/eslint/commit/d3266fb26c719c6b90a6cbe54bb120c9335ad19c) chore: unpin `webpack` dependency ([#​21172](https://github.com/eslint/eslint/issues/21172)) (Francesco Trotta)
- [`65a6519`](https://github.com/eslint/eslint/commit/65a6519cc8733b4688558a8611397cf9d01dd55d) chore: add allowScripts field to package.json ([#​21092](https://github.com/eslint/eslint/issues/21092)) (GiHoon Noh)
- [`22e5256`](https://github.com/eslint/eslint/commit/22e52568536e0009d4493dc888736bc163220c4b) ci: add `triage:no` label to Dependabot PRs ([#​21141](https://github.com/eslint/eslint/issues/21141)) (lumir)
- [`55c9038`](https://github.com/eslint/eslint/commit/55c9038836c91b6bd5617f0c97bea2274c9cc0bf) ci: bump actions/labeler from 6 to 7 ([#​21159](https://github.com/eslint/eslint/issues/21159)) (dependabot\[bot])
- [`7280e78`](https://github.com/eslint/eslint/commit/7280e78183d4711a49916b6a49ba5efaa651a991) chore: update dependency prettier to v3.9.6 ([#​21162](https://github.com/eslint/eslint/issues/21162)) (renovate\[bot])
- [`eddbad6`](https://github.com/eslint/eslint/commit/eddbad60158d8cda86830fbe934a9d2282273b32) test: fix failing ecosystem test for `eslint-plugin-unicorn` ([#​21156](https://github.com/eslint/eslint/issues/21156)) (Francesco Trotta)
- [`60a178d`](https://github.com/eslint/eslint/commit/60a178d5ef1b0c471be0831031ed7347f8f81dc2) chore: update ecosystem plugins ([#​21150](https://github.com/eslint/eslint/issues/21150)) (ESLint Bot)
- [`f9f61dc`](https://github.com/eslint/eslint/commit/f9f61dc6112836f46a58a410c38b8c2faf10973f) test: add error locations to `no-unreachable` ([#​21151](https://github.com/eslint/eslint/issues/21151)) (JIYEON)
- [`d086293`](https://github.com/eslint/eslint/commit/d08629382b0a6aaa042823b796e5100e60053b54) test: add error locations to `no-undef` ([#​21147](https://github.com/eslint/eslint/issues/21147)) (JIYEON)
- [`cc01b67`](https://github.com/eslint/eslint/commit/cc01b67061bbf558aa25746883ea1cad847f7cf2) test: add error locations to `no-useless-catch` ([#​21144](https://github.com/eslint/eslint/issues/21144)) (devoil)
- [`688e75e`](https://github.com/eslint/eslint/commit/688e75ede01b295d51f2f86c9d82da020a4c887e) chore: add missing backticks in JSDoc ([#​21143](https://github.com/eslint/eslint/issues/21143)) (Bo Hyun Kim)
- [`7c1e175`](https://github.com/eslint/eslint/commit/7c1e17543ad396f50f65b003cf9142d43d3c63b0) test: add error locations to `require-await` ([#​21145](https://github.com/eslint/eslint/issues/21145)) (Grit)
- [`588a26d`](https://github.com/eslint/eslint/commit/588a26ddce3c5a20f5b3f3d51ba1353cce7b4b0c) test: add error locations to `no-extra-label` ([#​21139](https://github.com/eslint/eslint/issues/21139)) (dongkyu lee)
- [`059aa89`](https://github.com/eslint/eslint/commit/059aa895743639e3ab53d14f9d944ff4be042233) test: add error locations to `no-useless-concat` ([#​21140](https://github.com/eslint/eslint/issues/21140)) (dongkyu lee)
- [`5a452a8`](https://github.com/eslint/eslint/commit/5a452a8ba53917d65c9d83c3959ed35c2f890613) test: add error locations to `no-const-assign` ([#​21138](https://github.com/eslint/eslint/issues/21138)) (dongkyu lee)
### [`v10.8.0`](https://github.com/eslint/eslint/releases/tag/v10.8.0)
[Compare Source](https://github.com/eslint/eslint/compare/v10.7.0...v10.8.0)
#### Features
- [`2fee9bb`](https://github.com/eslint/eslint/commit/2fee9bb7416116cbed4d8c8100b1ae713b6356a1) feat: export `ConfigObject` from `eslint/config` ([#​21082](https://github.com/eslint/eslint/issues/21082)) (sethamus)
#### Bug Fixes
- [`6b8d2f7`](https://github.com/eslint/eslint/commit/6b8d2f7589b8a7c8b91b8ca2a2ef6d46178760d8) fix: escape reserved characters in rule id in `html` formatter ([#​21129](https://github.com/eslint/eslint/issues/21129)) (Francesco Trotta)
- [`9091071`](https://github.com/eslint/eslint/commit/90910715011211a20d011d807d398a7005127f35) fix: prevent `no-unreachable-loop` crash when all loop types are ignored ([#​21116](https://github.com/eslint/eslint/issues/21116)) (Pixel)
- [`e23fafe`](https://github.com/eslint/eslint/commit/e23fafe8d4b15355adef6cdebef414c3a2019454) fix: prefer-object-spread add semicolon when adding parenthesis ([#​21081](https://github.com/eslint/eslint/issues/21081)) (synthex-byte)
- [`20b5ad0`](https://github.com/eslint/eslint/commit/20b5ad052360a443786a202e94624a3f81846511) fix: quadratic-time regex in `prefer-template` ([#​21096](https://github.com/eslint/eslint/issues/21096)) (Milos Djermanovic)
- [`8b6f6c0`](https://github.com/eslint/eslint/commit/8b6f6c0b33411f34485512456d94f221daf7321f) fix: apply ignore configs to computed methods in class-methods-use-this ([#​21094](https://github.com/eslint/eslint/issues/21094)) (Pixel)
- [`b2c608c`](https://github.com/eslint/eslint/commit/b2c608c014a396800a24a89343265d0616bee2d8) fix: NewExpression with parenthesized callee in `preserve-caught-error` ([#​21083](https://github.com/eslint/eslint/issues/21083)) (Francesco Trotta)
#### Documentation
- [`6ddf858`](https://github.com/eslint/eslint/commit/6ddf8587e5cfeeb7328332601bb76d98b8a198ea) docs: fix broken Specify Parser Options anchor link ([#​21106](https://github.com/eslint/eslint/issues/21106)) (Minsu)
- [`784dfbe`](https://github.com/eslint/eslint/commit/784dfbe98f0222426fd200153a5ce2e5624151f0) docs: Clarify `no-eq-null` description ([#​21120](https://github.com/eslint/eslint/issues/21120)) (Park Harin)
- [`7ec733a`](https://github.com/eslint/eslint/commit/7ec733a3ba5acb053a73ac656030a3879aa48fda) docs: Fix typos and grammar in glossary ([#​21095](https://github.com/eslint/eslint/issues/21095)) (Marry (Subin Yang))
- [`92bb13f`](https://github.com/eslint/eslint/commit/92bb13f13065db72d62454b9830d3ae52db15c76) docs: replace quake link ([#​21108](https://github.com/eslint/eslint/issues/21108)) (Jung Hyeon Jun)
- [`68eb4a5`](https://github.com/eslint/eslint/commit/68eb4a57572409dbdcfeb3bc5c92ddbba46bc770) docs: fix broken Specify Globals anchor links in rule pages ([#​21103](https://github.com/eslint/eslint/issues/21103)) (Minsu)
- [`d28f697`](https://github.com/eslint/eslint/commit/d28f697e0d32d7446c825fd89c362db028450134) docs: replace Code Climate CLI links with Qlty CLI links ([#​21099](https://github.com/eslint/eslint/issues/21099)) (Jung Hyeon Jun)
- [`eccc68d`](https://github.com/eslint/eslint/commit/eccc68d42564e46bc9020d19ec52d2988f3b7bfa) docs: correct --suppressions-location option description ([#​21093](https://github.com/eslint/eslint/issues/21093)) (Ga eun Lee)
- [`c5963f7`](https://github.com/eslint/eslint/commit/c5963f74bfa82a5b7ccc0607dcdcc695b8c97a31) docs: Update README (GitHub Actions Bot)
#### Chores
- [`4fbf46d`](https://github.com/eslint/eslint/commit/4fbf46d140120ae838db08cbe49544c985956490) test: pin `webpack` version to 5.108.4 ([#​21137](https://github.com/eslint/eslint/issues/21137)) (Francesco Trotta)
- [`2d063e2`](https://github.com/eslint/eslint/commit/2d063e224e9bb0ccb0a28c120f7e380a8d62f320) chore: update HTTP URLs to HTTPS in JSDoc and comments ([#​21101](https://github.com/eslint/eslint/issues/21101)) (Bo Hyun Kim)
- [`eccbe7b`](https://github.com/eslint/eslint/commit/eccbe7bc9257a6c99880468e452c8dfafbf47f74) test: add error locations to `no-class-assign` ([#​21123](https://github.com/eslint/eslint/issues/21123)) (devoil)
- [`e7d1e43`](https://github.com/eslint/eslint/commit/e7d1e4373bf626f8da76d62ce024c28928bc99bc) ci: bump actions/setup-go from 6 to 7 ([#​21118](https://github.com/eslint/eslint/issues/21118)) (dependabot\[bot])
- [`e9d66d0`](https://github.com/eslint/eslint/commit/e9d66d0cde1a7752c29dee53ab7b62632835a87a) ci: bump actions/setup-node from 6 to 7 ([#​21119](https://github.com/eslint/eslint/issues/21119)) (dependabot\[bot])
- [`ee225b6`](https://github.com/eslint/eslint/commit/ee225b60c26f0cc5f4d71641888a5bd2ec5626d6) test: Add error location details to `no-eq-null` rule ([#​21117](https://github.com/eslint/eslint/issues/21117)) (Park Harin)
- [`044a627`](https://github.com/eslint/eslint/commit/044a627fa3e28ee1410d515acc5378eb4b49f8ba) chore: update minimatch to ^10.2.5 ([#​21107](https://github.com/eslint/eslint/issues/21107)) (김채영)
- [`fb09aa8`](https://github.com/eslint/eslint/commit/fb09aa8ff09730d3ccf68859e065f99666b52466) chore: update ecosystem plugins ([#​21115](https://github.com/eslint/eslint/issues/21115)) (ESLint Bot)
- [`5abd878`](https://github.com/eslint/eslint/commit/5abd878740fe417fd8a910cac3741f2a0317b365) test: add error locations to `no-proto` ([#​21114](https://github.com/eslint/eslint/issues/21114)) (Gihyeon Jeong / 정기현)
- [`9715887`](https://github.com/eslint/eslint/commit/9715887ec94a5ff936447d7b680d039fbe2f0541) test: Add error location details to `no-div-regex` ([#​21110](https://github.com/eslint/eslint/issues/21110)) (Park Harin)
- [`a746ec6`](https://github.com/eslint/eslint/commit/a746ec6ea4a2249b1eb3f512264da5f4d5f7c886) test: add error locations to `no-new-wrappers` ([#​21109](https://github.com/eslint/eslint/issues/21109)) (Gihyeon Jeong / 정기현)
- [`8dde645`](https://github.com/eslint/eslint/commit/8dde64570e240f3ef8af873d59a752db6d8519aa) test: add error locations to `no-ex-assign` ([#​21102](https://github.com/eslint/eslint/issues/21102)) (devoil)
- [`13ab0ec`](https://github.com/eslint/eslint/commit/13ab0ec447650c079d8a5e5d67222f79e69c741e) test: add error locations to `no-label-var` ([#​21098](https://github.com/eslint/eslint/issues/21098)) (Gihyeon Jeong / 정기현)
- [`a99906f`](https://github.com/eslint/eslint/commit/a99906ffb8342dde03336b5c6372b5658f21d5f2) test: Add error location details to `no-delete-var` rule ([#​21105](https://github.com/eslint/eslint/issues/21105)) (Park Harin)
- [`c47e8dc`](https://github.com/eslint/eslint/commit/c47e8dc9bbfba797430db45ae08cb6f7392cfc9d) chore: add missing backticks to `languages/js/index.js` ([#​21104](https://github.com/eslint/eslint/issues/21104)) (beeen)
- [`0174428`](https://github.com/eslint/eslint/commit/0174428dd7543d118cf67a823b98dd97032fe68c) chore: add missing backticks to `translate-cli-options.js` ([#​21097](https://github.com/eslint/eslint/issues/21097)) (dongkyu lee)
- [`3d36589`](https://github.com/eslint/eslint/commit/3d36589a4917326500f0707bb41745160f387d00) chore: add missing backticks to `serialization.js` ([#​21091](https://github.com/eslint/eslint/issues/21091)) (이규환)
- [`dcc9312`](https://github.com/eslint/eslint/commit/dcc9312c1081931de0fe1b555fbb6aa82fe696b9) test: add error locations to `eqeqeq` ([#​21090](https://github.com/eslint/eslint/issues/21090)) (Ga eun Lee)
- [`2710b18`](https://github.com/eslint/eslint/commit/2710b182472cd1a95e4aff6186cb2c4fbadb4ee0) ci: Add explicit permissions to rebuild-docs-sites workflow ([#​21089](https://github.com/eslint/eslint/issues/21089)) (Marry (Subin Yang))
- [`5d2f866`](https://github.com/eslint/eslint/commit/5d2f8663ee60701e9036b0b0933a12efd9d93269) chore: update dependency prettier to v3.9.5 ([#​21086](https://github.com/eslint/eslint/issues/21086)) (renovate\[bot])
- [`d584e31`](https://github.com/eslint/eslint/commit/d584e31098f262563b97dc5d5f23a63a187879a0) chore: fix failing ecosystem test for `eslint-plugin-unicorn` ([#​21084](https://github.com/eslint/eslint/issues/21084)) (Francesco Trotta)
- [`bf3eda0`](https://github.com/eslint/eslint/commit/bf3eda049bd690f1e9a5a0c4520a6329b3e4ec85) chore: update ecosystem plugins ([#​21079](https://github.com/eslint/eslint/issues/21079)) (ESLint Bot)
### [`v10.7.0`](https://github.com/eslint/eslint/releases/tag/v10.7.0)
[Compare Source](https://github.com/eslint/eslint/compare/v10.6.0...v10.7.0)
#### Features
- [`cf2a9bf`](https://github.com/eslint/eslint/commit/cf2a9bf2d982642f760370c15f1196f4658f4e27) feat: add errorClassNames option to preserve-caught-error rule ([#​21032](https://github.com/eslint/eslint/issues/21032)) (sethamus)
- [`f8b873a`](https://github.com/eslint/eslint/commit/f8b873aae53610b80b5c1005606716e05ed3b91f) feat: max-nested-callbacks option for constructor callbacks ([#​21063](https://github.com/eslint/eslint/issues/21063)) (fnx)
- [`557fde8`](https://github.com/eslint/eslint/commit/557fde8bc633d26ea4fe287d4483f287e8e6080f) feat: support computed `Number.parseInt` member access in `radix` rule ([#​21041](https://github.com/eslint/eslint/issues/21041)) (Pixel)
- [`0b4a73b`](https://github.com/eslint/eslint/commit/0b4a73b65808f5a8fd192f15db2bf5e47002b9f7) feat: add suggestions to no-compare-neg-zero ([#​21034](https://github.com/eslint/eslint/issues/21034)) (den$)
- [`96cdd42`](https://github.com/eslint/eslint/commit/96cdd427db5f26c6403fba92b0f7ae4556c595ec) feat: report invalid signed numeric radix values in `radix` rule ([#​21030](https://github.com/eslint/eslint/issues/21030)) (Pixel)
#### Bug Fixes
- [`3e7bf15`](https://github.com/eslint/eslint/commit/3e7bf15e69e6d3a2c8832356bcc2e9903cc4eede) fix: apply `ignoreClassesWithImplements` to class expressions ([#​21069](https://github.com/eslint/eslint/issues/21069)) (Pixel)
- [`0d7d70c`](https://github.com/eslint/eslint/commit/0d7d70cf013ec5bf1e4f5a0fcf7128bdf059b2d4) fix: insert cause outside wrapping parens in preserve-caught-error ([#​21062](https://github.com/eslint/eslint/issues/21062)) (Mahin Anowar)
- [`75ec753`](https://github.com/eslint/eslint/commit/75ec753226010867270787b412f3dae412e421e6) fix: handle static template literals in `eqeqeq` rule ([#​21058](https://github.com/eslint/eslint/issues/21058)) (Pixel)
- [`b717a22`](https://github.com/eslint/eslint/commit/b717a22e2408389a2ad40af66543e46390669eb6) fix: prevent `eqeqeq` null option from reporting non-equality operators ([#​21057](https://github.com/eslint/eslint/issues/21057)) (Pixel)
- [`e35b05f`](https://github.com/eslint/eslint/commit/e35b05f1961dcd691611bd68b6ff8a87072d6f76) fix: avoid `no-invalid-regexp` false positive for shadowed RegExp ([#​21051](https://github.com/eslint/eslint/issues/21051)) (Pixel)
- [`a3172b6`](https://github.com/eslint/eslint/commit/a3172b69c7db63ea0321355543e3f527c7d8b76a) fix: avoid `no-control-regex` false positive for shadowed RegExp ([#​21050](https://github.com/eslint/eslint/issues/21050)) (Pixel)
- [`d1f637e`](https://github.com/eslint/eslint/commit/d1f637eca27e523d613991c6bea5b8726b810e4c) fix: parenthesize sequence expression operands in no-implicit-coercion ([#​21045](https://github.com/eslint/eslint/issues/21045)) (spokodev)
- [`8859baf`](https://github.com/eslint/eslint/commit/8859bafb018e2b23b5110d52e491b69b94ad890a) fix: avoid prefer-numeric-literals false positive for shadowed globals ([#​21047](https://github.com/eslint/eslint/issues/21047)) (한국)
- [`a9e5961`](https://github.com/eslint/eslint/commit/a9e5961050676ef29dba9649dfcd7233d21760c7) fix: use-isnan false positive on shadowed NaN/Number ([#​20958](https://github.com/eslint/eslint/issues/20958)) (sethamus)
- [`8a240a7`](https://github.com/eslint/eslint/commit/8a240a76108f30f2476e61a925e4d32d378cce5e) fix: avoid false positives in `radix` rule for spread arguments ([#​21044](https://github.com/eslint/eslint/issues/21044)) (Pixel)
#### Documentation
- [`c30d808`](https://github.com/eslint/eslint/commit/c30d80801ca561bdf65c6c3eba4ee57dced278cf) docs: Update README (GitHub Actions Bot)
- [`5139800`](https://github.com/eslint/eslint/commit/5139800b23e77fdd1a76664e1b36f478942eae55) docs: document ESLint migration codemods in v9 and v10 guides ([#​20980](https://github.com/eslint/eslint/issues/20980)) (Alex Bit)
- [`04174cb`](https://github.com/eslint/eslint/commit/04174cbfaac1f9555400b5332d69056e6aab9cc6) docs: Update README (GitHub Actions Bot)
- [`026e130`](https://github.com/eslint/eslint/commit/026e1304080512bcddfd2af3557fff86474ff949) docs: update semver policy for bug fixes ([#​21048](https://github.com/eslint/eslint/issues/21048)) (Milos Djermanovic)
- [`9d42fef`](https://github.com/eslint/eslint/commit/9d42fefb0e05ecd0b256c2ebed479fc868862f0c) docs: Update README (GitHub Actions Bot)
- [`b230159`](https://github.com/eslint/eslint/commit/b23015955c8d6e6516076190730f538c86927f26) docs: Update README (GitHub Actions Bot)
- [`0129972`](https://github.com/eslint/eslint/commit/0129972ba122e95bece6040fda44d20f6799246a) docs: correct `**/.js` glob to `**/*.js` in config files guide ([#​21036](https://github.com/eslint/eslint/issues/21036)) (EduardF1)
#### Chores
- [`9489379`](https://github.com/eslint/eslint/commit/948937986f2aa3cccb27a4c80694a85e5b0a5f64) chore: update dependency [@​eslint/eslintrc](https://github.com/eslint/eslintrc) to ^3.3.6 ([#​21076](https://github.com/eslint/eslint/issues/21076)) (renovate\[bot])
- [`81a4774`](https://github.com/eslint/eslint/commit/81a4774a928211bd0c01a06a1517736ece594522) chore: updates for v9.39.5 release (Jenkins)
- [`9835414`](https://github.com/eslint/eslint/commit/983541491393323d17717683f6a2e6dbef4bc3f4) chore: enable `$ExpectType` annotations in all TypeScript files ([#​21071](https://github.com/eslint/eslint/issues/21071)) (Francesco Trotta)
- [`72adf6b`](https://github.com/eslint/eslint/commit/72adf6bd214c142b38aabb4b8f6f908079c5301a) chore: restrict `markdownlint-cli2` updates in renovate ([#​21067](https://github.com/eslint/eslint/issues/21067)) (lumir)
- [`833ec10`](https://github.com/eslint/eslint/commit/833ec10fd702644e94334edd3cd2aa313174a958) chore: update dependency prettier to v3.9.4 ([#​21061](https://github.com/eslint/eslint/issues/21061)) (renovate\[bot])
- [`7ea106d`](https://github.com/eslint/eslint/commit/7ea106ddcb6af7db8f36d62a28dbaba94d33598e) chore: update ecosystem plugins ([#​21059](https://github.com/eslint/eslint/issues/21059)) (ESLint Bot)
- [`8fb550e`](https://github.com/eslint/eslint/commit/8fb550e7c257fbdc4108fc8e63db43c1d914d472) chore: add prettier update commit to `.git-blame-ignore-revs` ([#​21056](https://github.com/eslint/eslint/issues/21056)) (lumir)
- [`e4e1166`](https://github.com/eslint/eslint/commit/e4e11668ead6b950328c71e894563a13ef72bf84) chore: update dependency prettier to v3.9.1 ([#​21055](https://github.com/eslint/eslint/issues/21055)) (renovate\[bot])
- [`0493f53`](https://github.com/eslint/eslint/commit/0493f53f3fcec4ed69a1808dffa153dcff1380d3) chore: update prettier to v3.9.0 ([#​21054](https://github.com/eslint/eslint/issues/21054)) (Pixel)
- [`1056a99`](https://github.com/eslint/eslint/commit/1056a996c657b377dc16a58c28890d2940394408) chore: update dependency prettier to v3.8.5 ([#​21049](https://github.com/eslint/eslint/issues/21049)) (renovate\[bot])
- [`4d4155d`](https://github.com/eslint/eslint/commit/4d4155df4a21d711e8dd21a467de085e770bad35) ci: run ecosystem tests on pull requests ([#​21027](https://github.com/eslint/eslint/issues/21027)) (sethamus)
- [`993539f`](https://github.com/eslint/eslint/commit/993539fd45d3d01aad3fbc13963e2245fdf7ee0d) chore: update dependency [@​eslint/json](https://github.com/eslint/json) to ^2.0.1 ([#​21042](https://github.com/eslint/eslint/issues/21042)) (renovate\[bot])
- [`53f8b69`](https://github.com/eslint/eslint/commit/53f8b69c15af7398c989071ee4788b88edd48bdd) test: add error locations to `no-constant-binary-expression` ([#​21039](https://github.com/eslint/eslint/issues/21039)) (lumir)
- [`5ab71d5`](https://github.com/eslint/eslint/commit/5ab71d52f9d860df04e626fcd819a36257f21f9e) refactor: clean up radix rule internals ([#​21015](https://github.com/eslint/eslint/issues/21015)) (Pixel)
- [`a80a9a4`](https://github.com/eslint/eslint/commit/a80a9a461478838930c5545f840473840b26b0e6) chore: update ecosystem plugins ([#​21035](https://github.com/eslint/eslint/issues/21035)) (ESLint Bot)
- [`7c9a029`](https://github.com/eslint/eslint/commit/7c9a02933cf1c231237babb8a7a32150ab72e263) ci: add Node.js 26 to CI ([#​20847](https://github.com/eslint/eslint/issues/20847)) (lumir)
### [`v10.6.0`](https://github.com/eslint/eslint/releases/tag/v10.6.0)
[Compare Source](https://github.com/eslint/eslint/compare/v10.5.0...v10.6.0)
#### Features
- [`b1f9106`](https://github.com/eslint/eslint/commit/b1f910628e29a018c860e2352bc14cd07c853d67) feat: detect Symbol() and BigInt() in no-constant-binary-expression ([#​20981](https://github.com/eslint/eslint/issues/20981)) (Taejin Kim)
- [`f291007`](https://github.com/eslint/eslint/commit/f291007cb73f55c09cf3c2aa3a405df379a5c594) feat: add checkRelationalComparisons to no-constant-binary-expression ([#​20948](https://github.com/eslint/eslint/issues/20948)) (sethamus)
#### Bug Fixes
- [`6b05784`](https://github.com/eslint/eslint/commit/6b05784eb271ac98ca3e1e2a48c4b14bb588c786) fix: prefer-exponentiation-operator invalid autofix at statement start ([#​20997](https://github.com/eslint/eslint/issues/20997)) (Milos Djermanovic)
- [`bb9eb2a`](https://github.com/eslint/eslint/commit/bb9eb2ab28daf6e6dafc62daa6b5daf9c2b7046c) fix: account for shadowed `Boolean` in `no-extra-boolean-cast` ([#​21013](https://github.com/eslint/eslint/issues/21013)) (den$)
- [`8fd8741`](https://github.com/eslint/eslint/commit/8fd8741009a3ed7845c89bfe2fb3eaa2119b2d15) fix: don't report shadowed undefined in `radix` rule ([#​21011](https://github.com/eslint/eslint/issues/21011)) (Pixel)
- [`5784980`](https://github.com/eslint/eslint/commit/5784980ce8ba99556db98907895d82ef49cd0a27) fix: don't report shadowed undefined in no-throw-literal ([#​21010](https://github.com/eslint/eslint/issues/21010)) (Pixel)
- [`9cd1e6d`](https://github.com/eslint/eslint/commit/9cd1e6de5bad487a9c713bdc9fda5af7ea0babcd) fix: suppress invalid class suggestion in no-promise-executor-return ([#​21008](https://github.com/eslint/eslint/issues/21008)) (Pixel)
- [`d4eb2dc`](https://github.com/eslint/eslint/commit/d4eb2dc95f17cdf491edca91b7d9caf05b86253f) fix: don't report shadowed undefined in prefer-promise-reject-errors ([#​21006](https://github.com/eslint/eslint/issues/21006)) (Pixel)
- [`2360464`](https://github.com/eslint/eslint/commit/23604646db6d987d01edb8aa5f4d2a88bd4c01d0) fix: prefer-promise-reject-errors false positives for shadowed Promise ([#​21003](https://github.com/eslint/eslint/issues/21003)) (den$)
- [`63d52d2`](https://github.com/eslint/eslint/commit/63d52d28de705ec46f328d18166e8b7170b3f024) fix: restore max-classes-per-file report range ([#​21002](https://github.com/eslint/eslint/issues/21002)) (Pixel)
- [`7feaff0`](https://github.com/eslint/eslint/commit/7feaff0cfb8d6a6260d3ea56887c9161daf8c700) fix: callback detection logic for IIFEs in max-nested-callbacks ([#​20979](https://github.com/eslint/eslint/issues/20979)) (fnx)
- [`399a2ec`](https://github.com/eslint/eslint/commit/399a2ec81bcbcff2c67920db51d9276b20ac1025) fix: don't report inner non-callbacks in `max-nested-callbacks` ([#​20995](https://github.com/eslint/eslint/issues/20995)) (Milos Djermanovic)
#### Documentation
- [`a83683d`](https://github.com/eslint/eslint/commit/a83683db1c27193c2ad333fc5c0aedcc8a293db7) docs: Update README (GitHub Actions Bot)
- [`f5449f9`](https://github.com/eslint/eslint/commit/f5449f96c2caabbc1a28b15211873e2f672f5ae5) docs: document userland patterns for global assertionOptions in RuleT… ([#​20986](https://github.com/eslint/eslint/issues/20986)) (playgirl)
- [`bea49f7`](https://github.com/eslint/eslint/commit/bea49f7b2899ebf708482f977ef2ada41fd2c3f0) docs: Update README (GitHub Actions Bot)
- [`e5f70f9`](https://github.com/eslint/eslint/commit/e5f70f9b06683a887dd0d6dc1cc91a9c9bea816d) docs: update code-path diagrams ([#​20984](https://github.com/eslint/eslint/issues/20984)) (Tanuj Kanti)
- [`8890c2d`](https://github.com/eslint/eslint/commit/8890c2d40880b195b9167735c24ec0cc5de5eb96) docs: add TypeScript config guidance for MCP server ([#​20796](https://github.com/eslint/eslint/issues/20796)) (Pierluigi Lenoci)
- [`3eb3d9b`](https://github.com/eslint/eslint/commit/3eb3d9b1b5edecc3fcae0519ddba0e3745e889e3) docs: Update README (GitHub Actions Bot)
- [`c5bb59c`](https://github.com/eslint/eslint/commit/c5bb59cf613dabafd550227b6adaa9327b1095f5) docs: Update README (GitHub Actions Bot)
- [`eb3c97c`](https://github.com/eslint/eslint/commit/eb3c97c776731ce11b28cc99f0271f41b9994701) docs: fix grammar in prefer-const rule description ([#​20983](https://github.com/eslint/eslint/issues/20983)) (lumir)
#### Chores
- [`6a42034`](https://github.com/eslint/eslint/commit/6a42034a57a816b0a313720b3b9df09455bd0b5e) ci: run ecosystem tests on main branch ([#​20891](https://github.com/eslint/eslint/issues/20891)) (sethamus)
- [`3dbacdb`](https://github.com/eslint/eslint/commit/3dbacdbb31673c87ca86ecafbb18712d8d1daed8) ci: bump actions/checkout from 6 to 7 ([#​21014](https://github.com/eslint/eslint/issues/21014)) (dependabot\[bot])
- [`c3abfca`](https://github.com/eslint/eslint/commit/c3abfca7c96cc9a244f54eeb66e9971c59280354) chore: correct JSDoc param types in html formatter ([#​21018](https://github.com/eslint/eslint/issues/21018)) (Minseon Kim)
- [`a832320`](https://github.com/eslint/eslint/commit/a8323209cdbefefd540c5beeaa51418d8ec40f9e) ci: split ecosystem tests into separate jobs ([#​21001](https://github.com/eslint/eslint/issues/21001)) (xbinaryx)
- [`27166e7`](https://github.com/eslint/eslint/commit/27166e78511db526688afc34bbfab1a458405f3f) chore: update ecosystem plugins ([#​21005](https://github.com/eslint/eslint/issues/21005)) (ESLint Bot)
- [`865d76e`](https://github.com/eslint/eslint/commit/865d76e40107d4fa10a17fc3203b303eb8a88dc3) ci: bump pnpm/action-setup from 6.0.8 to 6.0.9 ([#​20989](https://github.com/eslint/eslint/issues/20989)) (dependabot\[bot])
- [`27a88c9`](https://github.com/eslint/eslint/commit/27a88c9fa7c040f4cd39e5a5e6e2d02441c408ef) chore: update dependency markdown-it to v14 in root ([#​20994](https://github.com/eslint/eslint/issues/20994)) (Milos Djermanovic)
- [`970cea6`](https://github.com/eslint/eslint/commit/970cea62b295d931a4109abedeb21ba192d3f2be) chore: update dependency markdown-it to v14 ([#​20993](https://github.com/eslint/eslint/issues/20993)) (Milos Djermanovic)
- [`b482120`](https://github.com/eslint/eslint/commit/b482120bacb40204fbf16f3b20be7207057157a5) chore: update dependency prettier to v3.8.4 ([#​20990](https://github.com/eslint/eslint/issues/20990)) (renovate\[bot])
- [`6993fb3`](https://github.com/eslint/eslint/commit/6993fb3173da84999fc208507b93f523aa657448) chore: update ecosystem plugins ([#​20985](https://github.com/eslint/eslint/issues/20985)) (ESLint Bot)
### [`v10.5.0`](https://github.com/eslint/eslint/releases/tag/v10.5.0)
[Compare Source](https://github.com/eslint/eslint/compare/v10.4.1...v10.5.0)
#### Features
- [`5ca8c52`](https://github.com/eslint/eslint/commit/5ca8c5278edea1fd84d3ba83d8ea3f52fb3831ad) feat: correct stack tracking in max-nested-callbacks ([#​20973](https://github.com/eslint/eslint/issues/20973)) (Pixel998)
- [`b565783`](https://github.com/eslint/eslint/commit/b5657837604fa5e8cf1278074782025cadd34b6c) feat: report no-with violations at the with keyword ([#​20971](https://github.com/eslint/eslint/issues/20971)) (Pixel998)
- [`2ce032f`](https://github.com/eslint/eslint/commit/2ce032fbc72a1a80c024c084a4f382fb6dece684) feat: report max-lines-per-function violations at function head ([#​20966](https://github.com/eslint/eslint/issues/20966)) (Pixel998)
- [`732cb3e`](https://github.com/eslint/eslint/commit/732cb3e09d5b8b809b5f461d118a5d9fdcd6427f) feat: report max-nested-callbacks violations at function head ([#​20967](https://github.com/eslint/eslint/issues/20967)) (Pixel998)
- [`f9c138a`](https://github.com/eslint/eslint/commit/f9c138a0ba7d8e37aed39aef4a3ff1cae8c669f7) feat: report max-depth violations on keywords ([#​20943](https://github.com/eslint/eslint/issues/20943)) (Pixel998)
- [`bdb496c`](https://github.com/eslint/eslint/commit/bdb496cc0d54b6d0a023aef9abd5f040ccff2101) feat: correct max-depth handling for else-if chains ([#​20944](https://github.com/eslint/eslint/issues/20944)) (Pixel998)
- [`c296873`](https://github.com/eslint/eslint/commit/c29687354a7f96093f57f7d73eecb866ad5e2953) feat: update error loc in `max-statements` to function header ([#​20907](https://github.com/eslint/eslint/issues/20907)) (Taejin Kim)
#### Documentation
- [`8ae1b5b`](https://github.com/eslint/eslint/commit/8ae1b5b856dc031cd6c701d89a4df7da4772cd56) docs: Update README (GitHub Actions Bot)
- [`ca7eb90`](https://github.com/eslint/eslint/commit/ca7eb90127dcad917188bb1342623f02a272e781) docs: update Node.js prerequisites to include ICU support ([#​20962](https://github.com/eslint/eslint/issues/20962)) (Francesco Trotta)
- [`f99b47a`](https://github.com/eslint/eslint/commit/f99b47a6799be25321552402a49303bb06a43fe4) docs: Update README (GitHub Actions Bot)
- [`acf03d4`](https://github.com/eslint/eslint/commit/acf03d4eed31d259c7dc62af5b9640629784f7cc) docs: clarify precedence of parserOptions over languageOptions ([#​20926](https://github.com/eslint/eslint/issues/20926)) (sethamus)
#### Chores
- [`b18bf58`](https://github.com/eslint/eslint/commit/b18bf58c5ac748415ffffdff2d96980fbd6a57e8) chore: update ecosystem plugins ([#​20959](https://github.com/eslint/eslint/issues/20959)) (ESLint Bot)
- [`c2d1444`](https://github.com/eslint/eslint/commit/c2d1444df77cb42e5a0b89ab70496879d180a54d) refactor: replace areAllSegmentsUnreachable with !isAnySegmentReachable ([#​20951](https://github.com/eslint/eslint/issues/20951)) (Taejin Kim)
- [`243b8c5`](https://github.com/eslint/eslint/commit/243b8c56014bbbe63771185b0731d8dd4d1316e9) chore: enhance config-rule to support oneOf, anyOf, and nested schemas ([#​20788](https://github.com/eslint/eslint/issues/20788)) (kuldeep kumar)
- [`217b2a9`](https://github.com/eslint/eslint/commit/217b2a91f46137c5ffd693965e71306c4c15ea6b) test: add unit tests for ParserService ([#​20949](https://github.com/eslint/eslint/issues/20949)) (Taejin Kim)
- [`72003e7`](https://github.com/eslint/eslint/commit/72003e781d76bd4ee0d98a6601730d0b829070f9) test: add location information to error messages in `max-statements` ([#​20945](https://github.com/eslint/eslint/issues/20945)) (lumir)
- [`7797c26`](https://github.com/eslint/eslint/commit/7797c266977b0bc4971aa79721813d480de72cd1) refactor: deduplicate isAnySegmentReachable across rules ([#​20890](https://github.com/eslint/eslint/issues/20890)) (Taejin Kim)
- [`67c46fa`](https://github.com/eslint/eslint/commit/67c46fa6e4f34e88cc6bc82f8a0dcc917c65d257) chore: update ecosystem plugins ([#​20938](https://github.com/eslint/eslint/issues/20938)) (ESLint Bot)
- [`95d8c7a`](https://github.com/eslint/eslint/commit/95d8c7a99f991abd8ab618d0ee2cbd4f58effc29) chore: update dependency [@​eslint/json](https://github.com/eslint/json) to v2 ([#​20934](https://github.com/eslint/eslint/issues/20934)) (renovate\[bot])
- [`cf9e496`](https://github.com/eslint/eslint/commit/cf9e496205142cd4971b9f98aed85866d1010b9c) chore: update [@​arethetypeswrong/cli](https://github.com/arethetypeswrong/cli) to 0.18.3 ([#​20933](https://github.com/eslint/eslint/issues/20933)) (Pixel998)
- [`fb6d396`](https://github.com/eslint/eslint/commit/fb6d3960cacc51fc12383fa5ded2382adbf90c1c) test: run type tests with TypeScript 7 ([#​20868](https://github.com/eslint/eslint/issues/20868)) (sethamus)
</details>
<details>
<summary>sveltejs/eslint-plugin-svelte (eslint-plugin-svelte)</summary>
### [`v3.23.1`](https://github.com/sveltejs/eslint-plugin-svelte/blob/HEAD/packages/eslint-plugin-svelte/CHANGELOG.md#3231)
[Compare Source](https://github.com/sveltejs/eslint-plugin-svelte/compare/eslint-plugin-svelte@3.23.0...eslint-plugin-svelte@3.23.1)
##### Patch Changes
- [#​1592](https://github.com/sveltejs/eslint-plugin-svelte/pull/1592) [`ed67eb7`](https://github.com/sveltejs/eslint-plugin-svelte/commit/ed67eb70079a3766e1fcca04717efe67b981a29c) Thanks [@​baseballyama](https://github.com/baseballyama)! - Exclude deprecated rules from the `all` configuration while keeping active rules enabled.
- [#​1594](https://github.com/sveltejs/eslint-plugin-svelte/pull/1594) [`af288cd`](https://github.com/sveltejs/eslint-plugin-svelte/commit/af288cdadb7a4e9545b67301b9d28da27eb19935) Thanks [@​baseballyama](https://github.com/baseballyama)! - Recognize `browser` from SvelteKit's `$app/env` alias as a browser guard in `no-top-level-browser-globals`.
- [#​1588](https://github.com/sveltejs/eslint-plugin-svelte/pull/1588) [`9814b51`](https://github.com/sveltejs/eslint-plugin-svelte/commit/9814b51df1f4a9b271b50e9abc312cd0c15e714a) Thanks [@​baseballyama](https://github.com/baseballyama)! - Include all active extension rules in the Extension Rules documentation table while preserving their primary-category entries.
- [#​1589](https://github.com/sveltejs/eslint-plugin-svelte/pull/1589) [`57863c5`](https://github.com/sveltejs/eslint-plugin-svelte/commit/57863c52b3e9092a15f8432faeac9cb258b5e08d) Thanks [@​baseballyama](https://github.com/baseballyama)! - Keep the documented project service configuration consistent across TypeScript and Svelte files to avoid unnecessary project reloads.
- [#​1593](https://github.com/sveltejs/eslint-plugin-svelte/pull/1593) [`4ad2c67`](https://github.com/sveltejs/eslint-plugin-svelte/commit/4ad2c67a971a76a6311ef42a091e1da76853578a) Thanks [@​baseballyama](https://github.com/baseballyama)! - Limit `require-each-key` diagnostics to the opening each tag instead of the whole block.
- [#​1599](https://github.com/sveltejs/eslint-plugin-svelte/pull/1599) [`90d7b09`](https://github.com/sveltejs/eslint-plugin-svelte/commit/90d7b09cc4c075b655dfe8042cfda9158bac02f8) Thanks [@​baseballyama](https://github.com/baseballyama)! - Enable no-navigation-without-resolve on SvelteKit 3 so the recommended config reports internal links and navigation calls that omit resolve().
- [#​1590](https://github.com/sveltejs/eslint-plugin-svelte/pull/1590) [`a28563f`](https://github.com/sveltejs/eslint-plugin-svelte/commit/a28563f337515b6d32010c7f2f32d3adff730929) Thanks [@​baseballyama](https://github.com/baseballyama)! - Fix false positives in `no-immutable-reactive-statements` for TypeScript components when `ecmaFeatures.globalReturn` is enabled.
- [#​1598](https://github.com/sveltejs/eslint-plugin-svelte/pull/1598) [`4607a2c`](https://github.com/sveltejs/eslint-plugin-svelte/commit/4607a2cc4065b3d6e1a10467afeb937f12f4ee55) Thanks [@​baseballyama](https://github.com/baseballyama)! - Recognize SvelteKit 3 in rule conditions, including prereleases, and document version detection and routes configuration.
### [`v3.23.0`](https://github.com/sveltejs/eslint-plugin-svelte/blob/HEAD/packages/eslint-plugin-svelte/CHANGELOG.md#3230)
[Compare Source](https://github.com/sveltejs/eslint-plugin-svelte/compare/eslint-plugin-svelte@3.22.0...eslint-plugin-svelte@3.23.0)
##### Minor Changes
- [#​1565](https://github.com/sveltejs/eslint-plugin-svelte/pull/1565) [`1ec3cf5`](https://github.com/sveltejs/eslint-plugin-svelte/commit/1ec3cf5edd561cb92b02c69e3bb9edb22773f278) Thanks [@​ColumbusLabs](https://github.com/ColumbusLabs)! - feat: add prefer-attribute-interpolation rule
### [`v3.22.0`](https://github.com/sveltejs/eslint-plugin-svelte/blob/HEAD/packages/eslint-plugin-svelte/CHANGELOG.md#3220)
[Compare Source](https://github.com/sveltejs/eslint-plugin-svelte/compare/eslint-plugin-svelte@3.21.0...eslint-plugin-svelte@3.22.0)
##### Minor Changes
- [#​1563](https://github.com/sveltejs/eslint-plugin-svelte/pull/1563) [`cdad05a`](https://github.com/sveltejs/eslint-plugin-svelte/commit/cdad05a463d2ae7c8fe57c1a4e7cdd820723526c) Thanks [@​baseballyama](https://github.com/baseballyama)! - feat: add no-conflicting-module-names rule
### [`v3.21.0`](https://github.com/sveltejs/eslint-plugin-svelte/blob/HEAD/packages/eslint-plugin-svelte/CHANGELOG.md#3210)
[Compare Source](https://github.com/sveltejs/eslint-plugin-svelte/compare/eslint-plugin-svelte@3.20.0...eslint-plugin-svelte@3.21.0)
##### Minor Changes
- [#​1559](https://github.com/sveltejs/eslint-plugin-svelte/pull/1559) [`4138a57`](https://github.com/sveltejs/eslint-plugin-svelte/commit/4138a571f1d51f46fbc485cf0f89013119ee9187) Thanks [@​knrdl](https://github.com/knrdl)! - feat: add no-bind-value-on-checkable-inputs rule
### [`v3.20.0`](https://github.com/sveltejs/eslint-plugin-svelte/blob/HEAD/packages/eslint-plugin-svelte/CHANGELOG.md#3200)
[Compare Source](https://github.com/sveltejs/eslint-plugin-svelte/compare/eslint-plugin-svelte@3.19.0...eslint-plugin-svelte@3.20.0)
##### Minor Changes
- [#​1545](https://github.com/sveltejs/eslint-plugin-svelte/pull/1545) [`32ba915`](https://github.com/sveltejs/eslint-plugin-svelte/commit/32ba9159b00bf65ef8fc9a4bf0897dfaf33e8cea) Thanks [@​baseballyama](https://github.com/baseballyama)! - feat: add `svelte/no-at-const-tags` rule
##### Patch Changes
- [#​1503](https://github.com/sveltejs/eslint-plugin-svelte/pull/1503) [`989bfa5`](https://github.com/sveltejs/eslint-plugin-svelte/commit/989bfa5beecc495f38fc563498c39e755668c457) Thanks [@​teemingc](https://github.com/teemingc)! - fix(valid-prop-names-in-kit-pages): drop `errors` from allowed page props in Svelte 5 to follow SvelteKit
</details>
<details>
<summary>sindresorhus/globals (globals)</summary>
### [`v17.13.0`](https://github.com/sindresorhus/globals/releases/tag/v17.13.0)
[Compare Source](https://github.com/sindresorhus/globals/compare/v17.12.0...v17.13.0)
- Update globals (2026-10-01) ([#​354](https://github.com/sindresorhus/globals/issues/354)) [`b007369`](https://github.com/sindresorhus/globals/commit/b007369)
***
### [`v17.12.0`](https://github.com/sindresorhus/globals/releases/tag/v17.12.0)
[Compare Source](https://github.com/sindresorhus/globals/compare/v17.11.0...v17.12.0)
- Update globals (2026-09-01) ([#​353](https://github.com/sindresorhus/globals/issues/353)) [`50a2119`](https://github.com/sindresorhus/globals/commit/50a2119)
- Add `__webpack_layer__` global ([#​351](https://github.com/sindresorhus/globals/issues/351)) [`779a11a`](https://github.com/sindresorhus/globals/commit/779a11a)
***
### [`v17.11.0`](https://github.com/sindresorhus/globals/releases/tag/v17.11.0)
[Compare Source](https://github.com/sindresorhus/globals/compare/v17.10.0...v17.11.0)
- Add `react-native` globals ([#​337](https://github.com/sindresorhus/globals/issues/337)) [`61eafbf`](https://github.com/sindresorhus/globals/commit/61eafbf)
***
### [`v17.10.0`](https://github.com/sindresorhus/globals/releases/tag/v17.10.0)
[Compare Source](https://github.com/sindresorhus/globals/compare/v17.9.0...v17.10.0)
- Add `GM_cookie` to Greasemonkey globals ([#​349](https://github.com/sindresorhus/globals/issues/349)) [`f468407`](https://github.com/sindresorhus/globals/commit/f468407)
***
### [`v17.9.0`](https://github.com/sindresorhus/globals/releases/tag/v17.9.0)
[Compare Source](https://github.com/sindresorhus/globals/compare/v17.8.0...v17.9.0)
- Update globals (2026-08-01) ([#​348](https://github.com/sindresorhus/globals/issues/348)) [`5a958ed`](https://github.com/sindresorhus/globals/commit/5a958ed)
***
### [`v17.8.0`](https://github.com/sindresorhus/globals/releases/tag/v17.8.0)
[Compare Source](https://github.com/sindresorhus/globals/compare/v17.7.0...v17.8.0)
- Update globals (2026-07-01) ([#​347](https://github.com/sindresorhus/globals/issues/347)) [`7394811`](https://github.com/sindresorhus/globals/commit/7394811)
***
### [`v17.7.0`](https://github.com/sindresorhus/globals/releases/tag/v17.7.0)
[Compare Source](https://github.com/sindresorhus/globals/compare/v17.6.0...v17.7.0)
- Update globals (2026-06-22) ([#​345](https://github.com/sindresorhus/globals/issues/345)) [`33b75f9`](https://github.com/sindresorhus/globals/commit/33b75f9)
***
</details>
<details>
<summary>greensock/GSAP (gsap)</summary>
### [`v3.15.0`](https://github.com/greensock/GSAP/compare/3.14.2...3.15.0)
[Compare Source](https://github.com/greensock/GSAP/compare/3.14.2...3.15.0)
</details>
<details>
<summary>pixijs/pixijs (pixi.js)</summary>
### [`v8.22.0`](https://github.com/pixijs/pixijs/releases/tag/v8.22.0)
[Compare Source](https://github.com/pixijs/pixijs/compare/v8.21.0...v8.22.0)
#### 💾 Download
Installation:
```bash
npm install pixi.js@8.22.0
```
Development Build:
- <https://cdn.jsdelivr.net/npm/pixi.js@8.22.0/dist/pixi.js>
- <https://cdn.jsdelivr.net/npm/pixi.js@8.22.0/dist/pixi.mjs>
Production Build:
- <https://cdn.jsdelivr.net/npm/pixi.js@8.22.0/dist/pixi.min.js>
- <https://cdn.jsdelivr.net/npm/pixi.js@8.22.0/dist/pixi.min.mjs>
Documentation:
- <https://pixijs.download/v8.22.0/docs/index.html>
#### Changed
##### 🚨 Behavior Change
- fix: tab cannot activate the accessibility layer on a fresh page by [@​synath](https://github.com/synath) in [#​12220](https://github.com/pixijs/pixijs/pull/12220)
- Pressing Tab now activates the accessibility layer on a fresh page when `activateOnTab` is left at its default of `true`. This restores the documented default, which regressed in v8.14.0. To keep Tab from activating it:
```ts
await app.init({ accessibilityOptions: { activateOnTab: false } });
```
- fix: apply accessibleText to button and recycled accessible elements by [@​synath](https://github.com/synath) in [#​12221](https://github.com/pixijs/pixijs/pull/12221)
- `accessibleText` now applies to the default `button` type and to accessible elements recycled from the pool.
##### 🎁 Added
- feat: add a federated contextmenu event by [@​Zyie](https://github.com/Zyie) in [#​12250](https://github.com/pixijs/pixijs/pull/12250)
- Containers now receive `contextmenu` and `contextmenucapture` events, also available as the `oncontextmenu` handler property. The event is a `FederatedPointerEvent` that PixiJS hit-tests and propagates like `pointerdown`, and `eventFeatures.click` gates it.
```ts
sprite.eventMode = 'static';
sprite.on('contextmenu', (event) =>
{
event.preventDefault(); // keeps the browser menu closed
openMenuAt(event.global);
});
```
- feat: sRGB view formats and transient MSAA colour on WebGPU by [@​GoodBoyDigital](https://github.com/GoodBoyDigital) in [#​12225](https://github.com/pixijs/pixijs/pull/12225)
- New `transient` renderer option (WebGPU, with `antialias`) discards the canvas's multisample depth/stencil buffer at the end of each pass, and its color buffer too on GPUs that aren't tile-based.
```ts
await app.init({ preference: 'webgpu', antialias: true, transient: true });
```
- feat: 3D textures, storage textures and 3D mipmaps by [@​GoodBoyDigital](https://github.com/GoodBoyDigital) in [#​12248](https://github.com/pixijs/pixijs/pull/12248)
- feat: partial uploads for BufferImageSource via update(start, end) by [@​GoodBoyDigital](https://github.com/GoodBoyDigital) in [#​12227](https://github.com/pixijs/pixijs/pull/12227)
##### 🐛 Fixed
- fix: integer texture formats on WebGL and WebGPU by [@​GoodBoyDigital](https://github.com/GoodBoyDigital) in [#​12230](https://github.com/pixijs/pixijs/pull/12230)
- fix: nested filters crash after renderer resize by [@​Zyie](https://github.com/Zyie) in [#​12257](https://github.com/pixijs/pixijs/pull/12257)
- fix: indexed loops instead of for...in on every draw by [@​GoodBoyDigital](https://github.com/GoodBoyDigital) in [#​12229](https://github.com/pixijs/pixijs/pull/12229)
- fix: declare accessibilityOptions on the public renderer options by [@​synath](https://github.com/synath) in [#​12222](https://github.com/pixijs/pixijs/pull/12222)
- fix: array uniform sync over-reads and overlaps matrix elements by [@​GoodBoyDigital](https://github.com/GoodBoyDigital) in [#​12228](https://github.com/pixijs/pixijs/pull/12228)
- fix: blend filter backdrop when every parent filter is skipped by [@​Zyie](https://github.com/Zyie) in [#​12263](https://github.com/pixijs/pixijs/pull/12263)
- fix: don't warn about unread attributes that already have a format by [@​Zyie](https://github.com/Zyie) in [#​12267](https://github.com/pixijs/pixijs/pull/12267)
##### 🧹 Chores
- chore: clarify web font family naming by [@​Hugohong258](https://github.com/Hugohong258) in [#​12216](https://github.com/pixijs/pixijs/pull/12216)
- chore: correct TilingSprite texture, width and height defaults by [@​ZainnQureshii](https://github.com/ZainnQureshii) in [#​12269](https://github.com/pixijs/pixijs/pull/12269)
#### New Contributors
- [@​synath](https://github.com/synath) made their first contribution in [#​12220](https://github.com/pixijs/pixijs/pull/12220)
- [@​ZainnQureshii](https://github.com/ZainnQureshii) made their first contribution in [#​12269](https://github.com/pixijs/pixijs/pull/12269)
### [`v8.21.0`](https://github.com/pixijs/pixijs/releases/tag/v8.21.0)
[Compare Source](https://github.com/pixijs/pixijs/compare/v8.20.1...v8.21.0)
#### 💾 Download
Installation:
```bash
npm install pixi.js@8.21.0
```
Development Build:
- <https://cdn.jsdelivr.net/npm/pixi.js@8.21.0/dist/pixi.js>
- <https://cdn.jsdelivr.net/npm/pixi.js@8.21.0/dist/pixi.mjs>
Production Build:
- <https://cdn.jsdelivr.net/npm/pixi.js@8.21.0/dist/pixi.min.js>
- <https://cdn.jsdelivr.net/npm/pixi.js@8.21.0/dist/pixi.min.mjs>
Documentation:
- <https://pixijs.download/v8.21.0/docs/index.html>
#### Changed
##### 🚨 Behavior Change
- fix: decompose mirrored matrix into rotation and negative scale by [@​cpruijsen](https://github.com/cpruijsen) in [#​12200](https://github.com/pixijs/pixijs/pull/12200)
- `Matrix.decompose()` and `setFromMatrix()` (plus `reparentChild()`, `reparentChildAt()` and `replaceChild()`) now turn a mirrored matrix into a real `rotation`, zero `skew` and a negative `scale.x`. Previously they returned `rotation = 0` with a nonzero `skew`. Rendering is identical; only the values you read back change. The flip always lands on `scale.x`, so a `scale(1, -1)` matrix now gives `scale (-1, 1)` with `rotation = -π`. Re-check any flip detection or tweens that start from decomposed values.
```ts
import { Container, Matrix } from 'pixi.js';
const container = new Container();
container.setFromMatrix(new Matrix().rotate(Math.PI / 6).scale(-1, 1));
// before: rotation 0, skew { x: ~0.524, y: ~2.618 }, scale { x: 1, y: 1 }
// after: rotation ~-0.524, skew { x: 0, y: 0 }, scale { x: -1, y: 1 }
```
##### 🎁 Added
- feat: support TypeScript 5, 6, and 7 by [@​creativoma](https://github.com/creativoma) [@​Zyie](https://github.com/Zyie) in [#​12157](https://github.com/pixijs/pixijs/pull/12157)
- PixiJS types now compile on TypeScript 6 and 7 as well as 5. TypeScript 5 needs no changes; PixiJS still adds `@webgpu/types` for you. On TypeScript 6 and 7, which include WebGPU types built in, remove `@webgpu/types` from `compilerOptions.types` and use `@types/web` in place of the `"dom"` lib, since some releases leave out parts such as `GPUTextureUsage`. See the new [TypeScript guide](https://pixijs.com/8.x/guides/concepts/typescript).
```bash
npm install --save-dev @types/web
```
```json
{
"compilerOptions": {
"lib": ["esnext"],
"types": ["@types/web"]
}
}
```
- feat: add renderer loader extensions for lazy backend imports by [@​Zyie](https://github.com/Zyie) in [#​12175](https://github.com/pixijs/pixijs/pull/12175)
- New `ExtensionType.WebGLLoader`, `ExtensionType.WebGPULoader` and `ExtensionType.CanvasLoader` extensions register an async `load()` hook that the matching renderer awaits during `init()`, before it creates its systems and pipes. Plugins can `import()` backend-only code this way, so each backend stays in its own chunk and only the active one loads. Loaders are deduplicated by `name` and are skipped when `skipExtensionImports` is `true`.
```ts
import { Application, extensions, ExtensionType } from 'pixi.js';
extensions.add(
{
extension: { type: ExtensionType.WebGLLoader, name: 'my-plugin' },
load: () => import('./gl/register'),
},
{
extension: { type: ExtensionType.WebGPULoader, name: 'my-plugin' },
load: () => import('./gpu/register'),
},
);
const app = new Application();
await app.init({ preference: 'webgpu' }); // only the WebGPU loader runs
```
- feat: add Geometry.indexCount for drawing a prefix of a shared index buffer by [@​GoodBoyDigital](https://github.com/GoodBoyDigital) in [#​12182](https://github.com/pixijs/pixijs/pull/12182)
- `Geometry` gains an `indexCount` property (also a constructor option), the index-buffer counterpart to `instanceCount`. Several geometries can share one index buffer while each draws only its first N indices. Changing it never re-uploads anything. The default `0` draws the whole buffer, and an explicit `size` on the draw call still takes precedence.
```ts
import { Buffer, BufferUsage, Geometry } from 'pixi.js';
const maxQuads = 1000;
const indices = new Uint32Array(maxQuads * 6);
for (let i = 0, v = 0; i < indices.length; i += 6, v += 4)
{
indices.set([v, v + 1, v + 2, v, v + 2, v + 3], i);
}
const sharedIndices = new Buffer({ data: indices, usage: BufferUsage.INDEX | BufferUsage.COPY_DST });
const geometry = new Geometry({
attributes: { aPosition: new Float32Array(maxQuads * 8) },
indexBuffer: sharedIndices,
indexCount: 10 * 6, // draw only the first 10 quads
});
geometry.indexCount = 25 * 6; // grow later without a re-upload
```
- feat: replace frontFaceInverted with isFrontFaceInverted(target, flipY) by [@​GoodBoyDigital](https://github.com/GoodBoyDigital) in [#​12206](https://github.com/pixijs/pixijs/pull/12206)
- `renderer.renderTarget.isFrontFaceInverted()` replaces the `frontFaceInverted` getter, which is now deprecated. Pass a target and `flipY` to get the winding for a target before you bind it, so 3D pipelines can pick a projection first. `flipY` defaults to `false`, matching `bind()`.
```ts
import { RenderTexture } from 'pixi.js';
// before (deprecated)
const invertedNow = renderer.renderTarget.frontFaceInverted;
// after: the currently bound target
const inverted = renderer.renderTarget.isFrontFaceInverted();
// after: a target that isn't bound yet, as if bound with flipY: true
const target = renderer.renderTarget.getRenderTarget(RenderTexture.create({ width: 512, height: 512 }));
const willInvert = renderer.renderTarget.isFrontFaceInverted(target, true);
```
- feat: cap pooled textures to the screen size and take pool requests as options by [@​GoodBoyDigital](https://github.com/GoodBoyDigital) in [#​12198](https://github.com/pixijs/pixijs/pull/12198)
- `TexturePool` and `CanvasPool` now size pooled textures to the screen instead of always rounding up to a power of two, which saves a lot of GPU memory on fullscreen filters (a 1170x2532 phone used to get 2048x4096 textures). Requests larger than every screen still round up to a power of two. `getOptimalTexture()` and `createTexture()` now take a `TexturePoolRequest` object with per-request `format` and `scaleMode`; the positional signatures still work but are deprecated.
```ts
import { TexturePool } from 'pixi.js';
// before (deprecated)
const legacy = TexturePool.getOptimalTexture(800, 600, 2, true);
// after
const texture = TexturePool.getOptimalTexture({
width: 800,
height: 600,
resolution: 2,
antialias: true,
scaleMode: 'nearest',
});
TexturePool.returnTexture(texture);
```
- feat: stamp render bundles with baked pipeline state by [@​GoodBoyDigital](https://github.com/GoodBoyDigital) in [#​12158](https://github.com/pixijs/pixijs/pull/12158)
##### 🐛 Fixed
- fix: restore the WebGPU renderer after a device loss by [@​Zyie](https://github.com/Zyie) in [#​12173](https://github.com/pixijs/pixijs/pull/12173)
- fix: release cached GPU render targets on RenderTarget destroy by [@​Zyie](https://github.com/Zyie) in [#​12192](https://github.com/pixijs/pixijs/pull/12192)
- fix: preserve UBO offsets in unsafe-eval polyfill by [@​darkdi](https://github.com/darkdi) in [#​12154](https://github.com/pixijs/pixijs/pull/12154)
- fix: svg radial gradients render as a linear gradient by [@​creativoma](https://github.com/creativoma) in [#​12156](https://github.com/pixijs/pixijs/pull/12156)
- fix: detach from shared TextStyle on destroy ([#​12049](https://github.com/pixijs/pixijs/issues/12049)) by [@​qiao-coding](https://github.com/qiao-coding) in [#​12159](https://github.com/pixijs/pixijs/pull/12159)
- fix: regenerate Text/HTMLText textures after WebGL context loss by [@​Zyie](https://github.com/Zyie) in [#​12170](https://github.com/pixijs/pixijs/pull/12170)
- fix: render Text, HTMLText and Graphics with a second renderer by [@​Zyie](https://github.com/Zyie) in [#​12172](https://github.com/pixijs/pixijs/pull/12172)
- fix: BatcherPipe leak on RenderGroup destroy by [@​laino](https://github.com/laino) in [#​12030](https://github.com/pixijs/pixijs/pull/12030)
- fix: release VAOs and buffer listeners when a Geometry is destroyed by [@​Zyie](https://github.com/Zyie) in [#​12190](https://github.com/pixijs/pixijs/pull/12190)
- fix: make the GC resource sweep safe under re-entrant unload listeners by [@​Zyie](https://github.com/Zyie) in [#​12191](https://github.com/pixijs/pixijs/pull/12191)
- fix: sweep idle WebGPU bind groups with the renderer GC by [@​Zyie](https://github.com/Zyie) in [#​12193](https://github.com/pixijs/pixijs/pull/12193)
- fix: keep per-target stencil state on the backend render target by [@​Zyie](https://github.com/Zyie) in [#​12194](https://github.com/pixijs/pixijs/pull/12194)
- fix: clamp blur samples to the input frame by [@​ICOM725](https://github.com/ICOM725) in [#​12188](https://github.com/pixijs/pixijs/pull/12188)
- fix: don't inherit autoGenerateMipmaps on WebGPU MSAA textures by [@​zenblender](https://github.com/zenblender) in [#​12197](https://github.com/pixijs/pixijs/pull/12197)
- fix: render nine-slice center in canvas when borders cover the texture by [@​ShiKirill](https://github.com/ShiKirill) in [#​12126](https://github.com/pixijs/pixijs/pull/12126)
- fix: handle strokes wider than the shape in Ellipse.strokeContains by [@​MaxFreedomPollard](https://github.com/MaxFreedomPollard) in [#​12185](https://github.com/pixijs/pixijs/pull/12185)
- fix: preserve translucent colors in untinted canvas tiling sprites by [@​ICOM725](https://github.com/ICOM725) in [#​12189](https://github.com/pixijs/pixijs/pull/12189)
- fix: ignore inactive graphics batches when creating bind groups by [@​iketiunn](https://github.com/iketiunn) in [#​12184](https://github.com/pixijs/pixijs/pull/12184)
- fix: don't destroy the shared GpuProgram on WebGPU renderer destroy by [@​Zyie](https://github.com/Zyie) in [#​12203](https://github.com/pixijs/pixijs/pull/12203)
- fix: update the WebGPU front face when a reused pass changes flipY by [@​Zyie](https://github.com/Zyie) in [#​12207](https://github.com/pixijs/pixijs/pull/12207)
##### 🧹 Chores
- chore: bump [@​xmldom/xmldom](https://github.com/xmldom/xmldom) to 0.8.15 by [@​Zyie](https://github.com/Zyie) in [#​12162](https://github.com/pixijs/pixijs/pull/12162)
- chore: remove write-only \_touched field from BindResource and implementors by [@​santichausis](https://github.com/santichausis) in [#​12199](https://github.com/pixijs/pixijs/pull/12199)
- chore: update Assets texture-loading examples for v8 by [@​Hugohong258](https://github.com/Hugohong258) in [#​12196](https://github.com/pixijs/pixijs/pull/12196)
- chore: fix Shader uniform resource example by [@​Hugohong258](https://github.com/Hugohong258) in [#​12202](https://github.com/pixijs/pixijs/pull/12202)
- chore: update docs and skills for v8.20+ changes by [@​Zyie](https://github.com/Zyie) in [#​12204](https://github.com/pixijs/pixijs/pull/12204)
#### New Contributors
- [@​darkdi](https://github.com/darkdi) made their first contribution in [#​12154](https://github.com/pixijs/pixijs/pull/12154)
- [@​qiao-coding](https://github.com/qiao-coding) made their first contribution in [#​12159](https://github.com/pixijs/pixijs/pull/12159)
- [@​cpruijsen](https://github.com/cpruijsen) made their first contribution in [#​12200](https://github.com/pixijs/pixijs/pull/12200)
- [@​ICOM725](https://github.com/ICOM725) made their first contribution in [#​12188](https://github.com/pixijs/pixijs/pull/12188)
- [@​Hugohong258](https://github.com/Hugohong258) made their first contribution in [#​12196](https://github.com/pixijs/pixijs/pull/12196)
- [@​zenblender](https://github.com/zenblender) made their first contribution in [#​12197](https://github.com/pixijs/pixijs/pull/12197)
- [@​MaxFreedomPollard](https://github.com/MaxFreedomPollard) made their first contribution in [#​12185](https://github.com/pixijs/pixijs/pull/12185)
- [@​iketiunn](https://github.com/iketiunn) made their first contribution in [#​12184](https://github.com/pixijs/pixijs/pull/12184)
### [`v8.20.1`](https://github.com/pixijs/pixijs/releases/tag/v8.20.1)
[Compare Source](https://github.com/pixijs/pixijs/compare/v8.20.0...v8.20.1)
#### 💾 Download
Installation:
```bash
npm install pixi.js@8.20.1
```
Development Build:
- <https://cdn.jsdelivr.net/npm/pixi.js@8.20.1/dist/pixi.js>
- <https://cdn.jsdelivr.net/npm/pixi.js@8.20.1/dist/pixi.mjs>
Production Build:
- <https://cdn.jsdelivr.net/npm/pixi.js@8.20.1/dist/pixi.min.js>
- <https://cdn.jsdelivr.net/npm/pixi.js@8.20.1/dist/pixi.min.mjs>
Documentation:
- <https://pixijs.download/v8.20.1/docs/index.html>
#### Changed
##### 🐛 Fixed
- fix: preserve UBO offsets in unsafe-eval polyfill by [@​darkdi](https://github.com/darkdi) in [#​12154](https://github.com/pixijs/pixijs/pull/12154)
- fix: svg radial gradients render as a linear gradient by [@​creativoma](https://github.com/creativoma) in [#​12156](https://github.com/pixijs/pixijs/pull/12156)
- fix: detach from shared `TextStyle` on destroy by [@​qiao-coding](https://github.com/qiao-coding) in [#​12159](https://github.com/pixijs/pixijs/pull/12159)
##### 🧹 Chores
- chore: bump `@xmldom/xmldom` to 0.8.15 by [@​Zyie](https://github.com/Zyie) in [#​12162](https://github.com/pixijs/pixijs/pull/12162)
- Removes the `npm warn deprecated @xmldom/xmldom@0.8.14` warning printed when installing `pixi.js`.
#### New Contributors
- [@​darkdi](https://github.com/darkdi) made their first contribution in [#​12154](https://github.com/pixijs/pixijs/pull/12154)
- [@​qiao-coding](https://github.com/qiao-coding) made their first contribution in [#​12159](https://github.com/pixijs/pixijs/pull/12159)
**Full Changelog**: <https://github.com/pixijs/pixijs/compare/v8.20.0...v8.20.1>
### [`v8.20.0`](https://github.com/pixijs/pixijs/releases/tag/v8.20.0)
[Compare Source](https://github.com/pixijs/pixijs/compare/v8.19.0...v8.20.0)
#### 💾 Download
Installation:
```bash
npm install pixi.js@8.20.0
```
Development Build:
- <https://cdn.jsdelivr.net/npm/pixi.js@8.20.0/dist/pixi.js>
- <https://cdn.jsdelivr.net/npm/pixi.js@8.20.0/dist/pixi.mjs>
Production Build:
- <https://cdn.jsdelivr.net/npm/pixi.js@8.20.0/dist/pixi.min.js>
- <https://cdn.jsdelivr.net/npm/pixi.js@8.20.0/dist/pixi.min.mjs>
Documentation:
- <https://pixijs.download/v8.20.0/docs/index.html>
#### Changed
##### 🚨 Behavior Change
- feat: WGSL shader overrides, depth-stencil formats, partial buffer updates & view caching by [@​Zyie](https://github.com/Zyie) in [#​12089](https://github.com/pixijs/pixijs/pull/12089)
- `StructsAndGroups.isUniform` is replaced by `accessMode`, which also describes storage buffers. This one fails quietly; the old property reads `undefined` rather than throwing.
```ts
// before
if (group.isUniform) { /* ... */ }
// after
if (group.accessMode === 'uniform') { /* ... */ }
```
- fix: apply render group world color and alpha to ParticleContainer by [@​TheOnlyJason](https://github.com/TheOnlyJason) in [#​12132](https://github.com/pixijs/pixijs/pull/12132)
- `ParticleContainer` ignored the tint and alpha of any ancestor render group, staying fully opaque while everything else faded. Particles now inherit both, so scenes with a `ParticleContainer` under a tinted or faded render group will look different. Remove any manual compensation you added.
- fix: WebGPU ignores clockwiseFrontFace by [@​koteelok](https://github.com/koteelok) in [#​12139](https://github.com/pixijs/pixijs/pull/12139)
- `State.clockwiseFrontFace` reached the WebGPU pipeline as a cull mode rather than a winding, so `@builtin(front_facing)` in WGSL reported the opposite of `gl_FrontFacing` in GLSL. Which triangles survive culling is unchanged, but WGSL shaders branching on `front_facing` with `clockwiseFrontFace: true` now take the other branch; revert any workaround that inverted it.
- fix: align Polygon.strokeContains with the drawn stroke by [@​Jaybhade](https://github.com/Jaybhade) in [#​12137](https://github.com/pixijs/pixijs/pull/12137)
- `strokeContains` split the stroke width on the squared width and ignored winding order, so at the default `alignment: 0.5` the hit area was \~41% wider than the drawn line, and at alignment 0 or 1 it sat on the opposite side of the edge. Hit testing now matches what's drawn.
```ts
const graphics = new Graphics()
.poly([0, 0, 100, 0, 100, 100, 0, 100], true)
.stroke({ width: 20, alignment: 0 });
graphics.containsPoint({ x: -10, y: 50 }); // now true, inside the drawn stroke
graphics.containsPoint({ x: 10, y: 50 }); // now false, nothing is drawn there
```
- fix: Rectangle containsRect edge containment by [@​cyphercodes](https://github.com/cyphercodes) in [#​12083](https://github.com/pixijs/pixijs/pull/12083)
- `containsRect` tested the right and bottom edges with a strict `<`, so identical rectangles reported `false`. Identical rects, and any rect flush against the container's right or bottom edge, now return `true`. Code using it as a strict-interior test, or branching on `false` to mean "partially outside", now takes the other branch.
##### 🎁 Added
- feat: WGSL shader overrides, depth-stencil formats, partial buffer updates & view caching by [@​Zyie](https://github.com/Zyie) in [#​12089](https://github.com/pixijs/pixijs/pull/12089)
- feat: geometry vertexCount, WebGPU render bundles, depth-only targets & Safari WGSL fallback by [@​Zyie](https://github.com/Zyie) in [#​12090](https://github.com/pixijs/pixijs/pull/12090)
- feat: WebGPU-first RenderTarget attachment architecture & TextureView depth sampling by [@​Zyie](https://github.com/Zyie) in [#​12091](https://github.com/pixijs/pixijs/pull/12091)
- feat: copyDepthTexture for render targets (WebGPU/WebGL2) by [@​Zyie](https://github.com/Zyie) in [#​12092](https://github.com/pixijs/pixijs/pull/12092)
- feat: add opt-in flipY render-orientation toggle by [@​GoodBoyDigital](https://github.com/GoodBoyDigital) in [#​12098](https://github.com/pixijs/pixijs/pull/12098)
- `RenderOptions.flipY` inverts a render's Y orientation, flipping the projection and the winding/cull inversion together. That lets you capture a scene into a texture in screen orientation, which is what 3D geometry UVs expect, without a per-material flip at sample time and with back-face culling still correct. Absent or `false` is a no-op on both backends.
```ts
import { Sprite, Texture, TextureSource } from 'pixi.js';
const texture = new Texture({ source: new TextureSource({ width: 256, height: 256 }) });
renderer.render({ container: mesh, target: texture, clear: true, flipY: true });
const sprite = new Sprite(texture);
```
- feat: copy depth into textures and expose resolved front-face orientation by [@​GoodBoyDigital](https://github.com/GoodBoyDigital) in [#​12103](https://github.com/pixijs/pixijs/pull/12103)
- feat(rendering): object-form bind/push and capturable bind state by [@​GoodBoyDigital](https://github.com/GoodBoyDigital) in [#​12104](https://github.com/pixijs/pixijs/pull/12104)
- feat: export GPU shader layout helpers for advanced users by [@​GoodBoyDigital](https://github.com/GoodBoyDigital) in [#​12143](https://github.com/pixijs/pixijs/pull/12143)
- feat(rendering): object-form bind/push and capturable bind state by [@​GoodBoyDigital](https://github.com/GoodBoyDigital) in [#​12104](https://github.com/pixijs/pixijs/pull/12104)
- feat: geometry vertexCount, WebGPU render bundles, depth-only targets & Safari WGSL fallback by [@​Zyie](https://github.com/Zyie) in [#​12090](https://github.com/pixijs/pixijs/pull/12090)
##### 🐛 Fixed
- fix: stop Geometry.destroy from double-freeing the index buffer by [@​GoodBoyDigital](https://github.com/GoodBoyDigital) in [#​12144](https://github.com/pixijs/pixijs/pull/12144)
- fix: support chrome 150+ HTML-in-Canvas upload signatures by [@​Zyie](https://github.com/Zyie) in [#​12077](https://github.com/pixijs/pixijs/pull/12077)
- fix: harden WebGPU render targets, bind groups & pipeline/texture caching by [@​Zyie](https://github.com/Zyie) in [#​12093](https://github.com/pixijs/pixijs/pull/12093)
- fix: prevent double-destroy of render targets on teardown by [@​Zyie](https://github.com/Zyie) in [#​12095](https://github.com/pixijs/pixijs/pull/12095)
- fix: add persistentDeviceId to FederatedPointerEvent by [@​ShiKirill](https://github.com/ShiKirill) in [#​12102](https://github.com/pixijs/pixijs/pull/12102)
- fix: release mask bindings when pooled AlphaMaskEffect returns to the pool by [@​shell362](https://github.com/shell362) in [#​12131](https://github.com/pixijs/pixijs/pull/12131)
- fix: WebGPU sibling sprite masks rendering with each other's mask matrix by [@​GoodBoyDigital](https://github.com/GoodBoyDigital) in [#​12149](https://github.com/pixijs/pixijs/pull/12149)
- fix: account for frame origin and rotation in graphics texture fills by [@​Zyie](https://github.com/Zyie) in [#​12123](https://github.com/pixijs/pixijs/pull/12123)
- fix: handle missing base in bitmap font parsers by [@​Zyie](https://github.com/Zyie) in [#​12121](https://github.com/pixijs/pixijs/pull/12121)
- fix: use the correct vertex for the first edge in Triangle.strokeContains by [@​spokodev](https://github.com/spokodev) in [#​12105](https://github.com/pixijs/pixijs/pull/12105)
- fix: copy radius in RoundedRectangle.copyFrom by [@​spokodev](https://github.com/spokodev) in [#​12129](https://github.com/pixijs/pixijs/pull/12129)
- fix: unregister GraphicsContext listeners on destroy by [@​Srinu520](https://github.com/Srinu520) in [#​12140](https://github.com/pixijs/pixijs/pull/12140)
- fix: rebuild cached bind groups when the GC unloads uniform buffers by [@​GoodBoyDigital](https://github.com/GoodBoyDigital) in [#​12147](https://github.com/pixijs/pixijs/pull/12147)
- fix: substitute Texture.EMPTY when a mask texture is destroyed while still in use by [@​GoodBoyDigital](https://github.com/GoodBoyDigital) in [#​12148](https://github.com/pixijs/pixijs/pull/12148)
- fix: prevent duplicate onRender registrations from same-parent reorders by [@​Zyie](https://github.com/Zyie) in [#​12120](https://github.com/pixijs/pixijs/pull/12120)
##### 🧹 Chores
- chore: tidy cube/mip handling in GPU & GL texture systems by [@​Zyie](https://github.com/Zyie) in [#​12088](https://github.com/pixijs/pixijs/pull/12088)
- fix: make GCSystem lazy-hash-replacement tests independent of real elapsed time by [@​santichausis](https://github.com/santichausis) in [#​12124](https://github.com/pixijs/pixijs/pull/12124)
- fix: raise pixelMatch threshold for html-text-stroke-anchor-tagged visual test by [@​santichausis](https://github.com/santichausis) in [#​12138](https://github.com/pixijs/pixijs/pull/12138)
- fix: stop publish-branch job from poisoning the node_modules cache by [@​Zyie](https://github.com/Zyie) in [#​12152](https://github.com/pixijs/pixijs/pull/12152)
- chore: remove dead <https://pixijs.io/customize> link in v7 migration guide by [@​sanjibani](https://github.com/sanjibani) in [#​12094](https://github.com/pixijs/pixijs/pull/12094)
- chore: export html-source module from docs index by [@​Zyie](https://github.com/Zyie)
#### New Contributors
- [@​ShiKirill](https://github.com/ShiKirill) made their first contribution in [#​12102](https://github.com/pixijs/pixijs/pull/12102)
- [@​sanjibani](https://github.com/sanjibani) made their first contribution in [#​12094](https://github.com/pixijs/pixijs/pull/12094)
- [@​cyphercodes](https://github.com/cyphercodes) made their first contribution in [#​12083](https://github.com/pixijs/pixijs/pull/12083)
- [@​spokodev](https://github.com/spokodev) made their first contribution in [#​12105](https://github.com/pixijs/pixijs/pull/12105)
- [@​Jaybhade](https://github.com/Jaybhade) made their first contribution in [#​12137](https://github.com/pixijs/pixijs/pull/12137)
- [@​Srinu520](https://github.com/Srinu520) made their first contribution in [#​12140](https://github.com/pixijs/pixijs/pull/12140)
- [@​santichausis](https://github.com/santichausis) made their first contribution in [#​12124](https://github.com/pixijs/pixijs/pull/12124)
- [@​shell362](https://github.com/shell362) made their first contribution in [#​12131](https://github.com/pixijs/pixijs/pull/12131)
- [@​TheOnlyJason](https://github.com/TheOnlyJason) made their first contribution in [#​12132](https://github.com/pixijs/pixijs/pull/12132)
**Full Changelog**: <https://github.com/pixijs/pixijs/compare/v8.19.0...v8.20.0>
### [`v8.19.0`](https://github.com/pixijs/pixijs/releases/tag/v8.19.0)
[Compare Source](https://github.com/pixijs/pixijs/compare/v8.18.1...v8.19.0)
#### 💾 Download
Installation:
```bash
npm install pixi.js@8.19.0
```
Development Build:
- <https://cdn.jsdelivr.net/npm/pixi.js@8.19.0/dist/pixi.js>
- <https://cdn.jsdelivr.net/npm/pixi.js@8.19.0/dist/pixi.mjs>
Production Build:
- <https://cdn.jsdelivr.net/npm/pixi.js@8.19.0/dist/pixi.min.js>
- <https://cdn.jsdelivr.net/npm/pixi.js@8.19.0/dist/pixi.min.mjs>
Documentation:
- <https://pixijs.download/v8.19.0/docs/index.html>
#### Changed
##### 🚨 Behavior Change
- fix: Container.updateTransform honors zero scale ([#​12044](https://github.com/pixijs/pixijs/issues/12044)) by [@​Zyie](https://github.com/Zyie) in [#​12046](https://github.com/pixijs/pixijs/pull/12046)
- `Container.updateTransform({ scaleX: 0, scaleY: 0 })` previously coerced a zero scale to `1` (the code used `opts.scaleX || 1`), so passing `0` left the container at full size. It now applies zero scale literally, matching `scale.set(0, 0)`. If you relied on `updateTransform` ignoring a zero scale, stop passing `0` when you mean full scale.
```ts
const container = new Container();
container.updateTransform({ scaleX: 0, scaleY: 0 });
// before: scale coerced to (1, 1) — container stayed full-size
// after: scale applied as (0, 0) — container hidden, matching scale.set(0, 0)
```
- fix: particle container inherit blend mode by [@​DmitriyGolub](https://github.com/DmitriyGolub) in [#​11978](https://github.com/pixijs/pixijs/pull/11978)
- `ParticleContainer` now respects the blend mode inherited from its ancestors. Previously the render pipe read the container's own local `blendMode` instead of the resolved `groupBlendMode`, so setting e.g. `stage.blendMode = 'add'` had no effect on particles. Particles nested under a parent with a non-default blend mode will now render differently (e.g. additive brightening) where they were silently ignored before. A `blendMode` set directly on the `ParticleContainer` is unchanged.
- fix: FillPattern tiling and radial gradient sizing by [@​Zyie](https://github.com/Zyie) in [#​12037](https://github.com/pixijs/pixijs/pull/12037)
- `FillPattern` gains a `textureSpace` option (`'global' | 'local'`), while fixing several long-standing pattern/gradient sizing bugs. `textureSpace` defaults to `'global'`, so patterns now tile continuously across adjacent shapes instead of remapping per shape; `setTransform(matrix)` now applies the matrix you pass directly (it previously inverted and rescaled it by the texture size); and `textureSpace: 'local'` radial gradients now scale to the gradient's outer radius. Existing pattern fills and local radial gradients can render differently.
If you hand-compensated for the old `setTransform` behavior (pre-inverting or scaling by texture size), remove that compensation. The legacy positional `new FillPattern(texture, repetition)` form still works.
```ts
import { Assets, FillPattern, Graphics } from 'pixi.js';
const texture = await Assets.load('pattern.png');
// new options-object constructor with explicit textureSpace
const pattern = new FillPattern({ texture, repetition: 'repeat', textureSpace: 'local' });
const g = new Graphics().rect(0, 0, 200, 100).fill({ fill: pattern });
```
##### 🎁 Added
- feat: add HTML-in-Canvas texture support by [@​Zyie](https://github.com/Zyie) in [#​12053](https://github.com/pixijs/pixijs/pull/12053)
- A new opt-in `pixi.js/html-source` subpath renders live DOM elements into PixiJS textures while the element stays fully interactive in the browser (inputs editable, links clickable, CSS animations running). Use `HTMLSource` for a live element or `ElementImageSource` for an immutable snapshot. The element must be a direct child of the Pixi canvas. Importing the subpath also registers a lowest-priority `Texture.from` fallback for generic HTML elements, so it cannot affect apps that don't import it.
```ts
import { Application, Sprite } from 'pixi.js';
import { HTMLSource } from 'pixi.js/html-source';
const app = new Application();
await app.init({ resizeTo: window });
document.body.appendChild(app.canvas);
const form = document.createElement('form');
form.innerHTML = '<input value="still editable" />';
app.canvas.appendChild(form); // must be a direct child of the Pixi canvas
const sprite = Sprite.from(new HTMLSource({ resource: form, autoUpdate: true }));
app.stage.addChild(sprite); // live DOM mirrored to the GPU; the form stays interactive
```
- feat: implement transientAttachment for MSAA RenderTextures for WebGPU by [@​GoodBoyDigital](https://github.com/GoodBoyDigital) in [#​12050](https://github.com/pixijs/pixijs/pull/12050)
- Texture sources gain an opt-in `transient` flag so the WebGPU backend can discard the MSAA buffer at the end of a render pass (`storeOp: 'discard'`) instead of writing it back to memory, and keep MSAA contents in tile memory on TBDR mobile GPUs where `GPUTextureUsage.TRANSIENT_ATTACHMENT` is available. This cuts memory bandwidth for single-pass MSAA render targets. Only set it on antialiased textures that follow a single-pass-then-discard pattern; a later `loadOp: 'load'` on a transient attachment yields undefined contents. Default is `false`, so existing code is unaffected. A WebGPU-only `renderer.device.extensions.transientAttachment` probe reports device support.
##### 🐛 Fixed
- fix: BitmapText trailing glyph after glyph-less word-break char by [@​Zyie](https://github.com/Zyie) in [#​12035](https://github.com/pixijs/pixijs/pull/12035)
- fix: SplitText crash when text begins with whitespace ([#​12040](https://github.com/pixijs/pixijs/issues/12040)) by [@​Zyie](https://github.com/Zyie) in [#​12041](https://github.com/pixijs/pixijs/pull/12041)
- fix: TilingSprite tileRotation shears pattern on non-square sprites by [@​Zyie](https://github.com/Zyie) in [#​12062](https://github.com/pixijs/pixijs/pull/12062)
- fix: canvas renderer does not round anchor offset when roundPixels is enabled by [@​Clonex](https://github.com/Clonex) in [#​12051](https://github.com/pixijs/pixijs/pull/12051)
- fix: pass renderer's maxBatchableTextures to non-default batchers by [@​SerG-Y](https://github.com/SerG-Y) in [#​12029](https://github.com/pixijs/pixijs/pull/12029)
- fix: handle null from getShaderSource/getShaderInfoLog on lost context ([#​12032](https://github.com/pixijs/pixijs/issues/12032)) by [@​Zyie](https://github.com/Zyie) in [#​12042](https://github.com/pixijs/pixijs/pull/12042)
- fix: GCSystem unload resources before nulling hash entry by [@​Zyie](https://github.com/Zyie) in [#​12038](https://github.com/pixijs/pixijs/pull/12038)
##### 🧹 Chores
- chore: bundle pixijs-skills and add sync workflow by [@​Zyie](https://github.com/Zyie) in [#​12045](https://github.com/pixijs/pixijs/pull/12045)
- Ships 25 PixiJS v8 AI agent skills under `skills/` in the published npm package, available at `node_modules/pixi.js/skills/` after install.
- chore: document blend mode resolution inheritance by [@​MFei8ht](https://github.com/MFei8ht) in [#​12067](https://github.com/pixijs/pixijs/pull/12067)
- chore: restrict postMessage origin in playground for better security by [@​RinZ27](https://github.com/RinZ27) in [#​12055](https://github.com/pixijs/pixijs/pull/12055)
- chore: bump [@​xmldom/xmldom](https://github.com/xmldom/xmldom) from ^0.8.12 to ^0.8.13 by [@​Copilot](https://github.com/Copilot) in [#​12025](https://github.com/pixijs/pixijs/pull/12025)
- chore: bump parse-svg-path by [@​bigtimebuddy](https://github.com/bigtimebuddy) in [#​12071](https://github.com/pixijs/pixijs/pull/12071)
- chore: standardize graphics test naming and expand visual coverage by [@​Zyie](https://github.com/Zyie) in [#​12036](https://github.com/pixijs/pixijs/pull/12036)
- chore: stabilize HTMLText visual tests against CI flakiness by [@​Zyie](https://github.com/Zyie) in [#​12039](https://github.com/pixijs/pixijs/pull/12039)
- chore: pin node to 24.15.0 and update GitHub Actions by [@​Zyie](https://github.com/Zyie) in [#​12070](https://github.com/pixijs/pixijs/pull/12070)
- chore: add missing path pattern to CODEOWNERS by [@​Copilot](https://github.com/Copilot) in [#​12027](https://github.com/pixijs/pixijs/pull/12027)
#### New Contributors
- [@​RinZ27](https://github.com/RinZ27) made their first contribution in [#​12055](https://github.com/pixijs/pixijs/pull/12055)
- [@​MFei8ht](https://github.com/MFei8ht) made their first contribution in [#​12067](https://github.com/pixijs/pixijs/pull/12067)
- [@​Clonex](https://github.com/Clonex) made their first contribution in [#​12051](https://github.com/pixijs/pixijs/pull/12051)
**Full Changelog**: <https://github.com/pixijs/pixijs/compare/v8.18.1...v8.19.0>
### [`v8.18.1`](https://github.com/pixijs/pixijs/releases/tag/v8.18.1)
[Compare Source](https://github.com/pixijs/pixijs/compare/v8.18.0...v8.18.1)
#### 💾 Download
Installation:
```bash
npm install pixi.js@8.18.1
```
Development Build:
- <https://cdn.jsdelivr.net/npm/pixi.js@8.18.1/dist/pixi.js>
- <https://cdn.jsdelivr.net/npm/pixi.js@8.18.1/dist/pixi.mjs>
Production Build:
- <https://cdn.jsdelivr.net/npm/pixi.js@8.18.1/dist/pixi.min.js>
- <https://cdn.jsdelivr.net/npm/pixi.js@8.18.1/dist/pixi.min.mjs>
Documentation:
- <https://pixijs.download/v8.18.1/docs/index.html>
#### Changed
##### 🐛 Fixed
- fix: prevent error when using `Application.domContainerRoot` in Node.js by [@​UlyssesZh](https://github.com/UlyssesZh) in [#​12017](https://github.com/pixijs/pixijs/pull/12017)
### [`v8.18.0`](https://github.com/pixijs/pixijs/releases/tag/v8.18.0)
[Compare Source](https://github.com/pixijs/pixijs/compare/v8.17.1...v8.18.0)
#### 💾 Download
Installation:
```bash
npm install pixi.js@8.18.0
```
Development Build:
- <https://cdn.jsdelivr.net/npm/pixi.js@8.18.0/dist/pixi.js>
- <https://cdn.jsdelivr.net/npm/pixi.js@8.18.0/dist/pixi.mjs>
Production Build:
- <https://cdn.jsdelivr.net/npm/pixi.js@8.18.0/dist/pixi.min.js>
- <https://cdn.jsdelivr.net/npm/pixi.js@8.18.0/dist/pixi.min.mjs>
Documentation:
- <https://pixijs.download/v8.18.0/docs/index.html>
#### Changed
##### 🚨 Behavior Change
- fix: `text.width` and word wrap returning incorrect values by [@​Zyie](https://github.com/Zyie) in [#​12007](https://github.com/pixijs/pixijs/pull/12007)
- `Text`/`HTMLText`/`BitmapText` with `wordWrap: true` and non-left `align` (`center`/`right`/`justify`) now return the true rendered width from `text.width` instead of reporting `wordWrapWidth`. If you relied on `text.width === wordWrapWidth` for layout, use `wordWrapWidth` directly or wrap the text in a sized container.
```ts
const text = new Text({
text: 'hello',
style: { wordWrap: true, wordWrapWidth: 800, align: 'center' },
});
// before: text.width === 800
// after: text.width reflects the rendered string width
```
##### 🎁 Added
- feat: add `graphicsContextToSvg()` for Graphics → SVG export by [@​GoodBoyDigital](https://github.com/GoodBoyDigital) in [#​11989](https://github.com/pixijs/pixijs/pull/11989)
- Adds `graphicsContextToSvg(source, precision?)`, a pure function that serializes a `Graphics` or `GraphicsContext` to a self-contained SVG string. Supports rects, circles, ellipses, rounded rects, polygons, bezier/quadratic/arc paths, strokes, holes (via `fill-rule="evenodd"`), and linear/radial gradients.
```ts
import { Graphics, graphicsContextToSvg } from 'pixi.js';
const g = new Graphics()
.rect(0, 0, 100, 50)
.fill({ color: 0xff0000 })
.circle(150, 25, 25)
.stroke({ color: 0x0000ff, width: 4 });
const svgString = graphicsContextToSvg(g, 2);
await navigator.clipboard.writeText(svgString);
```
- feat: add mask channel selection for sprite masks by [@​Zyie](https://github.com/Zyie) in [#​11987](https://github.com/pixijs/pixijs/pull/11987)
- `setMask()` gains a `channel` option (`'red' | 'alpha'`) to pick which texture channel drives visibility, matching how design tools like Figma apply PNG masks. Default remains `'red'`.
```ts
import { Assets, Sprite } from 'pixi.js';
const photo = new Sprite(await Assets.load('photo.png'));
const maskSprite = new Sprite(await Assets.load('mask-alpha.png'));
photo.setMask({
mask: maskSprite,
channel: 'alpha',
});
```
- feat: allow `preference` to accept an array of renderer types by [@​Zyie](https://github.com/Zyie) in [#​11963](https://github.com/pixijs/pixijs/pull/11963)
- `autoDetectRenderer` and `Application.init` now accept an array of renderer names for `preference`, letting you restrict the fallback chain (e.g. disable WebGPU entirely) rather than only reorder it. A new `RendererPreference` type is exported.
```ts
import { Application, autoDetectRenderer } from 'pixi.js';
const renderer = await autoDetectRenderer({
preference: ['webgl', 'canvas'],
});
const app = new Application();
await app.init({ preference: ['webgl', 'canvas'] });
```
- feat: provide a getter to the domElement via `app.domContainerRoot` by [@​carlos22](https://github.com/carlos22) in [#​11974](https://github.com/pixijs/pixijs/pull/11974)
- `Application` exposes a read-only `domContainerRoot` getter returning the `HTMLDivElement` that wraps all `DOMContainer` elements, so apps can add CSS classes, inline styles, or customize the DOM overlay root.
```ts
import { Application } from 'pixi.js';
const app = new Application();
await app.init({ resizeTo: window });
app.domContainerRoot.classList.add('pixi-dom-layer');
app.domContainerRoot.style.pointerEvents = 'auto';
```
- feat: add `width` option to `MeshRope` by [@​mehmetcanakbay](https://github.com/mehmetcanakbay) in [#​11990](https://github.com/pixijs/pixijs/pull/11990)
- `MeshRope` now accepts an explicit `width` for rope thickness, decoupling it from the texture's height. Omitting `width` preserves the previous `texture.height` default.
```ts
import { MeshRope, Point, Texture } from 'pixi.js';
const points = [new Point(0, 0), new Point(100, 50), new Point(200, 0)];
const rope = new MeshRope({
texture: Texture.from('snake.png'),
points,
width: 40,
});
```
- feat: add a default anchor to texture generation by [@​ksv90](https://github.com/ksv90) in [#​12011](https://github.com/pixijs/pixijs/pull/12011)
- `renderer.generateTexture()` accepts a `defaultAnchor` option that's forwarded onto the produced `Texture`. `RenderTexture.create()` also gains a `textureOptions` parameter to pass through fields like `defaultAnchor` to the underlying `Texture`.
```ts
import { Graphics, Sprite } from 'pixi.js';
const shape = new Graphics().circle(0, 0, 50).fill(0xff3366);
const texture = app.renderer.generateTexture({
target: shape,
defaultAnchor: { x: 0.5, y: 0.5 },
});
const sprite = new Sprite(texture);
sprite.position.set(200, 200); // centered by default
```
##### 🐛 Fixed
- fix: stroke-only Graphics masks now render correctly on Canvas renderer by [@​DmitriyGolub](https://github.com/DmitriyGolub) in [#​11979](https://github.com/pixijs/pixijs/pull/11979)
- fix: skip `_applyMipRange` for single-mip textures (iOS 18.0–18.1) by [@​GoodBoyDigital](https://github.com/GoodBoyDigital) in [#​11985](https://github.com/pixijs/pixijs/pull/11985)
- fix: stale `TextureMatrix` when pooled textures reuse the same reference by [@​GoodBoyDigital](https://github.com/GoodBoyDigital) in [#​11997](https://github.com/pixijs/pixijs/pull/11997)
- fix: unhandled actions in `GraphicsPath.transform()` switch statement by [@​Zyie](https://github.com/Zyie) in [#​11996](https://github.com/pixijs/pixijs/pull/11996)
- fix(VideoSource): avoid play/mediaReady recursion before video dimensions ([#​11133](https://github.com/pixijs/pixijs/issues/11133)) by [@​satoren](https://github.com/satoren) in [#​12009](https://github.com/pixijs/pixijs/pull/12009)
- fix: `text.width` and word wrap returning incorrect values by [@​Zyie](https://github.com/Zyie) in [#​12007](https://github.com/pixijs/pixijs/pull/12007)
- fix: handle literal `<` characters in `parseTaggedText` by [@​glennflanagan](https://github.com/glennflanagan) in [#​11972](https://github.com/pixijs/pixijs/pull/11972)
- fix: move `CanvasFilterSystem` to the filters module by [@​Zyie](https://github.com/Zyie) in [#​12014](https://github.com/pixijs/pixijs/pull/12014)
- fix: `SplitText` baseline mismatch when `tagStyles` used with `lineHeight` by [@​Zyie](https://github.com/Zyie) in [#​12008](https://github.com/pixijs/pixijs/pull/12008)
- fix: `TilingSprite.tilePosition` divided by resolution when using Canvas renderer by [@​Zyie](https://github.com/Zyie) in [#​11957](https://github.com/pixijs/pixijs/pull/11957)
- fix: move `CanvasFilterSystem` to filters module by [@​Zyie](https://github.com/Zyie) in [#​12014](https://github.com/pixijs/pixijs/pull/12014)
- fix(VideoSource): avoid play/mediaReady recursion before video dimensions by [@​satoren](https://github.com/satoren) in [#​12009](https://github.com/pixijs/pixijs/pull/12009)
##### 🧹 Chores
- chore: bump `@xmldom/xmldom` to 0.8.12 by [@​Zyie](https://github.com/Zyie) in [#​12016](https://github.com/pixijs/pixijs/pull/12016)
#### New Contributors
- [@​mehmetcanakbay](https://github.com/mehmetcanakbay) made their first contribution in [#​11990](https://github.com/pixijs/pixijs/pull/11990)
- [@​DmitriyGolub](https://github.com/DmitriyGolub) made their first contribution in [#​11979](https://github.com/pixijs/pixijs/pull/11979)
- [@​carlos22](https://github.com/carlos22) made their first contribution in [#​11974](https://github.com/pixijs/pixijs/pull/11974)
- [@​satoren](https://github.com/satoren) made their first contribution in [#​12009](https://github.com/pixijs/pixijs/pull/12009)
- [@​ksv90](https://github.com/ksv90) made their first contribution in [#​12011](https://github.com/pixijs/pixijs/pull/12011)
- [@​glennflanagan](https://github.com/glennflanagan) made their first contribution in [#​11972](https://github.com/pixijs/pixijs/pull/11972)
### [`v8.17.1`](https://github.com/pixijs/pixijs/releases/tag/v8.17.1)
[Compare Source](https://github.com/pixijs/pixijs/compare/v8.17.0...v8.17.1)
#### 💾 Download
Installation:
```bash
npm install pixi.js@8.17.1
```
Development Build:
- <https://cdn.jsdelivr.net/npm/pixi.js@8.17.1/dist/pixi.js>
- <https://cdn.jsdelivr.net/npm/pixi.js@8.17.1/dist/pixi.mjs>
Production Build:
- <https://cdn.jsdelivr.net/npm/pixi.js@8.17.1/dist/pixi.min.js>
- <https://cdn.jsdelivr.net/npm/pixi.js@8.17.1/dist/pixi.min.mjs>
Documentation:
- <https://pixijs.download/v8.17.1/docs/index.html>
#### Changed
##### 🐛 Fixed
- fix: compressed textures ignoring resolution from URL (e.g. `@0.75x`) by [@​Zyie](https://github.com/Zyie) in [#​11960](https://github.com/pixijs/pixijs/pull/11960)
- fix: center-align text correctly when words exceed wordWrapWidth by [@​Zyie](https://github.com/Zyie) in [#​11966](https://github.com/pixijs/pixijs/pull/11966)
##### 🧹 Chores
- chore: fix BitmapFont char keys from char codes to character strings by [@​Zyie](https://github.com/Zyie) in [#​11967](https://github.com/pixijs/pixijs/pull/11967)
- fix: add secrets: inherit to publish-switch workflow for S3 docs upload by [@​Zyie](https://github.com/Zyie) in [#​11962](https://github.com/pixijs/pixijs/pull/11962)
### [`v8.17.0`](https://github.com/pixijs/pixijs/releases/tag/v8.17.0)
[Compare Source](https://github.com/pixijs/pixijs/compare/v8.16.0...v8.17.0)
#### 💾 Download
Installation:
```bash
npm install pixi.js@8.17.0
```
Development Build:
- <https://cdn.jsdelivr.net/npm/pixi.js@8.17.0/dist/pixi.js>
- <https://cdn.jsdelivr.net/npm/pixi.js@8.17.0/dist/pixi.mjs>
Production Build:
- <https://cdn.jsdelivr.net/npm/pixi.js@8.17.0/dist/pixi.min.js>
- <https://cdn.jsdelivr.net/npm/pixi.js@8.17.0/dist/pixi.min.mjs>
Documentation:
- <https://pixijs.download/v8.17.0/docs/index.html>
#### Changed
##### 🚨 Behavior Change
- `BlurFilter` now uses an optimized halving strength scheme by default, which changes visual output compared to previous versions. Set `legacy: true` to restore the old behavior.
```ts
new BlurFilter({ legacy: true });
// or globally:
BlurFilter.defaultOptions.legacy = true;
```
- Text with `align: 'justify'` now uses `wordWrapWidth` for width calculation instead of `maxLineWidth`, matching CSS behavior. The last line is no longer stretched.
- `breakWords: true` in `HTMLText` now correctly uses CSS `word-break: break-word` instead of `break-all` to match behavior of other text renderers.
##### 🎁 Added
- feat: add tagged text support to canvasTextSplit by [@​Zyie](https://github.com/Zyie) in [#​11949](https://github.com/pixijs/pixijs/pull/11949)
- `SplitText` now supports `tagStyles`, so styled runs (e.g. `<red>Hello</red> <blue>World</blue>`) are correctly split into per-character `Text` objects with individual styles preserved.
- feat: Improves text rendering and layout handling by [@​Zyie](https://github.com/Zyie) in [#​11947](https://github.com/pixijs/pixijs/pull/11947)
- Bitmap text now supports `whiteSpace` modes (`normal`, `pre`, `nowrap`, `pre-line`, `pre-wrap`) with proper space/newline collapsing
- Bitmap text word wrap supports break-after characters (hyphens, en-dash, em-dash, soft hyphen)
- Canvas text and split text now render `align: 'justify'` by distributing extra word spacing
- Dynamic bitmap fonts scale drop shadow `blur` and `distance` proportionally to font size
- Bitmap font `xAdvance` now uses true advance width from `measureText()` instead of bounding-box width
- Kerning values correctly scaled by `fontScale` in dynamic bitmap fonts
- feat: add visibleChanged event to container by [@​ikigai-bjorn-s](https://github.com/ikigai-bjorn-s) in [#​11940](https://github.com/pixijs/pixijs/pull/11940)
```ts
container.on('visibleChanged', (visible) => {
console.log('Visibility changed to:', visible);
});
```
- feat: Add function for removing aliases from resolver by [@​Sertion](https://github.com/Sertion) in [#​11921](https://github.com/pixijs/pixijs/pull/11921)
##### 🐛 Fixed
- fix: prevent filter corruption with TexturePool mipmap separation by [@​vkarponen](https://github.com/vkarponen) in [#​11865](https://github.com/pixijs/pixijs/pull/11865)
- fix: blur by reducing strength on each pass by [@​Zyie](https://github.com/Zyie) in [#​11909](https://github.com/pixijs/pixijs/pull/11909)
- fix: Reduce work done by the blur shader by [@​Sertion](https://github.com/Sertion) in [#​11917](https://github.com/pixijs/pixijs/pull/11917)
- fix: Correctly handle offset in ColorMatrixFilter by [@​Sertion](https://github.com/Sertion) in [#​11925](https://github.com/pixijs/pixijs/pull/11925)
- fix: Apply global filter offset to ParticleContainer rendering by [@​GoodBoyDigital](https://github.com/GoodBoyDigital) in [#​11882](https://github.com/pixijs/pixijs/pull/11882)
- fix: respect texture trim offset in NineSliceSprite by [@​shtse8](https://github.com/shtse8) in [#​11919](https://github.com/pixijs/pixijs/pull/11919)
- fix: return valid empty bounds from empty Graphics by [@​GoodBoyDigital](https://github.com/GoodBoyDigital) in [#​11908](https://github.com/pixijs/pixijs/pull/11908)
- fix: Graphics getLocalBounds returns stale data between operations in same frame by [@​GoodBoyDigital](https://github.com/GoodBoyDigital) in [#​11886](https://github.com/pixijs/pixijs/pull/11886)
- fix: Graphics bounds account for miter joins at sharp angles by [@​GoodBoyDigital](https://github.com/GoodBoyDigital) in [#​11884](https://github.com/pixijs/pixijs/pull/11884)
- fix: BindGroup crash when resource destroyed in batched group by [@​GoodBoyDigital](https://github.com/GoodBoyDigital) in [#​11876](https://github.com/pixijs/pixijs/pull/11876)
- fix: remove listener from old resource in BindGroup.setResource by [@​GoodBoyDigital](https://github.com/GoodBoyDigital) in [#​11901](https://github.com/pixijs/pixijs/pull/11901)
- fix: removeAllListeners() on Renderer.destroy() by [@​taye](https://github.com/taye) in [#​11951](https://github.com/pixijs/pixijs/pull/11951)
- fix: correct minFPS/maxFPS mutual clamping in Ticker by [@​Zyie](https://github.com/Zyie) in [#​11952](https://github.com/pixijs/pixijs/pull/11952)
- fix: invalidate cached source in color.setAlpha() to prevent stale alpha reuse by [@​darthvader58](https://github.com/darthvader58) in [#​11924](https://github.com/pixijs/pixijs/pull/11924)
- fix: emit removed event when using addChildAt by [@​aSipz](https://github.com/aSipz) in [#​11912](https://github.com/pixijs/pixijs/pull/11912)
- fix: guard against missing characters and kerning data in bitmap text by [@​stargazer-2697](https://github.com/stargazer-2697) in [#​11907](https://github.com/pixijs/pixijs/pull/11907)
- fix: copy modifier keys from TouchEvent to normalized touch objects by [@​kaigritun](https://github.com/kaigritun) in [#​11906](https://github.com/pixijs/pixijs/pull/11906)
- fix: use quotes when loading a Web font to support old versions of Chrome by [@​adngdb](https://github.com/adngdb) in [#​11902](https://github.com/pixijs/pixijs/pull/11902)
- fix: move DOMPipe registration to init.ts to fix Web Worker support by [@​Zyie](https://github.com/Zyie) in [#​11953](https://github.com/pixijs/pixijs/pull/11953)
- fix: clarify BackgroundLoader cache behavior in documentation by [@​imuday984](https://github.com/imuday984) in [#​11935](https://github.com/pixijs/pixijs/pull/11935)
##### 🧹 Chores
- chore: Add PixiJS development playground by [@​GoodBoyDigital](https://github.com/GoodBoyDigital) in [#​11878](https://github.com/pixijs/pixijs/pull/11878)
- chore: overhaul documentation system with TypeDoc plugins, examples, and guides by [@​Zyie](https://github.com/Zyie) in [#​11905](https://github.com/pixijs/pixijs/pull/11905)
- chore: consolidate build and test scripts by [@​Zyie](https://github.com/Zyie) in [#​11910](https://github.com/pixijs/pixijs/pull/11910)
- chore: expand build, test, and API documentation by [@​Zyie](https://github.com/Zyie) in [#​11956](https://github.com/pixijs/pixijs/pull/11956)
- chore: combine visual test diff output into single labeled image by [@​Zyie](https://github.com/Zyie) in [#​11954](https://github.com/pixijs/pixijs/pull/11954)
- chore: add ESLint rule enforcing \~/ imports in test and scene files by [@​Zyie](https://github.com/Zyie) in [#​11899](https://github.com/pixijs/pixijs/pull/11899)
- chore: reorganizes visual scene tests into logical subdirectories by [@​Zyie](https://github.com/Zyie) in [#​11872](https://github.com/pixijs/pixijs/pull/11872)
- chore: Improve test server setup by dynamically allocating port by [@​Zyie](https://github.com/Zyie) in [#​11874](https://github.com/pixijs/pixijs/pull/11874)
- chore: increase HTMLText visual test wait from 250ms to 350ms by [@​Zyie](https://github.com/Zyie) in [#​11891](https://github.com/pixijs/pixijs/pull/11891)
- chore: remove tsc-silent dependency by [@​Zyie](https://github.com/Zyie)
- docs: document filters + RenderLayer limitation by [@​GoodBoyDigital](https://github.com/GoodBoyDigital) in [#​11883](https://github.com/pixijs/pixijs/pull/11883)
#### New Contributors
- [@​adngdb](https://github.com/adngdb) made their first contribution in [#​11902](https://github.com/pixijs/pixijs/pull/11902)
- [@​kaigritun](https://github.com/kaigritun) made their first contribution in [#​11906](https://github.com/pixijs/pixijs/pull/11906)
- [@​darthvader58](https://github.com/darthvader58) made their first contribution in [#​11924](https://github.com/pixijs/pixijs/pull/11924)
- [@​Sertion](https://github.com/Sertion) made their first contribution in [#​11925](https://github.com/pixijs/pixijs/pull/11925)
- [@​shtse8](https://github.com/shtse8) made their first contribution in [#​11919](https://github.com/pixijs/pixijs/pull/11919)
- [@​aSipz](https://github.com/aSipz) made their first contribution in [#​11912](https://github.com/pixijs/pixijs/pull/11912)
- [@​ikigai-bjorn-s](https://github.com/ikigai-bjorn-s) made their first contribution in [#​11940](https://github.com/pixijs/pixijs/pull/11940)
- [@​vkarponen](https://github.com/vkarponen) made their first contribution in [#​11865](https://github.com/pixijs/pixijs/pull/11865)
- [@​imuday984](https://github.com/imuday984) made their first contribution in [#​11935](https://github.com/pixijs/pixijs/pull/11935)
- [@​taye](https://github.com/taye) made their first contribution in [#​11951](https://github.com/pixijs/pixijs/pull/11951)
### [`v8.16.0`](https://github.com/pixijs/pixijs/releases/tag/v8.16.0)
[Compare Source](https://github.com/pixijs/pixijs/compare/v8.15.0...v8.16.0)
#### 💾 Download
Installation:
```bash
npm install pixi.js@8.16.0
```
Development Build:
- <https://cdn.jsdelivr.net/npm/pixi.js@8.16.0/dist/pixi.js>
- <https://cdn.jsdelivr.net/npm/pixi.js@8.16.0/dist/pixi.mjs>
Production Build:
- <https://cdn.jsdelivr.net/npm/pixi.js@8.16.0/dist/pixi.min.js>
- <https://cdn.jsdelivr.net/npm/pixi.js@8.16.0/dist/pixi.min.mjs>
Documentation:
- <https://pixijs.download/v8.16.0/docs/index.html>
#### Changed
##### 🚨 Behavior Change
- `SplitText` now more accurately splits `Text` across a wider range of `TextStyle` configurations. This may result in slight changes to character positioning.
- Using `SplitText.from` from an existing `Text` now correctly transfers the source anchor to the new instance by mapping the anchor to pivot coordinates. This changes layout and positioning compared to previous behavior.
- `SplitBitmapText` now correctly defaults to a `white` fill, matching the behavior of `BitmapText`.
- `HTMLText` now correctly respects `breakWords` and no longer cuts off words that exceed `wordWrapWidth`.
- `HTMLText` now respects the alpha value of its fill and stroke.
- `Text` now correctly aligns when using `align: 'right'` or `align: 'center'`, resulting in a small positional adjustment.
- `Container.cullArea` is now correctly interpreted in the container’s local coordinate space and transformed to global coordinates before culling checks.
```ts
// cullArea is defined in local space and transformed during culling
container.cullArea = new Rectangle(0, 0, 100, 100);
```
* `graphics.texture(texture, 0x000000)` will now correctly apply a black tint
##### 🎁 Added
- feat: Canvas renderer by [@​krzys](https://github.com/krzys) [@​Zyie](https://github.com/Zyie) in [#​11815](https://github.com/pixijs/pixijs/pull/11815)
- Note: This feature is experimental, please let us know if you run into any issues.
```ts
await app.init({
preference: 'canvas'
});
```
- feat: tagged text by [@​Zyie](https://github.com/Zyie) in [#​11827](https://github.com/pixijs/pixijs/pull/11827)
- Note: Currently only works for `Text`/`HTMLText`, `BitmapText` support coming soon
```ts
const text = new Text({
text: '<bold>Important:</bold> This is <highlight>highlighted</highlight> text',
style: {
fontFamily: 'Arial',
fontSize: 28,
fill: 'white',
tagStyles: {
bold: { fontWeight: 'bold', fill: 'yellow' },
highlight: { fill: 'cyan', fontSize: 32 }
}
}
});
```
- feat: improve stability of SplitText by [@​Zyie](https://github.com/Zyie) in [#​11858](https://github.com/pixijs/pixijs/pull/11858)
- SplitText now fully mirrors Text behavior and regenerates automatically when its TextStyle changes via `text.styleChanged()`
```ts
splitText.style.fontSize = 32
splitText.styleChanged()
```
- feat: external texture support by [@​astralarya](https://github.com/astralarya) [@​GoodBoyDigital](https://github.com/GoodBoyDigital) in [#​11846](https://github.com/pixijs/pixijs/pull/11846) [#​11861](https://github.com/pixijs/pixijs/pull/11861)
- feat: add parseSync to spritesheet by [@​jimhigson](https://github.com/jimhigson) in [#​11794](https://github.com/pixijs/pixijs/pull/11794)
- feat: improved Pool typing for pool.get() method by [@​unstoppablecarl](https://github.com/unstoppablecarl) in [#​11799](https://github.com/pixijs/pixijs/pull/11799)
- feat: add cube texture by [@​GoodBoyDigital](https://github.com/GoodBoyDigital) in [#​11800](https://github.com/pixijs/pixijs/pull/11800)
- by [@​GoodBoyDigital](https://github.com/GoodBoyDigital) in
- feat: Implement mip level rendering support in the rendering system by [@​GoodBoyDigital](https://github.com/GoodBoyDigital) in [#​11801](https://github.com/pixijs/pixijs/pull/11801)
- feat: render to array layer by [@​GoodBoyDigital](https://github.com/GoodBoyDigital) in [#​11803](https://github.com/pixijs/pixijs/pull/11803)
##### 🐛 Fixed
- fix: Improve HTML text measurement accuracy and add comprehensive test scenes by [@​Zyie](https://github.com/Zyie) in [#​11862](https://github.com/pixijs/pixijs/pull/11862)
- fix: project container.cullArea from local to global coordinate space before doing cull check by [@​jujurocket](https://github.com/jujurocket) in [#​11598](https://github.com/pixijs/pixijs/pull/11598)
- fix: use vColor instead of localUniforms.uColor in WebGPU MSDF shader by [@​Riphal](https://github.com/Riphal) in [#​11848](https://github.com/pixijs/pixijs/pull/11848)
- fix: preserve VAO cache in GlGeometrySystem by [@​GoodBoyDigital](https://github.com/GoodBoyDigital) in [#​11863](https://github.com/pixijs/pixijs/pull/11863)
- fix: GC system to ensure render groups are marked as dirty by [@​Zyie](https://github.com/Zyie) in [#​11842](https://github.com/pixijs/pixijs/pull/11842)
- fix: SplitBitmapText requires "fill: 'white'" by [@​GiorgiMaziashvili](https://github.com/GiorgiMaziashvili) in [#​11721](https://github.com/pixijs/pixijs/pull/11721)
- fix: preserve generic type parameters in WGSL struct reflection by [@​stargazer-2697](https://github.com/stargazer-2697) in [#​11855](https://github.com/pixijs/pixijs/pull/11855)
- fix: improve extractAttributesFromGpuProgram to support struct-based inputs by [@​GoodBoyDigital](https://github.com/GoodBoyDigital) in [#​11796](https://github.com/pixijs/pixijs/pull/11796)
- fix: improves tree-shaking by optimizing module imports by [@​Zyie](https://github.com/Zyie) in [#​11833](https://github.com/pixijs/pixijs/pull/11833)
- fix: disambiguate falsey tint with black uint by [@​bigtimebuddy](https://github.com/bigtimebuddy) in [#​11831](https://github.com/pixijs/pixijs/pull/11831)
- fix: BitmapFontManager getFont emitting TextStyle update event by [@​subhu339](https://github.com/subhu339) in [#​11835](https://github.com/pixijs/pixijs/pull/11835)
- fix: allow custom parsers to override src in Resolver ([#​11828](https://github.com/pixijs/pixijs/issues/11828)) by [@​GoodBoyDigital](https://github.com/GoodBoyDigital) in [#​11849](https://github.com/pixijs/pixijs/pull/11849)
- fix: recognise WGSL vertex attributes followed by closing parenthesis by [@​stargazer-2697](https://github.com/stargazer-2697) in [#​11854](https://github.com/pixijs/pixijs/pull/11854)
- fix: Video Loader Not Catching Load Errors by [@​stargazer-2697](https://github.com/stargazer-2697) in [#​11856](https://github.com/pixijs/pixijs/pull/11856)
##### 🧹 Chores
- chore: add visual tests for text rendering features by [@​Zyie](https://github.com/Zyie) in [#​11825](https://github.com/pixijs/pixijs/pull/11825)
- chore: Upgrades dependencies by [@​Zyie](https://github.com/Zyie) in [#​11806](https://github.com/pixijs/pixijs/pull/11806)
- chore: guide to use envinfo to get environment information by [@​Typed](https://github.com/Typed) SIGTERM in [#​11859](https://github.com/pixijs/pixijs/pull/11859)
- chore: optimize fastCopy with waterfall typed array selection by [@​GoodBoyDigital](https://github.com/GoodBoyDigital) in [#​11798](https://github.com/pixijs/pixijs/pull/11798)
- chore: use texImage2D instead of texSubImage2D for video in Safari by [@​GoodBoyDigital](https://github.com/GoodBoyDigital) in [#​11867](https://github.com/pixijs/pixijs/pull/11867)
#### New Contributors
- [@​subhu339](https://github.com/subhu339) made their first contribution in [#​11835](https://github.com/pixijs/pixijs/pull/11835)
- [@​stargazer-2697](https://github.com/stargazer-2697) made their first contribution in [#​11854](https://github.com/pixijs/pixijs/pull/11854)
- [@​GiorgiMaziashvili](https://github.com/GiorgiMaziashvili) made their first contribution in [#​11721](https://github.com/pixijs/pixijs/pull/11721)
- [@​Riphal](https://github.com/Riphal) made their first contribution in [#​11848](https://github.com/pixijs/pixijs/pull/11848)
- [@​jujurocket](https://github.com/jujurocket) made their first contribution in [#​11598](https://github.com/pixijs/pixijs/pull/11598)
- [@​krzys](https://github.com/krzys) made their first contribution in [#​11815](https://github.com/pixijs/pixijs/pull/11815)
</details>
<details>
<summary>prettier/prettier (prettier)</summary>
### [`v3.9.10`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#3910)
[Compare Source](https://github.com/prettier/prettier/compare/3.9.9...3.9.10)
[diff](https://github.com/prettier/prettier/compare/3.9.9...3.9.10)
##### Markdown: Update `micromark-extension-gfm-table` to fix the table parse issue on performance ([#​20266](https://github.com/prettier/prettier/pull/20266) by [@​fisker](https://github.com/fisker))
See [micromark/micromark-extension-gfm-table@`4f43ead`](https://github.com/micromark/micromark-extension-gfm-table/commit/4f43ead37b786bc531d924530d4ab4c714886267) for details.
### [`v3.9.9`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#399)
[Compare Source](https://github.com/prettier/prettier/compare/3.9.8...3.9.9)
[diff](https://github.com/prettier/prettier/compare/3.9.8...3.9.9)
##### Markdown: Fix text with `$` been incorrectly parsed as math syntax ([#​20140](https://github.com/prettier/prettier/pull/20140) by [@​fisker](https://github.com/fisker))
<!-- prettier-ignore -->
```md
<!-- Input -->
**Uses $FOO** from `a.sh` and `b.sh`, plus `$BAR` from `c.sh`, before anything else runs here.
<!-- Prettier 3.9.8 -->
**Uses $FOO** from `a.sh` and `b.sh`, plus `$BAR`from`c.sh`, before anything else runs here.
<!-- Prettier 3.9.9 -->
**Uses $FOO** from `a.sh` and `b.sh`, plus `$BAR` from `c.sh`, before anything else runs here.
```
### [`v3.9.8`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#398)
[Compare Source](https://github.com/prettier/prettier/compare/3.9.7...3.9.8)
[diff](https://github.com/prettier/prettier/compare/3.9.7...3.9.8)
##### Markdown: Don't let Liquid objects interrupt paragraphs ([#​20087](https://github.com/prettier/prettier/pull/20087) by [@​seiyab](https://github.com/seiyab))
<!-- prettier-ignore -->
```markdown
<!-- Input -->
If `module` is not a [`WebAssembly.Module`](/en-US/docs/WebAssembly/Reference/JavaScript_interface/Module) object instance, a
{{jsxref("TypeError")}} is thrown.
<!-- Prettier 3.9.7 -->
If `module` is not a [`WebAssembly.Module`](/en-US/docs/WebAssembly/Reference/JavaScript_interface/Module) object instance, a
{{jsxref("TypeError")}} is thrown.
<!-- Prettier 3.9.8 -->
If `module` is not a [`WebAssembly.Module`](/en-US/docs/WebAssembly/Reference/JavaScript_interface/Module) object instance, a
{{jsxref("TypeError")}} is thrown.
```
### [`v3.9.7`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#397)
[Compare Source](https://github.com/prettier/prettier/compare/3.9.6...3.9.7)
[diff](https://github.com/prettier/prettier/compare/3.9.6...3.9.7)
##### Markdown: Prevent indentation drift in list-item code blocks ([#​19647](https://github.com/prettier/prettier/pull/19647), [#​19990](https://github.com/prettier/prettier/pull/19990) by [@​Austin1serb](https://github.com/Austin1serb), [@​giaBaoJS](https://github.com/giaBaoJS))
<!-- prettier-ignore -->
```markdown
<!-- Input -->
- [x] short first line.
second paragraph at six spaces that wraps
onto another line here.
<!-- Prettier 3.9.6 -->
- [x] short first line.
second paragraph at six spaces that wraps
onto another line here.
<!-- Prettier 3.9.7 -->
- [x] short first line.
second paragraph at six spaces that wraps
onto another line here.
```
##### JavaScript: Fix embedded template literal idempotency ([#​19725](https://github.com/prettier/prettier/pull/19725) by [@​fisker](https://github.com/fisker))
<!-- prettier-ignore -->
```jsx
// Input
const foo = html`
<div>${getText({
value,
})}</div>
`;
// Prettier 3.9.6 (first format)
const foo = html`
<div>
${getText({
value,
})}
</div>
`;
// Prettier 3.9.6 (second format)
const foo = html`
<div>
${getText({
value,
})}
</div>
`;
// Prettier 3.9.7
const foo = html`
<div>
${getText({
value,
})}
</div>
`;
```
##### Markdown: Preserve Liquid blocks after Markdown tables ([#​19730](https://github.com/prettier/prettier/pull/19730) by [@​wanxiankai](https://github.com/wanxiankai), [@​seiyab](https://github.com/seiyab))
<!-- prettier-ignore -->
```markdown
<!-- Input -->
| Argument | Type |
| -------- | ---- |
{% set default_params = {
"model": ["str"],
} %}
<!-- Prettier 3.9.6 -->
| Argument | Type |
| ------------------------- | ---- |
| {% set default_params = { |
"model": ["str"],
} %}
<!-- Prettier 3.9.7 -->
| Argument | Type |
| -------- | ---- |
{% set default_params = {
"model": ["str"],
} %}
```
##### Markdown: Preserve single tildes in Markdown ([#​19739](https://github.com/prettier/prettier/pull/19739) by [@​lazerg](https://github.com/lazerg))
Since 3.9.0, single-tilde spans like `H~2~O` were rewritten to double tildes, turning subscript syntax into strike-through. Only double tildes are treated that way now, matching GitHub.
<!-- prettier-ignore -->
```markdown
<!-- Input -->
H~2~O
<!-- Prettier 3.9.6 -->
H~~2~~O
<!-- Prettier 3.9.7 -->
H~2~O
```
##### Markdown: Fix Markdown blockquote containing `>` characters ([#​19802](https://github.com/prettier/prettier/pull/19802) by [@​seiyab](https://github.com/seiyab))
<!-- prettier-ignore -->
```md
<!-- Input -->
> **test**\>
<!-- Prettier 3.9.6 -->
> **test**>\>
<!-- Prettier 3.9.7 -->
> **test**\>
```
##### Markdown: Strip blockquote markers from a setext heading's continuation lines ([#​19878](https://github.com/prettier/prettier/pull/19878) by [@​Kjubikstronk](https://github.com/Kjubikstronk))
A setext heading spanning multiple lines inside a blockquote kept the `>` marker of its continuation lines as literal text.
<!-- prettier-ignore -->
```md
<!-- Input -->
> Multi
> Line
> ===
<!-- Prettier 3.9.6 -->
> Multi > Line
> ===
<!-- Prettier 3.9.7 -->
> Multi
> Line
> ===
```
##### Markdown: Fix HTML block indentation drift in markdown list items ([#​19987](https://github.com/prettier/prettier/pull/19987) by [@​lazerg](https://github.com/lazerg))
<!-- prettier-ignore -->
```markdown
<!-- Input -->
1. Enable images:
<p align="center">
<img alt="example">
</p>
<!-- Prettier 3.9.6 (--tab-width=4) -->
1. Enable images:
<p align="center">
<img alt="example">
</p>
<!-- Prettier 3.9.7 (--tab-width=4) -->
1. Enable images:
<p align="center">
<img alt="example">
</p>
```
##### Angular: Support `@boundary` error boundaries ([#​20014](https://github.com/prettier/prettier/pull/20014) by [@​Yahiro025](https://github.com/Yahiro025))
<!-- prettier-ignore -->
```html
<!-- Input -->
@boundary {
<complex-chart [data]="data"/>
}
@error (let err) {
<p>{{err.message}}</p>
}
<!-- Prettier 3.9.6 -->
SyntaxError: Unexpected character "EOF" (Do you have an unescaped "{" in your template? Use "{{ '{' }}") to escape it.) (6:1)
<!-- Prettier 3.9.7 -->
@boundary {
<complex-chart [data]="data" />
} @error (let err) {
<p>{{ err.message }}</p>
}
```
### [`v3.9.6`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#396)
[Compare Source](https://github.com/prettier/prettier/compare/3.9.5...3.9.6)
[diff](https://github.com/prettier/prettier/compare/3.9.5...3.9.6)
##### TypeScript: Preserve quotes for methods named `new` ([#​19621](https://github.com/prettier/prettier/pull/19621) by [@​kovsu](https://github.com/kovsu))
<!-- prettier-ignore -->
```tsx
// Input
interface Container {
"new"(id: string): number;
}
// Prettier 3.9.5
interface Container {
new(id: string): number;
}
// Prettier 3.9.6
interface Container {
"new"(id: string): number;
}
```
##### TypeScript: Support `import defer` ([#​19624](https://github.com/prettier/prettier/pull/19624), [#​19675](https://github.com/prettier/prettier/pull/19675) by [@​fisker](https://github.com/fisker))
<!-- prettier-ignore -->
```tsx
// Input
import defer * as foo from "foo";
// Prettier 3.9.5
import * as foo from "foo";
// Prettier 3.9.6
import defer * as foo from "foo";
```
##### JavaScript: Added a new official plugin `@prettier/plugin-yuku` ([#​19628](https://github.com/prettier/prettier/pull/19628), [#​19629](https://github.com/prettier/prettier/pull/19629) by [@​fisker](https://github.com/fisker))
`@prettier/plugin-yuku` is powered by [Yuku](https://yuku.fyi/) (A high-performance JavaScript/TypeScript compiler toolchain written in Zig).
This plugin includes two new parsers: `yuku` (JavaScript syntax) and `yuku-ts` (TypeScript syntax).
**To use this plugin:**
1. Install the plugin:
```bash
yarn add --dev prettier @prettier/plugin-yuku
```
2. Add it to your `.prettierrc`:
```yaml
plugins:
- "@prettier/plugin-yuku"
```
Due to package size limitations, this plugin is not bundled with the main prettier package and must be installed separately.
For more information, check [the package homepage](https://github.com/prettier/prettier/tree/main/packages/plugin-yuku).
Big thanks to [@​arshad-yaseen](https://github.com/arshad-yaseen) for his excellent work.
### [`v3.9.5`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#395)
[Compare Source](https://github.com/prettier/prettier/compare/3.9.4...3.9.5)
[diff](https://github.com/prettier/prettier/compare/3.9.4...3.9.5)
##### Markdown: Cap ordered list mark at 999,999,999 ([#​19351](https://github.com/prettier/prettier/pull/19351) by [@​tats-u](https://github.com/tats-u))
CommonMark parsers only support ordered list item numbers up to 999,999,999.
With this change, Prettier now caps the ordered list item number at 999,999,999 to ensure that the output is correctly parsed as an ordered list by CommonMark parsers. Numbers larger than 999,999,999 are not parsed as list item numbers and are left unchanged in the output:
<!-- prettier-ignore -->
```markdown
<!-- Input -->
999999998. text
999999998. text
999999998. text
999999998. text
1234567890123456789012) text
<!-- Prettier 3.9.4 -->
999999998. text
999999999. text
1000000000. text
1000000001. text
1234567890123456789012) text
<!-- Prettier 3.9.5 -->
999999998. text
999999999. text
999999999. text
999999999. text
1234567890123456789012) text
```
##### Markdown: Avoid corrupting empty link with title ([#​19487](https://github.com/prettier/prettier/pull/19487) by [@​andersk](https://github.com/andersk))
Do not remove `<>` from an inline link or image with an empty URL and a title, as this removal would change its interpretation.
<!-- prettier-ignore -->
```md
<!-- Input -->
[link](<> "title")
<!-- Prettier 3.9.4 -->
[link]( "title")
<!-- Prettier 3.9.5 -->
[link](<> "title")
```
##### Less: Remove extra spaces after `[` in map lookups ([#​19503](https://github.com/prettier/prettier/pull/19503) by [@​kovsu](https://github.com/kovsu))
<!-- prettier-ignore -->
```less
// Input
.foo {
color: #theme[ primary];
color: #theme[@name];
color: #theme[@@name];
}
// Prettier 3.9.4
.foo {
color: #theme[ primary];
color: #theme[ @name];
color: #theme[ @@name];
}
// Prettier 3.9.5
.foo {
color: #theme[primary];
color: #theme[@name];
color: #theme[@@name];
}
```
##### CSS: Prevent addition space in `type()` with `+` ([#​19516](https://github.com/prettier/prettier/pull/19516) by [@​bigandy](https://github.com/bigandy))
This fixes the addition space before `+` in CSS `type()` declaration. For example `type(<number>+)` was being converted into `type(<number> +)` which is invalid CSS and does not work.
<!-- prettier-ignore -->
```css
/* Input */
div {
border-radius: attr(br type(<length>+));
}
/* Prettier 3.9.4 */
div {
border-radius: attr(br type(<length> +));
}
/* Prettier 3.9.5 */
div {
border-radius: attr(br type(<length>+));
}
```
##### Less: Remove spaces between merge markers and colons ([#​19517](https://github.com/prettier/prettier/pull/19517) by [@​kovsu](https://github.com/kovsu))
<!-- prettier-ignore -->
```less
// Input
a {
box-shadow + : 0 0 1px #​000;
}
// Prettier 3.9.4
a {
box-shadow+ : 0 0 1px #​000;
}
// Prettier 3.9.5
a {
box-shadow+: 0 0 1px #​000;
}
```
##### Markdown: Preserve wiki links with aliases ([#​19527](https://github.com/prettier/prettier/pull/19527) by [@​kovsu](https://github.com/kovsu))
<!-- prettier-ignore -->
```markdown
<!-- Input -->
[[Foo:Bar]]
<!-- Prettier 3.9.4 -->
[[Foo]]
<!-- Prettier 3.9.5 -->
[[Foo:Bar]]
```
##### TypeScript: Fix comments being dropped on shorthand `type` import/export specifiers ([#​19565](https://github.com/prettier/prettier/pull/19565) by [@​kirkwaiblinger](https://github.com/kirkwaiblinger))
<!-- prettier-ignore -->
```tsx
// Input
export { type /* comment */ T } from "foo";
import { type /* comment */ T } from "foo";
// Prettier 3.9.4
Error: Comment "comment" was not printed. Please report this error!
// Prettier 3.9.5
export { type /* comment */ T } from "foo";
import { type /* comment */ T } from "foo";
```
##### Miscellaneous: Preserving comments' `placement` property ([#​19567](https://github.com/prettier/prettier/pull/19567) by [@​Janther](https://github.com/Janther))
Prettier\@​3.9.0 deleted an undocumented property on comments, which was already used by plugins, `comment.placement` is now available again after comment attach.
##### Flow: Stop enforcing empty module declaration to break ([#​19568](https://github.com/prettier/prettier/pull/19568) by [@​fisker](https://github.com/fisker))
<!-- prettier-ignore -->
```flow
// Input
declare module "foo" {}
// Prettier 3.9.4
declare module "foo" {
}
// Prettier 3.9.5
declare module "foo" {}
```
##### Angular: Support expression for exhaustive typechecking ([#​19571](https://github.com/prettier/prettier/pull/19571) by [@​fisker](https://github.com/fisker))
<!-- prettier-ignore -->
```html
<!-- Input -->
@switch (state.mode) {
@default never(state);
}
<!-- Prettier 3.9.4 -->
@switch (state.mode) {
@default never;
}
<!-- Prettier 3.9.5 -->
@switch (state.mode) {
@default never(state);
}
```
##### TypeScript: Ignore comments inside mapped type when checking type parameter comments ([#​19572](https://github.com/prettier/prettier/pull/19572) by [@​fisker](https://github.com/fisker))
<!-- prettier-ignore -->
```tsx
// Input
foo<{
// comment
[key in keyof Foo]: number
}>();
// Prettier 3.9.4
foo<
{
// comment
[key in keyof Foo]: number;
}
>();
// Prettier 3.9.5
foo<{
// comment
[key in keyof Foo]: number;
}>();
```
##### Less: Fix adjacent block comments being corrupted ([#​19574](https://github.com/prettier/prettier/pull/19574) by [@​kovsu](https://github.com/kovsu))
<!-- prettier-ignore -->
```less
// Input
/* a *//* b */
/* a */* {
color: red;
}
// Prettier 3.9.4
/* a */
/* b */
/* a * {
color: red;
}
// Prettier 3.9.5
/* a */ /* b */
/* a */
* {
color: red;
}
```
##### JavaScript: Handle dangling comments in `SwitchStatement` ([#​19581](https://github.com/prettier/prettier/pull/19581) by [@​fisker](https://github.com/fisker))
<!-- prettier-ignore -->
```jsx
// Input
switch (foo) {
// comment
}
// Prettier 3.9.4
switch (
foo
// comment
) {
}
// Prettier 3.9.5
switch (foo) {
// comment
}
```
##### TypeScript: Remove space in comment-only object type ([#​19583](https://github.com/prettier/prettier/pull/19583) by [@​fisker](https://github.com/fisker))
<!-- prettier-ignore -->
```tsx
// Input
var foo = {
/* comment */
};
type Foo = {
/* comment */
};
// Prettier 3.9.4
var foo = {/* comment */};
type Foo = { /* comment */ };
// Prettier 3.9.5
var foo = {/* comment */};
type Foo = {/* comment */};
```
### [`v3.9.4`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#394)
[Compare Source](https://github.com/prettier/prettier/compare/3.9.3...3.9.4)
[diff](https://github.com/prettier/prettier/compare/3.9.3...3.9.4)
##### Angular: Format `@content(name)` -> `@content (name)` to align with other block syntax ([#​19499](https://github.com/prettier/prettier/pull/19499) by [@​fisker](https://github.com/fisker))
<!-- prettier-ignore -->
```html
<!-- Input -->
<FancyButton [label]="title">
@content (icon) {
<span>Icon!</span>
}
@content (description) {
<span>Description text</span>
}
<span>Other children</span>
</FancyButton>
<!-- Prettier 3.9.3 -->
<FancyButton [label]="title">
@content(icon) {
<span>Icon!</span>
}
@content(description) {
<span>Description text</span>
}
<span>Other children</span>
</FancyButton>
<!-- Prettier 3.9.4 -->
<FancyButton [label]="title">
@content (icon) {
<span>Icon!</span>
}
@content (description) {
<span>Description text</span>
}
<span>Other children</span>
</FancyButton>
```
### [`v3.9.3`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#393)
[Compare Source](https://github.com/prettier/prettier/compare/3.9.2...3.9.3)
[diff](https://github.com/prettier/prettier/compare/3.9.1...3.9.3)
##### Markdown: Fix unexpected removal of characters in liquid syntax ([#​19489](https://github.com/prettier/prettier/pull/19489) by [@​seiyab](https://github.com/seiyab))
<!-- prettier-ignore -->
```md
// Input
<!-- Input -->
{{ page.title
}} text
<!-- Prettier 3.9.1 -->
{{ page.title
text
<!-- Prettier 3.9.3 -->
{{ page.title
}} text
```
##### TypeScript: Allow decorators to be used with declare on class fields ([#​19492](https://github.com/prettier/prettier/pull/19492) by [@​evoactivity](https://github.com/evoactivity))
Extensively used within the Ember ecosystem, decorators with `declare` on class fields will ignore the babel parser error and allow Prettier to format the code without breaking it.
<!-- prettier-ignore -->
```ts
// Input
export default class ProjectStatusComponent extends Component<ProjectStatusSig> {
@service declare server: ServerService;
}
// Prettier 3.9.1
// SyntaxError: Decorators can't be used with a declare field. (2:3)
// 1 | export default class ProjectStatusComponent extends Component<ProjectStatusSig> {
//> 2 | @service declare server: ServerService;
// | ^
// 3 | }
// Prettier 3.9.3
export default class ProjectStatusComponent extends Component<ProjectStatusSig> {
@service declare server: ServerService;
}
```
### [`v3.9.2`](https://github.com/prettier/prettier/compare/3.9.1...3.9.2)
[Compare Source](https://github.com/prettier/prettier/compare/3.9.1...3.9.2)
### [`v3.9.1`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#3910)
[Compare Source](https://github.com/prettier/prettier/compare/3.9.0...3.9.1)
[diff](https://github.com/prettier/prettier/compare/3.9.9...3.9.10)
##### Markdown: Update `micromark-extension-gfm-table` to fix the table parse issue on performance ([#​20266](https://github.com/prettier/prettier/pull/20266) by [@​fisker](https://github.com/fisker))
See [micromark/micromark-extension-gfm-table@`4f43ead`](https://github.com/micromark/micromark-extension-gfm-table/commit/4f43ead37b786bc531d924530d4ab4c714886267) for details.
### [`v3.9.0`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#390)
[Compare Source](https://github.com/prettier/prettier/compare/3.8.5...3.9.0)
[diff](https://github.com/prettier/prettier/compare/3.8.5...3.9.0)
🔗 [Release Notes](https://prettier.io/blog/2026/06/27/3.9.0)
### [`v3.8.5`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#385)
[Compare Source](https://github.com/prettier/prettier/compare/3.8.4...3.8.5)
[diff](https://github.com/prettier/prettier/compare/3.8.4...3.8.5)
##### Flow: Support `readonly` as a variance annotation ([#​19022](https://github.com/prettier/prettier/pull/19022) by [@​marcoww6](https://github.com/marcoww6))
Flow now accepts `readonly` as a property variance annotation, equivalent to `+` (covariant/read-only).
<!-- prettier-ignore -->
```jsx
// Input
type T = {
readonly foo: string,
};
// Prettier 3.8.4
SyntaxError
// Prettier 3.8.5
type T = {
readonly foo: string,
};
```
### [`v3.8.4`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#384)
[Compare Source](https://github.com/prettier/prettier/compare/3.8.3...3.8.4)
[diff](https://github.com/prettier/prettier/compare/3.8.3...3.8.4)
##### Markdown: Fix blank lines between list items and nested sub-lists being removed in Markdown/MDX ([#​17746](https://github.com/prettier/prettier/pull/17746) by [@​byplayer](https://github.com/byplayer))
Prettier was removing blank lines between list items and their nested sub-lists, converting loose lists into tight lists and changing their semantic meaning.
<!-- prettier-ignore -->
```markdown
<!-- Input -->
- a
- b
- c
- d
<!-- Prettier 3.8.3 -->
- a
- b
- c
- d
<!-- Prettier 3.8.4 -->
- a
- b
- c
- d
```
</details>
<details>
<summary>sveltejs/prettier-plugin-svelte (prettier-plugin-svelte)</summary>
### [`v4.1.1`](https://github.com/sveltejs/prettier-plugin-svelte/blob/HEAD/CHANGELOG.md#411)
[Compare Source](https://github.com/sveltejs/prettier-plugin-svelte/compare/prettier-plugin-svelte@4.1.0...prettier-plugin-svelte@4.1.1)
##### Patch Changes
- fix: preserve nested rest patterns in `{#each}` destructuring ([#​537](https://github.com/sveltejs/prettier-plugin-svelte/pull/537))
- fix: preserve whitespace inside `<textarea>` (its content is whitespace-sensitive, like `<pre>`) ([#​540](https://github.com/sveltejs/prettier-plugin-svelte/pull/540))
- fix: don't drop `<script>`/`<style>` content when the closing tag has whitespace (`</script >`) ([#​539](https://github.com/sveltejs/prettier-plugin-svelte/pull/539))
</details>
<details>
<summary>sveltejs/language-tools (svelte-check)</summary>
### [`v4.7.7`](https://github.com/sveltejs/language-tools/releases/tag/svelte-check%404.7.7)
[Compare Source](https://github.com/sveltejs/language-tools/compare/svelte-check@4.7.6...svelte-check@4.7.7)
##### Patch Changes
- fix: recognise modern CSS properties such as corner-shape by updating vscode-css-languageservice ([#​3122](https://github.com/sveltejs/language-tools/pull/3122))
- fix: recognise the real `<script>` and `<style>` start tags when a matching token also appears inside the other tag ([#​3079](https://github.com/sveltejs/language-tools/pull/3079))
- fix: resolve symlinked packages when importing their `.svelte` files, so their types are not duplicated ([#​3119](https://github.com/sveltejs/language-tools/pull/3119))
- fix: align default tsconfig "include" logic with tsc/tsserver ([#​3110](https://github.com/sveltejs/language-tools/pull/3110))
- fix: report a failed TypeScript compiler process and exit non-zero when a run fails ([#​3133](https://github.com/sveltejs/language-tools/pull/3133))
- fix: ignore the `.svelte-check` cache directory in `--watch` with `--tsgo` / `--incremental` ([#​3128](https://github.com/sveltejs/language-tools/pull/3128))
- fix: check all files with `--tsgo` / `--incremental` when the tsconfig has no `include` ([#​3138](https://github.com/sveltejs/language-tools/pull/3138))
- fix: disallow `--tsgo` together with `--tsgo-experimental-api` ([#​3128](https://github.com/sveltejs/language-tools/pull/3128))
- fix: type elements from Svelte's `svelte-html.d.ts` with `--tsgo` / `--incremental`, like the language server ([#​3141](https://github.com/sveltejs/language-tools/pull/3141))
### [`v4.7.6`](https://github.com/sveltejs/language-tools/releases/tag/svelte-check%404.7.6)
[Compare Source](https://github.com/sveltejs/language-tools/compare/svelte-check@4.7.5...svelte-check@4.7.6)
##### Patch Changes
- fix: don't log an error for vite configs without a Svelte plugin ([#​3091](https://github.com/sveltejs/language-tools/pull/3091))
- fix: handle SvelteKit 3 having its config merged at the top level ([#​3104](https://github.com/sveltejs/language-tools/pull/3104))
### [`v4.7.5`](https://github.com/sveltejs/language-tools/releases/tag/svelte-check%404.7.5)
[Compare Source](https://github.com/sveltejs/language-tools/compare/svelte-check@4.7.4...svelte-check@4.7.5)
##### Patch Changes
- fix: prevent silent error during start-up caused by unhandled promise ([#​3096](https://github.com/sveltejs/language-tools/pull/3096))
- Updated dependencies \[[`1df53d8`](https://github.com/sveltejs/language-tools/commit/1df53d83049135e5789daf68416334a6f1b6b2c8)]:
- [@​sveltejs/load-config](https://github.com/sveltejs/load-config)@0.2.2
### [`v4.7.4`](https://github.com/sveltejs/language-tools/releases/tag/svelte-check%404.7.4)
[Compare Source](https://github.com/sveltejs/language-tools/compare/svelte-check@4.7.3...svelte-check@4.7.4)
##### Patch Changes
- fix: support TypeScript 7 Stable under npm alias ([#​3073](https://github.com/sveltejs/language-tools/pull/3073))
### [`v4.7.3`](https://github.com/sveltejs/language-tools/releases/tag/svelte-check%404.7.3)
[Compare Source](https://github.com/sveltejs/language-tools/compare/svelte-check@4.7.2...svelte-check@4.7.3)
##### Patch Changes
- feat: zero-config `+error.svelte` props ([#​3076](https://github.com/sveltejs/language-tools/pull/3076))
### [`v4.7.2`](https://github.com/sveltejs/language-tools/releases/tag/svelte-check%404.7.2)
[Compare Source](https://github.com/sveltejs/language-tools/compare/svelte-check@4.7.1...svelte-check@4.7.2)
##### Patch Changes
- fix: resolve tsgo bin path with package.json ([#​3074](https://github.com/sveltejs/language-tools/pull/3074))
- fix: report tsconfig errors in --tsgo-experimental-api ([#​3070](https://github.com/sveltejs/language-tools/pull/3070))
### [`v4.7.1`](https://github.com/sveltejs/language-tools/releases/tag/svelte-check%404.7.1)
[Compare Source](https://github.com/sveltejs/language-tools/compare/svelte-check@4.7.0...svelte-check@4.7.1)
##### Patch Changes
- fix: correctly parse --tsgo-experimental-api flag ([#​3067](https://github.com/sveltejs/language-tools/pull/3067))
### [`v4.7.0`](https://github.com/sveltejs/language-tools/releases/tag/svelte-check%404.7.0)
[Compare Source](https://github.com/sveltejs/language-tools/compare/svelte-check@4.6.0...svelte-check@4.7.0)
##### Minor Changes
- feat: add `--config` option ([#​3066](https://github.com/sveltejs/language-tools/pull/3066))
- feat: svelte-check tsgo support with experimental api ([#​3036](https://github.com/sveltejs/language-tools/pull/3036))
##### Patch Changes
- fix: load esm version of Vite ([#​3065](https://github.com/sveltejs/language-tools/pull/3065))
- fix: stop excluding workspaces under dot-prefixed ancestors ([#​3037](https://github.com/sveltejs/language-tools/pull/3037))
- Updated dependencies \[[`7a3464b`](https://github.com/sveltejs/language-tools/commit/7a3464b54b997c703d5b60cc6ab1ed74c49efffc), [`a2561fc`](https://github.com/sveltejs/language-tools/commit/a2561fc2c52bdcd0bad746261222196fd94d5396)]:
- [@​sveltejs/load-config](https://github.com/sveltejs/load-config)@0.2.0
### [`v4.6.0`](https://github.com/sveltejs/language-tools/releases/tag/svelte-check%404.6.0)
[Compare Source](https://github.com/sveltejs/language-tools/compare/svelte-check@4.5.0...svelte-check@4.6.0)
##### Minor Changes
- feat: support reading Svelte config from `vite.config.js/ts` ([#​3031](https://github.com/sveltejs/language-tools/pull/3031))
##### Patch Changes
- Updated dependencies \[[`151cf45`](https://github.com/sveltejs/language-tools/commit/151cf4593efb4cc3a88cd3c00d5a2f847ac345fe)]:
- [@​sveltejs/load-config](https://github.com/sveltejs/load-config)@0.1.1
### [`v4.5.0`](https://github.com/sveltejs/language-tools/releases/tag/svelte-check%404.5.0)
[Compare Source](https://github.com/sveltejs/language-tools/compare/svelte-check@4.4.8...svelte-check@4.5.0)
##### Minor Changes
- feat: support Svelte 5 declaration tags ([#​3033](https://github.com/sveltejs/language-tools/pull/3033))
##### Patch Changes
- fix: properly handle props with the name `slot` inside Svelte 5 snippets ([#​3030](https://github.com/sveltejs/language-tools/pull/3030))
- feat: add support for svelte config ts/mts files ([#​3009](https://github.com/sveltejs/language-tools/pull/3009))
### [`v4.4.8`](https://github.com/sveltejs/language-tools/releases/tag/svelte-check%404.4.8)
[Compare Source](https://github.com/sveltejs/language-tools/compare/svelte-check@4.4.7...svelte-check@4.4.8)
##### Patch Changes
- feat: typescript 6.0 support ([#​2985](https://github.com/sveltejs/language-tools/pull/2985))
### [`v4.4.7`](https://github.com/sveltejs/language-tools/releases/tag/svelte-check%404.4.7)
[Compare Source](https://github.com/sveltejs/language-tools/compare/svelte-check@4.4.6...svelte-check@4.4.7)
##### Patch Changes
- fix: flush stdout/stderr before exit ([#​3014](https://github.com/sveltejs/language-tools/pull/3014))
- fix: report diagnostics in tsconfig.json ([#​3005](https://github.com/sveltejs/language-tools/pull/3005))
### [`v4.4.6`](https://github.com/sveltejs/language-tools/releases/tag/svelte-check%404.4.6)
[Compare Source](https://github.com/sveltejs/language-tools/compare/svelte-check@4.4.5...svelte-check@4.4.6)
##### Patch Changes
- fix: prevent config loading message in svelte-check --incremental ([#​2974](https://github.com/sveltejs/language-tools/pull/2974))
- fix: resolve svelte files with NodeNext in --incremental/tsgo ([#​2990](https://github.com/sveltejs/language-tools/pull/2990))
- perf: various optimization with ast walk ([#​2969](https://github.com/sveltejs/language-tools/pull/2969))
- fix: prevent error with escape sequence in attribute ([#​2968](https://github.com/sveltejs/language-tools/pull/2968))
- fix: typescript 6.0 compatibility ([#​2988](https://github.com/sveltejs/language-tools/pull/2988))
### [`v4.4.5`](https://github.com/sveltejs/language-tools/releases/tag/svelte-check%404.4.5)
[Compare Source](https://github.com/sveltejs/language-tools/compare/svelte-check@4.4.4...svelte-check@4.4.5)
##### Patch Changes
- fix: use Promise<Response> for async kit handler return types ([#​2966](https://github.com/sveltejs/language-tools/pull/2966))
### [`v4.4.4`](https://github.com/sveltejs/language-tools/releases/tag/svelte-check%404.4.4)
[Compare Source](https://github.com/sveltejs/language-tools/compare/svelte-check@4.4.3...svelte-check@4.4.4)
##### Patch Changes
- fix: more robust detection of `lang="ts"` attribute ([#​2957](https://github.com/sveltejs/language-tools/pull/2957))
- fix: pass filename to `warningFilter` ([#​2959](https://github.com/sveltejs/language-tools/pull/2959))
- fix: resolve svelte files under path alias in `--incremental/tsgo` mode ([#​2955](https://github.com/sveltejs/language-tools/pull/2955))
### [`v4.4.3`](https://github.com/sveltejs/language-tools/releases/tag/svelte-check%404.4.3)
[Compare Source](https://github.com/sveltejs/language-tools/compare/svelte-check@4.4.2...svelte-check@4.4.3)
##### Patch Changes
- fix: respect `@ts-ignore` etc comments within tags ([#​2950](https://github.com/sveltejs/language-tools/pull/2950))
### [`v4.4.2`](https://github.com/sveltejs/language-tools/releases/tag/svelte-check%404.4.2)
[Compare Source](https://github.com/sveltejs/language-tools/compare/svelte-check@4.4.1...svelte-check@4.4.2)
##### Patch Changes
- fix: resolve shims correctly in `--incremental/tsgo` mode ([`cd1ff2f`](https://github.com/sveltejs/language-tools/commit/cd1ff2f269f3401ad8a5924e208558de868a4f3c))
- fix: include `references` in generated `tsconfig.json` in `--incremental/tsgo` mode ([`1990f74`](https://github.com/sveltejs/language-tools/commit/1990f7477de44740109e75a7755a92385c195374))
### [`v4.4.1`](https://github.com/sveltejs/language-tools/releases/tag/svelte-check%404.4.1)
[Compare Source](https://github.com/sveltejs/language-tools/compare/svelte-check@4.4.0...svelte-check@4.4.1)
##### Patch Changes
- fix: handle relative imports reaching outside working directory when using `--incremental/--tsgo` flags ([#​2942](https://github.com/sveltejs/language-tools/pull/2942))
- fix: support SvelteKit zero types in svelte-check --incremental ([#​2939](https://github.com/sveltejs/language-tools/pull/2939))
### [`v4.4.0`](https://github.com/sveltejs/language-tools/releases/tag/svelte-check%404.4.0)
[Compare Source](https://github.com/sveltejs/language-tools/compare/svelte-check@4.3.6...svelte-check@4.4.0)
##### Minor Changes
- feat: provide `--incremental` and `--tsgo` flags ([#​2932](https://github.com/sveltejs/language-tools/pull/2932))
##### Patch Changes
- fix: ignore Unix domain sockets in file watcher to prevent crashes ([#​2931](https://github.com/sveltejs/language-tools/pull/2931))
- fix: properly use machine output by default for Claude Code ([`e9f58d2`](https://github.com/sveltejs/language-tools/commit/e9f58d2379adf8dc4ea47b2fb3fad2797dd66f04))
### [`v4.3.6`](https://github.com/sveltejs/language-tools/releases/tag/svelte-check%404.3.6)
[Compare Source](https://github.com/sveltejs/language-tools/compare/svelte-check@4.3.5...svelte-check@4.3.6)
##### Patch Changes
- fix: don't hoist type/snippet referencing $store ([#​2926](https://github.com/sveltejs/language-tools/pull/2926))
</details>
<details>
<summary>typescript-eslint/typescript-eslint (typescript-eslint)</summary>
### [`v8.72.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8720-2026-10-19)
[Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.71.2...v8.72.0)
This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.
See [GitHub Releases](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.72.0) for more information.
You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website.
### [`v8.71.2`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8712-2026-10-12)
[Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.71.1...v8.71.2)
This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.
See [GitHub Releases](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.71.2) for more information.
You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website.
### [`v8.71.1`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8711-2026-10-05)
[Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.71.0...v8.71.1)
This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.
See [GitHub Releases](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.71.1) for more information.
You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website.
### [`v8.71.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8710-2026-09-28)
[Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.70.1...v8.71.0)
This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.
See [GitHub Releases](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.71.0) for more information.
You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website.
### [`v8.70.1`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8701-2026-09-21)
[Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.70.0...v8.70.1)
This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.
See [GitHub Releases](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.70.1) for more information.
You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website.
### [`v8.70.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8700-2026-09-07)
[Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.69.0...v8.70.0)
##### 🩹 Fixes
- **eslint-plugin:** \[no-deprecated] report deprecated imported values used in object shorthand properties ([#​12780](https://github.com/typescript-eslint/typescript-eslint/pull/12780))
##### ❤️ Thank You
- Ulrich Stark [@​ulrichstark](https://github.com/ulrichstark)
See [GitHub Releases](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.70.0) for more information.
You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website.
### [`v8.69.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8690-2026-08-31)
[Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.68.0...v8.69.0)
This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.
See [GitHub Releases](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.69.0) for more information.
You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website.
### [`v8.68.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8680-2026-08-24)
[Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.67.0...v8.68.0)
This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.
See [GitHub Releases](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.68.0) for more information.
You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website.
### [`v8.67.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8670-2026-08-10)
[Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.66.0...v8.67.0)
##### 🚀 Features
- **typescript-eslint:** export basic globs for using tseslint ([#​12105](https://github.com/typescript-eslint/typescript-eslint/pull/12105))
##### ❤️ Thank You
- Claude Sonnet 5
- Evyatar Daud [@​StyleShit](https://github.com/StyleShit)
- Josh Goldberg
- Josh Goldberg ✨
- Kirk Waiblinger [@​kirkwaiblinger](https://github.com/kirkwaiblinger)
See [GitHub Releases](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.67.0) for more information.
You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website.
### [`v8.66.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8660-2026-08-03)
[Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.65.0...v8.66.0)
This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.
See [GitHub Releases](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.66.0) for more information.
You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website.
### [`v8.65.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8650-2026-07-20)
[Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.64.0...v8.65.0)
##### 🚀 Features
- add warning when TS 7 is detected ([#​12529](https://github.com/typescript-eslint/typescript-eslint/pull/12529))
##### ❤️ Thank You
- Josh Goldberg ✨
- Kirk Waiblinger [@​kirkwaiblinger](https://github.com/kirkwaiblinger)
See [GitHub Releases](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.65.0) for more information.
You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website.
### [`v8.64.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8640-2026-07-13)
[Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.63.0...v8.64.0)
This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.
See [GitHub Releases](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.64.0) for more information.
You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website.
### [`v8.63.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8630-2026-07-06)
[Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.62.1...v8.63.0)
This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.
See [GitHub Releases](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.63.0) for more information.
You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website.
### [`v8.62.1`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8621-2026-06-29)
[Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.62.0...v8.62.1)
This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.
See [GitHub Releases](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.62.1) for more information.
You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website.
### [`v8.62.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8620-2026-06-22)
[Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.61.1...v8.62.0)
##### 🚀 Features
- remove redundant package.json "files" ([#​12444](https://github.com/typescript-eslint/typescript-eslint/pull/12444))
##### ❤️ Thank You
- Kirk Waiblinger [@​kirkwaiblinger](https://github.com/kirkwaiblinger)
See [GitHub Releases](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.62.0) for more information.
You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website.
### [`v8.61.1`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8611-2026-06-15)
[Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.61.0...v8.61.1)
This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.
See [GitHub Releases](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.61.1) for more information.
You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website.
### [`v8.61.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8610-2026-06-08)
[Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v8.60.1...v8.61.0)
This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.
See [GitHub Releases](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.61.0) for more information.
You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website.
</details>
---
### Configuration
📅 **Schedule**: (in timezone America/Los_Angeles)
- Branch creation
- At any time (no schedule defined)
- Automerge
- At any time (no schedule defined)
🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.
♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box
---
This PR has been generated by [Mend Renovate CLI](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xODYuMiIsInVwZGF0ZWRJblZlciI6IjQ0LjE4Ni4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
This PR contains the following updates:
7.0.0→7.0.110.0.1→10.0.410.4.1→10.13.03.19.0→3.23.117.6.0→17.13.03.14.2→3.15.08.15.0→8.22.03.8.3→3.9.104.1.0→4.1.14.3.5→4.7.78.60.1→8.72.0Release Notes
sveltejs/kit (@sveltejs/adapter-auto)
v7.0.1Compare Source
Patch Changes
77ab341)eslint/eslint (eslint)
v10.13.0Compare Source
Features
48d5cc4feat: report references inside IIFEs inno-use-before-define(#21238) (Irfan fandi)a39d9fbfeat: addglobalThistono-obj-calls(#21382) (synthex-byte)66ac583feat: checkyield*expressions inno-unsafe-optional-chaining(#21399) (xbinaryx)Bug Fixes
87bd2cefix: avoid redeclaredletwhenno-varandone-varfix together (#21389) (Daniel Pinto)Documentation
4783a68docs: Update README (GitHub Actions Bot)43f0ac9docs: clarify parameter description ingetText(#21287) (lumir)Chores
b59d889chore: update github/codeql-action action to v4.38.3 (#21412) (renovate[bot])95e51a0ci: re-enable@typescript-eslint/typescript-eslintin ecosystem tests (#21410) (Francesco Trotta)317fcb3chore: update ecosystem plugins (#21409) (ESLint Bot)b92decfperf: skip no-redeclare scan for single-declaration variables (#21365) (James Ross)47b7063chore: update dependency @eslint/json to ^2.1.1 (#21398) (renovate[bot])e5aea41chore: update ecosystem plugins (#21390) (ESLint Bot)v10.12.0Compare Source
Features
4618052feat: handle astral letters innew-cap(#21357) (sary)4ec5168feat: allowSourceCode#getText()to accept tokens and comments (#21340) (electrohyun)Bug Fixes
bc51eeefix:prefer-arrow-callbackfalse positive in conditional test (#21373) (Daniel Pinto)bbff86cfix: skip lines with multiple comments inmax-lines-per-function(#21332) (xbinaryx)efc4d6bfix: astral letters inconsistent-return,no-eval,no-invalid-this(#21360) (lumir)93de066fix: prefer-exponentiation-operator autofix for async function base (#21322) (Vladimir Babin)02e34fffix: add missing space afterelseincurlyautofix (#21355) (Pixel)b14b8bcfix: correctid-lengthmessage for long private names (#21348) (Pixel)69aac01fix: supportTSFunctionTypeingetFunctionHeadLoc(#21335) (xbinaryx)686630efix:no-loss-of-precisionfalse positive with0.e5(#21337) (sethamus)Documentation
67eb586docs: Update README (GitHub Actions Bot)5370d7edocs: clarifyone-varseparateRequiresmatches anyrequire()call (#21192) (sethamus)8816c1ddocs: Update README (GitHub Actions Bot)3d2e7cedocs: fix typo in no-unused-expressions documentation (#21346) (bytedoe)Chores
152067fchore: update ecosystem plugins (#21362) (ESLint Bot)b56d58echore: update github/codeql-action action to v4.38.2 (#21376) (renovate[bot])bfaea12perf: cache normalized config globals per languageOptions (#21364) (James Ross)322209eci: avoid Nx cache in ecosystem tests and disable failing test (#21369) (Francesco Trotta)d166567chore: update dependency prettier to v3.9.9 (#21371) (renovate[bot])29585cechore: update dependency eslint-plugin-expect-type to ^0.7.0 (#21359) (renovate[bot])39d79bachore: update github/codeql-action action to v4.38.1 (#21354) (renovate[bot])182a6e9chore: update dependency prettier to v3.9.8 (#21352) (renovate[bot])f995127chore: remove CLAUDE.md in favor of AGENTS.md (#21339) (Jarren)b95fb6cchore: update dependency prettier to v3.9.7 (#21347) (renovate[bot])3782dd4chore: update ecosystem plugins (#21342) (ESLint Bot)v10.11.0Compare Source
Features
d136fa4feat: object-shorthand handle quoted properties forignoreConstructors(#21271) (Pavel)397b3b8feat: report unsafe labeledcontinueinno-unsafe-finallyrule (#21316) (electrohyun)d3dd47ffeat: only exemptnew-capbuilt-ins that reference the global (#21290) (sethamus)Bug Fixes
22b09f5fix: ignore__proto__properties inprefer-object-spread(#21311) (xbinaryx)b684bb1fix: make TimePass.parse optional in types and docs (#21313) (ntnyq)26d11bcfix: don't report__proto__properties inobject-shorthand(#21310) (xbinaryx)Documentation
9ecfdc5docs: note that --cache can serve stale results for cross-file rules (#21312) (bytedoe)6c789ffdocs: Update README (GitHub Actions Bot)5997825docs: clarify preserve-caught-error known limitation (#21294) (Akinyemi Toluwalase)Chores
520dd77perf: Implement fast paths in critical areas (#21210) (Nicholas C. Zakas)92086c8test: updateEMFILEerror generation for Node.js 26.9.0 compatibility (#21330) (Francesco Trotta)9ac7eb6chore: update github/codeql-action action to v4.38.0 (#21331) (renovate[bot])24310e3chore: update ecosystem plugins (#21324) (ESLint Bot)45ad79eci: bump pnpm/action-setup from 6.0.10 to 6.1.0 (#21318) (dependabot[bot])ac74e37chore: Add AGENTS.md with AI disclosure requirements (#21221) (Nicholas C. Zakas)c832660chore: Upgrade Stylelint to the latest version in docs (#21245) (Jung Hyeon Jun)f9f88fcchore: update ecosystem plugins (#21308) (ESLint Bot)fc81076ci: add more types integration tests (#20395) (Nitin Kumar)v10.10.0Compare Source
Features
264b434feat: adddandvflags tono-unexpected-multiline(#21305) (Gihyeon Jeong / 정기현)c6cc6c5feat: checkObject.prototypeproperty names innew-cap(#21269) (crimsonjay0)5661fa6feat: no-extra-bind false negatives with class fields and static blocks (#21260) (synthex-byte)Bug Fixes
bb47dc6fix: update dependency file-entry-cache to v11 (#20801) (Milos Djermanovic)427ac0afix: use format strings in debug calls (#21247) (Francesco Trotta)9d81532fix: support__proto__in/* exported */comments (#21261) (sethamus)87e0a08fix: prefer-object-has-own autofix breaks when Object is shadowed (#21282) (김채영)8e2cb14fix:new-capfalse positive forUTCcalls withproperties: false(#21275) (Pixel)9f4a364fix: Ignore static imports in no-unreachable (#21276) (Taha Kotil)Documentation
2417caddocs: Update README (GitHub Actions Bot)9cecb8adocs: document\ccontrol letter escapes in no-control-regex (#21286) (한국)8724829docs: update compat table links (#21263) (fnx)5634542docs: Clarify eqeqeq suggestion behavior (#21256) (Müslüm Yılmaz)Chores
b3d876bchore: disable npm audit in ecosystem tests (#21306) (Francesco Trotta)1696682ci: restore EMFILE test on Node.js 26 (#21297) (Marry (Subin Yang))2c7f5d6chore: update github/codeql-action action to v4.37.9 (#21296) (renovate[bot])3c753f1chore: update eslint (#21289) (renovate[bot])1c73469chore: update ecosystem plugins (#21280) (ESLint Bot)08a02betest: add error locations tono-extra-boolean-cast(#21266) (lumir)77bb1dbchore: update github/codeql-action action to v4.37.8 (#21270) (renovate[bot])007e81aci: skip EMFILE test on Node.js 26 (#21265) (lumir)0430280chore: improve ecosystem tests compatibility on Windows (#21178) (crimsonjay0)v10.9.1Compare Source
Bug Fixes
1e641c9fix: no-loss-of-precision false positive with trailing decimal point (#21251) (Aleksandr Shoronov)Documentation
ad74a8ddocs: add deprecation steps for EOL package versions (#21248) (Francesco Trotta)Chores
3c3ae53chore: update ecosystem plugins (#21249) (ESLint Bot)v10.9.0Compare Source
Features
08de88efeat: handle underflow in no-loss-of-precision (#21218) (Rithish S)55db479feat: add checkConditionalExpressions tono-unmodified-loop-condition(#21175) (sethamus)Bug Fixes
2ba3025fix: prevent unsafeno-varautofix with hoisted functions (#21213) (sethamus)8e69622fix: Prevent no-var autofix when var is shadowed by catch parameter (#21204) (Yang Hyeonjong)684b579fix: prefer-template invalid autofix creates a tagged template call (#21207) (김채영)Documentation
9ef407adocs: use eslint.config.* wherever config file names are listed (#21216) (Marry (Subin Yang))87f66f4docs: Update README (GitHub Actions Bot)585ef37docs: update architecture documentation (#21112) (Francesco Trotta)f3993b0docs: Update README (GitHub Actions Bot)ffc87d6docs: fix broken links in Further Reading sections (#21203) (Minsu)1a761e1docs: update moved JSX specification links (#21198) (Imran Mustafa)4d00ca4docs: update ESLint peer dependency to^10.0.0in shareable configs (#21202) (lumir)510d1a2docs: Update README (GitHub Actions Bot)Chores
899dbf1chore: update github/codeql-action action to v4.37.7 (#21243) (renovate[bot])9aa3873chore: update ecosystem plugins (#21235) (ESLint Bot)dc1e7a8chore: update ecosystem plugins (#21208) (ESLint Bot)f878d21ci: bump pnpm/action-setup from 6.0.9 to 6.0.10 (#21200) (dependabot[bot])4891e50ci: bump github/codeql-action from 4.37.4 to 4.37.6 (#21199) (dependabot[bot])v10.8.1Compare Source
Bug Fixes
18eb0a7fix: prevent ASI hazard inno-unused-labelsautofix (#21173) (dongkyu lee)151ba3ffix: false positives ingetter-returnandaccessor-pairs(#21163) (Grit)6898df9fix: ignore meta-property names inid-denylist(#21166) (Pixel)4d7db66fix: ignore meta-property names inid-match(#21167) (Pixel)677214efix: handle ASI hazards in no-unused-vars removeVar suggestion (#20935) (kuldeep kumar)Documentation
7d0cbf8docs: Update README (GitHub Actions Bot)0a05812docs: add missing backticks tono-duplicate-imports.js(#21183) (Lee Daeun)678c90bdocs: Update README (GitHub Actions Bot)8a10424docs: Update README (GitHub Actions Bot)69bb948docs: Update README (GitHub Actions Bot)Chores
0a14800chore: update github/codeql-action action to v4.37.4 (#21196) (renovate[bot])05adcb1test: fix failing ecosystem test foreslint-plugin-unicorn(#21191) (Lazizbek Ergashev)5611035test: add error locations info tono-void(#21185) (Lee Daeun)ee47333ci: bump github/codeql-action from 4 to 4.37.3 (#21176) (dependabot[bot])f131c03chore: improve ecosystem test failure reporting (#20937) (crimsonjay0)1f6eddechore: update ecosystem plugins (#21182) (ESLint Bot)d3266fbchore: unpinwebpackdependency (#21172) (Francesco Trotta)65a6519chore: add allowScripts field to package.json (#21092) (GiHoon Noh)22e5256ci: addtriage:nolabel to Dependabot PRs (#21141) (lumir)55c9038ci: bump actions/labeler from 6 to 7 (#21159) (dependabot[bot])7280e78chore: update dependency prettier to v3.9.6 (#21162) (renovate[bot])eddbad6test: fix failing ecosystem test foreslint-plugin-unicorn(#21156) (Francesco Trotta)60a178dchore: update ecosystem plugins (#21150) (ESLint Bot)f9f61dctest: add error locations tono-unreachable(#21151) (JIYEON)d086293test: add error locations tono-undef(#21147) (JIYEON)cc01b67test: add error locations tono-useless-catch(#21144) (devoil)688e75echore: add missing backticks in JSDoc (#21143) (Bo Hyun Kim)7c1e175test: add error locations torequire-await(#21145) (Grit)588a26dtest: add error locations tono-extra-label(#21139) (dongkyu lee)059aa89test: add error locations tono-useless-concat(#21140) (dongkyu lee)5a452a8test: add error locations tono-const-assign(#21138) (dongkyu lee)v10.8.0Compare Source
Features
2fee9bbfeat: exportConfigObjectfromeslint/config(#21082) (sethamus)Bug Fixes
6b8d2f7fix: escape reserved characters in rule id inhtmlformatter (#21129) (Francesco Trotta)9091071fix: preventno-unreachable-loopcrash when all loop types are ignored (#21116) (Pixel)e23fafefix: prefer-object-spread add semicolon when adding parenthesis (#21081) (synthex-byte)20b5ad0fix: quadratic-time regex inprefer-template(#21096) (Milos Djermanovic)8b6f6c0fix: apply ignore configs to computed methods in class-methods-use-this (#21094) (Pixel)b2c608cfix: NewExpression with parenthesized callee inpreserve-caught-error(#21083) (Francesco Trotta)Documentation
6ddf858docs: fix broken Specify Parser Options anchor link (#21106) (Minsu)784dfbedocs: Clarifyno-eq-nulldescription (#21120) (Park Harin)7ec733adocs: Fix typos and grammar in glossary (#21095) (Marry (Subin Yang))92bb13fdocs: replace quake link (#21108) (Jung Hyeon Jun)68eb4a5docs: fix broken Specify Globals anchor links in rule pages (#21103) (Minsu)d28f697docs: replace Code Climate CLI links with Qlty CLI links (#21099) (Jung Hyeon Jun)eccc68ddocs: correct --suppressions-location option description (#21093) (Ga eun Lee)c5963f7docs: Update README (GitHub Actions Bot)Chores
4fbf46dtest: pinwebpackversion to 5.108.4 (#21137) (Francesco Trotta)2d063e2chore: update HTTP URLs to HTTPS in JSDoc and comments (#21101) (Bo Hyun Kim)eccbe7btest: add error locations tono-class-assign(#21123) (devoil)e7d1e43ci: bump actions/setup-go from 6 to 7 (#21118) (dependabot[bot])e9d66d0ci: bump actions/setup-node from 6 to 7 (#21119) (dependabot[bot])ee225b6test: Add error location details tono-eq-nullrule (#21117) (Park Harin)044a627chore: update minimatch to ^10.2.5 (#21107) (김채영)fb09aa8chore: update ecosystem plugins (#21115) (ESLint Bot)5abd878test: add error locations tono-proto(#21114) (Gihyeon Jeong / 정기현)9715887test: Add error location details tono-div-regex(#21110) (Park Harin)a746ec6test: add error locations tono-new-wrappers(#21109) (Gihyeon Jeong / 정기현)8dde645test: add error locations tono-ex-assign(#21102) (devoil)13ab0ectest: add error locations tono-label-var(#21098) (Gihyeon Jeong / 정기현)a99906ftest: Add error location details tono-delete-varrule (#21105) (Park Harin)c47e8dcchore: add missing backticks tolanguages/js/index.js(#21104) (beeen)0174428chore: add missing backticks totranslate-cli-options.js(#21097) (dongkyu lee)3d36589chore: add missing backticks toserialization.js(#21091) (이규환)dcc9312test: add error locations toeqeqeq(#21090) (Ga eun Lee)2710b18ci: Add explicit permissions to rebuild-docs-sites workflow (#21089) (Marry (Subin Yang))5d2f866chore: update dependency prettier to v3.9.5 (#21086) (renovate[bot])d584e31chore: fix failing ecosystem test foreslint-plugin-unicorn(#21084) (Francesco Trotta)bf3eda0chore: update ecosystem plugins (#21079) (ESLint Bot)v10.7.0Compare Source
Features
cf2a9bffeat: add errorClassNames option to preserve-caught-error rule (#21032) (sethamus)f8b873afeat: max-nested-callbacks option for constructor callbacks (#21063) (fnx)557fde8feat: support computedNumber.parseIntmember access inradixrule (#21041) (Pixel)0b4a73bfeat: add suggestions to no-compare-neg-zero (#21034) (den$)96cdd42feat: report invalid signed numeric radix values inradixrule (#21030) (Pixel)Bug Fixes
3e7bf15fix: applyignoreClassesWithImplementsto class expressions (#21069) (Pixel)0d7d70cfix: insert cause outside wrapping parens in preserve-caught-error (#21062) (Mahin Anowar)75ec753fix: handle static template literals ineqeqeqrule (#21058) (Pixel)b717a22fix: preventeqeqeqnull option from reporting non-equality operators (#21057) (Pixel)e35b05ffix: avoidno-invalid-regexpfalse positive for shadowed RegExp (#21051) (Pixel)a3172b6fix: avoidno-control-regexfalse positive for shadowed RegExp (#21050) (Pixel)d1f637efix: parenthesize sequence expression operands in no-implicit-coercion (#21045) (spokodev)8859baffix: avoid prefer-numeric-literals false positive for shadowed globals (#21047) (한국)a9e5961fix: use-isnan false positive on shadowed NaN/Number (#20958) (sethamus)8a240a7fix: avoid false positives inradixrule for spread arguments (#21044) (Pixel)Documentation
c30d808docs: Update README (GitHub Actions Bot)5139800docs: document ESLint migration codemods in v9 and v10 guides (#20980) (Alex Bit)04174cbdocs: Update README (GitHub Actions Bot)026e130docs: update semver policy for bug fixes (#21048) (Milos Djermanovic)9d42fefdocs: Update README (GitHub Actions Bot)b230159docs: Update README (GitHub Actions Bot)0129972docs: correct**/.jsglob to**/*.jsin config files guide (#21036) (EduardF1)Chores
9489379chore: update dependency @eslint/eslintrc to ^3.3.6 (#21076) (renovate[bot])81a4774chore: updates for v9.39.5 release (Jenkins)9835414chore: enable$ExpectTypeannotations in all TypeScript files (#21071) (Francesco Trotta)72adf6bchore: restrictmarkdownlint-cli2updates in renovate (#21067) (lumir)833ec10chore: update dependency prettier to v3.9.4 (#21061) (renovate[bot])7ea106dchore: update ecosystem plugins (#21059) (ESLint Bot)8fb550echore: add prettier update commit to.git-blame-ignore-revs(#21056) (lumir)e4e1166chore: update dependency prettier to v3.9.1 (#21055) (renovate[bot])0493f53chore: update prettier to v3.9.0 (#21054) (Pixel)1056a99chore: update dependency prettier to v3.8.5 (#21049) (renovate[bot])4d4155dci: run ecosystem tests on pull requests (#21027) (sethamus)993539fchore: update dependency @eslint/json to ^2.0.1 (#21042) (renovate[bot])53f8b69test: add error locations tono-constant-binary-expression(#21039) (lumir)5ab71d5refactor: clean up radix rule internals (#21015) (Pixel)a80a9a4chore: update ecosystem plugins (#21035) (ESLint Bot)7c9a029ci: add Node.js 26 to CI (#20847) (lumir)v10.6.0Compare Source
Features
b1f9106feat: detect Symbol() and BigInt() in no-constant-binary-expression (#20981) (Taejin Kim)f291007feat: add checkRelationalComparisons to no-constant-binary-expression (#20948) (sethamus)Bug Fixes
6b05784fix: prefer-exponentiation-operator invalid autofix at statement start (#20997) (Milos Djermanovic)bb9eb2afix: account for shadowedBooleaninno-extra-boolean-cast(#21013) (den$)8fd8741fix: don't report shadowed undefined inradixrule (#21011) (Pixel)5784980fix: don't report shadowed undefined in no-throw-literal (#21010) (Pixel)9cd1e6dfix: suppress invalid class suggestion in no-promise-executor-return (#21008) (Pixel)d4eb2dcfix: don't report shadowed undefined in prefer-promise-reject-errors (#21006) (Pixel)2360464fix: prefer-promise-reject-errors false positives for shadowed Promise (#21003) (den$)63d52d2fix: restore max-classes-per-file report range (#21002) (Pixel)7feaff0fix: callback detection logic for IIFEs in max-nested-callbacks (#20979) (fnx)399a2ecfix: don't report inner non-callbacks inmax-nested-callbacks(#20995) (Milos Djermanovic)Documentation
a83683ddocs: Update README (GitHub Actions Bot)f5449f9docs: document userland patterns for global assertionOptions in RuleT… (#20986) (playgirl)bea49f7docs: Update README (GitHub Actions Bot)e5f70f9docs: update code-path diagrams (#20984) (Tanuj Kanti)8890c2ddocs: add TypeScript config guidance for MCP server (#20796) (Pierluigi Lenoci)3eb3d9bdocs: Update README (GitHub Actions Bot)c5bb59cdocs: Update README (GitHub Actions Bot)eb3c97cdocs: fix grammar in prefer-const rule description (#20983) (lumir)Chores
6a42034ci: run ecosystem tests on main branch (#20891) (sethamus)3dbacdbci: bump actions/checkout from 6 to 7 (#21014) (dependabot[bot])c3abfcachore: correct JSDoc param types in html formatter (#21018) (Minseon Kim)a832320ci: split ecosystem tests into separate jobs (#21001) (xbinaryx)27166e7chore: update ecosystem plugins (#21005) (ESLint Bot)865d76eci: bump pnpm/action-setup from 6.0.8 to 6.0.9 (#20989) (dependabot[bot])27a88c9chore: update dependency markdown-it to v14 in root (#20994) (Milos Djermanovic)970cea6chore: update dependency markdown-it to v14 (#20993) (Milos Djermanovic)b482120chore: update dependency prettier to v3.8.4 (#20990) (renovate[bot])6993fb3chore: update ecosystem plugins (#20985) (ESLint Bot)v10.5.0Compare Source
Features
5ca8c52feat: correct stack tracking in max-nested-callbacks (#20973) (Pixel998)b565783feat: report no-with violations at the with keyword (#20971) (Pixel998)2ce032ffeat: report max-lines-per-function violations at function head (#20966) (Pixel998)732cb3efeat: report max-nested-callbacks violations at function head (#20967) (Pixel998)f9c138afeat: report max-depth violations on keywords (#20943) (Pixel998)bdb496cfeat: correct max-depth handling for else-if chains (#20944) (Pixel998)c296873feat: update error loc inmax-statementsto function header (#20907) (Taejin Kim)Documentation
8ae1b5bdocs: Update README (GitHub Actions Bot)ca7eb90docs: update Node.js prerequisites to include ICU support (#20962) (Francesco Trotta)f99b47adocs: Update README (GitHub Actions Bot)acf03d4docs: clarify precedence of parserOptions over languageOptions (#20926) (sethamus)Chores
b18bf58chore: update ecosystem plugins (#20959) (ESLint Bot)c2d1444refactor: replace areAllSegmentsUnreachable with !isAnySegmentReachable (#20951) (Taejin Kim)243b8c5chore: enhance config-rule to support oneOf, anyOf, and nested schemas (#20788) (kuldeep kumar)217b2a9test: add unit tests for ParserService (#20949) (Taejin Kim)72003e7test: add location information to error messages inmax-statements(#20945) (lumir)7797c26refactor: deduplicate isAnySegmentReachable across rules (#20890) (Taejin Kim)67c46fachore: update ecosystem plugins (#20938) (ESLint Bot)95d8c7achore: update dependency @eslint/json to v2 (#20934) (renovate[bot])cf9e496chore: update @arethetypeswrong/cli to 0.18.3 (#20933) (Pixel998)fb6d396test: run type tests with TypeScript 7 (#20868) (sethamus)sveltejs/eslint-plugin-svelte (eslint-plugin-svelte)
v3.23.1Compare Source
Patch Changes
#1592
ed67eb7Thanks @baseballyama! - Exclude deprecated rules from theallconfiguration while keeping active rules enabled.#1594
af288cdThanks @baseballyama! - Recognizebrowserfrom SvelteKit's$app/envalias as a browser guard inno-top-level-browser-globals.#1588
9814b51Thanks @baseballyama! - Include all active extension rules in the Extension Rules documentation table while preserving their primary-category entries.#1589
57863c5Thanks @baseballyama! - Keep the documented project service configuration consistent across TypeScript and Svelte files to avoid unnecessary project reloads.#1593
4ad2c67Thanks @baseballyama! - Limitrequire-each-keydiagnostics to the opening each tag instead of the whole block.#1599
90d7b09Thanks @baseballyama! - Enable no-navigation-without-resolve on SvelteKit 3 so the recommended config reports internal links and navigation calls that omit resolve().#1590
a28563fThanks @baseballyama! - Fix false positives inno-immutable-reactive-statementsfor TypeScript components whenecmaFeatures.globalReturnis enabled.#1598
4607a2cThanks @baseballyama! - Recognize SvelteKit 3 in rule conditions, including prereleases, and document version detection and routes configuration.v3.23.0Compare Source
Minor Changes
1ec3cf5Thanks @ColumbusLabs! - feat: add prefer-attribute-interpolation rulev3.22.0Compare Source
Minor Changes
cdad05aThanks @baseballyama! - feat: add no-conflicting-module-names rulev3.21.0Compare Source
Minor Changes
4138a57Thanks @knrdl! - feat: add no-bind-value-on-checkable-inputs rulev3.20.0Compare Source
Minor Changes
32ba915Thanks @baseballyama! - feat: addsvelte/no-at-const-tagsrulePatch Changes
989bfa5Thanks @teemingc! - fix(valid-prop-names-in-kit-pages): droperrorsfrom allowed page props in Svelte 5 to follow SvelteKitsindresorhus/globals (globals)
v17.13.0Compare Source
b007369v17.12.0Compare Source
50a2119__webpack_layer__global (#351)779a11av17.11.0Compare Source
react-nativeglobals (#337)61eafbfv17.10.0Compare Source
GM_cookieto Greasemonkey globals (#349)f468407v17.9.0Compare Source
5a958edv17.8.0Compare Source
7394811v17.7.0Compare Source
33b75f9greensock/GSAP (gsap)
v3.15.0Compare Source
pixijs/pixijs (pixi.js)
v8.22.0Compare Source
💾 Download
Installation:
Development Build:
Production Build:
Documentation:
Changed
🚨 Behavior Change
activateOnTabis left at its default oftrue. This restores the documented default, which regressed in v8.14.0. To keep Tab from activating it:accessibleTextnow applies to the defaultbuttontype and to accessible elements recycled from the pool.🎁 Added
contextmenuandcontextmenucaptureevents, also available as theoncontextmenuhandler property. The event is aFederatedPointerEventthat PixiJS hit-tests and propagates likepointerdown, andeventFeatures.clickgates it.transientrenderer option (WebGPU, withantialias) discards the canvas's multisample depth/stencil buffer at the end of each pass, and its color buffer too on GPUs that aren't tile-based.🐛 Fixed
🧹 Chores
New Contributors
v8.21.0Compare Source
💾 Download
Installation:
Development Build:
Production Build:
Documentation:
Changed
🚨 Behavior Change
Matrix.decompose()andsetFromMatrix()(plusreparentChild(),reparentChildAt()andreplaceChild()) now turn a mirrored matrix into a realrotation, zeroskewand a negativescale.x. Previously they returnedrotation = 0with a nonzeroskew. Rendering is identical; only the values you read back change. The flip always lands onscale.x, so ascale(1, -1)matrix now givesscale (-1, 1)withrotation = -π. Re-check any flip detection or tweens that start from decomposed values.🎁 Added
@webgpu/typesfor you. On TypeScript 6 and 7, which include WebGPU types built in, remove@webgpu/typesfromcompilerOptions.typesand use@types/webin place of the"dom"lib, since some releases leave out parts such asGPUTextureUsage. See the new TypeScript guide.ExtensionType.WebGLLoader,ExtensionType.WebGPULoaderandExtensionType.CanvasLoaderextensions register an asyncload()hook that the matching renderer awaits duringinit(), before it creates its systems and pipes. Plugins canimport()backend-only code this way, so each backend stays in its own chunk and only the active one loads. Loaders are deduplicated bynameand are skipped whenskipExtensionImportsistrue.Geometrygains anindexCountproperty (also a constructor option), the index-buffer counterpart toinstanceCount. Several geometries can share one index buffer while each draws only its first N indices. Changing it never re-uploads anything. The default0draws the whole buffer, and an explicitsizeon the draw call still takes precedence.renderer.renderTarget.isFrontFaceInverted()replaces thefrontFaceInvertedgetter, which is now deprecated. Pass a target andflipYto get the winding for a target before you bind it, so 3D pipelines can pick a projection first.flipYdefaults tofalse, matchingbind().TexturePoolandCanvasPoolnow size pooled textures to the screen instead of always rounding up to a power of two, which saves a lot of GPU memory on fullscreen filters (a 1170x2532 phone used to get 2048x4096 textures). Requests larger than every screen still round up to a power of two.getOptimalTexture()andcreateTexture()now take aTexturePoolRequestobject with per-requestformatandscaleMode; the positional signatures still work but are deprecated.🐛 Fixed
🧹 Chores
New Contributors
v8.20.1Compare Source
💾 Download
Installation:
Development Build:
Production Build:
Documentation:
Changed
🐛 Fixed
TextStyleon destroy by @qiao-coding in #12159🧹 Chores
@xmldom/xmldomto 0.8.15 by @Zyie in #12162npm warn deprecated @xmldom/xmldom@0.8.14warning printed when installingpixi.js.New Contributors
Full Changelog: https://github.com/pixijs/pixijs/compare/v8.20.0...v8.20.1
v8.20.0Compare Source
💾 Download
Installation:
Development Build:
Production Build:
Documentation:
Changed
🚨 Behavior Change
StructsAndGroups.isUniformis replaced byaccessMode, which also describes storage buffers. This one fails quietly; the old property readsundefinedrather than throwing.ParticleContainerignored the tint and alpha of any ancestor render group, staying fully opaque while everything else faded. Particles now inherit both, so scenes with aParticleContainerunder a tinted or faded render group will look different. Remove any manual compensation you added.State.clockwiseFrontFacereached the WebGPU pipeline as a cull mode rather than a winding, so@builtin(front_facing)in WGSL reported the opposite ofgl_FrontFacingin GLSL. Which triangles survive culling is unchanged, but WGSL shaders branching onfront_facingwithclockwiseFrontFace: truenow take the other branch; revert any workaround that inverted it.strokeContainssplit the stroke width on the squared width and ignored winding order, so at the defaultalignment: 0.5the hit area was ~41% wider than the drawn line, and at alignment 0 or 1 it sat on the opposite side of the edge. Hit testing now matches what's drawn.containsRecttested the right and bottom edges with a strict<, so identical rectangles reportedfalse. Identical rects, and any rect flush against the container's right or bottom edge, now returntrue. Code using it as a strict-interior test, or branching onfalseto mean "partially outside", now takes the other branch.🎁 Added
RenderOptions.flipYinverts a render's Y orientation, flipping the projection and the winding/cull inversion together. That lets you capture a scene into a texture in screen orientation, which is what 3D geometry UVs expect, without a per-material flip at sample time and with back-face culling still correct. Absent orfalseis a no-op on both backends.🐛 Fixed
🧹 Chores
New Contributors
Full Changelog: https://github.com/pixijs/pixijs/compare/v8.19.0...v8.20.0
v8.19.0Compare Source
💾 Download
Installation:
Development Build:
Production Build:
Documentation:
Changed
🚨 Behavior Change
Container.updateTransform({ scaleX: 0, scaleY: 0 })previously coerced a zero scale to1(the code usedopts.scaleX || 1), so passing0left the container at full size. It now applies zero scale literally, matchingscale.set(0, 0). If you relied onupdateTransformignoring a zero scale, stop passing0when you mean full scale.ParticleContainernow respects the blend mode inherited from its ancestors. Previously the render pipe read the container's own localblendModeinstead of the resolvedgroupBlendMode, so setting e.g.stage.blendMode = 'add'had no effect on particles. Particles nested under a parent with a non-default blend mode will now render differently (e.g. additive brightening) where they were silently ignored before. AblendModeset directly on theParticleContaineris unchanged.FillPatterngains atextureSpaceoption ('global' | 'local'), while fixing several long-standing pattern/gradient sizing bugs.textureSpacedefaults to'global', so patterns now tile continuously across adjacent shapes instead of remapping per shape;setTransform(matrix)now applies the matrix you pass directly (it previously inverted and rescaled it by the texture size); andtextureSpace: 'local'radial gradients now scale to the gradient's outer radius. Existing pattern fills and local radial gradients can render differently.If you hand-compensated for the old
setTransformbehavior (pre-inverting or scaling by texture size), remove that compensation. The legacy positionalnew FillPattern(texture, repetition)form still works.🎁 Added
pixi.js/html-sourcesubpath renders live DOM elements into PixiJS textures while the element stays fully interactive in the browser (inputs editable, links clickable, CSS animations running). UseHTMLSourcefor a live element orElementImageSourcefor an immutable snapshot. The element must be a direct child of the Pixi canvas. Importing the subpath also registers a lowest-priorityTexture.fromfallback for generic HTML elements, so it cannot affect apps that don't import it.transientflag so the WebGPU backend can discard the MSAA buffer at the end of a render pass (storeOp: 'discard') instead of writing it back to memory, and keep MSAA contents in tile memory on TBDR mobile GPUs whereGPUTextureUsage.TRANSIENT_ATTACHMENTis available. This cuts memory bandwidth for single-pass MSAA render targets. Only set it on antialiased textures that follow a single-pass-then-discard pattern; a laterloadOp: 'load'on a transient attachment yields undefined contents. Default isfalse, so existing code is unaffected. A WebGPU-onlyrenderer.device.extensions.transientAttachmentprobe reports device support.🐛 Fixed
🧹 Chores
skills/in the published npm package, available atnode_modules/pixi.js/skills/after install.New Contributors
Full Changelog: https://github.com/pixijs/pixijs/compare/v8.18.1...v8.19.0
v8.18.1Compare Source
💾 Download
Installation:
Development Build:
Production Build:
Documentation:
Changed
🐛 Fixed
Application.domContainerRootin Node.js by @UlyssesZh in #12017v8.18.0Compare Source
💾 Download
Installation:
Development Build:
Production Build:
Documentation:
Changed
🚨 Behavior Change
text.widthand word wrap returning incorrect values by @Zyie in #12007Text/HTMLText/BitmapTextwithwordWrap: trueand non-leftalign(center/right/justify) now return the true rendered width fromtext.widthinstead of reportingwordWrapWidth. If you relied ontext.width === wordWrapWidthfor layout, usewordWrapWidthdirectly or wrap the text in a sized container.🎁 Added
graphicsContextToSvg()for Graphics → SVG export by @GoodBoyDigital in #11989graphicsContextToSvg(source, precision?), a pure function that serializes aGraphicsorGraphicsContextto a self-contained SVG string. Supports rects, circles, ellipses, rounded rects, polygons, bezier/quadratic/arc paths, strokes, holes (viafill-rule="evenodd"), and linear/radial gradients.setMask()gains achanneloption ('red' | 'alpha') to pick which texture channel drives visibility, matching how design tools like Figma apply PNG masks. Default remains'red'.preferenceto accept an array of renderer types by @Zyie in #11963autoDetectRendererandApplication.initnow accept an array of renderer names forpreference, letting you restrict the fallback chain (e.g. disable WebGPU entirely) rather than only reorder it. A newRendererPreferencetype is exported.app.domContainerRootby @carlos22 in #11974Applicationexposes a read-onlydomContainerRootgetter returning theHTMLDivElementthat wraps allDOMContainerelements, so apps can add CSS classes, inline styles, or customize the DOM overlay root.widthoption toMeshRopeby @mehmetcanakbay in #11990MeshRopenow accepts an explicitwidthfor rope thickness, decoupling it from the texture's height. Omittingwidthpreserves the previoustexture.heightdefault.renderer.generateTexture()accepts adefaultAnchoroption that's forwarded onto the producedTexture.RenderTexture.create()also gains atextureOptionsparameter to pass through fields likedefaultAnchorto the underlyingTexture.🐛 Fixed
_applyMipRangefor single-mip textures (iOS 18.0–18.1) by @GoodBoyDigital in #11985TextureMatrixwhen pooled textures reuse the same reference by @GoodBoyDigital in #11997GraphicsPath.transform()switch statement by @Zyie in #11996text.widthand word wrap returning incorrect values by @Zyie in #12007<characters inparseTaggedTextby @glennflanagan in #11972CanvasFilterSystemto the filters module by @Zyie in #12014SplitTextbaseline mismatch whentagStylesused withlineHeightby @Zyie in #12008TilingSprite.tilePositiondivided by resolution when using Canvas renderer by @Zyie in #11957CanvasFilterSystemto filters module by @Zyie in #12014🧹 Chores
@xmldom/xmldomto 0.8.12 by @Zyie in #12016New Contributors
v8.17.1Compare Source
💾 Download
Installation:
Development Build:
Production Build:
Documentation:
Changed
🐛 Fixed
@0.75x) by @Zyie in #11960🧹 Chores
v8.17.0Compare Source
💾 Download
Installation:
Development Build:
Production Build:
Documentation:
Changed
🚨 Behavior Change
BlurFilternow uses an optimized halving strength scheme by default, which changes visual output compared to previous versions. Setlegacy: trueto restore the old behavior.align: 'justify'now useswordWrapWidthfor width calculation instead ofmaxLineWidth, matching CSS behavior. The last line is no longer stretched.breakWords: trueinHTMLTextnow correctly uses CSSword-break: break-wordinstead ofbreak-allto match behavior of other text renderers.🎁 Added
SplitTextnow supportstagStyles, so styled runs (e.g.<red>Hello</red> <blue>World</blue>) are correctly split into per-characterTextobjects with individual styles preserved.whiteSpacemodes (normal,pre,nowrap,pre-line,pre-wrap) with proper space/newline collapsingalign: 'justify'by distributing extra word spacingbluranddistanceproportionally to font sizexAdvancenow uses true advance width frommeasureText()instead of bounding-box widthfontScalein dynamic bitmap fonts🐛 Fixed
🧹 Chores
New Contributors
v8.16.0Compare Source
💾 Download
Installation:
Development Build:
Production Build:
Documentation:
Changed
🚨 Behavior Change
SplitTextnow more accurately splitsTextacross a wider range ofTextStyleconfigurations. This may result in slight changes to character positioning.SplitText.fromfrom an existingTextnow correctly transfers the source anchor to the new instance by mapping the anchor to pivot coordinates. This changes layout and positioning compared to previous behavior.SplitBitmapTextnow correctly defaults to awhitefill, matching the behavior ofBitmapText.HTMLTextnow correctly respectsbreakWordsand no longer cuts off words that exceedwordWrapWidth.HTMLTextnow respects the alpha value of its fill and stroke.Textnow correctly aligns when usingalign: 'right'oralign: 'center', resulting in a small positional adjustment.Container.cullAreais now correctly interpreted in the container’s local coordinate space and transformed to global coordinates before culling checks.graphics.texture(texture, 0x000000)will now correctly apply a black tint🎁 Added
Text/HTMLText,BitmapTextsupport coming soontext.styleChanged()🐛 Fixed
🧹 Chores
New Contributors
prettier/prettier (prettier)
v3.9.10Compare Source
diff
Markdown: Update
micromark-extension-gfm-tableto fix the table parse issue on performance (#20266 by @fisker)See micromark/micromark-extension-gfm-table@
4f43eadfor details.v3.9.9Compare Source
diff
Markdown: Fix text with
$been incorrectly parsed as math syntax (#20140 by @fisker)v3.9.8Compare Source
diff
Markdown: Don't let Liquid objects interrupt paragraphs (#20087 by @seiyab)
v3.9.7Compare Source
diff
Markdown: Prevent indentation drift in list-item code blocks (#19647, #19990 by @Austin1serb, @giaBaoJS)
JavaScript: Fix embedded template literal idempotency (#19725 by @fisker)
Markdown: Preserve Liquid blocks after Markdown tables (#19730 by @wanxiankai, @seiyab)
Markdown: Preserve single tildes in Markdown (#19739 by @lazerg)
Since 3.9.0, single-tilde spans like
H~2~Owere rewritten to double tildes, turning subscript syntax into strike-through. Only double tildes are treated that way now, matching GitHub.Markdown: Fix Markdown blockquote containing
>characters (#19802 by @seiyab)Markdown: Strip blockquote markers from a setext heading's continuation lines (#19878 by @Kjubikstronk)
A setext heading spanning multiple lines inside a blockquote kept the
>marker of its continuation lines as literal text.Markdown: Fix HTML block indentation drift in markdown list items (#19987 by @lazerg)
Angular: Support
@boundaryerror boundaries (#20014 by @Yahiro025)v3.9.6Compare Source
diff
TypeScript: Preserve quotes for methods named
new(#19621 by @kovsu)TypeScript: Support
import defer(#19624, #19675 by @fisker)JavaScript: Added a new official plugin
@prettier/plugin-yuku(#19628, #19629 by @fisker)@prettier/plugin-yukuis powered by Yuku (A high-performance JavaScript/TypeScript compiler toolchain written in Zig).This plugin includes two new parsers:
yuku(JavaScript syntax) andyuku-ts(TypeScript syntax).To use this plugin:
Install the plugin:
Add it to your
.prettierrc:Due to package size limitations, this plugin is not bundled with the main prettier package and must be installed separately.
For more information, check the package homepage.
Big thanks to @arshad-yaseen for his excellent work.
v3.9.5Compare Source
diff
Markdown: Cap ordered list mark at 999,999,999 (#19351 by @tats-u)
CommonMark parsers only support ordered list item numbers up to 999,999,999.
With this change, Prettier now caps the ordered list item number at 999,999,999 to ensure that the output is correctly parsed as an ordered list by CommonMark parsers. Numbers larger than 999,999,999 are not parsed as list item numbers and are left unchanged in the output:
Markdown: Avoid corrupting empty link with title (#19487 by @andersk)
Do not remove
<>from an inline link or image with an empty URL and a title, as this removal would change its interpretation.Less: Remove extra spaces after
[in map lookups (#19503 by @kovsu)CSS: Prevent addition space in
type()with+(#19516 by @bigandy)This fixes the addition space before
+in CSStype()declaration. For exampletype(<number>+)was being converted intotype(<number> +)which is invalid CSS and does not work.Less: Remove spaces between merge markers and colons (#19517 by @kovsu)
Markdown: Preserve wiki links with aliases (#19527 by @kovsu)
TypeScript: Fix comments being dropped on shorthand
typeimport/export specifiers (#19565 by @kirkwaiblinger)Miscellaneous: Preserving comments'
placementproperty (#19567 by @Janther)Prettier@3.9.0 deleted an undocumented property on comments, which was already used by plugins,
comment.placementis now available again after comment attach.Flow: Stop enforcing empty module declaration to break (#19568 by @fisker)
Angular: Support expression for exhaustive typechecking (#19571 by @fisker)
TypeScript: Ignore comments inside mapped type when checking type parameter comments (#19572 by @fisker)
Less: Fix adjacent block comments being corrupted (#19574 by @kovsu)
JavaScript: Handle dangling comments in
SwitchStatement(#19581 by @fisker)TypeScript: Remove space in comment-only object type (#19583 by @fisker)
v3.9.4Compare Source
diff
Angular: Format
@content(name)->@content (name)to align with other block syntax (#19499 by @fisker)v3.9.3Compare Source
diff
Markdown: Fix unexpected removal of characters in liquid syntax (#19489 by @seiyab)
TypeScript: Allow decorators to be used with declare on class fields (#19492 by @evoactivity)
Extensively used within the Ember ecosystem, decorators with
declareon class fields will ignore the babel parser error and allow Prettier to format the code without breaking it.v3.9.2Compare Source
v3.9.1Compare Source
diff
Markdown: Update
micromark-extension-gfm-tableto fix the table parse issue on performance (#20266 by @fisker)See micromark/micromark-extension-gfm-table@
4f43eadfor details.v3.9.0Compare Source
diff
🔗 Release Notes
v3.8.5Compare Source
diff
Flow: Support
readonlyas a variance annotation (#19022 by @marcoww6)Flow now accepts
readonlyas a property variance annotation, equivalent to+(covariant/read-only).v3.8.4Compare Source
diff
Markdown: Fix blank lines between list items and nested sub-lists being removed in Markdown/MDX (#17746 by @byplayer)
Prettier was removing blank lines between list items and their nested sub-lists, converting loose lists into tight lists and changing their semantic meaning.
sveltejs/prettier-plugin-svelte (prettier-plugin-svelte)
v4.1.1Compare Source
Patch Changes
fix: preserve nested rest patterns in
{#each}destructuring (#537)fix: preserve whitespace inside
<textarea>(its content is whitespace-sensitive, like<pre>) (#540)fix: don't drop
<script>/<style>content when the closing tag has whitespace (</script >) (#539)sveltejs/language-tools (svelte-check)
v4.7.7Compare Source
Patch Changes
fix: recognise modern CSS properties such as corner-shape by updating vscode-css-languageservice (#3122)
fix: recognise the real
<script>and<style>start tags when a matching token also appears inside the other tag (#3079)fix: resolve symlinked packages when importing their
.sveltefiles, so their types are not duplicated (#3119)fix: align default tsconfig "include" logic with tsc/tsserver (#3110)
fix: report a failed TypeScript compiler process and exit non-zero when a run fails (#3133)
fix: ignore the
.svelte-checkcache directory in--watchwith--tsgo/--incremental(#3128)fix: check all files with
--tsgo/--incrementalwhen the tsconfig has noinclude(#3138)fix: disallow
--tsgotogether with--tsgo-experimental-api(#3128)fix: type elements from Svelte's
svelte-html.d.tswith--tsgo/--incremental, like the language server (#3141)v4.7.6Compare Source
Patch Changes
fix: don't log an error for vite configs without a Svelte plugin (#3091)
fix: handle SvelteKit 3 having its config merged at the top level (#3104)
v4.7.5Compare Source
Patch Changes
fix: prevent silent error during start-up caused by unhandled promise (#3096)
Updated dependencies [
1df53d8]:v4.7.4Compare Source
Patch Changes
v4.7.3Compare Source
Patch Changes
+error.svelteprops (#3076)v4.7.2Compare Source
Patch Changes
fix: resolve tsgo bin path with package.json (#3074)
fix: report tsconfig errors in --tsgo-experimental-api (#3070)
v4.7.1Compare Source
Patch Changes
v4.7.0Compare Source
Minor Changes
feat: add
--configoption (#3066)feat: svelte-check tsgo support with experimental api (#3036)
Patch Changes
fix: load esm version of Vite (#3065)
fix: stop excluding workspaces under dot-prefixed ancestors (#3037)
Updated dependencies [
7a3464b,a2561fc]:v4.6.0Compare Source
Minor Changes
vite.config.js/ts(#3031)Patch Changes
151cf45]:v4.5.0Compare Source
Minor Changes
Patch Changes
fix: properly handle props with the name
slotinside Svelte 5 snippets (#3030)feat: add support for svelte config ts/mts files (#3009)
v4.4.8Compare Source
Patch Changes
v4.4.7Compare Source
Patch Changes
fix: flush stdout/stderr before exit (#3014)
fix: report diagnostics in tsconfig.json (#3005)
v4.4.6Compare Source
Patch Changes
fix: prevent config loading message in svelte-check --incremental (#2974)
fix: resolve svelte files with NodeNext in --incremental/tsgo (#2990)
perf: various optimization with ast walk (#2969)
fix: prevent error with escape sequence in attribute (#2968)
fix: typescript 6.0 compatibility (#2988)
v4.4.5Compare Source
Patch Changes
v4.4.4Compare Source
Patch Changes
fix: more robust detection of
lang="ts"attribute (#2957)fix: pass filename to
warningFilter(#2959)fix: resolve svelte files under path alias in
--incremental/tsgomode (#2955)v4.4.3Compare Source
Patch Changes
@ts-ignoreetc comments within tags (#2950)v4.4.2Compare Source
Patch Changes
fix: resolve shims correctly in
--incremental/tsgomode (cd1ff2f)fix: include
referencesin generatedtsconfig.jsonin--incremental/tsgomode (1990f74)v4.4.1Compare Source
Patch Changes
fix: handle relative imports reaching outside working directory when using
--incremental/--tsgoflags (#2942)fix: support SvelteKit zero types in svelte-check --incremental (#2939)
v4.4.0Compare Source
Minor Changes
--incrementaland--tsgoflags (#2932)Patch Changes
fix: ignore Unix domain sockets in file watcher to prevent crashes (#2931)
fix: properly use machine output by default for Claude Code (
e9f58d2)v4.3.6Compare Source
Patch Changes
typescript-eslint/typescript-eslint (typescript-eslint)
v8.72.0Compare Source
This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.
See GitHub Releases for more information.
You can read about our versioning strategy and releases on our website.
v8.71.2Compare Source
This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.
See GitHub Releases for more information.
You can read about our versioning strategy and releases on our website.
v8.71.1Compare Source
This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.
See GitHub Releases for more information.
You can read about our versioning strategy and releases on our website.
v8.71.0Compare Source
This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.
See GitHub Releases for more information.
You can read about our versioning strategy and releases on our website.
v8.70.1Compare Source
This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.
See GitHub Releases for more information.
You can read about our versioning strategy and releases on our website.
v8.70.0Compare Source
🩹 Fixes
❤️ Thank You
See GitHub Releases for more information.
You can read about our versioning strategy and releases on our website.
v8.69.0Compare Source
This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.
See GitHub Releases for more information.
You can read about our versioning strategy and releases on our website.
v8.68.0Compare Source
This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.
See GitHub Releases for more information.
You can read about our versioning strategy and releases on our website.
v8.67.0Compare Source
🚀 Features
❤️ Thank You
See GitHub Releases for more information.
You can read about our versioning strategy and releases on our website.
v8.66.0Compare Source
This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.
See GitHub Releases for more information.
You can read about our versioning strategy and releases on our website.
v8.65.0Compare Source
🚀 Features
❤️ Thank You
See GitHub Releases for more information.
You can read about our versioning strategy and releases on our website.
v8.64.0Compare Source
This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.
See GitHub Releases for more information.
You can read about our versioning strategy and releases on our website.
v8.63.0Compare Source
This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.
See GitHub Releases for more information.
You can read about our versioning strategy and releases on our website.
v8.62.1Compare Source
This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.
See GitHub Releases for more information.
You can read about our versioning strategy and releases on our website.
v8.62.0Compare Source
🚀 Features
❤️ Thank You
See GitHub Releases for more information.
You can read about our versioning strategy and releases on our website.
v8.61.1Compare Source
This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.
See GitHub Releases for more information.
You can read about our versioning strategy and releases on our website.
v8.61.0Compare Source
This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.
See GitHub Releases for more information.
You can read about our versioning strategy and releases on our website.
Configuration
📅 Schedule: (in timezone America/Los_Angeles)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR has been generated by Mend Renovate CLI.
a67c6a7e23toce004fc0abView command line instructions
Checkout
From your project repository, check out a new branch and test the changes.