Skip to content

Conversation

@NullVoxPopuli
Copy link
Contributor

@NullVoxPopuli NullVoxPopuli commented Jan 31, 2026

Previously iterated on in #2365

In gjs/gts projects, after this PR is merged, projects without hbs will no longer need ember-template-lint.

And in the next major of eslint-plugin-ember, I propose all of these rules become default for gjs/gts files.

TODOs

  • finish self review
  • test on internal work codebase
  • drop the template- prefix for all new rules

Revert .github changes

Remove attribute indentation rule. We have prettier for formatting concerns

Port over gjs/gts relevant ember-template-lint
@NullVoxPopuli NullVoxPopuli force-pushed the nvp/port-ember-template-lint-for-gjs-gts branch from 15d9f8d to c0e3d77 Compare January 31, 2026 19:14
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR ports ember-template-lint rules to eslint-plugin-ember to support gjs/gts projects. The goal is to enable projects without .hbs files to no longer need ember-template-lint as a separate dependency, consolidating template linting into ESLint.

Changes:

  • Adds numerous template-* rules covering accessibility, best practices, deprecations, and style
  • Introduces strict-gjs and strict-gts configurations
  • Updates the rule generation script to support these new configurations

Reviewed changes

Copilot reviewed 298 out of 428 changed files in this pull request and generated 12 comments.

Show a summary per file
File Description
tests/lib/rules/template-*.js Test files for newly added template linting rules
lib/rules/template-*.js Implementation of template linting rules ported from ember-template-lint
docs/rules/template-*.md Documentation for each new rule
scripts/update-rules.js Updated to generate strict-gjs and strict-gts rule configurations
lib/config/strict-gjs.js New strict configuration for .gjs files
lib/config/strict-gts.js New strict configuration for .gts files
lib/config-legacy/strict-gjs.js Legacy format strict configuration for .gjs files
lib/config-legacy/strict-gts.js Legacy format strict configuration for .gts files
lib/recommended-rules.js Updated with new recommended template rules

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +15 to +16
strictGjs: true,
strictGts: true,
Copy link

Copilot AI Feb 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The strictGjs and strictGts properties are defined inside the messages object but should be at the meta level. They should be moved outside of messages to be sibling properties of type, docs, schema, and messages.

Copilot uses AI. Check for mistakes.
Comment on lines +14 to +15
strictGjs: true,
strictGts: true,
Copy link

Copilot AI Feb 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The strictGjs and strictGts properties are defined inside the messages object but should be at the meta level. They should be moved outside of messages to be sibling properties of type, docs, schema, and messages.

Copilot uses AI. Check for mistakes.
Comment on lines +15 to +16
strictGjs: true,
strictGts: true,
Copy link

Copilot AI Feb 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The strictGjs and strictGts properties are defined inside the messages object but should be at the meta level. They should be moved outside of messages to be sibling properties of type, docs, schema, and messages.

Copilot uses AI. Check for mistakes.
Comment on lines +14 to +15
strictGjs: true,
strictGts: true,
Copy link

Copilot AI Feb 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The strictGjs and strictGts properties are defined inside the messages object but should be at the meta level. They should be moved outside of messages to be sibling properties of type, docs, schema, and messages.

Copilot uses AI. Check for mistakes.
Comment on lines +14 to +15
strictGjs: true,
strictGts: true,
Copy link

Copilot AI Feb 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The strictGjs and strictGts properties are defined inside the messages object but should be at the meta level. They should be moved outside of messages to be sibling properties of type, docs, schema, and messages.

Copilot uses AI. Check for mistakes.
Comment on lines +17 to +18
strictGjs: true,
strictGts: true,
Copy link

Copilot AI Feb 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The strictGjs and strictGts properties are defined inside the messages object but should be at the meta level. They should be moved outside of messages to be sibling properties of type, docs, schema, and messages.

Copilot uses AI. Check for mistakes.
Comment on lines +14 to +15
strictGjs: true,
strictGts: true,
Copy link

Copilot AI Feb 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The strictGjs and strictGts properties are defined inside the messages object but should be at the meta level. They should be moved outside of messages to be sibling properties of type, docs, schema, and messages.

Copilot uses AI. Check for mistakes.
Comment on lines +14 to +15
strictGjs: true,
strictGts: true,
Copy link

Copilot AI Feb 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The strictGjs and strictGts properties are defined inside the messages object but should be at the meta level. They should be moved outside of messages to be sibling properties of type, docs, schema, and messages.

Copilot uses AI. Check for mistakes.
Comment on lines +17 to +18
strictGjs: true,
strictGts: true,
Copy link

Copilot AI Feb 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The strictGjs and strictGts properties are defined inside the messages object but should be at the meta level. They should be moved outside of messages to be sibling properties of type, docs, schema, and messages.

Copilot uses AI. Check for mistakes.
Comment on lines +9 to +11
strictGjs: true,
strictGts: true,
},
Copy link

Copilot AI Feb 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The strictGjs and strictGts properties are defined inside the docs object but should be at the meta level. They should be moved outside of docs to be sibling properties of type, docs, schema, and messages.

Suggested change
strictGjs: true,
strictGts: true,
},
},
strictGjs: true,
strictGts: true,

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants