chore(deps): update all non-major dependencies #8

Open
renovate-bot wants to merge 1 commits from renovate/all-minor-patch into main
pull from: renovate/all-minor-patch
Collaborator

This PR contains the following updates:

Package Change Age Confidence
@sveltejs/adapter-auto (source) 7.0.0 → 7.0.1 age confidence
@sveltejs/eslint-config 10.0.1 → 10.0.4 age confidence
eslint (source) 10.4.1 → 10.13.0 age confidence
eslint-plugin-svelte (source) 3.19.0 → 3.23.1 age confidence
globals 17.6.0 → 17.13.0 age confidence
gsap (source) 3.14.2 → 3.15.0 age confidence
pixi.js (source) 8.15.0 → 8.22.0 age confidence
prettier (source) 3.8.3 → 3.9.10 age confidence
prettier-plugin-svelte 4.1.0 → 4.1.1 age confidence
svelte-check 4.3.5 → 4.7.7 age confidence
typescript-eslint (source) 8.60.1 → 8.72.0 age confidence

Release Notes

sveltejs/kit (@​sveltejs/adapter-auto)

v7.0.1

Compare Source

Patch Changes
  • feat: update adapter-netlify to version 6 (77ab341)
eslint/eslint (eslint)

v10.13.0

Compare Source

Features
  • 48d5cc4 feat: report references inside IIFEs in no-use-before-define (#​21238) (Irfan fandi)
  • a39d9fb feat: add globalThis to no-obj-calls (#​21382) (synthex-byte)
  • 66ac583 feat: check yield* expressions in no-unsafe-optional-chaining (#​21399) (xbinaryx)
Bug Fixes
  • 87bd2ce fix: avoid redeclared let when no-var and one-var fix together (#​21389) (Daniel Pinto)
Documentation
  • 4783a68 docs: Update README (GitHub Actions Bot)
  • 43f0ac9 docs: clarify parameter description in getText (#​21287) (lumir)
Chores

v10.12.0

Compare Source

Features
  • 4618052 feat: handle astral letters in new-cap (#​21357) (sary)
  • 4ec5168 feat: allow SourceCode#getText() to accept tokens and comments (#​21340) (electrohyun)
Bug Fixes
  • bc51eee fix: prefer-arrow-callback false positive in conditional test (#​21373) (Daniel Pinto)
  • bbff86c fix: skip lines with multiple comments in max-lines-per-function (#​21332) (xbinaryx)
  • efc4d6b fix: astral letters in consistent-return, no-eval, no-invalid-this (#​21360) (lumir)
  • 93de066 fix: prefer-exponentiation-operator autofix for async function base (#​21322) (Vladimir Babin)
  • 02e34ff fix: add missing space after else in curly autofix (#​21355) (Pixel)
  • b14b8bc fix: correct id-length message for long private names (#​21348) (Pixel)
  • 69aac01 fix: support TSFunctionType in getFunctionHeadLoc (#​21335) (xbinaryx)
  • 686630e fix: no-loss-of-precision false positive with 0.e5 (#​21337) (sethamus)
Documentation
  • 67eb586 docs: Update README (GitHub Actions Bot)
  • 5370d7e docs: clarify one-var separateRequires matches any require() call (#​21192) (sethamus)
  • 8816c1d docs: Update README (GitHub Actions Bot)
  • 3d2e7ce docs: fix typo in no-unused-expressions documentation (#​21346) (bytedoe)
Chores
  • 152067f chore: update ecosystem plugins (#​21362) (ESLint Bot)
  • b56d58e chore: update github/codeql-action action to v4.38.2 (#​21376) (renovate[bot])
  • bfaea12 perf: cache normalized config globals per languageOptions (#​21364) (James Ross)
  • 322209e ci: avoid Nx cache in ecosystem tests and disable failing test (#​21369) (Francesco Trotta)
  • d166567 chore: update dependency prettier to v3.9.9 (#​21371) (renovate[bot])
  • 29585ce chore: update dependency eslint-plugin-expect-type to ^0.7.0 (#​21359) (renovate[bot])
  • 39d79ba chore: update github/codeql-action action to v4.38.1 (#​21354) (renovate[bot])
  • 182a6e9 chore: update dependency prettier to v3.9.8 (#​21352) (renovate[bot])
  • f995127 chore: remove CLAUDE.md in favor of AGENTS.md (#​21339) (Jarren)
  • b95fb6c chore: update dependency prettier to v3.9.7 (#​21347) (renovate[bot])
  • 3782dd4 chore: update ecosystem plugins (#​21342) (ESLint Bot)

v10.11.0

Compare Source

Features

  • d136fa4 feat: object-shorthand handle quoted properties for ignoreConstructors (#​21271) (Pavel)
  • 397b3b8 feat: report unsafe labeled continue in no-unsafe-finally rule (#​21316) (electrohyun)
  • d3dd47f feat: only exempt new-cap built-ins that reference the global (#​21290) (sethamus)

Bug Fixes

  • 22b09f5 fix: ignore __proto__ properties in prefer-object-spread (#​21311) (xbinaryx)
  • b684bb1 fix: make TimePass.parse optional in types and docs (#​21313) (ntnyq)
  • 26d11bc fix: don't report __proto__ properties in object-shorthand (#​21310) (xbinaryx)

Documentation

  • 9ecfdc5 docs: note that --cache can serve stale results for cross-file rules (#​21312) (bytedoe)
  • 6c789ff docs: Update README (GitHub Actions Bot)
  • 5997825 docs: clarify preserve-caught-error known limitation (#​21294) (Akinyemi Toluwalase)

Chores

  • 520dd77 perf: Implement fast paths in critical areas (#​21210) (Nicholas C. Zakas)
  • 92086c8 test: update EMFILE error generation for Node.js 26.9.0 compatibility (#​21330) (Francesco Trotta)
  • 9ac7eb6 chore: update github/codeql-action action to v4.38.0 (#​21331) (renovate[bot])
  • 24310e3 chore: update ecosystem plugins (#​21324) (ESLint Bot)
  • 45ad79e ci: bump pnpm/action-setup from 6.0.10 to 6.1.0 (#​21318) (dependabot[bot])
  • ac74e37 chore: Add AGENTS.md with AI disclosure requirements (#​21221) (Nicholas C. Zakas)
  • c832660 chore: Upgrade Stylelint to the latest version in docs (#​21245) (Jung Hyeon Jun)
  • f9f88fc chore: update ecosystem plugins (#​21308) (ESLint Bot)
  • fc81076 ci: add more types integration tests (#​20395) (Nitin Kumar)

v10.10.0

Compare Source

Features

  • 264b434 feat: add d and v flags to no-unexpected-multiline (#​21305) (Gihyeon Jeong / 정기현)
  • c6cc6c5 feat: check Object.prototype property names in new-cap (#​21269) (crimsonjay0)
  • 5661fa6 feat: no-extra-bind false negatives with class fields and static blocks (#​21260) (synthex-byte)

Bug Fixes

  • bb47dc6 fix: update dependency file-entry-cache to v11 (#​20801) (Milos Djermanovic)
  • 427ac0a fix: use format strings in debug calls (#​21247) (Francesco Trotta)
  • 9d81532 fix: support __proto__ in /* exported */ comments (#​21261) (sethamus)
  • 87e0a08 fix: prefer-object-has-own autofix breaks when Object is shadowed (#​21282) (김채영)
  • 8e2cb14 fix: new-cap false positive for UTC calls with properties: false (#​21275) (Pixel)
  • 9f4a364 fix: Ignore static imports in no-unreachable (#​21276) (Taha Kotil)

Documentation

  • 2417cad docs: Update README (GitHub Actions Bot)
  • 9cecb8a docs: document \c control letter escapes in no-control-regex (#​21286) (한국)
  • 8724829 docs: update compat table links (#​21263) (fnx)
  • 5634542 docs: Clarify eqeqeq suggestion behavior (#​21256) (Müslüm Yılmaz)

Chores

v10.9.1

Compare Source

Bug Fixes

  • 1e641c9 fix: no-loss-of-precision false positive with trailing decimal point (#​21251) (Aleksandr Shoronov)

Documentation

  • ad74a8d docs: add deprecation steps for EOL package versions (#​21248) (Francesco Trotta)

Chores

v10.9.0

Compare Source

Features

  • 08de88e feat: handle underflow in no-loss-of-precision (#​21218) (Rithish S)
  • 55db479 feat: add checkConditionalExpressions to no-unmodified-loop-condition (#​21175) (sethamus)

Bug Fixes

  • 2ba3025 fix: prevent unsafe no-var autofix with hoisted functions (#​21213) (sethamus)
  • 8e69622 fix: Prevent no-var autofix when var is shadowed by catch parameter (#​21204) (Yang Hyeonjong)
  • 684b579 fix: prefer-template invalid autofix creates a tagged template call (#​21207) (김채영)

Documentation

  • 9ef407a docs: use eslint.config.* wherever config file names are listed (#​21216) (Marry (Subin Yang))
  • 87f66f4 docs: Update README (GitHub Actions Bot)
  • 585ef37 docs: update architecture documentation (#​21112) (Francesco Trotta)
  • f3993b0 docs: Update README (GitHub Actions Bot)
  • ffc87d6 docs: fix broken links in Further Reading sections (#​21203) (Minsu)
  • 1a761e1 docs: update moved JSX specification links (#​21198) (Imran Mustafa)
  • 4d00ca4 docs: update ESLint peer dependency to ^10.0.0 in shareable configs (#​21202) (lumir)
  • 510d1a2 docs: Update README (GitHub Actions Bot)

Chores

v10.8.1

Compare Source

Bug Fixes

  • 18eb0a7 fix: prevent ASI hazard in no-unused-labels autofix (#​21173) (dongkyu lee)
  • 151ba3f fix: false positives in getter-return and accessor-pairs (#​21163) (Grit)
  • 6898df9 fix: ignore meta-property names in id-denylist (#​21166) (Pixel)
  • 4d7db66 fix: ignore meta-property names in id-match (#​21167) (Pixel)
  • 677214e fix: handle ASI hazards in no-unused-vars removeVar suggestion (#​20935) (kuldeep kumar)

Documentation

  • 7d0cbf8 docs: Update README (GitHub Actions Bot)
  • 0a05812 docs: add missing backticks to no-duplicate-imports.js (#​21183) (Lee Daeun)
  • 678c90b docs: Update README (GitHub Actions Bot)
  • 8a10424 docs: Update README (GitHub Actions Bot)
  • 69bb948 docs: Update README (GitHub Actions Bot)

Chores

v10.8.0

Compare Source

Features

Bug Fixes

  • 6b8d2f7 fix: escape reserved characters in rule id in html formatter (#​21129) (Francesco Trotta)
  • 9091071 fix: prevent no-unreachable-loop crash when all loop types are ignored (#​21116) (Pixel)
  • e23fafe fix: prefer-object-spread add semicolon when adding parenthesis (#​21081) (synthex-byte)
  • 20b5ad0 fix: quadratic-time regex in prefer-template (#​21096) (Milos Djermanovic)
  • 8b6f6c0 fix: apply ignore configs to computed methods in class-methods-use-this (#​21094) (Pixel)
  • b2c608c fix: NewExpression with parenthesized callee in preserve-caught-error (#​21083) (Francesco Trotta)

Documentation

  • 6ddf858 docs: fix broken Specify Parser Options anchor link (#​21106) (Minsu)
  • 784dfbe docs: Clarify no-eq-null description (#​21120) (Park Harin)
  • 7ec733a docs: Fix typos and grammar in glossary (#​21095) (Marry (Subin Yang))
  • 92bb13f docs: replace quake link (#​21108) (Jung Hyeon Jun)
  • 68eb4a5 docs: fix broken Specify Globals anchor links in rule pages (#​21103) (Minsu)
  • d28f697 docs: replace Code Climate CLI links with Qlty CLI links (#​21099) (Jung Hyeon Jun)
  • eccc68d docs: correct --suppressions-location option description (#​21093) (Ga eun Lee)
  • c5963f7 docs: Update README (GitHub Actions Bot)

Chores

  • 4fbf46d test: pin webpack version to 5.108.4 (#​21137) (Francesco Trotta)
  • 2d063e2 chore: update HTTP URLs to HTTPS in JSDoc and comments (#​21101) (Bo Hyun Kim)
  • eccbe7b test: add error locations to no-class-assign (#​21123) (devoil)
  • e7d1e43 ci: bump actions/setup-go from 6 to 7 (#​21118) (dependabot[bot])
  • e9d66d0 ci: bump actions/setup-node from 6 to 7 (#​21119) (dependabot[bot])
  • ee225b6 test: Add error location details to no-eq-null rule (#​21117) (Park Harin)
  • 044a627 chore: update minimatch to ^10.2.5 (#​21107) (김채영)
  • fb09aa8 chore: update ecosystem plugins (#​21115) (ESLint Bot)
  • 5abd878 test: add error locations to no-proto (#​21114) (Gihyeon Jeong / 정기현)
  • 9715887 test: Add error location details to no-div-regex (#​21110) (Park Harin)
  • a746ec6 test: add error locations to no-new-wrappers (#​21109) (Gihyeon Jeong / 정기현)
  • 8dde645 test: add error locations to no-ex-assign (#​21102) (devoil)
  • 13ab0ec test: add error locations to no-label-var (#​21098) (Gihyeon Jeong / 정기현)
  • a99906f test: Add error location details to no-delete-var rule (#​21105) (Park Harin)
  • c47e8dc chore: add missing backticks to languages/js/index.js (#​21104) (beeen)
  • 0174428 chore: add missing backticks to translate-cli-options.js (#​21097) (dongkyu lee)
  • 3d36589 chore: add missing backticks to serialization.js (#​21091) (이규환)
  • dcc9312 test: add error locations to eqeqeq (#​21090) (Ga eun Lee)
  • 2710b18 ci: Add explicit permissions to rebuild-docs-sites workflow (#​21089) (Marry (Subin Yang))
  • 5d2f866 chore: update dependency prettier to v3.9.5 (#​21086) (renovate[bot])
  • d584e31 chore: fix failing ecosystem test for eslint-plugin-unicorn (#​21084) (Francesco Trotta)
  • bf3eda0 chore: update ecosystem plugins (#​21079) (ESLint Bot)

v10.7.0

Compare Source

Features

  • cf2a9bf feat: add errorClassNames option to preserve-caught-error rule (#​21032) (sethamus)
  • f8b873a feat: max-nested-callbacks option for constructor callbacks (#​21063) (fnx)
  • 557fde8 feat: support computed Number.parseInt member access in radix rule (#​21041) (Pixel)
  • 0b4a73b feat: add suggestions to no-compare-neg-zero (#​21034) (den$)
  • 96cdd42 feat: report invalid signed numeric radix values in radix rule (#​21030) (Pixel)

Bug Fixes

  • 3e7bf15 fix: apply ignoreClassesWithImplements to class expressions (#​21069) (Pixel)
  • 0d7d70c fix: insert cause outside wrapping parens in preserve-caught-error (#​21062) (Mahin Anowar)
  • 75ec753 fix: handle static template literals in eqeqeq rule (#​21058) (Pixel)
  • b717a22 fix: prevent eqeqeq null option from reporting non-equality operators (#​21057) (Pixel)
  • e35b05f fix: avoid no-invalid-regexp false positive for shadowed RegExp (#​21051) (Pixel)
  • a3172b6 fix: avoid no-control-regex false positive for shadowed RegExp (#​21050) (Pixel)
  • d1f637e fix: parenthesize sequence expression operands in no-implicit-coercion (#​21045) (spokodev)
  • 8859baf fix: avoid prefer-numeric-literals false positive for shadowed globals (#​21047) (한국)
  • a9e5961 fix: use-isnan false positive on shadowed NaN/Number (#​20958) (sethamus)
  • 8a240a7 fix: avoid false positives in radix rule for spread arguments (#​21044) (Pixel)

Documentation

  • c30d808 docs: Update README (GitHub Actions Bot)
  • 5139800 docs: document ESLint migration codemods in v9 and v10 guides (#​20980) (Alex Bit)
  • 04174cb docs: Update README (GitHub Actions Bot)
  • 026e130 docs: update semver policy for bug fixes (#​21048) (Milos Djermanovic)
  • 9d42fef docs: Update README (GitHub Actions Bot)
  • b230159 docs: Update README (GitHub Actions Bot)
  • 0129972 docs: correct **/.js glob to **/*.js in config files guide (#​21036) (EduardF1)

Chores

v10.6.0

Compare Source

Features

  • b1f9106 feat: detect Symbol() and BigInt() in no-constant-binary-expression (#​20981) (Taejin Kim)
  • f291007 feat: add checkRelationalComparisons to no-constant-binary-expression (#​20948) (sethamus)

Bug Fixes

  • 6b05784 fix: prefer-exponentiation-operator invalid autofix at statement start (#​20997) (Milos Djermanovic)
  • bb9eb2a fix: account for shadowed Boolean in no-extra-boolean-cast (#​21013) (den$)
  • 8fd8741 fix: don't report shadowed undefined in radix rule (#​21011) (Pixel)
  • 5784980 fix: don't report shadowed undefined in no-throw-literal (#​21010) (Pixel)
  • 9cd1e6d fix: suppress invalid class suggestion in no-promise-executor-return (#​21008) (Pixel)
  • d4eb2dc fix: don't report shadowed undefined in prefer-promise-reject-errors (#​21006) (Pixel)
  • 2360464 fix: prefer-promise-reject-errors false positives for shadowed Promise (#​21003) (den$)
  • 63d52d2 fix: restore max-classes-per-file report range (#​21002) (Pixel)
  • 7feaff0 fix: callback detection logic for IIFEs in max-nested-callbacks (#​20979) (fnx)
  • 399a2ec fix: don't report inner non-callbacks in max-nested-callbacks (#​20995) (Milos Djermanovic)

Documentation

  • a83683d docs: Update README (GitHub Actions Bot)
  • f5449f9 docs: document userland patterns for global assertionOptions in RuleT… (#​20986) (playgirl)
  • bea49f7 docs: Update README (GitHub Actions Bot)
  • e5f70f9 docs: update code-path diagrams (#​20984) (Tanuj Kanti)
  • 8890c2d docs: add TypeScript config guidance for MCP server (#​20796) (Pierluigi Lenoci)
  • 3eb3d9b docs: Update README (GitHub Actions Bot)
  • c5bb59c docs: Update README (GitHub Actions Bot)
  • eb3c97c docs: fix grammar in prefer-const rule description (#​20983) (lumir)

Chores

v10.5.0

Compare Source

Features

  • 5ca8c52 feat: correct stack tracking in max-nested-callbacks (#​20973) (Pixel998)
  • b565783 feat: report no-with violations at the with keyword (#​20971) (Pixel998)
  • 2ce032f feat: report max-lines-per-function violations at function head (#​20966) (Pixel998)
  • 732cb3e feat: report max-nested-callbacks violations at function head (#​20967) (Pixel998)
  • f9c138a feat: report max-depth violations on keywords (#​20943) (Pixel998)
  • bdb496c feat: correct max-depth handling for else-if chains (#​20944) (Pixel998)
  • c296873 feat: update error loc in max-statements to function header (#​20907) (Taejin Kim)

Documentation

  • 8ae1b5b docs: Update README (GitHub Actions Bot)
  • ca7eb90 docs: update Node.js prerequisites to include ICU support (#​20962) (Francesco Trotta)
  • f99b47a docs: Update README (GitHub Actions Bot)
  • acf03d4 docs: clarify precedence of parserOptions over languageOptions (#​20926) (sethamus)

Chores

sveltejs/eslint-plugin-svelte (eslint-plugin-svelte)

v3.23.1

Compare Source

Patch Changes
  • #​1592 ed67eb7 Thanks @​baseballyama! - Exclude deprecated rules from the all configuration while keeping active rules enabled.

  • #​1594 af288cd Thanks @​baseballyama! - Recognize browser from SvelteKit's $app/env alias as a browser guard in no-top-level-browser-globals.

  • #​1588 9814b51 Thanks @​baseballyama! - Include all active extension rules in the Extension Rules documentation table while preserving their primary-category entries.

  • #​1589 57863c5 Thanks @​baseballyama! - Keep the documented project service configuration consistent across TypeScript and Svelte files to avoid unnecessary project reloads.

  • #​1593 4ad2c67 Thanks @​baseballyama! - Limit require-each-key diagnostics to the opening each tag instead of the whole block.

  • #​1599 90d7b09 Thanks @​baseballyama! - Enable no-navigation-without-resolve on SvelteKit 3 so the recommended config reports internal links and navigation calls that omit resolve().

  • #​1590 a28563f Thanks @​baseballyama! - Fix false positives in no-immutable-reactive-statements for TypeScript components when ecmaFeatures.globalReturn is enabled.

  • #​1598 4607a2c Thanks @​baseballyama! - Recognize SvelteKit 3 in rule conditions, including prereleases, and document version detection and routes configuration.

v3.23.0

Compare Source

Minor Changes

v3.22.0

Compare Source

Minor Changes

v3.21.0

Compare Source

Minor Changes

v3.20.0

Compare Source

Minor Changes
Patch Changes
  • #​1503 989bfa5 Thanks @​teemingc! - fix(valid-prop-names-in-kit-pages): drop errors from allowed page props in Svelte 5 to follow SvelteKit
sindresorhus/globals (globals)

v17.13.0

Compare Source


v17.12.0

Compare Source


v17.11.0

Compare Source


v17.10.0

Compare Source


v17.9.0

Compare Source


v17.8.0

Compare Source


v17.7.0

Compare Source


greensock/GSAP (gsap)

v3.15.0

Compare Source

pixijs/pixijs (pixi.js)

v8.22.0

Compare Source

💾 Download

Installation:

npm install pixi.js@8.22.0

Development Build:

Production Build:

Documentation:

Changed

🚨 Behavior Change
  • 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:
    await app.init({ accessibilityOptions: { activateOnTab: false } });
    
  • 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);
    });
    
  • feat: sRGB view formats and transient MSAA colour on WebGPU by @​GoodBoyDigital in #​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.
    await app.init({ preference: 'webgpu', antialias: true, transient: true });
    
  • feat: 3D textures, storage textures and 3D mipmaps by @​GoodBoyDigital in #​12248
  • feat: partial uploads for BufferImageSource via update(start, end) by @​GoodBoyDigital in #​12227
🐛 Fixed
🧹 Chores

New Contributors

v8.21.0

Compare Source

💾 Download

Installation:

npm install pixi.js@8.21.0

Development Build:

Production Build:

Documentation:

Changed

🚨 Behavior Change
  • 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.
    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 @​Zyie in #​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.
    npm install --save-dev @types/web
    
    {
      "compilerOptions": {
        "lib": ["esnext"],
        "types": ["@types/web"]
      }
    }
    
  • 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'),
        },
    );
    
    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 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';
    
    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 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)
    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 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)
    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 in #​12158
🐛 Fixed
🧹 Chores

New Contributors

v8.20.1

Compare Source

💾 Download

Installation:

npm install pixi.js@8.20.1

Development Build:

Production Build:

Documentation:

Changed

🐛 Fixed
🧹 Chores
  • chore: bump @xmldom/xmldom to 0.8.15 by @​Zyie in #​12162
    • Removes the npm warn deprecated @xmldom/xmldom@0.8.14 warning printed when installing pixi.js.

New Contributors

Full Changelog: https://github.com/pixijs/pixijs/compare/v8.20.0...v8.20.1

v8.20.0

Compare Source

💾 Download

Installation:

npm install pixi.js@8.20.0

Development Build:

Production Build:

Documentation:

Changed

🚨 Behavior Change
  • 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.
  • fix: WebGPU ignores clockwiseFrontFace by @​koteelok in #​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 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.
    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 in #​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 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
  • feat: add opt-in flipY render-orientation toggle by @​GoodBoyDigital in #​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.
    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 in #​12103
  • feat(rendering): object-form bind/push and capturable bind state by @​GoodBoyDigital in #​12104
  • feat: export GPU shader layout helpers for advanced users by @​GoodBoyDigital in #​12143
  • feat(rendering): object-form bind/push and capturable bind state by @​GoodBoyDigital in #​12104
  • feat: geometry vertexCount, WebGPU render bundles, depth-only targets & Safari WGSL fallback by @​Zyie in #​12090
🐛 Fixed
🧹 Chores

New Contributors

Full Changelog: https://github.com/pixijs/pixijs/compare/v8.19.0...v8.20.0

v8.19.0

Compare Source

💾 Download

Installation:

npm install pixi.js@8.19.0

Development Build:

Production Build:

Documentation:

Changed

🚨 Behavior Change
  • fix: Container.updateTransform honors zero scale (#​12044) by @​Zyie in #​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.
    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 in #​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 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';
    
    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 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';
    
    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 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
🧹 Chores

New Contributors

Full Changelog: https://github.com/pixijs/pixijs/compare/v8.18.1...v8.19.0

v8.18.1

Compare Source

💾 Download

Installation:

npm install pixi.js@8.18.1

Development Build:

Production Build:

Documentation:

Changed

🐛 Fixed

v8.18.0

Compare Source

💾 Download

Installation:

npm install pixi.js@8.18.0

Development Build:

Production Build:

Documentation:

Changed

🚨 Behavior Change
  • 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.
    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 in #​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.
    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 in #​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'.
    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 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.
    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 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.
    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 in #​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.
    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 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';
    
    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
🧹 Chores

New Contributors

v8.17.1

Compare Source

💾 Download

Installation:

npm install pixi.js@8.17.1

Development Build:

Production Build:

Documentation:

Changed

🐛 Fixed
  • fix: compressed textures ignoring resolution from URL (e.g. @0.75x) by @​Zyie in #​11960
  • fix: center-align text correctly when words exceed wordWrapWidth by @​Zyie in #​11966
🧹 Chores
  • chore: fix BitmapFont char keys from char codes to character strings by @​Zyie in #​11967
  • fix: add secrets: inherit to publish-switch workflow for S3 docs upload by @​Zyie in #​11962

v8.17.0

Compare Source

💾 Download

Installation:

npm install pixi.js@8.17.0

Development Build:

Production Build:

Documentation:

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.
    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 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
  • feat: add visibleChanged event to container by @​ikigai-bjorn-s in #​11940
    container.on('visibleChanged', (visible) => {
        console.log('Visibility changed to:', visible);
    });
    
  • feat: Add function for removing aliases from resolver by @​Sertion in #​11921
🐛 Fixed
🧹 Chores

New Contributors

v8.16.0

Compare Source

💾 Download

Installation:

npm install pixi.js@8.16.0

Development Build:

Production Build:

Documentation:

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.
    // 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 @​Zyie in #​11815
    • Note: This feature is experimental, please let us know if you run into any issues.
     await app.init({
          preference: 'canvas'
      });
    
  • feat: tagged text by @​Zyie in #​11827
    • Note: Currently only works for Text/HTMLText, BitmapText support coming soon
     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 in #​11858
    • SplitText now fully mirrors Text behavior and regenerates automatically when its TextStyle changes via text.styleChanged()
    splitText.style.fontSize = 32
    splitText.styleChanged()
    
  • feat: external texture support by @​astralarya @​GoodBoyDigital in #​11846 #​11861
  • feat: add parseSync to spritesheet by @​jimhigson in #​11794
  • feat: improved Pool typing for pool.get() method by @​unstoppablecarl in #​11799
  • feat: add cube texture by @​GoodBoyDigital in #​11800
  • by @​GoodBoyDigital in
  • feat: Implement mip level rendering support in the rendering system by @​GoodBoyDigital in #​11801
  • feat: render to array layer by @​GoodBoyDigital in #​11803
🐛 Fixed
🧹 Chores

New Contributors

prettier/prettier (prettier)

v3.9.10

Compare Source

diff

Markdown: Update micromark-extension-gfm-table to fix the table parse issue on performance (#​20266 by @​fisker)

See micromark/micromark-extension-gfm-table@4f43ead for details.

v3.9.9

Compare Source

diff

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.

v3.9.8

Compare Source

diff

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.

v3.9.7

Compare Source

diff

Markdown: Prevent indentation drift in list-item code blocks (#​19647, #​19990 by @​Austin1serb, @​giaBaoJS)
<!-- 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)
// 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 by @​wanxiankai, @​seiyab)
<!-- 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 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.

<!-- 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 by @​seiyab)
<!-- Input -->
> **test**\>

<!-- Prettier 3.9.6 -->
> **test**>\>

<!-- Prettier 3.9.7 -->
> **test**\>
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.

<!-- 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 by @​lazerg)
<!-- 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 by @​Yahiro025)
<!-- 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

Compare Source

diff

TypeScript: Preserve quotes for methods named new (#​19621 by @​kovsu)
// 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, #​19675 by @​fisker)
// 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, #​19629 by @​fisker)

@prettier/plugin-yuku is powered by Yuku (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:

    yarn add --dev prettier @prettier/plugin-yuku
    
  2. Add it to your .prettierrc:

    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.

Big thanks to @​arshad-yaseen for his excellent work.

v3.9.5

Compare 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:

<!-- 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.

<!-- Input -->
[link](<> "title")

<!-- Prettier 3.9.4 -->
[link]( "title")

<!-- Prettier 3.9.5 -->
[link](<> "title")
Less: Remove extra spaces after [ in map lookups (#​19503 by @​kovsu)
// 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 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.

/* 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 by @​kovsu)
// Input
a {
  box-shadow  +  : 0 0 1px #&#8203;000;
}

// Prettier 3.9.4
a {
  box-shadow+  : 0 0 1px #&#8203;000;
}

// Prettier 3.9.5
a {
  box-shadow+: 0 0 1px #&#8203;000;
}
Markdown: Preserve wiki links with aliases (#​19527 by @​kovsu)
<!-- 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 by @​kirkwaiblinger)
// 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 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)
// 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 by @​fisker)
<!-- 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 by @​fisker)
// 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 by @​kovsu)
// 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 by @​fisker)
// 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 by @​fisker)
// 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

Compare Source

diff

Angular: Format @content(name) -> @content (name) to align with other block syntax (#​19499 by @​fisker)
<!-- 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

Compare Source

diff

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

Compare Source

v3.9.1

Compare Source

diff

Markdown: Update micromark-extension-gfm-table to fix the table parse issue on performance (#​20266 by @​fisker)

See micromark/micromark-extension-gfm-table@4f43ead for details.

v3.9.0

Compare Source

diff

🔗 Release Notes

v3.8.5

Compare Source

diff

Flow: Support readonly as a variance annotation (#​19022 by @​marcoww6)

Flow now accepts readonly as a property variance annotation, equivalent to + (covariant/read-only).

// Input
type T = {
  readonly foo: string,
};

// Prettier 3.8.4
SyntaxError

// Prettier 3.8.5
type T = {
  readonly foo: string,
};

v3.8.4

Compare 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.

<!-- Input -->
- a

  - b

- c

  - d

<!-- Prettier 3.8.3 -->
- a
  - b
- c
  - d

<!-- Prettier 3.8.4 -->
- a

  - b

- c

  - d
sveltejs/prettier-plugin-svelte (prettier-plugin-svelte)

v4.1.1

Compare 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.7

Compare 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 .svelte files, 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-check cache directory in --watch with --tsgo / --incremental (#​3128)

  • fix: check all files with --tsgo / --incremental when the tsconfig has no include (#​3138)

  • fix: disallow --tsgo together with --tsgo-experimental-api (#​3128)

  • fix: type elements from Svelte's svelte-html.d.ts with --tsgo / --incremental, like the language server (#​3141)

v4.7.6

Compare 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.5

Compare Source

Patch Changes

v4.7.4

Compare Source

Patch Changes
  • fix: support TypeScript 7 Stable under npm alias (#​3073)

v4.7.3

Compare Source

Patch Changes
  • feat: zero-config +error.svelte props (#​3076)

v4.7.2

Compare Source

Patch Changes
  • fix: resolve tsgo bin path with package.json (#​3074)

  • fix: report tsconfig errors in --tsgo-experimental-api (#​3070)

v4.7.1

Compare Source

Patch Changes
  • fix: correctly parse --tsgo-experimental-api flag (#​3067)

v4.7.0

Compare Source

Minor Changes
  • feat: add --config option (#​3066)

  • feat: svelte-check tsgo support with experimental api (#​3036)

Patch Changes

v4.6.0

Compare Source

Minor Changes
  • feat: support reading Svelte config from vite.config.js/ts (#​3031)
Patch Changes

v4.5.0

Compare Source

Minor Changes
  • feat: support Svelte 5 declaration tags (#​3033)
Patch Changes
  • fix: properly handle props with the name slot inside Svelte 5 snippets (#​3030)

  • feat: add support for svelte config ts/mts files (#​3009)

v4.4.8

Compare Source

Patch Changes
  • feat: typescript 6.0 support (#​2985)

v4.4.7

Compare Source

Patch Changes
  • fix: flush stdout/stderr before exit (#​3014)

  • fix: report diagnostics in tsconfig.json (#​3005)

v4.4.6

Compare 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.5

Compare Source

Patch Changes
  • fix: use Promise for async kit handler return types (#​2966)

v4.4.4

Compare 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/tsgo mode (#​2955)

v4.4.3

Compare Source

Patch Changes
  • fix: respect @ts-ignore etc comments within tags (#​2950)

v4.4.2

Compare Source

Patch Changes
  • fix: resolve shims correctly in --incremental/tsgo mode (cd1ff2f)

  • fix: include references in generated tsconfig.json in --incremental/tsgo mode (1990f74)

v4.4.1

Compare Source

Patch Changes
  • fix: handle relative imports reaching outside working directory when using --incremental/--tsgo flags (#​2942)

  • fix: support SvelteKit zero types in svelte-check --incremental (#​2939)

v4.4.0

Compare Source

Minor Changes
  • feat: provide --incremental and --tsgo flags (#​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.6

Compare Source

Patch Changes
  • fix: don't hoist type/snippet referencing $store (#​2926)
typescript-eslint/typescript-eslint (typescript-eslint)

v8.72.0

Compare 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.2

Compare 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.1

Compare 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.0

Compare 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.1

Compare 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.0

Compare Source

🩹 Fixes
  • eslint-plugin: [no-deprecated] report deprecated imported values used in object shorthand properties (#​12780)
❤️ Thank You

See GitHub Releases for more information.

You can read about our versioning strategy and releases on our website.

v8.69.0

Compare 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.0

Compare 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.0

Compare Source

🚀 Features
  • typescript-eslint: export basic globs for using tseslint (#​12105)
❤️ Thank You

See GitHub Releases for more information.

You can read about our versioning strategy and releases on our website.

v8.66.0

Compare 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.0

Compare Source

🚀 Features
  • add warning when TS 7 is detected (#​12529)
❤️ Thank You

See GitHub Releases for more information.

You can read about our versioning strategy and releases on our website.

v8.64.0

Compare 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.0

Compare 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.1

Compare 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.0

Compare Source

🚀 Features
  • remove redundant package.json "files" (#​12444)
❤️ Thank You

See GitHub Releases for more information.

You can read about our versioning strategy and releases on our website.

v8.61.1

Compare 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.0

Compare 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)

  • 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 if that's undesired.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Mend Renovate CLI.

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) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@sveltejs%2fadapter-auto/7.0.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@sveltejs%2fadapter-auto/7.0.0/7.0.1?slim=true) | | [@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) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@sveltejs%2feslint-config/10.0.4?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@sveltejs%2feslint-config/10.0.1/10.0.4?slim=true) | | [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) | ![age](https://developer.mend.io/api/mc/badges/age/npm/eslint/10.13.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/eslint/10.4.1/10.13.0?slim=true) | | [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) | ![age](https://developer.mend.io/api/mc/badges/age/npm/eslint-plugin-svelte/3.23.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/eslint-plugin-svelte/3.19.0/3.23.1?slim=true) | | [globals](https://github.com/sindresorhus/globals) | [`17.6.0` → `17.13.0`](https://renovatebot.com/diffs/npm/globals/17.6.0/17.13.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/globals/17.13.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/globals/17.6.0/17.13.0?slim=true) | | [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) | ![age](https://developer.mend.io/api/mc/badges/age/npm/gsap/3.15.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/gsap/3.14.2/3.15.0?slim=true) | | [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) | ![age](https://developer.mend.io/api/mc/badges/age/npm/pixi.js/8.22.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/pixi.js/8.15.0/8.22.0?slim=true) | | [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) | ![age](https://developer.mend.io/api/mc/badges/age/npm/prettier/3.9.10?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/prettier/3.8.3/3.9.10?slim=true) | | [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) | ![age](https://developer.mend.io/api/mc/badges/age/npm/prettier-plugin-svelte/4.1.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/prettier-plugin-svelte/4.1.0/4.1.1?slim=true) | | [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) | ![age](https://developer.mend.io/api/mc/badges/age/npm/svelte-check/4.7.7?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/svelte-check/4.3.5/4.7.7?slim=true) | | [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) | ![age](https://developer.mend.io/api/mc/badges/age/npm/typescript-eslint/8.72.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/typescript-eslint/8.60.1/8.72.0?slim=true) | --- ### Release Notes <details> <summary>sveltejs/kit (@&#8203;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` ([#&#8203;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` ([#&#8203;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` ([#&#8203;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 ([#&#8203;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` ([#&#8203;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 ([#&#8203;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 ([#&#8203;21410](https://github.com/eslint/eslint/issues/21410)) (Francesco Trotta) - [`317fcb3`](https://github.com/eslint/eslint/commit/317fcb365f19e912a60d171a9d5a8d1f16fe4660) chore: update ecosystem plugins ([#&#8203;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 ([#&#8203;21365](https://github.com/eslint/eslint/issues/21365)) (James Ross) - [`47b7063`](https://github.com/eslint/eslint/commit/47b7063b3f3f7bc7a5bcb87c082577e4e8b96e24) chore: update dependency [@&#8203;eslint/json](https://github.com/eslint/json) to ^2.1.1 ([#&#8203;21398](https://github.com/eslint/eslint/issues/21398)) (renovate\[bot]) - [`e5aea41`](https://github.com/eslint/eslint/commit/e5aea414cc00555ecd43f6e608bf80e0f9a6d4d6) chore: update ecosystem plugins ([#&#8203;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` ([#&#8203;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 ([#&#8203;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 ([#&#8203;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` ([#&#8203;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` ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;21348](https://github.com/eslint/eslint/issues/21348)) (Pixel) - [`69aac01`](https://github.com/eslint/eslint/commit/69aac01d898837a934c9e735e0b7881cc1df09e8) fix: support `TSFunctionType` in `getFunctionHeadLoc` ([#&#8203;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` ([#&#8203;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 ([#&#8203;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 ([#&#8203;21346](https://github.com/eslint/eslint/issues/21346)) (bytedoe) ##### Chores - [`152067f`](https://github.com/eslint/eslint/commit/152067f0f81f08b6cce9cf8eeaddb8558731b4f6) chore: update ecosystem plugins ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;21347](https://github.com/eslint/eslint/issues/21347)) (renovate\[bot]) - [`3782dd4`](https://github.com/eslint/eslint/commit/3782dd458fdfbe492e600d9a54b295a9721ed815) chore: update ecosystem plugins ([#&#8203;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` ([#&#8203;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 ([#&#8203;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 ([#&#8203;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` ([#&#8203;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 ([#&#8203;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` ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;21331](https://github.com/eslint/eslint/issues/21331)) (renovate\[bot]) - [`24310e3`](https://github.com/eslint/eslint/commit/24310e3a0e22b3c086ca402f88448676f2e1cfcd) chore: update ecosystem plugins ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;21245](https://github.com/eslint/eslint/issues/21245)) (Jung Hyeon Jun) - [`f9f88fc`](https://github.com/eslint/eslint/commit/f9f88fcccd965fdc162b89c4615dd4018e3cabdf) chore: update ecosystem plugins ([#&#8203;21308](https://github.com/eslint/eslint/issues/21308)) (ESLint Bot) - [`fc81076`](https://github.com/eslint/eslint/commit/fc81076a5b8145360654d81cbc130cf7d25dca77) ci: add more types integration tests ([#&#8203;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` ([#&#8203;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` ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;21247](https://github.com/eslint/eslint/issues/21247)) (Francesco Trotta) - [`9d81532`](https://github.com/eslint/eslint/commit/9d8153223dbf47b9aecdc1474202aaee4845f146) fix: support `__proto__` in `/* exported */` comments ([#&#8203;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 ([#&#8203;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` ([#&#8203;21275](https://github.com/eslint/eslint/issues/21275)) (Pixel) - [`9f4a364`](https://github.com/eslint/eslint/commit/9f4a364ab0ade048dfce1f37792b1d461d866e55) fix: Ignore static imports in no-unreachable ([#&#8203;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 ([#&#8203;21286](https://github.com/eslint/eslint/issues/21286)) (한국) - [`8724829`](https://github.com/eslint/eslint/commit/8724829f69f8ed80c876e3a5a017da199ce78739) docs: update compat table links ([#&#8203;21263](https://github.com/eslint/eslint/issues/21263)) (fnx) - [`5634542`](https://github.com/eslint/eslint/commit/5634542be580750ffb1a5766470f9e9c72719696) docs: Clarify eqeqeq suggestion behavior ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;21296](https://github.com/eslint/eslint/issues/21296)) (renovate\[bot]) - [`3c753f1`](https://github.com/eslint/eslint/commit/3c753f18b461bfbf36d41a79a7863c093ef48489) chore: update eslint ([#&#8203;21289](https://github.com/eslint/eslint/issues/21289)) (renovate\[bot]) - [`1c73469`](https://github.com/eslint/eslint/commit/1c734690bf6f4f9c542bec428d5a1a5c6cc4a19b) chore: update ecosystem plugins ([#&#8203;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` ([#&#8203;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 ([#&#8203;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 ([#&#8203;21265](https://github.com/eslint/eslint/issues/21265)) (lumir) - [`0430280`](https://github.com/eslint/eslint/commit/0430280e7cca9dc0fdbf0bc50464e98e84285c49) chore: improve ecosystem tests compatibility on Windows ([#&#8203;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 ([#&#8203;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 ([#&#8203;21248](https://github.com/eslint/eslint/issues/21248)) (Francesco Trotta) #### Chores - [`3c3ae53`](https://github.com/eslint/eslint/commit/3c3ae53a43721162f0db76c69665ebd9d752ea52) chore: update ecosystem plugins ([#&#8203;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 ([#&#8203;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` ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;21203](https://github.com/eslint/eslint/issues/21203)) (Minsu) - [`1a761e1`](https://github.com/eslint/eslint/commit/1a761e1d11b011fcb6bee181231a51010c500e4d) docs: update moved JSX specification links ([#&#8203;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 ([#&#8203;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 ([#&#8203;21243](https://github.com/eslint/eslint/issues/21243)) (renovate\[bot]) - [`9aa3873`](https://github.com/eslint/eslint/commit/9aa38732177935bd1d7f1493732c0b67666be28a) chore: update ecosystem plugins ([#&#8203;21235](https://github.com/eslint/eslint/issues/21235)) (ESLint Bot) - [`dc1e7a8`](https://github.com/eslint/eslint/commit/dc1e7a8416937edefe04cf836ee202a6fc03bedd) chore: update ecosystem plugins ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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` ([#&#8203;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` ([#&#8203;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` ([#&#8203;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 ([#&#8203;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` ([#&#8203;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 ([#&#8203;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` ([#&#8203;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` ([#&#8203;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 ([#&#8203;21176](https://github.com/eslint/eslint/issues/21176)) (dependabot\[bot]) - [`f131c03`](https://github.com/eslint/eslint/commit/f131c034ad91bbf06bcbb6b5e931447a8e419a46) chore: improve ecosystem test failure reporting ([#&#8203;20937](https://github.com/eslint/eslint/issues/20937)) (crimsonjay0) - [`1f6edde`](https://github.com/eslint/eslint/commit/1f6eddee609b369b50993eab08d437dda4700991) chore: update ecosystem plugins ([#&#8203;21182](https://github.com/eslint/eslint/issues/21182)) (ESLint Bot) - [`d3266fb`](https://github.com/eslint/eslint/commit/d3266fb26c719c6b90a6cbe54bb120c9335ad19c) chore: unpin `webpack` dependency ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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` ([#&#8203;21156](https://github.com/eslint/eslint/issues/21156)) (Francesco Trotta) - [`60a178d`](https://github.com/eslint/eslint/commit/60a178d5ef1b0c471be0831031ed7347f8f81dc2) chore: update ecosystem plugins ([#&#8203;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` ([#&#8203;21151](https://github.com/eslint/eslint/issues/21151)) (JIYEON) - [`d086293`](https://github.com/eslint/eslint/commit/d08629382b0a6aaa042823b796e5100e60053b54) test: add error locations to `no-undef` ([#&#8203;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` ([#&#8203;21144](https://github.com/eslint/eslint/issues/21144)) (devoil) - [`688e75e`](https://github.com/eslint/eslint/commit/688e75ede01b295d51f2f86c9d82da020a4c887e) chore: add missing backticks in JSDoc ([#&#8203;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` ([#&#8203;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` ([#&#8203;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` ([#&#8203;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` ([#&#8203;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` ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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` ([#&#8203;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 ([#&#8203;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` ([#&#8203;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 ([#&#8203;21106](https://github.com/eslint/eslint/issues/21106)) (Minsu) - [`784dfbe`](https://github.com/eslint/eslint/commit/784dfbe98f0222426fd200153a5ce2e5624151f0) docs: Clarify `no-eq-null` description ([#&#8203;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 ([#&#8203;21095](https://github.com/eslint/eslint/issues/21095)) (Marry (Subin Yang)) - [`92bb13f`](https://github.com/eslint/eslint/commit/92bb13f13065db72d62454b9830d3ae52db15c76) docs: replace quake link ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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` ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;21107](https://github.com/eslint/eslint/issues/21107)) (김채영) - [`fb09aa8`](https://github.com/eslint/eslint/commit/fb09aa8ff09730d3ccf68859e065f99666b52466) chore: update ecosystem plugins ([#&#8203;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` ([#&#8203;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` ([#&#8203;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` ([#&#8203;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` ([#&#8203;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` ([#&#8203;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 ([#&#8203;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` ([#&#8203;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` ([#&#8203;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` ([#&#8203;21091](https://github.com/eslint/eslint/issues/21091)) (이규환) - [`dcc9312`](https://github.com/eslint/eslint/commit/dcc9312c1081931de0fe1b555fbb6aa82fe696b9) test: add error locations to `eqeqeq` ([#&#8203;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 ([#&#8203;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 ([#&#8203;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` ([#&#8203;21084](https://github.com/eslint/eslint/issues/21084)) (Francesco Trotta) - [`bf3eda0`](https://github.com/eslint/eslint/commit/bf3eda049bd690f1e9a5a0c4520a6329b3e4ec85) chore: update ecosystem plugins ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;21036](https://github.com/eslint/eslint/issues/21036)) (EduardF1) #### Chores - [`9489379`](https://github.com/eslint/eslint/commit/948937986f2aa3cccb27a4c80694a85e5b0a5f64) chore: update dependency [@&#8203;eslint/eslintrc](https://github.com/eslint/eslintrc) to ^3.3.6 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;21061](https://github.com/eslint/eslint/issues/21061)) (renovate\[bot]) - [`7ea106d`](https://github.com/eslint/eslint/commit/7ea106ddcb6af7db8f36d62a28dbaba94d33598e) chore: update ecosystem plugins ([#&#8203;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` ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;21027](https://github.com/eslint/eslint/issues/21027)) (sethamus) - [`993539f`](https://github.com/eslint/eslint/commit/993539fd45d3d01aad3fbc13963e2245fdf7ee0d) chore: update dependency [@&#8203;eslint/json](https://github.com/eslint/json) to ^2.0.1 ([#&#8203;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` ([#&#8203;21039](https://github.com/eslint/eslint/issues/21039)) (lumir) - [`5ab71d5`](https://github.com/eslint/eslint/commit/5ab71d52f9d860df04e626fcd819a36257f21f9e) refactor: clean up radix rule internals ([#&#8203;21015](https://github.com/eslint/eslint/issues/21015)) (Pixel) - [`a80a9a4`](https://github.com/eslint/eslint/commit/a80a9a461478838930c5545f840473840b26b0e6) chore: update ecosystem plugins ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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` ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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` ([#&#8203;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… ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;21001](https://github.com/eslint/eslint/issues/21001)) (xbinaryx) - [`27166e7`](https://github.com/eslint/eslint/commit/27166e78511db526688afc34bbfab1a458405f3f) chore: update ecosystem plugins ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;20990](https://github.com/eslint/eslint/issues/20990)) (renovate\[bot]) - [`6993fb3`](https://github.com/eslint/eslint/commit/6993fb3173da84999fc208507b93f523aa657448) chore: update ecosystem plugins ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;20967](https://github.com/eslint/eslint/issues/20967)) (Pixel998) - [`f9c138a`](https://github.com/eslint/eslint/commit/f9c138a0ba7d8e37aed39aef4a3ff1cae8c669f7) feat: report max-depth violations on keywords ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;20926](https://github.com/eslint/eslint/issues/20926)) (sethamus) #### Chores - [`b18bf58`](https://github.com/eslint/eslint/commit/b18bf58c5ac748415ffffdff2d96980fbd6a57e8) chore: update ecosystem plugins ([#&#8203;20959](https://github.com/eslint/eslint/issues/20959)) (ESLint Bot) - [`c2d1444`](https://github.com/eslint/eslint/commit/c2d1444df77cb42e5a0b89ab70496879d180a54d) refactor: replace areAllSegmentsUnreachable with !isAnySegmentReachable ([#&#8203;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 ([#&#8203;20788](https://github.com/eslint/eslint/issues/20788)) (kuldeep kumar) - [`217b2a9`](https://github.com/eslint/eslint/commit/217b2a91f46137c5ffd693965e71306c4c15ea6b) test: add unit tests for ParserService ([#&#8203;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` ([#&#8203;20945](https://github.com/eslint/eslint/issues/20945)) (lumir) - [`7797c26`](https://github.com/eslint/eslint/commit/7797c266977b0bc4971aa79721813d480de72cd1) refactor: deduplicate isAnySegmentReachable across rules ([#&#8203;20890](https://github.com/eslint/eslint/issues/20890)) (Taejin Kim) - [`67c46fa`](https://github.com/eslint/eslint/commit/67c46fa6e4f34e88cc6bc82f8a0dcc917c65d257) chore: update ecosystem plugins ([#&#8203;20938](https://github.com/eslint/eslint/issues/20938)) (ESLint Bot) - [`95d8c7a`](https://github.com/eslint/eslint/commit/95d8c7a99f991abd8ab618d0ee2cbd4f58effc29) chore: update dependency [@&#8203;eslint/json](https://github.com/eslint/json) to v2 ([#&#8203;20934](https://github.com/eslint/eslint/issues/20934)) (renovate\[bot]) - [`cf9e496`](https://github.com/eslint/eslint/commit/cf9e496205142cd4971b9f98aed85866d1010b9c) chore: update [@&#8203;arethetypeswrong/cli](https://github.com/arethetypeswrong/cli) to 0.18.3 ([#&#8203;20933](https://github.com/eslint/eslint/issues/20933)) (Pixel998) - [`fb6d396`](https://github.com/eslint/eslint/commit/fb6d3960cacc51fc12383fa5ded2382adbf90c1c) test: run type tests with TypeScript 7 ([#&#8203;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 - [#&#8203;1592](https://github.com/sveltejs/eslint-plugin-svelte/pull/1592) [`ed67eb7`](https://github.com/sveltejs/eslint-plugin-svelte/commit/ed67eb70079a3766e1fcca04717efe67b981a29c) Thanks [@&#8203;baseballyama](https://github.com/baseballyama)! - Exclude deprecated rules from the `all` configuration while keeping active rules enabled. - [#&#8203;1594](https://github.com/sveltejs/eslint-plugin-svelte/pull/1594) [`af288cd`](https://github.com/sveltejs/eslint-plugin-svelte/commit/af288cdadb7a4e9545b67301b9d28da27eb19935) Thanks [@&#8203;baseballyama](https://github.com/baseballyama)! - Recognize `browser` from SvelteKit's `$app/env` alias as a browser guard in `no-top-level-browser-globals`. - [#&#8203;1588](https://github.com/sveltejs/eslint-plugin-svelte/pull/1588) [`9814b51`](https://github.com/sveltejs/eslint-plugin-svelte/commit/9814b51df1f4a9b271b50e9abc312cd0c15e714a) Thanks [@&#8203;baseballyama](https://github.com/baseballyama)! - Include all active extension rules in the Extension Rules documentation table while preserving their primary-category entries. - [#&#8203;1589](https://github.com/sveltejs/eslint-plugin-svelte/pull/1589) [`57863c5`](https://github.com/sveltejs/eslint-plugin-svelte/commit/57863c52b3e9092a15f8432faeac9cb258b5e08d) Thanks [@&#8203;baseballyama](https://github.com/baseballyama)! - Keep the documented project service configuration consistent across TypeScript and Svelte files to avoid unnecessary project reloads. - [#&#8203;1593](https://github.com/sveltejs/eslint-plugin-svelte/pull/1593) [`4ad2c67`](https://github.com/sveltejs/eslint-plugin-svelte/commit/4ad2c67a971a76a6311ef42a091e1da76853578a) Thanks [@&#8203;baseballyama](https://github.com/baseballyama)! - Limit `require-each-key` diagnostics to the opening each tag instead of the whole block. - [#&#8203;1599](https://github.com/sveltejs/eslint-plugin-svelte/pull/1599) [`90d7b09`](https://github.com/sveltejs/eslint-plugin-svelte/commit/90d7b09cc4c075b655dfe8042cfda9158bac02f8) Thanks [@&#8203;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(). - [#&#8203;1590](https://github.com/sveltejs/eslint-plugin-svelte/pull/1590) [`a28563f`](https://github.com/sveltejs/eslint-plugin-svelte/commit/a28563f337515b6d32010c7f2f32d3adff730929) Thanks [@&#8203;baseballyama](https://github.com/baseballyama)! - Fix false positives in `no-immutable-reactive-statements` for TypeScript components when `ecmaFeatures.globalReturn` is enabled. - [#&#8203;1598](https://github.com/sveltejs/eslint-plugin-svelte/pull/1598) [`4607a2c`](https://github.com/sveltejs/eslint-plugin-svelte/commit/4607a2cc4065b3d6e1a10467afeb937f12f4ee55) Thanks [@&#8203;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 - [#&#8203;1565](https://github.com/sveltejs/eslint-plugin-svelte/pull/1565) [`1ec3cf5`](https://github.com/sveltejs/eslint-plugin-svelte/commit/1ec3cf5edd561cb92b02c69e3bb9edb22773f278) Thanks [@&#8203;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 - [#&#8203;1563](https://github.com/sveltejs/eslint-plugin-svelte/pull/1563) [`cdad05a`](https://github.com/sveltejs/eslint-plugin-svelte/commit/cdad05a463d2ae7c8fe57c1a4e7cdd820723526c) Thanks [@&#8203;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 - [#&#8203;1559](https://github.com/sveltejs/eslint-plugin-svelte/pull/1559) [`4138a57`](https://github.com/sveltejs/eslint-plugin-svelte/commit/4138a571f1d51f46fbc485cf0f89013119ee9187) Thanks [@&#8203;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 - [#&#8203;1545](https://github.com/sveltejs/eslint-plugin-svelte/pull/1545) [`32ba915`](https://github.com/sveltejs/eslint-plugin-svelte/commit/32ba9159b00bf65ef8fc9a4bf0897dfaf33e8cea) Thanks [@&#8203;baseballyama](https://github.com/baseballyama)! - feat: add `svelte/no-at-const-tags` rule ##### Patch Changes - [#&#8203;1503](https://github.com/sveltejs/eslint-plugin-svelte/pull/1503) [`989bfa5`](https://github.com/sveltejs/eslint-plugin-svelte/commit/989bfa5beecc495f38fc563498c39e755668c457) Thanks [@&#8203;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) ([#&#8203;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) ([#&#8203;353](https://github.com/sindresorhus/globals/issues/353)) [`50a2119`](https://github.com/sindresorhus/globals/commit/50a2119) - Add `__webpack_layer__` global ([#&#8203;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 ([#&#8203;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 ([#&#8203;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) ([#&#8203;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) ([#&#8203;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) ([#&#8203;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 [@&#8203;synath](https://github.com/synath) in [#&#8203;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 [@&#8203;synath](https://github.com/synath) in [#&#8203;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 [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;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 [@&#8203;GoodBoyDigital](https://github.com/GoodBoyDigital) in [#&#8203;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 [@&#8203;GoodBoyDigital](https://github.com/GoodBoyDigital) in [#&#8203;12248](https://github.com/pixijs/pixijs/pull/12248) - feat: partial uploads for BufferImageSource via update(start, end) by [@&#8203;GoodBoyDigital](https://github.com/GoodBoyDigital) in [#&#8203;12227](https://github.com/pixijs/pixijs/pull/12227) ##### 🐛 Fixed - fix: integer texture formats on WebGL and WebGPU by [@&#8203;GoodBoyDigital](https://github.com/GoodBoyDigital) in [#&#8203;12230](https://github.com/pixijs/pixijs/pull/12230) - fix: nested filters crash after renderer resize by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;12257](https://github.com/pixijs/pixijs/pull/12257) - fix: indexed loops instead of for...in on every draw by [@&#8203;GoodBoyDigital](https://github.com/GoodBoyDigital) in [#&#8203;12229](https://github.com/pixijs/pixijs/pull/12229) - fix: declare accessibilityOptions on the public renderer options by [@&#8203;synath](https://github.com/synath) in [#&#8203;12222](https://github.com/pixijs/pixijs/pull/12222) - fix: array uniform sync over-reads and overlaps matrix elements by [@&#8203;GoodBoyDigital](https://github.com/GoodBoyDigital) in [#&#8203;12228](https://github.com/pixijs/pixijs/pull/12228) - fix: blend filter backdrop when every parent filter is skipped by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;12263](https://github.com/pixijs/pixijs/pull/12263) - fix: don't warn about unread attributes that already have a format by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;12267](https://github.com/pixijs/pixijs/pull/12267) ##### 🧹 Chores - chore: clarify web font family naming by [@&#8203;Hugohong258](https://github.com/Hugohong258) in [#&#8203;12216](https://github.com/pixijs/pixijs/pull/12216) - chore: correct TilingSprite texture, width and height defaults by [@&#8203;ZainnQureshii](https://github.com/ZainnQureshii) in [#&#8203;12269](https://github.com/pixijs/pixijs/pull/12269) #### New Contributors - [@&#8203;synath](https://github.com/synath) made their first contribution in [#&#8203;12220](https://github.com/pixijs/pixijs/pull/12220) - [@&#8203;ZainnQureshii](https://github.com/ZainnQureshii) made their first contribution in [#&#8203;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 [@&#8203;cpruijsen](https://github.com/cpruijsen) in [#&#8203;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 [@&#8203;creativoma](https://github.com/creativoma) [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;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 [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;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 [@&#8203;GoodBoyDigital](https://github.com/GoodBoyDigital) in [#&#8203;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 [@&#8203;GoodBoyDigital](https://github.com/GoodBoyDigital) in [#&#8203;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 [@&#8203;GoodBoyDigital](https://github.com/GoodBoyDigital) in [#&#8203;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 [@&#8203;GoodBoyDigital](https://github.com/GoodBoyDigital) in [#&#8203;12158](https://github.com/pixijs/pixijs/pull/12158) ##### 🐛 Fixed - fix: restore the WebGPU renderer after a device loss by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;12173](https://github.com/pixijs/pixijs/pull/12173) - fix: release cached GPU render targets on RenderTarget destroy by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;12192](https://github.com/pixijs/pixijs/pull/12192) - fix: preserve UBO offsets in unsafe-eval polyfill by [@&#8203;darkdi](https://github.com/darkdi) in [#&#8203;12154](https://github.com/pixijs/pixijs/pull/12154) - fix: svg radial gradients render as a linear gradient by [@&#8203;creativoma](https://github.com/creativoma) in [#&#8203;12156](https://github.com/pixijs/pixijs/pull/12156) - fix: detach from shared TextStyle on destroy ([#&#8203;12049](https://github.com/pixijs/pixijs/issues/12049)) by [@&#8203;qiao-coding](https://github.com/qiao-coding) in [#&#8203;12159](https://github.com/pixijs/pixijs/pull/12159) - fix: regenerate Text/HTMLText textures after WebGL context loss by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;12170](https://github.com/pixijs/pixijs/pull/12170) - fix: render Text, HTMLText and Graphics with a second renderer by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;12172](https://github.com/pixijs/pixijs/pull/12172) - fix: BatcherPipe leak on RenderGroup destroy by [@&#8203;laino](https://github.com/laino) in [#&#8203;12030](https://github.com/pixijs/pixijs/pull/12030) - fix: release VAOs and buffer listeners when a Geometry is destroyed by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;12190](https://github.com/pixijs/pixijs/pull/12190) - fix: make the GC resource sweep safe under re-entrant unload listeners by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;12191](https://github.com/pixijs/pixijs/pull/12191) - fix: sweep idle WebGPU bind groups with the renderer GC by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;12193](https://github.com/pixijs/pixijs/pull/12193) - fix: keep per-target stencil state on the backend render target by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;12194](https://github.com/pixijs/pixijs/pull/12194) - fix: clamp blur samples to the input frame by [@&#8203;ICOM725](https://github.com/ICOM725) in [#&#8203;12188](https://github.com/pixijs/pixijs/pull/12188) - fix: don't inherit autoGenerateMipmaps on WebGPU MSAA textures by [@&#8203;zenblender](https://github.com/zenblender) in [#&#8203;12197](https://github.com/pixijs/pixijs/pull/12197) - fix: render nine-slice center in canvas when borders cover the texture by [@&#8203;ShiKirill](https://github.com/ShiKirill) in [#&#8203;12126](https://github.com/pixijs/pixijs/pull/12126) - fix: handle strokes wider than the shape in Ellipse.strokeContains by [@&#8203;MaxFreedomPollard](https://github.com/MaxFreedomPollard) in [#&#8203;12185](https://github.com/pixijs/pixijs/pull/12185) - fix: preserve translucent colors in untinted canvas tiling sprites by [@&#8203;ICOM725](https://github.com/ICOM725) in [#&#8203;12189](https://github.com/pixijs/pixijs/pull/12189) - fix: ignore inactive graphics batches when creating bind groups by [@&#8203;iketiunn](https://github.com/iketiunn) in [#&#8203;12184](https://github.com/pixijs/pixijs/pull/12184) - fix: don't destroy the shared GpuProgram on WebGPU renderer destroy by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;12203](https://github.com/pixijs/pixijs/pull/12203) - fix: update the WebGPU front face when a reused pass changes flipY by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;12207](https://github.com/pixijs/pixijs/pull/12207) ##### 🧹 Chores - chore: bump [@&#8203;xmldom/xmldom](https://github.com/xmldom/xmldom) to 0.8.15 by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;12162](https://github.com/pixijs/pixijs/pull/12162) - chore: remove write-only \_touched field from BindResource and implementors by [@&#8203;santichausis](https://github.com/santichausis) in [#&#8203;12199](https://github.com/pixijs/pixijs/pull/12199) - chore: update Assets texture-loading examples for v8 by [@&#8203;Hugohong258](https://github.com/Hugohong258) in [#&#8203;12196](https://github.com/pixijs/pixijs/pull/12196) - chore: fix Shader uniform resource example by [@&#8203;Hugohong258](https://github.com/Hugohong258) in [#&#8203;12202](https://github.com/pixijs/pixijs/pull/12202) - chore: update docs and skills for v8.20+ changes by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;12204](https://github.com/pixijs/pixijs/pull/12204) #### New Contributors - [@&#8203;darkdi](https://github.com/darkdi) made their first contribution in [#&#8203;12154](https://github.com/pixijs/pixijs/pull/12154) - [@&#8203;qiao-coding](https://github.com/qiao-coding) made their first contribution in [#&#8203;12159](https://github.com/pixijs/pixijs/pull/12159) - [@&#8203;cpruijsen](https://github.com/cpruijsen) made their first contribution in [#&#8203;12200](https://github.com/pixijs/pixijs/pull/12200) - [@&#8203;ICOM725](https://github.com/ICOM725) made their first contribution in [#&#8203;12188](https://github.com/pixijs/pixijs/pull/12188) - [@&#8203;Hugohong258](https://github.com/Hugohong258) made their first contribution in [#&#8203;12196](https://github.com/pixijs/pixijs/pull/12196) - [@&#8203;zenblender](https://github.com/zenblender) made their first contribution in [#&#8203;12197](https://github.com/pixijs/pixijs/pull/12197) - [@&#8203;MaxFreedomPollard](https://github.com/MaxFreedomPollard) made their first contribution in [#&#8203;12185](https://github.com/pixijs/pixijs/pull/12185) - [@&#8203;iketiunn](https://github.com/iketiunn) made their first contribution in [#&#8203;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 [@&#8203;darkdi](https://github.com/darkdi) in [#&#8203;12154](https://github.com/pixijs/pixijs/pull/12154) - fix: svg radial gradients render as a linear gradient by [@&#8203;creativoma](https://github.com/creativoma) in [#&#8203;12156](https://github.com/pixijs/pixijs/pull/12156) - fix: detach from shared `TextStyle` on destroy by [@&#8203;qiao-coding](https://github.com/qiao-coding) in [#&#8203;12159](https://github.com/pixijs/pixijs/pull/12159) ##### 🧹 Chores - chore: bump `@xmldom/xmldom` to 0.8.15 by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;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 - [@&#8203;darkdi](https://github.com/darkdi) made their first contribution in [#&#8203;12154](https://github.com/pixijs/pixijs/pull/12154) - [@&#8203;qiao-coding](https://github.com/qiao-coding) made their first contribution in [#&#8203;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 [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;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 [@&#8203;TheOnlyJason](https://github.com/TheOnlyJason) in [#&#8203;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 [@&#8203;koteelok](https://github.com/koteelok) in [#&#8203;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 [@&#8203;Jaybhade](https://github.com/Jaybhade) in [#&#8203;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 [@&#8203;cyphercodes](https://github.com/cyphercodes) in [#&#8203;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 [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;12089](https://github.com/pixijs/pixijs/pull/12089) - feat: geometry vertexCount, WebGPU render bundles, depth-only targets & Safari WGSL fallback by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;12090](https://github.com/pixijs/pixijs/pull/12090) - feat: WebGPU-first RenderTarget attachment architecture & TextureView depth sampling by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;12091](https://github.com/pixijs/pixijs/pull/12091) - feat: copyDepthTexture for render targets (WebGPU/WebGL2) by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;12092](https://github.com/pixijs/pixijs/pull/12092) - feat: add opt-in flipY render-orientation toggle by [@&#8203;GoodBoyDigital](https://github.com/GoodBoyDigital) in [#&#8203;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 [@&#8203;GoodBoyDigital](https://github.com/GoodBoyDigital) in [#&#8203;12103](https://github.com/pixijs/pixijs/pull/12103) - feat(rendering): object-form bind/push and capturable bind state by [@&#8203;GoodBoyDigital](https://github.com/GoodBoyDigital) in [#&#8203;12104](https://github.com/pixijs/pixijs/pull/12104) - feat: export GPU shader layout helpers for advanced users by [@&#8203;GoodBoyDigital](https://github.com/GoodBoyDigital) in [#&#8203;12143](https://github.com/pixijs/pixijs/pull/12143) - feat(rendering): object-form bind/push and capturable bind state by [@&#8203;GoodBoyDigital](https://github.com/GoodBoyDigital) in [#&#8203;12104](https://github.com/pixijs/pixijs/pull/12104) - feat: geometry vertexCount, WebGPU render bundles, depth-only targets & Safari WGSL fallback by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;12090](https://github.com/pixijs/pixijs/pull/12090) ##### 🐛 Fixed - fix: stop Geometry.destroy from double-freeing the index buffer by [@&#8203;GoodBoyDigital](https://github.com/GoodBoyDigital) in [#&#8203;12144](https://github.com/pixijs/pixijs/pull/12144) - fix: support chrome 150+ HTML-in-Canvas upload signatures by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;12077](https://github.com/pixijs/pixijs/pull/12077) - fix: harden WebGPU render targets, bind groups & pipeline/texture caching by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;12093](https://github.com/pixijs/pixijs/pull/12093) - fix: prevent double-destroy of render targets on teardown by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;12095](https://github.com/pixijs/pixijs/pull/12095) - fix: add persistentDeviceId to FederatedPointerEvent by [@&#8203;ShiKirill](https://github.com/ShiKirill) in [#&#8203;12102](https://github.com/pixijs/pixijs/pull/12102) - fix: release mask bindings when pooled AlphaMaskEffect returns to the pool by [@&#8203;shell362](https://github.com/shell362) in [#&#8203;12131](https://github.com/pixijs/pixijs/pull/12131) - fix: WebGPU sibling sprite masks rendering with each other's mask matrix by [@&#8203;GoodBoyDigital](https://github.com/GoodBoyDigital) in [#&#8203;12149](https://github.com/pixijs/pixijs/pull/12149) - fix: account for frame origin and rotation in graphics texture fills by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;12123](https://github.com/pixijs/pixijs/pull/12123) - fix: handle missing base in bitmap font parsers by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;12121](https://github.com/pixijs/pixijs/pull/12121) - fix: use the correct vertex for the first edge in Triangle.strokeContains by [@&#8203;spokodev](https://github.com/spokodev) in [#&#8203;12105](https://github.com/pixijs/pixijs/pull/12105) - fix: copy radius in RoundedRectangle.copyFrom by [@&#8203;spokodev](https://github.com/spokodev) in [#&#8203;12129](https://github.com/pixijs/pixijs/pull/12129) - fix: unregister GraphicsContext listeners on destroy by [@&#8203;Srinu520](https://github.com/Srinu520) in [#&#8203;12140](https://github.com/pixijs/pixijs/pull/12140) - fix: rebuild cached bind groups when the GC unloads uniform buffers by [@&#8203;GoodBoyDigital](https://github.com/GoodBoyDigital) in [#&#8203;12147](https://github.com/pixijs/pixijs/pull/12147) - fix: substitute Texture.EMPTY when a mask texture is destroyed while still in use by [@&#8203;GoodBoyDigital](https://github.com/GoodBoyDigital) in [#&#8203;12148](https://github.com/pixijs/pixijs/pull/12148) - fix: prevent duplicate onRender registrations from same-parent reorders by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;12120](https://github.com/pixijs/pixijs/pull/12120) ##### 🧹 Chores - chore: tidy cube/mip handling in GPU & GL texture systems by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;12088](https://github.com/pixijs/pixijs/pull/12088) - fix: make GCSystem lazy-hash-replacement tests independent of real elapsed time by [@&#8203;santichausis](https://github.com/santichausis) in [#&#8203;12124](https://github.com/pixijs/pixijs/pull/12124) - fix: raise pixelMatch threshold for html-text-stroke-anchor-tagged visual test by [@&#8203;santichausis](https://github.com/santichausis) in [#&#8203;12138](https://github.com/pixijs/pixijs/pull/12138) - fix: stop publish-branch job from poisoning the node_modules cache by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;12152](https://github.com/pixijs/pixijs/pull/12152) - chore: remove dead <https://pixijs.io/customize> link in v7 migration guide by [@&#8203;sanjibani](https://github.com/sanjibani) in [#&#8203;12094](https://github.com/pixijs/pixijs/pull/12094) - chore: export html-source module from docs index by [@&#8203;Zyie](https://github.com/Zyie) #### New Contributors - [@&#8203;ShiKirill](https://github.com/ShiKirill) made their first contribution in [#&#8203;12102](https://github.com/pixijs/pixijs/pull/12102) - [@&#8203;sanjibani](https://github.com/sanjibani) made their first contribution in [#&#8203;12094](https://github.com/pixijs/pixijs/pull/12094) - [@&#8203;cyphercodes](https://github.com/cyphercodes) made their first contribution in [#&#8203;12083](https://github.com/pixijs/pixijs/pull/12083) - [@&#8203;spokodev](https://github.com/spokodev) made their first contribution in [#&#8203;12105](https://github.com/pixijs/pixijs/pull/12105) - [@&#8203;Jaybhade](https://github.com/Jaybhade) made their first contribution in [#&#8203;12137](https://github.com/pixijs/pixijs/pull/12137) - [@&#8203;Srinu520](https://github.com/Srinu520) made their first contribution in [#&#8203;12140](https://github.com/pixijs/pixijs/pull/12140) - [@&#8203;santichausis](https://github.com/santichausis) made their first contribution in [#&#8203;12124](https://github.com/pixijs/pixijs/pull/12124) - [@&#8203;shell362](https://github.com/shell362) made their first contribution in [#&#8203;12131](https://github.com/pixijs/pixijs/pull/12131) - [@&#8203;TheOnlyJason](https://github.com/TheOnlyJason) made their first contribution in [#&#8203;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 ([#&#8203;12044](https://github.com/pixijs/pixijs/issues/12044)) by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;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 [@&#8203;DmitriyGolub](https://github.com/DmitriyGolub) in [#&#8203;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 [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;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 [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;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 [@&#8203;GoodBoyDigital](https://github.com/GoodBoyDigital) in [#&#8203;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 [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;12035](https://github.com/pixijs/pixijs/pull/12035) - fix: SplitText crash when text begins with whitespace ([#&#8203;12040](https://github.com/pixijs/pixijs/issues/12040)) by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;12041](https://github.com/pixijs/pixijs/pull/12041) - fix: TilingSprite tileRotation shears pattern on non-square sprites by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;12062](https://github.com/pixijs/pixijs/pull/12062) - fix: canvas renderer does not round anchor offset when roundPixels is enabled by [@&#8203;Clonex](https://github.com/Clonex) in [#&#8203;12051](https://github.com/pixijs/pixijs/pull/12051) - fix: pass renderer's maxBatchableTextures to non-default batchers by [@&#8203;SerG-Y](https://github.com/SerG-Y) in [#&#8203;12029](https://github.com/pixijs/pixijs/pull/12029) - fix: handle null from getShaderSource/getShaderInfoLog on lost context ([#&#8203;12032](https://github.com/pixijs/pixijs/issues/12032)) by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;12042](https://github.com/pixijs/pixijs/pull/12042) - fix: GCSystem unload resources before nulling hash entry by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;12038](https://github.com/pixijs/pixijs/pull/12038) ##### 🧹 Chores - chore: bundle pixijs-skills and add sync workflow by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;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 [@&#8203;MFei8ht](https://github.com/MFei8ht) in [#&#8203;12067](https://github.com/pixijs/pixijs/pull/12067) - chore: restrict postMessage origin in playground for better security by [@&#8203;RinZ27](https://github.com/RinZ27) in [#&#8203;12055](https://github.com/pixijs/pixijs/pull/12055) - chore: bump [@&#8203;xmldom/xmldom](https://github.com/xmldom/xmldom) from ^0.8.12 to ^0.8.13 by [@&#8203;Copilot](https://github.com/Copilot) in [#&#8203;12025](https://github.com/pixijs/pixijs/pull/12025) - chore: bump parse-svg-path by [@&#8203;bigtimebuddy](https://github.com/bigtimebuddy) in [#&#8203;12071](https://github.com/pixijs/pixijs/pull/12071) - chore: standardize graphics test naming and expand visual coverage by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;12036](https://github.com/pixijs/pixijs/pull/12036) - chore: stabilize HTMLText visual tests against CI flakiness by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;12039](https://github.com/pixijs/pixijs/pull/12039) - chore: pin node to 24.15.0 and update GitHub Actions by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;12070](https://github.com/pixijs/pixijs/pull/12070) - chore: add missing path pattern to CODEOWNERS by [@&#8203;Copilot](https://github.com/Copilot) in [#&#8203;12027](https://github.com/pixijs/pixijs/pull/12027) #### New Contributors - [@&#8203;RinZ27](https://github.com/RinZ27) made their first contribution in [#&#8203;12055](https://github.com/pixijs/pixijs/pull/12055) - [@&#8203;MFei8ht](https://github.com/MFei8ht) made their first contribution in [#&#8203;12067](https://github.com/pixijs/pixijs/pull/12067) - [@&#8203;Clonex](https://github.com/Clonex) made their first contribution in [#&#8203;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 [@&#8203;UlyssesZh](https://github.com/UlyssesZh) in [#&#8203;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 [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;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 [@&#8203;GoodBoyDigital](https://github.com/GoodBoyDigital) in [#&#8203;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 [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;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 [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;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 [@&#8203;carlos22](https://github.com/carlos22) in [#&#8203;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 [@&#8203;mehmetcanakbay](https://github.com/mehmetcanakbay) in [#&#8203;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 [@&#8203;ksv90](https://github.com/ksv90) in [#&#8203;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 [@&#8203;DmitriyGolub](https://github.com/DmitriyGolub) in [#&#8203;11979](https://github.com/pixijs/pixijs/pull/11979) - fix: skip `_applyMipRange` for single-mip textures (iOS 18.0–18.1) by [@&#8203;GoodBoyDigital](https://github.com/GoodBoyDigital) in [#&#8203;11985](https://github.com/pixijs/pixijs/pull/11985) - fix: stale `TextureMatrix` when pooled textures reuse the same reference by [@&#8203;GoodBoyDigital](https://github.com/GoodBoyDigital) in [#&#8203;11997](https://github.com/pixijs/pixijs/pull/11997) - fix: unhandled actions in `GraphicsPath.transform()` switch statement by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;11996](https://github.com/pixijs/pixijs/pull/11996) - fix(VideoSource): avoid play/mediaReady recursion before video dimensions ([#&#8203;11133](https://github.com/pixijs/pixijs/issues/11133)) by [@&#8203;satoren](https://github.com/satoren) in [#&#8203;12009](https://github.com/pixijs/pixijs/pull/12009) - fix: `text.width` and word wrap returning incorrect values by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;12007](https://github.com/pixijs/pixijs/pull/12007) - fix: handle literal `<` characters in `parseTaggedText` by [@&#8203;glennflanagan](https://github.com/glennflanagan) in [#&#8203;11972](https://github.com/pixijs/pixijs/pull/11972) - fix: move `CanvasFilterSystem` to the filters module by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;12014](https://github.com/pixijs/pixijs/pull/12014) - fix: `SplitText` baseline mismatch when `tagStyles` used with `lineHeight` by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;12008](https://github.com/pixijs/pixijs/pull/12008) - fix: `TilingSprite.tilePosition` divided by resolution when using Canvas renderer by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;11957](https://github.com/pixijs/pixijs/pull/11957) - fix: move `CanvasFilterSystem` to filters module by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;12014](https://github.com/pixijs/pixijs/pull/12014) - fix(VideoSource): avoid play/mediaReady recursion before video dimensions by [@&#8203;satoren](https://github.com/satoren) in [#&#8203;12009](https://github.com/pixijs/pixijs/pull/12009) ##### 🧹 Chores - chore: bump `@xmldom/xmldom` to 0.8.12 by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;12016](https://github.com/pixijs/pixijs/pull/12016) #### New Contributors - [@&#8203;mehmetcanakbay](https://github.com/mehmetcanakbay) made their first contribution in [#&#8203;11990](https://github.com/pixijs/pixijs/pull/11990) - [@&#8203;DmitriyGolub](https://github.com/DmitriyGolub) made their first contribution in [#&#8203;11979](https://github.com/pixijs/pixijs/pull/11979) - [@&#8203;carlos22](https://github.com/carlos22) made their first contribution in [#&#8203;11974](https://github.com/pixijs/pixijs/pull/11974) - [@&#8203;satoren](https://github.com/satoren) made their first contribution in [#&#8203;12009](https://github.com/pixijs/pixijs/pull/12009) - [@&#8203;ksv90](https://github.com/ksv90) made their first contribution in [#&#8203;12011](https://github.com/pixijs/pixijs/pull/12011) - [@&#8203;glennflanagan](https://github.com/glennflanagan) made their first contribution in [#&#8203;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 [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;11960](https://github.com/pixijs/pixijs/pull/11960) - fix: center-align text correctly when words exceed wordWrapWidth by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;11966](https://github.com/pixijs/pixijs/pull/11966) ##### 🧹 Chores - chore: fix BitmapFont char keys from char codes to character strings by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;11967](https://github.com/pixijs/pixijs/pull/11967) - fix: add secrets: inherit to publish-switch workflow for S3 docs upload by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;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 [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;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 [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;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 [@&#8203;ikigai-bjorn-s](https://github.com/ikigai-bjorn-s) in [#&#8203;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 [@&#8203;Sertion](https://github.com/Sertion) in [#&#8203;11921](https://github.com/pixijs/pixijs/pull/11921) ##### 🐛 Fixed - fix: prevent filter corruption with TexturePool mipmap separation by [@&#8203;vkarponen](https://github.com/vkarponen) in [#&#8203;11865](https://github.com/pixijs/pixijs/pull/11865) - fix: blur by reducing strength on each pass by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;11909](https://github.com/pixijs/pixijs/pull/11909) - fix: Reduce work done by the blur shader by [@&#8203;Sertion](https://github.com/Sertion) in [#&#8203;11917](https://github.com/pixijs/pixijs/pull/11917) - fix: Correctly handle offset in ColorMatrixFilter by [@&#8203;Sertion](https://github.com/Sertion) in [#&#8203;11925](https://github.com/pixijs/pixijs/pull/11925) - fix: Apply global filter offset to ParticleContainer rendering by [@&#8203;GoodBoyDigital](https://github.com/GoodBoyDigital) in [#&#8203;11882](https://github.com/pixijs/pixijs/pull/11882) - fix: respect texture trim offset in NineSliceSprite by [@&#8203;shtse8](https://github.com/shtse8) in [#&#8203;11919](https://github.com/pixijs/pixijs/pull/11919) - fix: return valid empty bounds from empty Graphics by [@&#8203;GoodBoyDigital](https://github.com/GoodBoyDigital) in [#&#8203;11908](https://github.com/pixijs/pixijs/pull/11908) - fix: Graphics getLocalBounds returns stale data between operations in same frame by [@&#8203;GoodBoyDigital](https://github.com/GoodBoyDigital) in [#&#8203;11886](https://github.com/pixijs/pixijs/pull/11886) - fix: Graphics bounds account for miter joins at sharp angles by [@&#8203;GoodBoyDigital](https://github.com/GoodBoyDigital) in [#&#8203;11884](https://github.com/pixijs/pixijs/pull/11884) - fix: BindGroup crash when resource destroyed in batched group by [@&#8203;GoodBoyDigital](https://github.com/GoodBoyDigital) in [#&#8203;11876](https://github.com/pixijs/pixijs/pull/11876) - fix: remove listener from old resource in BindGroup.setResource by [@&#8203;GoodBoyDigital](https://github.com/GoodBoyDigital) in [#&#8203;11901](https://github.com/pixijs/pixijs/pull/11901) - fix: removeAllListeners() on Renderer.destroy() by [@&#8203;taye](https://github.com/taye) in [#&#8203;11951](https://github.com/pixijs/pixijs/pull/11951) - fix: correct minFPS/maxFPS mutual clamping in Ticker by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;11952](https://github.com/pixijs/pixijs/pull/11952) - fix: invalidate cached source in color.setAlpha() to prevent stale alpha reuse by [@&#8203;darthvader58](https://github.com/darthvader58) in [#&#8203;11924](https://github.com/pixijs/pixijs/pull/11924) - fix: emit removed event when using addChildAt by [@&#8203;aSipz](https://github.com/aSipz) in [#&#8203;11912](https://github.com/pixijs/pixijs/pull/11912) - fix: guard against missing characters and kerning data in bitmap text by [@&#8203;stargazer-2697](https://github.com/stargazer-2697) in [#&#8203;11907](https://github.com/pixijs/pixijs/pull/11907) - fix: copy modifier keys from TouchEvent to normalized touch objects by [@&#8203;kaigritun](https://github.com/kaigritun) in [#&#8203;11906](https://github.com/pixijs/pixijs/pull/11906) - fix: use quotes when loading a Web font to support old versions of Chrome by [@&#8203;adngdb](https://github.com/adngdb) in [#&#8203;11902](https://github.com/pixijs/pixijs/pull/11902) - fix: move DOMPipe registration to init.ts to fix Web Worker support by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;11953](https://github.com/pixijs/pixijs/pull/11953) - fix: clarify BackgroundLoader cache behavior in documentation by [@&#8203;imuday984](https://github.com/imuday984) in [#&#8203;11935](https://github.com/pixijs/pixijs/pull/11935) ##### 🧹 Chores - chore: Add PixiJS development playground by [@&#8203;GoodBoyDigital](https://github.com/GoodBoyDigital) in [#&#8203;11878](https://github.com/pixijs/pixijs/pull/11878) - chore: overhaul documentation system with TypeDoc plugins, examples, and guides by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;11905](https://github.com/pixijs/pixijs/pull/11905) - chore: consolidate build and test scripts by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;11910](https://github.com/pixijs/pixijs/pull/11910) - chore: expand build, test, and API documentation by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;11956](https://github.com/pixijs/pixijs/pull/11956) - chore: combine visual test diff output into single labeled image by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;11954](https://github.com/pixijs/pixijs/pull/11954) - chore: add ESLint rule enforcing \~/ imports in test and scene files by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;11899](https://github.com/pixijs/pixijs/pull/11899) - chore: reorganizes visual scene tests into logical subdirectories by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;11872](https://github.com/pixijs/pixijs/pull/11872) - chore: Improve test server setup by dynamically allocating port by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;11874](https://github.com/pixijs/pixijs/pull/11874) - chore: increase HTMLText visual test wait from 250ms to 350ms by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;11891](https://github.com/pixijs/pixijs/pull/11891) - chore: remove tsc-silent dependency by [@&#8203;Zyie](https://github.com/Zyie) - docs: document filters + RenderLayer limitation by [@&#8203;GoodBoyDigital](https://github.com/GoodBoyDigital) in [#&#8203;11883](https://github.com/pixijs/pixijs/pull/11883) #### New Contributors - [@&#8203;adngdb](https://github.com/adngdb) made their first contribution in [#&#8203;11902](https://github.com/pixijs/pixijs/pull/11902) - [@&#8203;kaigritun](https://github.com/kaigritun) made their first contribution in [#&#8203;11906](https://github.com/pixijs/pixijs/pull/11906) - [@&#8203;darthvader58](https://github.com/darthvader58) made their first contribution in [#&#8203;11924](https://github.com/pixijs/pixijs/pull/11924) - [@&#8203;Sertion](https://github.com/Sertion) made their first contribution in [#&#8203;11925](https://github.com/pixijs/pixijs/pull/11925) - [@&#8203;shtse8](https://github.com/shtse8) made their first contribution in [#&#8203;11919](https://github.com/pixijs/pixijs/pull/11919) - [@&#8203;aSipz](https://github.com/aSipz) made their first contribution in [#&#8203;11912](https://github.com/pixijs/pixijs/pull/11912) - [@&#8203;ikigai-bjorn-s](https://github.com/ikigai-bjorn-s) made their first contribution in [#&#8203;11940](https://github.com/pixijs/pixijs/pull/11940) - [@&#8203;vkarponen](https://github.com/vkarponen) made their first contribution in [#&#8203;11865](https://github.com/pixijs/pixijs/pull/11865) - [@&#8203;imuday984](https://github.com/imuday984) made their first contribution in [#&#8203;11935](https://github.com/pixijs/pixijs/pull/11935) - [@&#8203;taye](https://github.com/taye) made their first contribution in [#&#8203;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 [@&#8203;krzys](https://github.com/krzys) [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;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 [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;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 [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;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 [@&#8203;astralarya](https://github.com/astralarya) [@&#8203;GoodBoyDigital](https://github.com/GoodBoyDigital) in [#&#8203;11846](https://github.com/pixijs/pixijs/pull/11846) [#&#8203;11861](https://github.com/pixijs/pixijs/pull/11861) - feat: add parseSync to spritesheet by [@&#8203;jimhigson](https://github.com/jimhigson) in [#&#8203;11794](https://github.com/pixijs/pixijs/pull/11794) - feat: improved Pool typing for pool.get() method by [@&#8203;unstoppablecarl](https://github.com/unstoppablecarl) in [#&#8203;11799](https://github.com/pixijs/pixijs/pull/11799) - feat: add cube texture by [@&#8203;GoodBoyDigital](https://github.com/GoodBoyDigital) in [#&#8203;11800](https://github.com/pixijs/pixijs/pull/11800) - by [@&#8203;GoodBoyDigital](https://github.com/GoodBoyDigital) in - feat: Implement mip level rendering support in the rendering system by [@&#8203;GoodBoyDigital](https://github.com/GoodBoyDigital) in [#&#8203;11801](https://github.com/pixijs/pixijs/pull/11801) - feat: render to array layer by [@&#8203;GoodBoyDigital](https://github.com/GoodBoyDigital) in [#&#8203;11803](https://github.com/pixijs/pixijs/pull/11803) ##### 🐛 Fixed - fix: Improve HTML text measurement accuracy and add comprehensive test scenes by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;11862](https://github.com/pixijs/pixijs/pull/11862) - fix: project container.cullArea from local to global coordinate space before doing cull check by [@&#8203;jujurocket](https://github.com/jujurocket) in [#&#8203;11598](https://github.com/pixijs/pixijs/pull/11598) - fix: use vColor instead of localUniforms.uColor in WebGPU MSDF shader by [@&#8203;Riphal](https://github.com/Riphal) in [#&#8203;11848](https://github.com/pixijs/pixijs/pull/11848) - fix: preserve VAO cache in GlGeometrySystem by [@&#8203;GoodBoyDigital](https://github.com/GoodBoyDigital) in [#&#8203;11863](https://github.com/pixijs/pixijs/pull/11863) - fix: GC system to ensure render groups are marked as dirty by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;11842](https://github.com/pixijs/pixijs/pull/11842) - fix: SplitBitmapText requires "fill: 'white'" by [@&#8203;GiorgiMaziashvili](https://github.com/GiorgiMaziashvili) in [#&#8203;11721](https://github.com/pixijs/pixijs/pull/11721) - fix: preserve generic type parameters in WGSL struct reflection by [@&#8203;stargazer-2697](https://github.com/stargazer-2697) in [#&#8203;11855](https://github.com/pixijs/pixijs/pull/11855) - fix: improve extractAttributesFromGpuProgram to support struct-based inputs by [@&#8203;GoodBoyDigital](https://github.com/GoodBoyDigital) in [#&#8203;11796](https://github.com/pixijs/pixijs/pull/11796) - fix: improves tree-shaking by optimizing module imports by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;11833](https://github.com/pixijs/pixijs/pull/11833) - fix: disambiguate falsey tint with black uint by [@&#8203;bigtimebuddy](https://github.com/bigtimebuddy) in [#&#8203;11831](https://github.com/pixijs/pixijs/pull/11831) - fix: BitmapFontManager getFont emitting TextStyle update event by [@&#8203;subhu339](https://github.com/subhu339) in [#&#8203;11835](https://github.com/pixijs/pixijs/pull/11835) - fix: allow custom parsers to override src in Resolver ([#&#8203;11828](https://github.com/pixijs/pixijs/issues/11828)) by [@&#8203;GoodBoyDigital](https://github.com/GoodBoyDigital) in [#&#8203;11849](https://github.com/pixijs/pixijs/pull/11849) - fix: recognise WGSL vertex attributes followed by closing parenthesis by [@&#8203;stargazer-2697](https://github.com/stargazer-2697) in [#&#8203;11854](https://github.com/pixijs/pixijs/pull/11854) - fix: Video Loader Not Catching Load Errors by [@&#8203;stargazer-2697](https://github.com/stargazer-2697) in [#&#8203;11856](https://github.com/pixijs/pixijs/pull/11856) ##### 🧹 Chores - chore: add visual tests for text rendering features by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;11825](https://github.com/pixijs/pixijs/pull/11825) - chore: Upgrades dependencies by [@&#8203;Zyie](https://github.com/Zyie) in [#&#8203;11806](https://github.com/pixijs/pixijs/pull/11806) - chore: guide to use envinfo to get environment information by [@&#8203;Typed](https://github.com/Typed) SIGTERM in [#&#8203;11859](https://github.com/pixijs/pixijs/pull/11859) - chore: optimize fastCopy with waterfall typed array selection by [@&#8203;GoodBoyDigital](https://github.com/GoodBoyDigital) in [#&#8203;11798](https://github.com/pixijs/pixijs/pull/11798) - chore: use texImage2D instead of texSubImage2D for video in Safari by [@&#8203;GoodBoyDigital](https://github.com/GoodBoyDigital) in [#&#8203;11867](https://github.com/pixijs/pixijs/pull/11867) #### New Contributors - [@&#8203;subhu339](https://github.com/subhu339) made their first contribution in [#&#8203;11835](https://github.com/pixijs/pixijs/pull/11835) - [@&#8203;stargazer-2697](https://github.com/stargazer-2697) made their first contribution in [#&#8203;11854](https://github.com/pixijs/pixijs/pull/11854) - [@&#8203;GiorgiMaziashvili](https://github.com/GiorgiMaziashvili) made their first contribution in [#&#8203;11721](https://github.com/pixijs/pixijs/pull/11721) - [@&#8203;Riphal](https://github.com/Riphal) made their first contribution in [#&#8203;11848](https://github.com/pixijs/pixijs/pull/11848) - [@&#8203;jujurocket](https://github.com/jujurocket) made their first contribution in [#&#8203;11598](https://github.com/pixijs/pixijs/pull/11598) - [@&#8203;krzys](https://github.com/krzys) made their first contribution in [#&#8203;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 ([#&#8203;20266](https://github.com/prettier/prettier/pull/20266) by [@&#8203;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 ([#&#8203;20140](https://github.com/prettier/prettier/pull/20140) by [@&#8203;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 ([#&#8203;20087](https://github.com/prettier/prettier/pull/20087) by [@&#8203;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 ([#&#8203;19647](https://github.com/prettier/prettier/pull/19647), [#&#8203;19990](https://github.com/prettier/prettier/pull/19990) by [@&#8203;Austin1serb](https://github.com/Austin1serb), [@&#8203;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 ([#&#8203;19725](https://github.com/prettier/prettier/pull/19725) by [@&#8203;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 ([#&#8203;19730](https://github.com/prettier/prettier/pull/19730) by [@&#8203;wanxiankai](https://github.com/wanxiankai), [@&#8203;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 ([#&#8203;19739](https://github.com/prettier/prettier/pull/19739) by [@&#8203;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 ([#&#8203;19802](https://github.com/prettier/prettier/pull/19802) by [@&#8203;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 ([#&#8203;19878](https://github.com/prettier/prettier/pull/19878) by [@&#8203;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 ([#&#8203;19987](https://github.com/prettier/prettier/pull/19987) by [@&#8203;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 ([#&#8203;20014](https://github.com/prettier/prettier/pull/20014) by [@&#8203;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` ([#&#8203;19621](https://github.com/prettier/prettier/pull/19621) by [@&#8203;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` ([#&#8203;19624](https://github.com/prettier/prettier/pull/19624), [#&#8203;19675](https://github.com/prettier/prettier/pull/19675) by [@&#8203;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` ([#&#8203;19628](https://github.com/prettier/prettier/pull/19628), [#&#8203;19629](https://github.com/prettier/prettier/pull/19629) by [@&#8203;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 [@&#8203;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 ([#&#8203;19351](https://github.com/prettier/prettier/pull/19351) by [@&#8203;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 ([#&#8203;19487](https://github.com/prettier/prettier/pull/19487) by [@&#8203;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 ([#&#8203;19503](https://github.com/prettier/prettier/pull/19503) by [@&#8203;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 `+` ([#&#8203;19516](https://github.com/prettier/prettier/pull/19516) by [@&#8203;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 ([#&#8203;19517](https://github.com/prettier/prettier/pull/19517) by [@&#8203;kovsu](https://github.com/kovsu)) <!-- prettier-ignore --> ```less // Input a { box-shadow + : 0 0 1px #&#8203;000; } // Prettier 3.9.4 a { box-shadow+ : 0 0 1px #&#8203;000; } // Prettier 3.9.5 a { box-shadow+: 0 0 1px #&#8203;000; } ``` ##### Markdown: Preserve wiki links with aliases ([#&#8203;19527](https://github.com/prettier/prettier/pull/19527) by [@&#8203;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 ([#&#8203;19565](https://github.com/prettier/prettier/pull/19565) by [@&#8203;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 ([#&#8203;19567](https://github.com/prettier/prettier/pull/19567) by [@&#8203;Janther](https://github.com/Janther)) Prettier\@&#8203;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 ([#&#8203;19568](https://github.com/prettier/prettier/pull/19568) by [@&#8203;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 ([#&#8203;19571](https://github.com/prettier/prettier/pull/19571) by [@&#8203;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 ([#&#8203;19572](https://github.com/prettier/prettier/pull/19572) by [@&#8203;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 ([#&#8203;19574](https://github.com/prettier/prettier/pull/19574) by [@&#8203;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` ([#&#8203;19581](https://github.com/prettier/prettier/pull/19581) by [@&#8203;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 ([#&#8203;19583](https://github.com/prettier/prettier/pull/19583) by [@&#8203;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 ([#&#8203;19499](https://github.com/prettier/prettier/pull/19499) by [@&#8203;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 ([#&#8203;19489](https://github.com/prettier/prettier/pull/19489) by [@&#8203;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 ([#&#8203;19492](https://github.com/prettier/prettier/pull/19492) by [@&#8203;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 ([#&#8203;20266](https://github.com/prettier/prettier/pull/20266) by [@&#8203;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 ([#&#8203;19022](https://github.com/prettier/prettier/pull/19022) by [@&#8203;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 ([#&#8203;17746](https://github.com/prettier/prettier/pull/17746) by [@&#8203;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 ([#&#8203;537](https://github.com/sveltejs/prettier-plugin-svelte/pull/537)) - fix: preserve whitespace inside `<textarea>` (its content is whitespace-sensitive, like `<pre>`) ([#&#8203;540](https://github.com/sveltejs/prettier-plugin-svelte/pull/540)) - fix: don't drop `<script>`/`<style>` content when the closing tag has whitespace (`</script >`) ([#&#8203;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 ([#&#8203;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 ([#&#8203;3079](https://github.com/sveltejs/language-tools/pull/3079)) - fix: resolve symlinked packages when importing their `.svelte` files, so their types are not duplicated ([#&#8203;3119](https://github.com/sveltejs/language-tools/pull/3119)) - fix: align default tsconfig "include" logic with tsc/tsserver ([#&#8203;3110](https://github.com/sveltejs/language-tools/pull/3110)) - fix: report a failed TypeScript compiler process and exit non-zero when a run fails ([#&#8203;3133](https://github.com/sveltejs/language-tools/pull/3133)) - fix: ignore the `.svelte-check` cache directory in `--watch` with `--tsgo` / `--incremental` ([#&#8203;3128](https://github.com/sveltejs/language-tools/pull/3128)) - fix: check all files with `--tsgo` / `--incremental` when the tsconfig has no `include` ([#&#8203;3138](https://github.com/sveltejs/language-tools/pull/3138)) - fix: disallow `--tsgo` together with `--tsgo-experimental-api` ([#&#8203;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 ([#&#8203;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 ([#&#8203;3091](https://github.com/sveltejs/language-tools/pull/3091)) - fix: handle SvelteKit 3 having its config merged at the top level ([#&#8203;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 ([#&#8203;3096](https://github.com/sveltejs/language-tools/pull/3096)) - Updated dependencies \[[`1df53d8`](https://github.com/sveltejs/language-tools/commit/1df53d83049135e5789daf68416334a6f1b6b2c8)]: - [@&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;3074](https://github.com/sveltejs/language-tools/pull/3074)) - fix: report tsconfig errors in --tsgo-experimental-api ([#&#8203;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 ([#&#8203;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 ([#&#8203;3066](https://github.com/sveltejs/language-tools/pull/3066)) - feat: svelte-check tsgo support with experimental api ([#&#8203;3036](https://github.com/sveltejs/language-tools/pull/3036)) ##### Patch Changes - fix: load esm version of Vite ([#&#8203;3065](https://github.com/sveltejs/language-tools/pull/3065)) - fix: stop excluding workspaces under dot-prefixed ancestors ([#&#8203;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)]: - [@&#8203;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` ([#&#8203;3031](https://github.com/sveltejs/language-tools/pull/3031)) ##### Patch Changes - Updated dependencies \[[`151cf45`](https://github.com/sveltejs/language-tools/commit/151cf4593efb4cc3a88cd3c00d5a2f847ac345fe)]: - [@&#8203;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 ([#&#8203;3033](https://github.com/sveltejs/language-tools/pull/3033)) ##### Patch Changes - fix: properly handle props with the name `slot` inside Svelte 5 snippets ([#&#8203;3030](https://github.com/sveltejs/language-tools/pull/3030)) - feat: add support for svelte config ts/mts files ([#&#8203;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 ([#&#8203;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 ([#&#8203;3014](https://github.com/sveltejs/language-tools/pull/3014)) - fix: report diagnostics in tsconfig.json ([#&#8203;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 ([#&#8203;2974](https://github.com/sveltejs/language-tools/pull/2974)) - fix: resolve svelte files with NodeNext in --incremental/tsgo ([#&#8203;2990](https://github.com/sveltejs/language-tools/pull/2990)) - perf: various optimization with ast walk ([#&#8203;2969](https://github.com/sveltejs/language-tools/pull/2969)) - fix: prevent error with escape sequence in attribute ([#&#8203;2968](https://github.com/sveltejs/language-tools/pull/2968)) - fix: typescript 6.0 compatibility ([#&#8203;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 ([#&#8203;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 ([#&#8203;2957](https://github.com/sveltejs/language-tools/pull/2957)) - fix: pass filename to `warningFilter` ([#&#8203;2959](https://github.com/sveltejs/language-tools/pull/2959)) - fix: resolve svelte files under path alias in `--incremental/tsgo` mode ([#&#8203;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 ([#&#8203;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 ([#&#8203;2942](https://github.com/sveltejs/language-tools/pull/2942)) - fix: support SvelteKit zero types in svelte-check --incremental ([#&#8203;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 ([#&#8203;2932](https://github.com/sveltejs/language-tools/pull/2932)) ##### Patch Changes - fix: ignore Unix domain sockets in file watcher to prevent crashes ([#&#8203;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 ([#&#8203;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 ([#&#8203;12780](https://github.com/typescript-eslint/typescript-eslint/pull/12780)) ##### ❤️ Thank You - Ulrich Stark [@&#8203;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 ([#&#8203;12105](https://github.com/typescript-eslint/typescript-eslint/pull/12105)) ##### ❤️ Thank You - Claude Sonnet 5 - Evyatar Daud [@&#8203;StyleShit](https://github.com/StyleShit) - Josh Goldberg - Josh Goldberg ✨ - Kirk Waiblinger [@&#8203;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 ([#&#8203;12529](https://github.com/typescript-eslint/typescript-eslint/pull/12529)) ##### ❤️ Thank You - Josh Goldberg ✨ - Kirk Waiblinger [@&#8203;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" ([#&#8203;12444](https://github.com/typescript-eslint/typescript-eslint/pull/12444)) ##### ❤️ Thank You - Kirk Waiblinger [@&#8203;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-->
renovate-bot added 1 commit 2026-10-26 16:31:00 -07:00
chore(deps): update all non-major dependencies
renovate/stability-days Updates have met minimum release age requirement
ce004fc0ab
renovate-bot force-pushed renovate/all-minor-patch from a67c6a7e23 to ce004fc0ab 2026-10-26 16:31:00 -07:00 Compare
All checks were successful
renovate/stability-days Updates have met minimum release age requirement
You are not authorized to merge this pull request.
This pull request can be merged automatically.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin renovate/all-minor-patch:renovate/all-minor-patch
git checkout renovate/all-minor-patch
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: TehRiehlDeal/skill-tree-portfolio#8