v14 preview: recommended config per RFC #1217 - #2840
Draft
NullVoxPopuli wants to merge 8 commits into
Draft
Conversation
- enable the 87 strict-mode-applicable template rules for gjs/gts, scoped with files blocks so .hbs and .js/.ts are untouched - drop 13 rules that only fire on ember-source 3.x patterns - add no-builtin-form-components and no-modifier-without-element-usage BREAKING CHANGE: the recommended config reports new errors in gjs/gts files and no longer reports the legacy JS rules. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Contributor
🏎️ Benchmark Comparison
Full mitata output |
NullVoxPopuli
marked this pull request as draft
August 17, 2026 20:43
Contributor
Author
|
marked as draft because the RFC is not yet approved |
The gts override re-extends plugin:ember/recommended, which outranks the root-level rules block, so the three offs had no effect on .gts fixtures. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Flat config `name` shows up in config validation errors and in --inspect-config, which is otherwise index-based and unreadable. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
NullVoxPopuli
commented
Aug 17, 2026
This was referenced Aug 17, 2026
Merged
NullVoxPopuli
commented
Aug 17, 2026
recommended carries their rules now, scoped per file type. The core-rule disables that recommended-gts added move to lib/ts-eslint-recommended.js and apply to **/*.gts from recommended and from the mjs gts export. BREAKING CHANGE: plugin:ember/recommended-gjs and plugin:ember/recommended-gts no longer exist. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Matches the ember:plugin / ember:parser style. The names no longer collide with a config, since recommended-gjs and recommended-gts are gone. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
11 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Breaking. Implements the
recommendedset from emberjs/rfcs#1217.Three changes:
recommendedgets{ files: ['**/*.gjs'], rules: gjsRules }and the gts equivalent, so.hbs,.js, and.tsare untouched. The 9 loose-mode-only rules (Appendix B) stay intemplate-lint-migration.recommended. None are deleted; apps on older ember-source can re-enable them.no-builtin-form-componentsandno-modifier-without-element-usageare in.Mechanically:
recommendedGjs/recommendedGtson the Appendix A rules,recommended: falseon the removals, thennpm run updateandupdate:eslint-docs.Verified against a
.gjsand a.jsfile with the built config: template rules fire only on.gjs, the two added rules fire on both, andtryInvoke/getWithDefault/String.prototype.camelizeno longer report.Three conflicts, now resolved
These rules are in RFC Appendix A but carry
templateMode: 'loose'in the code, so one of the two is wrong in each case. Each is checked against the rule's implementation and its behavior on a real.gjsfile, and split out:template-no-extra-mut-helper-argumenttemplateModewas wrongtemplate-no-unnecessary-component-helpertemplateModewas wrongtemplate-no-class-bindings{}in strict mode, so it belongs in Appendix B#2843 drops it from the gjs/gts set here, taking that set from 88 rules to 87. The RFC appendices need the same move.
Not in this PR
template-lint-migrationtohbsrename. Separate concern from the rule set.require-fetch-import, listed for removal in the RFC, is alreadyrecommended: false. No change needed.One test change
tests/lib/rules-preprocessor/gjs-gts-parser-test.jsturns offtemplate-no-html-comments,template-no-invalid-interactive, andtemplate-no-unused-block-params. Its fixtures exercise the preprocessor and now trip those rules incidentally.🤖 Generated with Claude Code
Update:
recommended-gjsandrecommended-gtsare gonerecommendedcarried their rules already, so both were redundant. Removed fromlib/config/andlib/config-legacy/.recommended-gtsdid have one thingrecommendedlacked: the typescript-eslinteslint-recommendeddisables. Those moved tolib/ts-eslint-recommended.jsand now apply to**/*.gtsfromrecommended, and from thegtsexport inlib/recommended.mjs, which was missing them.Rule counts per file, from
calculateConfigForFile:a.jsa.gjsa.gtsno-undefisoffandprefer-constiserrorfor.gtsonly.Also updated: the doc-generator
configEmojientries,tests/plugin-exports.js, and the README example that extended both configs. The gjs/gts logos in the rules table go away with the configs, so a reader can no longer tell from the table that a template rule is gjs/gts only.docs/svgs/gjs.svgandgts.svgare now unreferenced.RFC updated in emberjs/rfcs#1217 (commit
76e365f).