Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
76dc5ac
Initial plan
Copilot Jan 29, 2026
aae2ca0
Initial plan
Copilot Jan 27, 2026
4aee308
Initial exploration and understanding of the repository
Copilot Jan 27, 2026
dcfebe2
Add template-no-debugger, template-no-log, and template-no-triple-cur…
Copilot Jan 27, 2026
65c497d
Add template-no-duplicate-attributes, template-require-button-type, a…
Copilot Jan 27, 2026
217e2a8
Fix linting issues in template rules
Copilot Jan 27, 2026
1dbfc68
Address code review feedback - improve autofixes and handle edge cases
Copilot Jan 27, 2026
5a62905
Remove package-lock.json and add to gitignore (use pnpm)
Copilot Jan 27, 2026
3880f00
Add 4 more template rules: no-accesskey-attribute, no-autofocus-attri…
Copilot Jan 27, 2026
5bd780f
Add 4 more rules: deprecated-render-helper, deprecated-inline-view-he…
Copilot Jan 27, 2026
b66e9da
Add 6 more rules: no-unbound, no-with, no-duplicate-id, no-inline-sty…
Copilot Jan 27, 2026
2823332
Add 5 more rules: no-input-block, no-input-tagname, no-valueless-argu…
Copilot Jan 27, 2026
9f218de
Add 2 more rules: no-quoteless-attributes, no-this-in-template-only-c…
Copilot Jan 27, 2026
2bfff94
Add 2 more rules: no-forbidden-elements, no-obsolete-elements (29/127)
Copilot Jan 27, 2026
45ac500
Fix failing tests - update snapshots for new template rules
Copilot Jan 27, 2026
70a44d0
Fix linting issues in template rules - address CI failures
Copilot Jan 28, 2026
98105f5
Add 3 accessibility rules: require-iframe-title, no-heading-inside-bu…
Copilot Jan 28, 2026
e53e432
Add 2 rules: splat-attributes-only, no-attrs-in-components (34/127)
Copilot Jan 28, 2026
b5a952b
Add accessibility rule: no-empty-headings (35/127)
Copilot Jan 28, 2026
2c62913
Update test snapshots for 6 new template rules
Copilot Jan 28, 2026
c5e64a0
Move template rules from recommended to strict configs (opt-in, non-b…
Copilot Jan 28, 2026
49026cd
Remove TypeScript overrides from strict-gts config (focus on ember ru…
Copilot Jan 28, 2026
51effe5
Add 10 more template rules (45/127 total: 35%)
Copilot Jan 28, 2026
69c7523
Fix CI test failures - correct import paths, add JSDoc comments, fix …
Copilot Jan 28, 2026
0f0b038
Fix CI failure - remove unused @glimmer/env dependency and update pnp…
Copilot Jan 28, 2026
4123b03
Fix CI - remove unused dependency, update lockfile, fix linting
Copilot Jan 28, 2026
ad3a944
Add 6 more template rules: no-curly-component-invocation, no-implicit…
Copilot Jan 28, 2026
9154c6d
Add 4 more template rules: no-element-event-actions, no-potential-pat…
Copilot Jan 28, 2026
ca01abd
Add 3 more template rules: no-invalid-interactive, no-link-to-tagname…
Copilot Jan 28, 2026
058d626
Add 3 more template rules: no-attrs-splat, no-block-params, no-ambigu…
Copilot Jan 28, 2026
a5a634e
Update pnpm-lock.yaml to sync with package.json (@glimmer/env depende…
Copilot Jan 28, 2026
75c127f
Add 20 new template lint rules for gjs/gts files
Copilot Jan 28, 2026
0c735b4
Fix strictGjs/strictGts placement in template-require-input-label
Copilot Jan 28, 2026
7aedff0
Add 20 new template lint rules
Copilot Jan 28, 2026
542e661
Fix code review issues: attribute-splat logic, remove LinkTo conflict…
Copilot Jan 28, 2026
69e3541
Add 19 template rules (removed no-index-component-invocation, fixed J…
Copilot Jan 28, 2026
b2279a2
Implement 10 new ember-template-lint rules for GJS/GTS files
Copilot Jan 28, 2026
4cc904f
Address code review feedback
Copilot Jan 29, 2026
29849a7
Add 10 template rules (Batch 1: A11Y/recommended) - 111/127 total (87%)
Copilot Jan 29, 2026
c977a5b
feat: implement 10 new template linting rules for gjs/gts files
Copilot Jan 29, 2026
a96af13
feat: implement final 6 ember-template-lint rules (127/127 complete -…
Copilot Jan 29, 2026
5dcd192
Fix CI failures: Fix template-no-unused-block-params, linting issues,…
Copilot Jan 29, 2026
47e3c0f
Fix lint issues: markdown formatting and eslint-doc-generator
Copilot Jan 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,4 @@ npm-debug.log

# eslint-remote-tester
eslint-remote-tester-results
package-lock.json
216 changes: 196 additions & 20 deletions README.md

Large diffs are not rendered by default.

33 changes: 33 additions & 0 deletions docs/rules/template-attribute-indentation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# ember/template-attribute-indentation

🔧 This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/latest/user-guide/command-line-interface#--fix).

<!-- end auto-generated rule header -->

Enforces consistent attribute indentation in templates.

This is a stylistic rule that is disabled by default.

## Rule Details

This rule enforces consistent indentation for attributes in template elements.

## Examples

Examples of **correct** code for this rule:

```gjs
<template>
<div class="foo"></div>
</template>
```

```gjs
<template>
<MyComponent @arg="value" />
</template>
```

## References

- [ember-template-lint attribute-indentation](https://github.com/ember-template-lint/ember-template-lint/blob/master/docs/rule/attribute-indentation.md)
70 changes: 70 additions & 0 deletions docs/rules/template-attribute-order.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
# ember/template-attribute-order

💼 This rule is enabled in the following [configs](https://github.com/ember-cli/eslint-plugin-ember#-configurations): `strict-gjs`, `strict-gts`.

<!-- end auto-generated rule header -->

Enforces a consistent ordering of attributes in template elements. This helps improve readability and maintainability of templates.

## Rule Details

This rule enforces a consistent order for attributes on template elements. By default, it follows this order:

1. `class`
2. `id`
3. `role`
4. `aria-*` attributes
5. `data-test-*` attributes
6. `type`
7. `name`
8. `value`
9. `placeholder`
10. `disabled`

## Examples

Examples of **incorrect** code for this rule:

```gjs
<template>
<div id="main" class="container"></div>
</template>
```

```gjs
<template>
<button aria-label="Submit" role="button">Send</button>
</template>
```

Examples of **correct** code for this rule:

```gjs
<template>
<div class="container" id="main"></div>
</template>
```

```gjs
<template>
<button class="btn" role="button" aria-label="Submit">Send</button>
</template>
```

## Configuration

You can customize the order by providing an `order` array:

```js
module.exports = {
rules: {
'ember/template-attribute-order': ['error', {
order: ['class', 'id', 'role', 'aria-', 'type']
}]
}
};
```

## References

- [ember-template-lint attribute-order](https://github.com/ember-template-lint/ember-template-lint/blob/master/docs/rule/attribute-order.md)
35 changes: 35 additions & 0 deletions docs/rules/template-block-indentation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# ember/template-block-indentation

🔧 This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/latest/user-guide/command-line-interface#--fix).

<!-- end auto-generated rule header -->

Enforces consistent block indentation in templates.

This is a stylistic rule that is disabled by default.

## Rule Details

This rule enforces consistent indentation for block statements in templates.

## Examples

Examples of **correct** code for this rule:

```gjs
<template>
{{#if condition}}
<div>Content</div>
{{/if}}
</template>
```

```gjs
<template>
<div>Content</div>
</template>
```

## References

- [ember-template-lint block-indentation](https://github.com/ember-template-lint/ember-template-lint/blob/master/docs/rule/block-indentation.md)
13 changes: 13 additions & 0 deletions docs/rules/template-deprecated-inline-view-helper.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# ember/template-deprecated-inline-view-helper

💼 This rule is enabled in the following [configs](https://github.com/ember-cli/eslint-plugin-ember#-configurations): `strict-gjs`, `strict-gts`.

<!-- end auto-generated rule header -->

## Examples

See ember-template-lint documentation.

## References

- [ember-template-lint](https://github.com/ember-template-lint/ember-template-lint)
25 changes: 25 additions & 0 deletions docs/rules/template-deprecated-render-helper.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# ember/template-deprecated-render-helper

💼 This rule is enabled in the following [configs](https://github.com/ember-cli/eslint-plugin-ember#-configurations): `strict-gjs`, `strict-gts`.

<!-- end auto-generated rule header -->

Disallows the {{render}} helper which is deprecated.

## Examples

Incorrect:

```gjs
<template>{{render "user"}}</template>
```

Correct:

```gjs
<template><User /></template>
```

## References

- [ember-template-lint deprecated-render-helper](https://github.com/ember-template-lint/ember-template-lint/blob/master/docs/rule/deprecated-render-helper.md)
73 changes: 73 additions & 0 deletions docs/rules/template-eol-last.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
# ember/template-eol-last

💼 This rule is enabled in the following [configs](https://github.com/ember-cli/eslint-plugin-ember#-configurations): `strict-gjs`, `strict-gts`.

🔧 This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/latest/user-guide/command-line-interface#--fix).

<!-- end auto-generated rule header -->

Requires or disallows newline at the end of template files.

Consistent handling of line endings at the end of files helps maintain clean diffs in version control.

## Rule Details

This rule enforces a newline (or lack thereof) at the end of template blocks.

## Examples

Examples of **incorrect** code for this rule with default `"always"` option:

```gjs
// Missing newline at end
<template>
<div>Hello</div>
</template>
```

Examples of **correct** code for this rule with default `"always"` option:

```gjs
<template>
<div>Hello</div>
</template>

```

Examples of **incorrect** code for this rule with `"never"` option:

```gjs
// Unwanted newline at end
<template>
<div>Hello</div>
</template>

```

Examples of **correct** code for this rule with `"never"` option:

```gjs
<template>
<div>Hello</div>
</template>
```

## Configuration

This rule takes one option:

- `"always"` (default): requires a newline at the end
- `"never"`: disallows a newline at the end

```js
module.exports = {
rules: {
'ember/template-eol-last': ['error', 'always']
}
};
```

## References

- [ember-template-lint eol-last](https://github.com/ember-template-lint/ember-template-lint/blob/master/docs/rule/eol-last.md)
- [ESLint eol-last](https://eslint.org/docs/rules/eol-last)
27 changes: 27 additions & 0 deletions docs/rules/template-linebreak-style.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# ember/template-linebreak-style

🔧 This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/latest/user-guide/command-line-interface#--fix).

<!-- end auto-generated rule header -->

Enforces consistent linebreak style in templates.

This is a stylistic rule that is disabled by default.

## Rule Details

This rule enforces consistent linebreak style (LF or CRLF) in templates.

## Examples

Examples of **correct** code for this rule:

```gjs
<template>
<div>Content</div>
</template>
```

## References

- [ember-template-lint linebreak-style](https://github.com/ember-template-lint/ember-template-lint/blob/master/docs/rule/linebreak-style.md)
61 changes: 61 additions & 0 deletions docs/rules/template-link-href-attributes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# ember/template-link-href-attributes

💼 This rule is enabled in the following [configs](https://github.com/ember-cli/eslint-plugin-ember#-configurations): `strict-gjs`, `strict-gts`.

<!-- end auto-generated rule header -->

Requires `href` attribute on `<a>` elements.

Anchor elements should have an `href` attribute to be properly recognized as links by browsers and assistive technologies. If an element is meant to be interactive but not navigate, use a `<button>` instead.

## Rule Details

This rule ensures that all `<a>` elements have an `href` attribute.

## Examples

Examples of **incorrect** code for this rule:

```gjs
<template>
<a>Link</a>
</template>
```

```gjs
<template>
<a onclick={{this.handleClick}}>Click me</a>
</template>
```

```gjs
<template>
<a role="button">Action</a>
</template>
```

Examples of **correct** code for this rule:

```gjs
<template>
<a href="/about">About Us</a>
</template>
```

```gjs
<template>
<a href="https://example.com">External Link</a>
</template>
```

```gjs
<template>
<button {{on "click" this.handleClick}}>Click me</button>
</template>
```

## References

- [MDN: \<a\> - The Anchor element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a)
- [WebAIM: Links and Hypertext](https://webaim.org/techniques/hypertext/)
- [ember-template-lint link-href-attributes](https://github.com/ember-template-lint/ember-template-lint/blob/master/docs/rule/link-href-attributes.md)
15 changes: 15 additions & 0 deletions docs/rules/template-link-rel-noopener.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# ember/template-link-rel-noopener

💼 This rule is enabled in the following [configs](https://github.com/ember-cli/eslint-plugin-ember#-configurations): `strict-gjs`, `strict-gts`.

🔧 This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/latest/user-guide/command-line-interface#--fix).

<!-- end auto-generated rule header -->

## Examples

See ember-template-lint documentation.

## References

- [ember-template-lint link-rel-noopener](https://github.com/ember-template-lint/ember-template-lint/blob/master/docs/rule/link-rel-noopener.md)
13 changes: 13 additions & 0 deletions docs/rules/template-no-abstract-roles.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# ember/template-no-abstract-roles

💼 This rule is enabled in the following [configs](https://github.com/ember-cli/eslint-plugin-ember#-configurations): `strict-gjs`, `strict-gts`.

<!-- end auto-generated rule header -->

## Examples

See ember-template-lint documentation.

## References

- [ember-template-lint](https://github.com/ember-template-lint/ember-template-lint)
Loading
Loading