Skip to main content
ESLint Interlace
Plugin: conventions

Changelog

Release history and version updates for eslint-plugin-conventions

Live from GitHub

This changelog is fetched directly from CHANGELOG.md on GitHub and cached for 2 hours.

Live changelogfrom eslint-plugin-conventions/CHANGELOG.md, cached for 2 hours.Edit on GitHub

4.1.0

Minor Changes

  • #129 90b970c Thanks @ofri-peretz! - Three new rules at error severity enforcing the Observability cluster of the design philosophies (ANALYTICS_PHILOSOPHY.md + UTM_PHILOSOPHY.md):

    • utm-taxonomyutm_source and utm_medium query-param values in any URL string literal must match the fixed taxonomy. Free-text values (Blog, blog_v2, BLOG) destroy joinability in PostHog and are forbidden.
    • no-raw-cross-property-href — Hand-written <a href="https://*.interlace.tools/…"> and <a href="https://ofriperetz.dev/…"> JSX literals are flagged. The blessed escape hatch is the per-property buildUtmHref() helper from lib/utm.ts.
    • analytics-event-naming — Vendor-neutral. Matches <obj>.capture() (PostHog), <obj>.track() (Segment / Mixpanel / Amplitude), and bare track() (our primitive). Event names must follow category:object_action (lowercase snake_case) with action from a fixed verb list; $-prefixed reserved events are exempt; template-literal event names are forbidden.

    Also fixes compareVersions in expiring-todo-comments to normalise wildcards (24.x in engines.node) — without this, parseSemver returned null and the comparator falsely matched every >= engine TODO as expired.

  • #148 82718c2 Thanks @ofri-peretz! - feat(no-magic-numbers): add conventions/no-magic-numbers — closes prob_magic_numbers ILB-Arena-Quality FN

    Flags numeric literals that lack a named constant, catching the magic number code smell that makes intent unclear.

    Built-in allowlist: -1, 0, 1, 2 are always allowed as universally idiomatic.

    Context-aware skips (by default):

    • const / export const declarations — the literal IS the named constant
    • Array index access: items[3] (ignoreArrayIndexes: true)
    • Default parameter values: function f(n = 1000) {}
    • TypeScript enum initializers: enum Status { Active = 1 }
    • Numeric object property keys: { 404: 'Not Found' }

    Options: ignore, ignoreArrayIndexes, ignoreDefaultValues, ignoreEnums, ignoreBitwiseExpressions.

    Added at warn severity in conventions/recommended.

Patch Changes

  • #154 62e67a1 Thanks @ofri-peretz! - no-magic-numbers: add extract-const suggestion fixer. IDEs now offer a one-click "Extract to named constant" action that inserts a const MAGIC_<value> declaration before the containing statement and replaces the literal.

  • Updated dependencies [736a5fe]:

    • @interlace/eslint-devkit@1.4.1

4.0.7 (2026-02-09)

This was a version bump only for eslint-plugin-conventions to align it with other projects, there were no code changes.

[4.0.5] - 2026-02-08

This was a version bump only for eslint-plugin-conventions to align it with other projects, there were no code changes.

[4.0.4] - 2026-02-08

Bug Fixes

  • align codecov component IDs with full package names (2831b968)

Documentation

  • fix changelog header format across all packages (c3a15082)

❤️ Thank You

  • Ofri Peretz

[4.0.3] - 2026-02-06

Bug Fixes

  • align codecov component names and update docs components (0a59a86c)

❤️ Thank You

  • Ofri Peretz

[4.0.2] - 2026-02-02

This was a version bump only for eslint-plugin-conventions to align it with other projects, there were no code changes.

Changelog

All notable changes to eslint-plugin-conventions will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Documentation

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

[4.0.1] - 2026-02-02

This was a version bump only for eslint-plugin-conventions to align it with other projects, there were no code changes.

[4.0.0] - 2026-02-02

This was a version bump only for eslint-plugin-conventions to align it with other projects, there were no code changes.

[3.0.0] - 2026-02-02

This was a version bump only for eslint-plugin-conventions to align it with other projects, there were no code changes.

[1.0.0] - 2026-01-26

Added

  • Initial stable release with 9 convention 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

Rules

RuleDescription💼⚠️
no-commented-codeDisallow commented-out code blocks💼⚠️
expiring-todo-commentsEnforce expiration dates on TODO comments💼⚠️
prefer-code-pointPrefer codePointAt over charCodeAt for Unicode
prefer-dom-node-text-contentPrefer textContent over innerText for performance
no-console-spacesDisallow leading/trailing spaces in console calls
no-deprecated-apiDisallow usage of deprecated Node.js APIs💼⚠️
prefer-dependency-version-strategyEnforce consistent version strategies
filename-caseEnforce consistent file naming conventions
consistent-existence-index-checkEnforce consistent array index existence checks

Presets

  • recommended - Balanced conventions for most teams

Known Limitations

Documented in docs/KNOWN-LIMITATIONS.md:

  • filename-case: Framework-required names (e.g., webpack.config.js) require manual exclude lists
  • no-deprecated-api: May not detect usage through wrapper libraries
  • expiring-todo-comments: Requires consistent date formats (ISO 8601 recommended)

On this page

No Headings