Skip to content

v13.0.0

Choose a tag to compare

@github-actions github-actions released this 20 Apr 16:32
24882a3

Release (2026-04-20)

  • eslint-plugin-ember 13.0.0 (major)

💥 Breaking Change

  • eslint-plugin-ember
    • #2492 Replace deprecated ESLint context methods for ESLint 10 compatibility, dropping eslint < 8.40 (@johanrd)
    • #2557 Upgrade ember-eslint-parser to 0.8.0 (@Copilot)
    • #2555 Drop support for Node < 20.19 (@Copilot)

🚀 Enhancement

🐛 Bug Fix

  • eslint-plugin-ember
    • #2676 Post-merge-review: use scope manager for block-param tracking in template-no-obsolete-elements (@johanrd)
    • #2689 Post-merge-review: extend allowlist with svg-tags on template-no-block-params-for-html-elements (@johanrd)
    • #2662 Post-merge-review: fix template-no-passed-in-event-handlers ignore-config format and event list (@johanrd)
    • #2687 Post-merge-review: Fix template-no-arguments-for-html-elements: add svg and mathml elements (@johanrd)
    • #2683 Post-merge-review: Fix template-require-lang-attribute: validate every BCP47 subtag from 'language-tags' (@johanrd)
    • #2694 Post-merge-review: Fix template-no-nested-landmark: drop port-only section/region (@johanrd)
    • #2688 Post-merge-review: Fix template-no-attrs-in-components: align detection with upstream (@johanrd)
    • #2698 Post-merge-review: Fix template-require-form-method: throw on bad config; default enabled (@johanrd)
    • #2709 remove: template-no-negated-comparison (@johanrd)
    • #2681 Post-merge-review: Fix template-no-whitespace-for-layout false positive on attribute values (@johanrd)
    • #2693 Post-merge-review: template-no-negated-comparison: document name-clash; drop non-standard 'ne' (@johanrd)
    • #2704 chore: add originallyFrom metadata to 26 ported rules (@johanrd)
    • #2707 Post-merge-review: template-no-implicit-this support regex patterns in allow option (@johanrd)
    • #2708 restore: template-no-negated-condition (accidentally deleted in 133a16f) (@johanrd)
    • #2652 Post-merge-review: Fix template-no-link-to-tagname: only flag @tagName, not bare tagName, on angle-bracket <LinkTo> (@johanrd)
    • #2684 Post-merge-review: Fix template-require-iframe-title: split messageIds; report each duplicate with index (@johanrd)
    • #2700 Post-merge-review: Fix template-require-media-caption: skip caption check when muted is dynamic (@johanrd)
    • #2690 Post-merge-review: Set templateMode: 'both' on template-no-invalid-interactive (@johanrd)
    • #2691 Post-merge-review: Fix template-no-model-argument-in-route-templates: lint .gjs/.gts and unknown paths (@johanrd)
    • #2692 Post-merge-review: Fix template-no-mut-helper: templateMode 'both' and unwrap setterAlternative (@johanrd)
    • #2695 Post-merge-review: Fix template-no-shadowed-elements: align HTML-element detection with upstream (@johanrd)
    • #2685 Post-merge-review: Add autofix to template-no-unknown-arguments-for-builtin-components: rename args and migrate events (@johanrd)
    • #2696 Post-merge-review: Fix template-quotes: accept boolean root config (@johanrd)
    • #2697 Post-merge-review: Fix template-require-aria-activedescendant-tabindex: autofix for non-div tags (@johanrd)
    • #2686 Post-merge-review: Fix template-require-context-role: align aria-hidden scope and report oc with upstream (@johanrd)
    • #2699 Post-merge-review: Fix template-require-mandatory-role-attributes: read StringLiteral .value not .original (@johanrd)
    • #2701 Post-merge-review: Fix template-table-groups: align with upstream's table semantics (@johanrd)
    • #2664 Post-merge-review: Fix template-no-at-ember-render-modifiers: detect GJS/GTS imports (@johanrd)
    • #2654 Post-merge-review: Fix template-no-action-modifiers autofix: skip when hash pairs are present (@johanrd)
    • #2680 Post-merge-review: Fix template-no-invalid-link-text: skip when link contains non-text children (@johanrd)
    • #2677 Post-merge-review: Fix template-no-action false positive in GJS/GTS (@johanrd)
    • #2675 Post-merge-review: Fix template-no-unnecessary-component-helper: skip autofix for invalid GJS/GTS identifiers (@johanrd)
    • #2682 Post-merge-review: Fix template-no-duplicate-landmark-elements false positive on dynamic aria-label (@johanrd)
    • #2660 Post-merge-review: Fix template-no-invalid-aria-attributes: reject boolean strings for string-typed ARIA attributes (@johanrd)
    • #2659 Post-merge-review: Fix template-no-implicit-this: callee detection, block-param scoping, bare {{this}} (@johanrd)
    • #2658 Post-merge-review: Fix template-no-dynamic-subexpression-invocations false positive on body-position this.* mustaches (@johanrd)
    • #2657 Post-merge-review: Fix template-no-curly-component-invocation: preserve this./@/local names in suggestions, and skip JS scope bindings (@johanrd)
    • #2656 Post-merge-review: Fix template-no-chained-this autofix: also update the closing tag (@johanrd)
    • #2679 Post-merge-review: Fix template-no-inline-linkto false positive in GJS/GTS (@johanrd)
    • #2668 Post-merge-review: Fix template-no-unbound false positive in GJS/GTS (@johanrd)
    • #2661 Post-merge-review: Fix template-no-multiple-empty-lines: detect trailing empty lines and fix reported location (@johanrd)
    • #2663 Post-merge-review: Fix template-no-empty-headings: recognize <this.X>, <@x>, <ns.X> as accessible content (@johanrd)
    • #2665 Post-merge-review: Fix template-deprecated-render-helper false positive in GJS/GTS (@johanrd)
    • #2666 Post-merge-review: Fix template-deprecated-inline-view-helper false positive in GJS/GTS (@johanrd)
    • #2667 Post-merge-review: Fix template-no-class-bindings false positive in GJS/GTS (@johanrd)
    • #2670 Post-merge-review: Fix template-no-log false positive on JS scope bindings in GJS/GTS (@johanrd)
    • #2671 Post-merge-review: Fix template-no-outlet-outside-routes false positive on imported outlet (@johanrd)
    • #2673 Post-merge-review: Fix template-require-has-block-helper: skip JS scope bindings (@johanrd)
    • #2674 Post-merge-review: Fix template-no-invalid-link-title: track @ember/routing LinkTo import (@johanrd)
    • #2672 Post-merge-review: Fix template-require-input-label mustache branch: apply strict-mode guard (@johanrd)
    • #2669 Post-merge-review: Fix template-no-input-tagname false positive in GJS/GTS (@johanrd)
    • #2678 Post-merge-review: Fix template-no-input-block false positive in GJS/GTS (@johanrd)
    • #2651 Post-merge-review: Fix template-no-invalid-interactive: align interactive element detection with upstream (@johanrd)
    • #2647 Post-merge-review: Restore autofix for template-simple-unless (@johanrd)
    • #2650 Post merge-review: Fix template-no-quoteless-attributes false positive on quoted values (@johanrd)
    • #2646 Post-merge-review: Restore autofix for template-no-positional-data-test-selectors (@johanrd)
    • #2645 Post-merge-review: Fix template-no-this-in-template-only-components: detect .hbs files with backing class on disk (@johanrd)
    • #2648 Post-merge-review: Restore autofix for template-no-redundant-fn (@johanrd)
    • #2649 Post-merge-review: Restore autofix for template-sort-invocations (@johanrd)
    • #2644 Post-merge-review: Fix template-no-unused-block-params: detect angle-bracket block params and walk modifiers (@johanrd)
    • #2637 Fix rule: ember/template-no-invalid-link-text (@tcjr)
    • #2636 Fix rule: ember/template-no-unused-block-params (@tcjr)
    • #2633 Remove new configs introduced in template-lint extraction (@NullVoxPopuli)
    • #2630 Post-merge cleanup of eslint 10 copmpat to match with #2492 (@johanrd)
    • #2626 Delete rules that never existed or have overlap with other rules (@NullVoxPopuli)
    • #2549 [BUGFIX]: no-test-import-export false positive on non-test files ending in -test (@johanrd)
    • #2536 Restore autofix: template-block-indentation (@johanrd)
    • #2523 Post-merge review of #2461 (template-attribute-indentation) (@johanrd)
    • #2524 Post-merge review of #2427 (template-no-duplicate-landmark-elements) (@johanrd)
    • #2525 Post-merge review of #2450 (template-deprecated-inline-view-helper) (@johanrd)
    • #2526 Post-merge review of #2460 (template-no-curly-component-invocation) (@johanrd)
    • #2527 Post-merge review of #2426 (template-no-duplicate-id) (@johanrd)
    • #2528 Skip reporting for submit buttons (@johanrd)
    • #2530 Restore autofix: template-no-action-modifiers (@johanrd)
    • #2531 Restore autofix: template-no-array-prototype-extensions (@johanrd)
    • #2532 Restore autofix: template-no-multiple-empty-lines (@johanrd)
    • #2533 Restore autofix: no-negated-condition (@johanrd)
    • #2534 Restore autofix: template-no-obscure-array-access (@johanrd)
    • #2537 Restore autofix: template-no-curly-component-invocation (@johanrd)
    • #2535 Restore autofix: template-attribute-order (@johanrd)
    • #2538 [BUGFIX legacy]: avoid-leaking-state-in-ember-objects false positives with TypeScript type assertions (@johanrd)
    • #2540 [BUGFIX]: Recognize import { service } in order-in-* rules and no-implicit-injections (@johanrd)
    • #2541 [BUGFIX legacy]: Broaden mirage.js findBy exclusion in no-array-prototype-extensions (@johanrd)
    • #2542 [BUGFIX]: no-tracked-properties-from-args crash on method calls (@johanrd)
    • #2544 [BUGFIX]: no-empty-glimmer-component-classes false positive on declare class (@johanrd)
    • #2545 [BUGFIX]: no-test-import-export false positive on package imports (@johanrd)
    • #2539 [BUGFIX legacy]: require-computed-macros self-referential autofix (@johanrd)
    • #2550 [BUGFIX legacy] Fix no-implicit-injections crash with mixins and empty class bodies (@johanrd)
    • #2546 [BUGFIX legacy]: no-deprecated-router-transition-methods crash with mixins (@johanrd)
    • #2548 [BUGFIX]: no-actions-hash crash on TypeScript declare properties (@johanrd)
    • #2543 [BUGFIX]: no-computed-properties-in-native-classes when file mixes native and classic classes (@johanrd)
    • #2508 Fix locals tracking for deprecated-inline-view (@NullVoxPopuli)
    • #2496 Post-merge review of #2408 (template-no-autofocus-attribute) (@johanrd)
    • #2500 Post-merge review of #2424 (template-no-action-modifiers) (@johanrd)
    • #2504 Post-merge review of #2484 (template-no-nested-interactive) (@johanrd)
    • #2501 Post-merge review of #2471 (template-no-invalid-aria-attributes) (@johanrd)
    • #2498 Post-merge review of #2475 (template-no-invalid-role) (@johanrd)
    • #2495 Post-merge review of #2469 (template-no-implicit-this) (@johanrd)
    • #2497 Post-merge review of #2477 (template-no-link-to-positional-params) (@johanrd)
    • #2494 Post-merge review of #2395 (template-link-href-attributes) (@johanrd)
    • #2503 Post-merge review of #2396 (template-link-rel-noopener) (@johanrd)
    • #2499 Post-merge review of #2414 (template-no-capital-arguments) (@johanrd)
    • #2502 Post-merge review of #2381 (template-no-log) (@johanrd)
    • #2505 Post-merge review of #2429 (template-no-element-event-actions) (@johanrd)
    • #2506 Post-merge review of #2423 (template-no-action) (@johanrd)
    • #2507 Post-merge review of #2490 (template-no-outlet-outside-routes) (@johanrd)
    • #2493 Post-merge review of #2442 (template-no-inline-styles) (@johanrd)

🏠 Internal

Committers: 8