Skip to main content
interlace
Plugin: maintainability

Changelog

Release history and version updates for eslint-plugin-maintainability

Generated from the release history

Built from this package's CHANGELOG.md at deploy time, so it matches the version these docs describe. The full cross-package history lives on the changelog.

3.2.14

  • Fixno-unhandled-promise dropped ignoreInTests on .mts / .cts / .mjs / .cjs
  • Dependenciesupdated workspace dependencies: @interlace/eslint-devkit@1.19.6

3.2.13

  • Fixidentical-functions normalisation no longer erases or skips distinguishing text

3.2.12

  • Fixfour false positives found by sweeping the plugins over a real corpus
  • Fixconsistent-function-scoping told a module-scope function to move to module scope
  • Fixthree false positives found by sweeping the plugins over a real corpus

3.2.11

  • Fixconsistent-function-scoping was silent on a helper capturing only a module-level const
  • Fixidentical-functions compared comment prose as code, hiding duplicates behind a one-line /* */
  • Dependenciesupdated workspace dependencies: @interlace/eslint-devkit@1.19.5

3.2.10

  • Fixcognitive-complexity charges a homogeneous run of logical operators once, not once per operator. The docs' Complexity Factors table scores logical operators "+1 | &&, || (sequence breaks)" — a run costs one point and only a break in the run starts the next — but every LogicalExpression node was charged, so a && b && c && d cost 3 where the table says 1. That inflated every &&-heavy function against an unchanged Sonar-default threshold of 15. Mixed runs such as a && b || c still cost 2, as two sequences should.
  • Fixidentical-functions no longer groups a function with a closure nested inside it. An outer function whose body is largely one call taking an inline callback shares almost all its text with that callback, so the pair cleared the similarity threshold by construction — but they are one implementation, and "extract to a reusable function" is impossible advice, because lifting a closure out of its own parent removes no code. A triple-nested forEach was reported as "3 duplicates" of itself. Removes 6 of burgee's 24 findings for this rule.

3.2.9

  • FixFP/FN sweep against the burgee corpus — three confirmed rule defects.

3.2.8

  • Fixconsistent-function-scoping no longer reports a function that captures a sibling function declared in the same scope. Hoisting makes the sibling reachable from the outer scope, so the inner function cannot be moved there without breaking the reference — the rule was recommending a move that does not compile.

3.2.7

  • Fixno-silent-errors's allowWithComment no longer disarms the rest of the file

3.2.6

  • Fixconsistent-function-scoping sees destructured bindings and this
  • Fixnested-complexity-hotspots no longer counts else if as a nesting level
  • Fixidentical-functions stops calling private accessors identical
  • Fixno-lonely-if requires the if to actually be alone

3.2.5

  • Fixno-missing-error-context reads three more shapes of throw
  • Fixno-unhandled-promise no longer reports a promise whose value is used

3.2.4

  • Fixno-missing-error-context accepts a custom *Error argument and a re-throw
  • Fixconsistent-function-scoping sees through a type assertion to module scope
  • Fixno-unhandled-promise no longer treats a function-typed parameter as its enclosing async function

3.2.3

  • FixThe README logo now links to the plugin's own documentation.

3.2.2

  • FixPromise['all'] and p['then'] are the same promise API
  • Maintenancethe promise-handling check no longer casts an unnameable member
  • Dependenciesupdated workspace dependencies: @interlace/eslint-devkit@1.19.0

3.2.1

  • FixAdd an install-size badge to the README prelude, linking to each package's packagephobia page. npm renders the README from the last publish, so a badge only appears on npmjs.com after a release.
  • Dependenciesupdated workspace dependencies: @interlace/eslint-devkit@1.18.2

3.2.0

  • Feature🐛 Fix — a template literal is a string, in 82 rules that disagreed
  • Fix🐛 Fixno-unhandled-promise silenced a promise passed as an argument
  • Dependenciesupdated workspace dependencies: @interlace/eslint-devkit@1.18.0

3.1.2

  • Fixmax-parameters no longer counts TypeScript's this parameter
  • Dependenciesupdated workspace dependencies: @interlace/eslint-devkit@1.17.4

3.1.1

  • Fixpoint meta.docs.url at documentation that exists #683
  • Dependenciesupdated workspace dependencies: @interlace/eslint-devkit@1.17.2

3.1.0

  • identical-functions stops reporting on code nobody edits. #609
  • identical-functions requires an exact match on short bodies. #599
  • DependenciesUpdated internal dependencies

3.0.17

  • identical-functions no longer erases the things that tell two functions #595

3.0.16

  • Bound the TypeScript peer range and declare the React peer #499

3.0.15

  • Correct the declared ESLint floor: ^8.0.0^8.40.0. #407
  • Make identical-functions ~35x faster without changing a single finding. #430
  • Correct the ESLint peer range shown in the README Compatibility table. #423
  • meta.hasSuggestions now matches what each rule actually emits. #309
  • DependenciesUpdated internal dependencies

3.0.14

  • Ship the JavaScript without tsc's layout. #411
  • DependenciesUpdated internal dependencies

3.0.13

  • Load rule modules on demand instead of at plugin load. #381
  • Declare what we support, load only what we use #381
  • Fix the ./oxlint subpath export, which pointed at src/oxlint.js — a file no build produces. require('<package>/oxlint') threw MODULE_NOT_FOUND on every published package, while every README documented that exact wiring for oxlint's jsPlugins. The export now points at the build output, dist/src/oxlint.js. #335
  • Fix SDK peer declarations that npm silently ignored #335
  • DependenciesUpdated internal dependencies

3.0.12

  • Add the ecosystem and oxlint marks to the README logo row. Each plugin now #364

3.0.11

  • Fix SDK peer declarations that npm silently ignored #358
  • DependenciesUpdated internal dependencies

3.0.10

  • Re-publish every package so npm carries the optimised artifact #338
  • DependenciesUpdated internal dependencies

3.0.9

  • Rewrite description and keywords on every published package for npm search discovery. npm ranks on name, description, and keywords, and the registry only picks up these fields at publish — so this is metadata-only and takes effect for each package on its next release. #294
  • DependenciesUpdated internal dependencies

3.0.8

  • Docsdocs: dual-logo README header (Interlace mark + ESLint mark side by side) and closing Interlace footer — refreshes the README rendered on npmjs.com. No runtime changes. #269
  • DependenciesUpdated internal dependencies

3.0.7

  • Fix Codecov badge showing "unknown" — switch from flag to component URL format #252

3.0.6

  • CI-only: pin all coverage thresholds at 100% (integration target, merges last). #225

3.0.5

  • Fixfix: republish recommended preset with the correct plugin namespace #200

3.0.4

  • Fixfix: republish recommended with correctly-namespaced, unscoped rule ids #197
  • align codecov component IDs with full package names
  • fix changelog header format across all packages
  • Ofri Peretz

3.0.2

  • align codecov component names and update docs components
  • Ofri Peretz

3.0.1

  • 📘 Launched new documentation site: eslint.interlace.tools
  • 📝 Achieved 100% documentation parity (both .md and .mdx files)

1.0.0

  • Initial stable release with 12 maintainability rules
  • LLM-optimized error messages for AI-assisted development
  • 100% test coverage across all rules
  • ESLint 9 flat config support
  • TypeScript type definitions for all rule options
  • recommended - Balanced maintainability thresholds
  • Single Responsibility: max-lines-per-function, max-lines
  • Open/Closed: prefer-early-return

3.2.15

  • Fixfive FP/FN rule defects found by the burgee sweep
  • Fixcognitive-complexity charges an else if a flat +1 instead of a nesting increment

Building secure JavaScript with Interlace? Star the repo to get new rules and CWE coverage as we ship them — or follow the AI-code-security benchmarks behind them.