- #1407 Ensure
plugins
config parsing is idempotent (@dcyriller)
- #1413 Add fixable notice to the rule doc of fixable rules (@bmish)
- #1411 Add 🔧 emoji to fixable rules in rules table in README (@dcyriller)
- #1409 Add documentation about how to create a fixer for a rule (@dcyriller)
- #1410 Minor cleanup to README (@dcyriller)
- Bryan Mishkin (@bmish)
- Cyrille (@dcyriller)
- #1400 Refactor
no-restricted-invocations
rule to significantly improve performance (@bmish) - #1389 Rename
invocable-blacklist
rule tono-restricted-invocations
(backwards-compatible) (@bmish) - #1372 Allow specifying a custom error message in
no-restricted-invocations
rule (@bmish) - #1392 Add configuration options for allowing components as table children in
table-groups
rule (@mongoose700)
- #1393 Fix table groups ordering enforcement when whitespace is present in
table-groups
rule (@mongoose700) - #1370 Update
no-restricted-invocations
rule to handle nested angle bracket component invocation (@bmish) - #1369 Update
no-restricted-invocations
rule to disallow empty config array (@bmish) - #1362 Handle
unless
inno-positive-tabindex
rule (@bmish)
- #1394 Add autogenerated rule table for README (@bmish)
- #1399 Improve package.json
description
field (@bmish) - #1387 Improve message for
no-implicit-this
to mention using angle bracket invocation (@chriskrycho)
- #1350 Add eslint-plugin-unicorn with recommended rules (@bmish)
- #1355 Add a test for fixing from stdin (provided a --filename is given) (@dcyriller)
- Bryan Mishkin (@bmish)
- Chris Krycho (@chriskrycho)
- Cyrille (@dcyriller)
- Michael Peirce (@mongoose700)
- #1335 Add new rule: no-forbidden-elements (@rajasegar)
- #1321 Add new rule:
no-redundant-landmark-role
(@rajasegar) - #1322 Add new rule:
no-nested-landmark
(@rajasegar)
- #1347 Add additional built-in helpers to
no-implicit-this
(e.g.array
,concat
,query-params
, etc) (@jaydgruber)
- #1349 chore(dev-deps): update to eslint 7 (@bmish)
- #1333 Ensure
<MyComponent @prop={{can.do}} />
triggersno-implicit-this
error. (@rwjblue)
- Bryan Mishkin (@bmish)
- Rajasegar Chandran (@rajasegar)
- Robert Jackson (@rwjblue)
- @jaydgruber
- #927 Add
no-arguments-for-html-elements
rule (@lifeart) - #1320 Add
catchNonexistentRoles
option (default false) tono-invalid-role
rule (@rajasegar) - #1222 Add new rule:
no-unbalanced-curlies
(@pablobm)
- #1324 Ensure
require-valid-alt-text
can handle a dynamicrole
attribute (@gabrielcsapo) - #1317 Avoid glob matching when no-glob is present (e.g. globs have already been replaced by shell expansion) (@gabrielcsapo)
- #1313 Update documentation and examples for
no-positive-tabindex
(@MelSumner)
- #1323 Refactor
no-invalid-role
rule to better support future additions (@bmish) - #1298 Add shell-specific tests for reading from stdin (@dcyriller)
- Alex Kanunnikov (@lifeart)
- Bryan Mishkin (@bmish)
- Cyrille David (@dcyriller)
- Gabriel Csapo (@gabrielcsapo)
- Melanie Sumner (@MelSumner)
- Pablo Brasero (@pablobm)
- Rajasegar Chandran (@rajasegar)
- #1263 Add
--rule
and--no-config-path
command line options (@gabrielcsapo)
- #1303 Update ember-template-recast to remove extraneous whitespace in
--fix
forinline-link-to
rule (@dcyriller) - #1297 Fix reading from stdin on Windows (@dcyriller)
- #1305 Fix example in no-invalid-role documentation (@MelSumner)
- #1304 Tweak Installation section of
README.md
to clarify thatember-template-lint
is installed by default (@MelSumner) - #1308 Add Node 14 as supported platform (@dcyriller)
- #1306 Fix invalid URL in documentation reference for
no-invalid-link-title
rule (@MelSumner)
- #1310 Refactor CI setup. (@rwjblue)
- #1309 Add Node 14 to CI. (@rwjblue)
- #1302 Remove "over DRY" test setup (make tests easier to understand) (@dcyriller)
- #1282 Adapt tests for reading from stdin to run on Windows (@stukalin)
- #1284 Test Windows in CI (@stukalin)
- #1285 Set a shorter timeout for Github Actions (@dcyriller)
- #1278 Use the correct title in generated rule doc when running
yarn new
(@josephdsumner) - #1277 Use get-stdin dependency to read from stdin (@dcyriller)
- #1271 Adds additional test cases for
no-invalid-role
(@MelSumner) - #1270 Start testing editor integrations (@dcyriller)
- #1268 Add unit tests for
bin/ember-template-lint.js
(@dcyriller)
- Andrey Stukalin (@stukalin)
- Cyrille David (@dcyriller)
- Gabriel Csapo (@gabrielcsapo)
- Joseph D. Sumner (@josephdsumner)
- Melanie Sumner (@MelSumner)
- Robert Jackson (@rwjblue)
- @dependabot-preview[bot]
- #1264 Ensure
--json
argument can be used anywhere on the command line. (@dcyriller)
- #1265 test(cli): Set LC_ALL env var to en_US (@dcyriller)
- Cyrille David (@dcyriller)
- #1260 Expose
ember-template-recast
API on main entry point (e.g.require('ember-template-lint').recast
) (@dcyriller)
- Cyrille David (@dcyriller)
- #1251 Pass
env
fromember-template-recast
to rules so they can useenv.syntax.builders.*
duringember-template-lint **/*.hbs --fix
. (@dcyriller) - #1238 Add new rule:
require-form-method
(@raido)
- Bryan Mishkin (@bmish)
- Cyrille David (@dcyriller)
- Dianne Eramo (@eramod)
- Raido Kuli (@raido)
- @dependabot-preview[bot]
- #1229 Ensure template parsing errors are only reported once (not once per-rule) (@lifeart)
- #1210 Fix invalid failure for invalid block param definition (@lifeart)
- #1179 inline-link-to: Implement
fix
mode (@Turbo87) - #1160 Add severity support (off, warn, error) to rule configuration (via both
.template-lintrc.js
and inline configuration). (@suchitadoshi1987)
- Bryan Mishkin (@bmish)
- Cyrille David (@dcyriller)
- Robert Jackson (@rwjblue)
- Suchita Doshi (@suchitadoshi1987)
- Tobias Bieniek (@Turbo87)
- #1190 Ensure BOM is preserved when using
--fix
. (@rwjblue) - #1185 Add message about running
--fix
to console output when fixable errors have ocurred. (@rwjblue) - #1183 --fix: Write output to fs (@dcyriller)
- #1178 require-button-type: Implement
fix
mode (@Turbo87)
- #1188 Ensure
yarn new
emits the expected TODO format (@MelSumner) - #1181 Ensure the exported class name matches the rule name (@bmish)
- Bryan Mishkin (@bmish)
- Cyrille David (@dcyriller)
- Melanie Sumner (@MelSumner)
- Robert Jackson (@rwjblue)
- Tobias Bieniek (@Turbo87)
- #1158 Introduce rule visitor based fixing support. (@rwjblue)
- #1174 Add test harness features (naming test cases, snapshot support, etc). (@rwjblue)
- #1169 Add support to
test.only
in the test harness. (@rwjblue) - #1117 Add configuration file support for overrides (@suchitadoshi1987)
- #1074 Add --help option and configurable option parsing (@velrest)
- #1102 Add new rule:
no-heading-inside-button
(@MelSumner) - #1105 Add new rule:
require-input-label
(@MelSumner) - #1120 Add new rule:
no-invalid-link-title
(@MelSumner)
- #1159 Rewrite documentation for
link-href-attributes
rule to explain motivation and migration (@MelSumner) - #1154 Fix CI badge in README (@rwjblue)
- #1177 Add
new
command for generating a new rule from CLI (@MelSumner) - #1173 Update minimum version of ember-template-recast to 4.1.1. (@rwjblue)
- #1166 Refactor
cli-test.js
to remove usage of fixtures in favor of usingfixturify-project
(@suchitadoshi1987) - #1157 Refactor rule logging to track results locally. (@rwjblue)
- #1156 Extract
Linter.prototype.buildRule
internal helper method to build rule instances. (@rwjblue)
- Bryan Mishkin (@bmish)
- Jonas Cosandey (@velrest)
- Melanie Sumner (@MelSumner)
- Robert Jackson (@rwjblue)
- Suchita Doshi (@suchitadoshi1987)
- #935 Implement more plumbing for
--fix
support (addLinter.prototype.verifyAndFix
) (@dcyriller)
- #1153 Ensure plugins are resolved relative to config file location. (@rwjblue)
- #1072 Ensure
editorconfig
integration always uses the real file path not module name (add's newfilePath
property for rules to access). (@bobisjan)
- #1151 Add internal
fixturify-project
based test helper. (@rwjblue) - #1148 Use npm-run-all to run multiple scripts. (@rwjblue)
- Cyrille David (@dcyriller)
- Jan Bobisud (@bobisjan)
- Robert Jackson (@rwjblue)
See the migration guide for this release.
- #1067 Remove deprecated
templateEnvironmentData
rule property (@bmish) - #1060 Add more rules to
stylistic
config (@bmish) - #1061 Remove deprecated rule
no-trailing-dot-in-path-expression
(@bmish) - #1059 Add
no-index-component-invocation
torecommended
configuration. (@rwjblue) - #1053 Add
no-invalid-role
andno-negated-condition
rules torecommended
preset (@bmish) - #1052 Change
allowDynamicStyles
option to default to true inno-inline-styles
rule (@bmish) - #1055 Remove deprecated array config for
no-nested-interactive
rule (@bmish) - #1054 Remove deprecated rule
no-meta-redirect-with-time-limit
which was replaced byno-invalid-meta
(@bmish) - #1047 Add
no-args-path
,no-invalid-link-text
,no-invalid-meta
,require-button-type
intorecommended
configuration. (@rwjblue) - #1023 Drop NodeJs v8 support (@dcyriller)
- #918 Use
.editorconfig
to choose default value forblock-indentation
(@lifeart) - #919 Use
.editorconfig
to choose default value forlinebreak-style
(@lifeart) - #899 Update recommended config (@rwjblue)
- #844 Remove HTML comment config (@initram)
- #885 Drop support for NodeJs v6 and v11 (@dcyriller)
- #1126 Add new rule
no-invalid-block-param-definition
(@lifeart) - #1138 Automatically discover
.template-lintrc.js
when running linter from a project subdirectory (e.g. a monorepo's package, with linting configuration in the project root). (@lifeart) - #1134 Add
ignoredTags
option tono-invalid-interactive
rule (@bmish) - #1086 Update
block-indentation
rule to add newignoreComments
option (@akashdsouza) - #1060 Add more rules to
stylistic
config (@bmish) - #1062 Add support for detecting
eol-last
from.editorconfig
(@rwjblue) - #1059 Add
no-index-component-invocation
torecommended
configuration. (@rwjblue) - #1053 Add
no-invalid-role
andno-negated-condition
rules torecommended
preset (@bmish) - #1052 Change
allowDynamicStyles
option to default to true inno-inline-styles
rule (@bmish) - #1048 Add
stylistic
configuration (@bmish) - #1047 Add
no-args-path
,no-invalid-link-text
,no-invalid-meta
,require-button-type
intorecommended
configuration. (@rwjblue) - #1045 Remove no-implicit-this from
recommended
config. (@rwjblue) - #918 Use
.editorconfig
to choose default value forblock-indentation
(@lifeart) - #919 Use
.editorconfig
to choose default value forlinebreak-style
(@lifeart) - #906 Add utility function to allow reading from
.editorconfig
(@lifeart) - #873 Leverage ember-template-recast (@dcyriller)
- #1123 Fix issues introduced by ember-template-recast@4.0.1. (@rwjblue)
- #1051 Fix configuration of
quotes
rule instylistic
preset (@bmish) - #1049 Bring
no-implicit-this
back into theoctane
config (@rwjblue) - #920 Ensure
no-bare-strings
consider literals in mustaches (e.g.{{"foo"}}
) (@lifeart) - #923 Allow
getLocalName
to work with number literals (@alexlafroscia) - #913 Update
no-unnecessary-component-helper
rule to allow thecomponent
helper as an angle bracket component argument (@buschtoens) - #908 Update
no-bare-strings
to ignore contents within elements that are not translated (e.g.<script>
,<style>
, and<pre>
). (@lifeart) - #905 Ensure configuration ordering does not matter with
no-bare-strings
(@lifeart) - #904 Update
block-indentation
to ignore children of<template>
and<textarea>
(@lifeart)
- #1140 Add markdownlint and fix violations (@bmish)
- #1133 Don't mention
ember-cli-template-lint
in README (@dcyriller) - #1050 Add presets list to README (@bmish)
- #911 Update documentation for
require-valid-alt-text
to clarify thatlogo
andspacer
are forbidden words (@gojefferson)
- #1147 Use updated mechanism to disable chalk. (@rwjblue)
- #1146 Update execa from 1.x to 4.0.0. (@rwjblue)
- #1145 Update dependencies & devDependencies to latest. (@rwjblue)
- #1141 Replace
minimatch
withmicromatch
#1139 (@lifeart) - #1067 Remove deprecated
templateEnvironmentData
rule property (@bmish) - #1061 Remove deprecated rule
no-trailing-dot-in-path-expression
(@bmish) - #1055 Remove deprecated array config for
no-nested-interactive
rule (@bmish) - #1054 Remove deprecated rule
no-meta-redirect-with-time-limit
which was replaced byno-invalid-meta
(@bmish) - #1046 Update
octane
config to extend fromrecommended
. (@rwjblue) - #1023 Drop NodeJs v8 support (@dcyriller)
- #941 Leverage static class fields for SEVERITY constants (@dcyriller)
- #933 Linter class: Use named severity (@dcyriller)
- #932 Move main linter engine to stand alone file. (@dcyriller)
- #876 Begin migrating tests to inline fixtures (via
broccoli-test-helper
) (@lifeart) - #898 Update dependencies to latest (requiring Node 8+). (@rwjblue)
- Alex Kanunnikov (@lifeart)
- Bryan Mishkin (@bmish)
- Cyrille David (@dcyriller)
- Robert Jackson (@rwjblue)
- @akashdsouza
- Alex LaFroscia (@alexlafroscia)
- Jan Buschtöns (@buschtoens)
- Jeff Kerr (@gojefferson)
- Martin Midtgaard (@initram)
This release includes all the changes that went into v1.12.1 - v1.13.1.
- #1067 Remove deprecated
templateEnvironmentData
rule property (@bmish) - #1060 Add more rules to
stylistic
config (@bmish) - #1061 Remove deprecated rule
no-trailing-dot-in-path-expression
(@bmish) - #1059 Add
no-index-component-invocation
torecommended
configuration. (@rwjblue) - #1053 Add
no-invalid-role
andno-negated-condition
rules torecommended
preset (@bmish) - #1052 Change
allowDynamicStyles
option to default to true inno-inline-styles
rule (@bmish) - #1055 Remove deprecated array config for
no-nested-interactive
rule (@bmish) - #1054 Remove deprecated rule
no-meta-redirect-with-time-limit
which was replaced byno-invalid-meta
(@bmish) - #1047 Add
no-args-path
,no-invalid-link-text
,no-invalid-meta
,require-button-type
intorecommended
configuration. (@rwjblue) - #1023 Drop NodeJs v8 support (@dcyriller)
- #1060 Add more rules to
stylistic
config (@bmish) - #1062 Add support for detecting
eol-last
from.editorconfig
(@rwjblue) - #1059 Add
no-index-component-invocation
torecommended
configuration. (@rwjblue) - #1053 Add
no-invalid-role
andno-negated-condition
rules torecommended
preset (@bmish) - #1052 Change
allowDynamicStyles
option to default to true inno-inline-styles
rule (@bmish) - #1048 Add
stylistic
configuration (@bmish) - #1047 Add
no-args-path
,no-invalid-link-text
,no-invalid-meta
,require-button-type
intorecommended
configuration. (@rwjblue) - #1045 Remove no-implicit-this from
recommended
config. (@rwjblue)
- #1051 Fix configuration of
quotes
rule instylistic
preset (@bmish) - #1049 Bring
no-implicit-this
back into theoctane
config (@rwjblue)
- #1067 Remove deprecated
templateEnvironmentData
rule property (@bmish) - #1061 Remove deprecated rule
no-trailing-dot-in-path-expression
(@bmish) - #1055 Remove deprecated array config for
no-nested-interactive
rule (@bmish) - #1054 Remove deprecated rule
no-meta-redirect-with-time-limit
which was replaced byno-invalid-meta
(@bmish) - #1046 Update
octane
config to extend fromrecommended
. (@rwjblue) - #1023 Drop NodeJs v8 support (@dcyriller)
- Bryan Mishkin (@bmish)
- Cyrille David (@dcyriller)
- Robert Jackson (@rwjblue)
- #1108 Update
no-bare-strings
rule to allow–
(@jrjohnson) - #1090 Update
no-curly-component-invocation
rule to ignore all usages of theyield
helper (@wagenet)
- #1121 Update dependencies to latest allowed versions. (@rwjblue)
- #1107 Simplify a few rules by using the
path
visitor argument (@Turbo87)
- Chris Manson (@mansona)
- Jonathan Johnson (@jrjohnson)
- Peter Wagenet (@wagenet)
- Robert Jackson (@rwjblue)
- Tobias Bieniek (@Turbo87)
- @dependabot-preview[bot]
- Bryan Mishkin (@bmish)
- #1076 Normalize handlebars comments to {{!-- syntax (@locks)
- #1068 no-curly-component-invocation: Document default config (@dcyriller)
- Alex Kanunnikov (@lifeart)
- Cyrille David (@dcyriller)
- Ricardo Mendes (@locks)
- #1040 Fix link to recommended config (@kategengler)
- #1042 Refactor test-harness (@dcyriller)
- #1036 Group acceptance tests in test/acceptance folder (@dcyriller)
- Alex Kanunnikov (@lifeart)
- Cyrille David (@dcyriller)
- Katie Gengler (@kategengler)
- @dependabot-preview[bot]
This release includes all the changes that went into v1.10.0 - v1.12.0.
This release includes all the changes that went into v1.9.0.
- #941 Leverage static class fields for SEVERITY constants (@dcyriller)
- #933 Linter class: Use named severity (@dcyriller)
- #932 Move main linter engine to stand alone file. (@dcyriller)
- Cyrille David (@dcyriller)
- #918 Use
.editorconfig
to choose default value forblock-indentation
(@lifeart) - #919 Use
.editorconfig
to choose default value forlinebreak-style
(@lifeart)
- #918 Use
.editorconfig
to choose default value forblock-indentation
(@lifeart) - #919 Use
.editorconfig
to choose default value forlinebreak-style
(@lifeart) - #906 Add utility function to allow reading from
.editorconfig
(@lifeart)
- #920 Ensure
no-bare-strings
consider literals in mustaches (e.g.{{"foo"}}
) (@lifeart) - #923 Allow
getLocalName
to work with number literals (@alexlafroscia) - #913 Update
no-unnecessary-component-helper
rule to allow thecomponent
helper as an angle bracket component argument (@buschtoens) - #908 Update
no-bare-strings
to ignore contents within elements that are not translated (e.g.<script>
,<style>
, and<pre>
). (@lifeart) - #905 Ensure configuration ordering does not matter with
no-bare-strings
(@lifeart) - #904 Update
block-indentation
to ignore children of<template>
and<textarea>
(@lifeart)
- #911 Update documentation for
require-valid-alt-text
to clarify thatlogo
andspacer
are forbidden words (@gojefferson)
- Alex Kanunnikov (@lifeart)
- Alex LaFroscia (@alexlafroscia)
- Jan Buschtöns (@buschtoens)
- Jeff Kerr (@gojefferson)
- @dependabot-preview[bot]
- #899 Update recommended config (@rwjblue)
- #844 Remove HTML comment config (@initram)
- #885 Drop support for NodeJs v6 and v11 (@dcyriller)
- #873 Leverage ember-template-recast (@dcyriller)
- Cyrille David (@dcyriller)
- Martin Midtgaard (@initram)
- Robert Jackson (@rwjblue)
- #1032 no-curly-component-invocation: Ignore built-ins and fix nested key scoped variable scenario (@Turbo87)
- #1031 no-passed-in-event-handlers: Ignore built-in
input
andtextarea
components (@Turbo87)
- Tobias Bieniek (@Turbo87)
- #1027 Refactor
no-curly-component-invocation
to reduce the occurrences of false positives (@Turbo87) - #1019 Adding error when individual pending rules are passing (@gmurphey)
- #954 Update
--print-pending
logic to ignore existing pending modules that have no linting errors (@gmurphey)
- #1016 Correct name of class (@kategengler)
- Garrett Murphey (@gmurphey)
- Katie Gengler (@kategengler)
- Tobias Bieniek (@Turbo87)
- @dependabot-preview[bot]
- Tobias Bieniek (@Turbo87)
- #1010 Add
no-yield-only
rule (@Turbo87) - #1001 Show "Definition for rule XXX was not found" error message (@Turbo87)
- #1009 Ensure
require-valid-alt-text
does not flag<img ...attributes>
. (@rwjblue) - #1006 no-curly-component-invocation: Ignore all curly invocations with positional arguments (@Turbo87)
- #1005 no-curly-component-invocation: Ignore block invocations with inverse blocks (@Turbo87)
- #1002 no-whitespace-for-layout: Ignore whitespace at the start and end of the line (@Turbo87)
- #977 Update
README.md
to include a reference to our Semantic Versioning policy (@MelSumner) - #1000 package.json: Fix repository URLs (@Turbo87)
- #999 Fix Changelog (@Turbo87)
- #1008 Extract
Printer
classes (@Turbo87) - #1007 Extract
FakeConsole
class to simplify testing code (@Turbo87)
- Melanie Sumner (@MelSumner)
- Robert Jackson (@rwjblue)
- Tobias Bieniek (@Turbo87)
- #997 Add
require-button-type
to octane configuration (@rwjblue) - #996 Add
no-invalid-link-text
andno-invalid-meta
to octane configuration. (@MelSumner) - #988 Add rule
no-invalid-link-text
(@MelSumner) - #910 Add
no-invalid-meta
rule (@MelSumner)
- Melanie Sumner (@MelSumner)
- Robert Jackson (@rwjblue)
- #966 Report errors as GitHub Actions Annotations (@Turbo87)
- #930 Updated
require-valid-alt-text
to ensure<img ... role="presentation">
or<img ... role="none">
must have an emptyalt
attribute (@MelSumner) - #980 Add
no-invalid-role
rule (@MelSumner)
- Melanie Sumner (@MelSumner)
- Tobias Bieniek (@Turbo87)
- #971 no-curly-component-invocation: Do not warn for MustacheStatements with positional arguments (@Turbo87)
- #964 Implement
no-passed-in-event-handlers
rule (@Turbo87) - #950 Implement
require-button-type
rule (@Turbo87) - #951 Implement
no-multiple-empty-lines
rule (@Turbo87)
- #944 Fix
no-invalid-interactive
to allow{{on "load"...}}
and{{on "error"...}}
for<img>
(@lifeart)
- #972 Replace
chai
with Jest assertions (@Turbo87) - #973 Remove TravisCI configuration file (@Turbo87)
- #952 Add GitHub Actions CI workflow (@Turbo87)
- #968 Replace Mocha with Jest (@Turbo87)
- #970 Remove unused
mocha-only-detector
dev dependency (@Turbo87) - #959 Add validation that all files in
lib/config/
have been reexported inlib/config/index.js
(@lifeart) - #967 test/bin: Use
execa
to run CLI for tests (@Turbo87) - #965 Improve ESLint setup (@Turbo87)
- #963 Update lockfile (@Turbo87)
- #957 removed the
lint-
prefix and updated related files so tests pass (@MelSumner) - #947 Add tests confirming extending multiple configs works properly. (@rwjblue)
- Alex Kanunnikov (@lifeart)
- Melanie Sumner (@MelSumner)
- Robert Jackson (@rwjblue)
- Tobias Bieniek (@Turbo87)
- #920 Ensure
no-bare-strings
consider literals in mustaches (e.g.{{"foo"}}
) (@lifeart) - #923 Allow
getLocalName
to work with number literals (@alexlafroscia) - #913 Update
no-unnecessary-component-helper
rule to allow thecomponent
helper as an angle bracket component argument (@buschtoens) - #908 Update
no-bare-strings
to ignore contents within elements that are not translated (e.g.<script>
,<style>
, and<pre>
). (@lifeart) - #905 Ensure configuration ordering does not matter with
no-bare-strings
(@lifeart) - #904 Update
block-indentation
to ignore children of<template>
and<textarea>
(@lifeart)
- #911 Update documentation for
require-valid-alt-text
to clarify thatlogo
andspacer
are forbidden words (@gojefferson)
- Alex Kanunnikov (@lifeart)
- Alex LaFroscia (@alexlafroscia)
- Jan Buschtöns (@buschtoens)
- Jeff Kerr (@gojefferson)
- @dependabot-preview[bot]
- Robert Jackson (@rwjblue)
- #850 Changed parser mode to 'codemod' (@initram)
- #893 Add
no-args-paths
to theoctane
preset (@lifeart) - #865 Add new
no-args-paths
rule. (@lifeart)
- #884 Fix
no-curly-component-invocation
to not warn about invocations within an existing angle bracket invocation (@lifeart) - #870 Fix issue preventing running a subset of rules (@lifeart)
- #896 Pass
moduleName
andrawSource
toRule
upon creation. (@rwjblue) - #892 Remove reliance on
preprocess
(from@glimmer/syntax
) ability to accept an array of AST plugins (@rwjblue) - #890 Remove TransformDotComponentInvocation. (@rwjblue)
- Alex Kanunnikov (@lifeart)
- Bryan Mishkin (@bmish)
- Martin Midtgaard (@initram)
- Robert Jackson (@rwjblue)
- #848 Add
no-whitespace-within-word
rule (@MelSumner) - #868 Add
no-meta-redirect-with-time-limit
rule (@MelSumner) - #819 Added
no-whitespace-for-layout
rule (@MelSumner)
- Melanie Sumner (@MelSumner)
- @dependabot-preview[bot]
- #887 Ensure
no-action
does not error when encountering literals (StringLiteral, BooleanLiteral, etc). (@lifeart) - #882 Fix issues when converting dasherized curly component invocation into angle bracket invocation (@suchitadoshi1987)
- Alex Kanunnikov (@lifeart)
- Bryan Mishkin (@bmish)
- Suchita Doshi (@suchitadoshi1987)
- #874 test-harness: Make it available for (external) plugins (@dcyriller)
- Alex Kanunnikov (@lifeart)
- Cyrille David (@dcyriller)
- #862 ✨Add option --print-pending from ember-cli-template-lint (@TristanToye)
- #858 Add
no-action
tooctane
preset configuration. (@rwjblue) - #853 Add
no-action
rule (@lifeart) - #783 Add support for reading a file to lint from
process.stdin
(e.gcat some-file.hbs | ember-template-lint
) (@sukima)
- #861 Update
no-curly-component-invocation
to allow non-component yielded values to be used with mustaches (@patocallaghan) - #849 Improve
require-valid-alt-text
rule to catch additional common failure scenarios (@MelSumner) - #846 Update
table-groups
to enforce required ordering of table children (@initram) - #845 Fixed
attribute-indentation
when using triple curlies (non-escapedMustacheStatement
) (@initram) - #836 Expose internal errors from erroneous config when consuming it (@ygongdev)
- #859 Remove
testem
setup. (@rwjblue) - #856 Use @glimmer/syntax directly. (@rwjblue)
- #843 Test interactivity of onload for img tags (@joankaradimov)
- #832 Add eslint-plugin-import and enable most rules internally (@bmish)
- #830 Enable optional eslint rules internally (@bmish)
- #829 Add eslint-plugin-eslint-comments internally (@bmish)
- #828 Add eslint-plugin-filenames to enforce kebab-case filenames internally (@bmish)
- #827 Add CI check to ensure yarn.lock is up-to-date (@bmish)
- #826 Start testing with Node 12 (@bmish)
- Alex Kanunnikov (@lifeart)
- Bryan Mishkin (@bmish)
- Devin Weaver (@sukima)
- Joan Karadimov (@joankaradimov)
- Martin Midtgaard (@initram)
- Melanie Sumner (@MelSumner)
- Pat O'Callaghan (@patocallaghan)
- Robert Jackson (@rwjblue)
- Tristan Toye (@TristanToye)
- Yicheng (Jerry) Gong (@ygongdev)
- @dependabot-preview[bot]
- #805 Update
no-action-modifiers
andno-element-event-actions
rules to suggest using theon
modifier (@bmish) - #803 Add 'octane' config to export list so it can be used in
.template-lintrc.js
(@pgengler)
- Bryan Mishkin (@bmish)
- Phil Gengler (@pgengler)
- @dependabot-preview[bot]
- #801 Don't require
alt
on<img ...attributes>
(@chancancode)
- #798 Ensure that fundamental setup (docs, tests, exports, etc) is correct when adding new rules (@lifeart)
- Alex Kanunnikov (@lifeart)
- Godfrey Chan (@chancancode)
- #796 Allow
{{#-in-element}}
and{{#in-element}}
forno-curly-component-invocation
rule (@mydea) - #791 Ensure table-group rule allows
each
,each-in
,let
, and comments (@mongoose700)
- Bryan Mishkin (@bmish)
- Francesco Novy (@mydea)
- Michael Peirce (@mongoose700)
- Robert Jackson (@rwjblue)
- #768 Add no-curly-component-invocation rule (@patocallaghan)
- #788 Add support for handling
<button tabindex={{if this.foo 0 -1}}><button>
to no-positive-tabindex rule (@lifeart) - #779 Allow <img onload={{action 'foo'}}> in no-invalid-interactive rule (@joankaradimov)
- #762 Ensure no-outlet-outside-routes allows apps or routes named "components" (@marcoow)
- Alex Kanunnikov (@lifeart)
- Bryan Mishkin (@bmish)
- Joan Karadimov (@joankaradimov)
- Marco Otte-Witte (@marcoow)
- Pat O'Callaghan (@patocallaghan)
- #759 Deprecate
img-alt-attributes
rule in favor ofrequire-valid-alt-text
(@bmish) - #753 Add
no-unnecessary-component-helper
rule (@bmish) - #518 Add blacklist support to simple-unless rule (@mattbalmer)
- #772 Fix
no-element-event-actions
rule to ignore case when checking the DOM event attribute name (should handle eitheronclick
orONCLICK
) (@bmish) - #773 Fix
no-invalid-interactive
rule to consider any DOM event attribute usage as adding interactivity to an element (@bmish)
- Bryan Mishkin (@bmish)
- Matt Balmer (@mattbalmer)
- @dependabot-preview[bot]
- #742 Update
table-groups
rule to allow{{#some-component tagName="tbody"}}{{/some-component}}
to be a child oftable
(@bmish)
- #744 Tweak error message for
no-element-event-actions
rule. (@bmish) - #740 Fix rule ordering and incorrect rule name in plugin documentation (@bmish)
- Bryan Mishkin (@bmish)
- Jarek Radosz (@CvX)
- Robert Jackson (@rwjblue)
- @dependabot-preview[bot]
- #733 Add new rule:
no-obsolete-elements
(@MelSumner) - #714 Expose rule test harness for use by custom rule authors. (@gabrielcsapo)
- #631 Add rule: [A11y]
require-iframe-title
(@lifeart) - #681 Update
table-groups
rule to allow{{yield}}
inside<table>
(@sohara) - #633 Add rule: [A11y]
no-positive-tabindex
(@lifeart) - #624 Add rule: [A11y]
require-valid-alt-text
(@lifeart) - #628 Add rule: [A11y]
no-abstract-roles
(@lifeart) - #721 Allow
{{some-component tagName="tbody"}}
to be a child of atable
(@raycohen) - #672 Add
allowDynamicStyles
option tono-inline-styles
lint rule (@bmish) - #638 Update
table-groups
rule to allow comments inside<table>
(@lifeart) - #614 Add rule:
no-element-event-actions
(@bmish)
- #737 Allow
onerror
forimg
elements inno-invalid-interactive
rule (@elidupuis) - #730 Ensure console output is completed before exiting
ember-template-lint
executable (@john-kurkowski) - #709 Update
@glimmer/compiler
to avoid errors when forwarding element modifiers to component invocations (@dmzza) - #639 Fix
no-bare-strings
to allow whitelisting empty string (@lifeart) - #618 Allow
{{else}} {{#unless ...}}
in thesimple-unless
andno-negated-condition
rules (@bmish) - #613 Avoid suggesting
unless
with helpers in condition inno-negated-condition
rule (@bmish)
- #678 Add documentation on how to ignore modules when using ember-template-lint and ember-cli-template-lint together (@DingoEatingFuzz)
- #695 Fixed 404 URL in
sourceForNode
comment (@kevinansfield) - #686 Fix link to spec in
self-closing-void-elements
documentation (@woprandi) - #675 Add allowed example to
no-bare-strings
rule documentation (@bmish) - #671 Add command for generating pending list to README (@TristanToye)
- #670 Fix a typo in the
style-concatenation
rule documentation (@dmzza) - #652 Update documentation to show
no-element-event-actions
andno-action-modifiers
as related rules (@keanedawg) - #641 Add template for writing documentation for new rules (@bmish)
- Alex Kanunnikov (@lifeart)
- Bryan Mishkin (@bmish)
- Cameron Fife (@keanedawg)
- David Mazza (@dmzza)
- Eli Dupuis (@elidupuis)
- Gabriel Csapo (@gabrielcsapo)
- John Kurkowski (@john-kurkowski)
- Kevin Ansfield (@kevinansfield)
- Melanie Sumner (@MelSumner)
- Michael Lange (@DingoEatingFuzz)
- Ray Cohen (@raycohen)
- Robert Jackson (@rwjblue)
- Sean O'Hara (@sohara)
- Tristan Toye (@TristanToye)
- William Oprandi (@woprandi)
- @dependabot-preview[bot]
- #559 Added video and audio with control attribute as interactive elements (@HenryVonfire)
- #607 Always ignore dist, tmp, node_modules by default. (@jasonmit)
- #600 Add {{welcome-page}} to default allowed list for no-implicit-this. (@rwjblue)
- #608 Improve clarity of descriptions and examples in rule docs. (@bmish)
- #606 Fix typo in 'no-unnecessary-concat' doc migration regexp. (@bmish)
- Bryan Mishkin (@bmish)
- Jason Mitchell (@jasonmit)
- Robert Jackson (@rwjblue)
- @HenryVonfire
- @iki6
- #598 Add lerna-changelog for changelog generation. (@rwjblue)
- #582 Ensure absolute paths are normalized when checking modules for "pending" status (@xcambar)
- #584 feat: add rule 'no-extra-mut-helper-argument'. (@bmish)
- #528 Add option to executable for specifying a custom config path (@krivaten)
- #535 Add no-action-modifiers rule (@bendemboski)
- #597 Fix config resolution with Yarn PnP. (@rwjblue)
- #592 fix: errors from 'simple-unless' rule with empty unless usage (@bmish)
- #591 feat: update 'style-concatenation' rule to catch an unsafe usage of the 'concat' helper. (@bmish)
- #580 Ensure failure when invalid config path is provided. (@xcambar)
- #568 Fix contextual component error message in attribute-indentation and block-indentation rules (@HodofHod)
- #590 docs: improve organization, formatting, and consistency for rule docs. (@bmish)
- #589 docs: reorganize, reformat, add links, and add examples to improve doc for 'style-concatenation' rule. (@bmish)
- #574 Fix typo in no-implicit-this documentation (@efx)
- #564 Removed ember-i18n recommendation in no-bare-string documentation (@Alonski)
- #563 Add an example of how to ignore files to the README (@h2blake)
- #547 Fix typo in table-groups rule documentation (@evoactivity)
- #544 Fix attribute-indentation rule documentation to comply with default config (@benmurden)
- #541 Fix attribute-indentation rule documentation to comply with default config (@benmurden)
- #540 Small tweaks to
no-shadowed-elements
docs (@sduquej) - #515 Add documentation for no-shadowed-elements rule (@Willibaur)
- #538 Fix links and markdown styling (@scottwernervt)
- Alon Bukai (@Alonski)
- Ben Demboski (@bendemboski)
- Ben Murden (@benmurden)
- Bryan Mishkin (@bmish)
- Eli Flanagan (@efx)
- Heather Blake (@h2blake)
- Kris Van Houten (@krivaten)
- Liam Potter (@evoactivity)
- Robert Jackson (@rwjblue)
- Sander Steenhuis (@Redsandro)
- Scott Werner (@scottwernervt)
- Sebastián Duque (@sduquej)
- Tobias Bieniek (@Turbo87)
- William Bautista (@Willibaur)
- Xavier Cambar (@xcambar)
- @HodofHod
- Fix a number of issues with attribute-indentation:
- Ensure contextual component indentation / closing indentation is properly enforced.
- Ensure block opening indentation is properly detected when the block itself is indented.
- Ensure element modifiers are handled and do cause elements to fail attribute-indentation (note: this requires that all element modifiers are after all attributes).
- Refactor
linebreak-style
rule to add:system
setting which enforces current system native line endingstrue
value now prevents mixing line endings (as opposed to enforcing a specific one)
- Fix a number of issues with
attribute-indentation
:- Ensure that using a value-less attribute does not cause following attributes to be considered the wrong indentation
- Ensure that mustache invocation from within an ElementNode uses the correct indentation
- Add configuration to control where the
>
//>
or}}
of the open element/mustache go- 'new-line' - requires the closing symbol on a new line (outdented)
- 'last-attribute' - requires the closing symbol to be directly after the last attribute
- Ensure invalid config errors are properly bubbled to the console
- Update
simple-unless
to allow eithermaxHelpers
orwhitelist
or both together
- Ensure the
no-implicit-this
rule allowshasBlock
/has-block
without arguments. - Ensure
no-ambiguous-elements
rule does not mark angle bracket invocation of yielded block param paths as invalid.
- Fix issue causing
node_modules
to be scanned when runningember-template-lint .
.
- Fix issue with
attribute-indentation
rule parsing of element nodes. - Add
no-quoteless-attributes
rule. See the rule documentation for details. - Add
no-quoteless-attributes
to the defaultrecommended
configuration.
- Tweak bin script so that it automatically ignores any files ignored by
.gitignore
. - Drop support for Node 4, 5, 7, and 9.
- Update
attribute-indentation
's defaulttrue
config to include processing of elements. - Make
0-8-recommended
configuration (to make upgrading a bit easier for folks. - Change "recommended" configuration
- To be added to the recommended config for 0.9.0:
no-inline-styles
linebreak-style
no-duplicate-attributes
table-groups
attribute-indentation
no-unnecessary-concat
no-input-block
no-input-tagname
no-unbound
no-outlet-outside-routes
no-partial
quotes
no-attrs-in-components
no-shadowed-elements
- To be removed from the recommended config for 0.9.0:
deprecated-inline-view-helper
- To be added to the recommended config for 0.9.0:
- Fix regression in
no-unused-block-params
rule. - Add support for element validation to
attribute-indentation
rule (enableable via theprocess-elements
configuration option).
- Add
link-href-attributes
rule to forbida
elements without anhref
attribute.
- Add
--quiet
option to command line interface. Similar to the same option ineslint
the--quiet
prevents warnings from being printed. - Fix issue with block param scope tracking (from
BlockStatement
s) included in prior versions.
- Fix issue with using literals in mustaches (e.g.
{{false}}
).
- Update to latest
@glimmer/compiler
(0.35.5). - Correct naming of
no-attrs-in-components
rule (deprecatingno-attr-in-components
). - Add line/column information to fatal / parsing errors.
- Deprecate
no-trailing-dot-in-path-expression
rule (it is now directly enforced by Glimmer itself). - Update
invocation-blacklist
rule to accommodate angle bracket invocation. - Update
no-unused-block-param
rule to accommodate angle bracket invocation. - Add
Plugin.prototype.isLocal
to test if a given node is derived from a block param. - Add ability to configure the indentation level for
attribute-indentation
rule.
- Add
no-implicit-this
rule. See the documentation for more details. - Add
no-shadowed-elements
rule.
- Ensure
no-nested-interactive
rule does not flag angle bracket invoked components.
- Fix issue with rule deprecation (introduced in 0.8.16). This was causing deprecated rules that were configured properly to "loose" their config.
- Ensure reported errors include line and column numbers.
- Add
invocable-blacklist
rule allowing specific invokables to be disabled (e.g. you want to forbid astinky-garbage
component or helper from usage in your app). - Fix various ordering issues with
link-rel-noopener
rule (combinations ofnoreferrer
andnoopener
would incorrectly be marked as invalid). - Fix issues with templates with a string literal inside mustaches (e.g.
{{"foo"}}
). - Remove
tabpanel
from being considered an interactive element. - Add
aria-label
,aria-placeholder
,aria-roledescription
,aria-valuetext
to be considered as part of theno-bare-strings
rule. - Rename a number of rules for consistency. A deprecation message will be
emitted when the deprecated name is used in your applications configuration:
inline-styles
->no-inline-styles
bare-strings
->no-bare-strings
html-comments
->no-html-comments
invalid-interactive
->no-invalid-interactive
nested-interactive
->no-nested-interactive
triple-curlies
->no-triple-curlies
unused-block-params
->no-unused-block-params
- add whitelist to simple-unless #356
- add no-partial rule #369
- unused-block-params: Disable rule when partial is used in scope #368
- Remove unused
lodash
dependency #367 - add no-unnecessary-concat rule #365
- update @glimmer/compiler to version 0.32.3 #362
- Remove explicit
@glimmer/syntax
dependency #363 - add no-outlet-outside-routes rule #359
- add no-input-block and no-input-tagname rules #361
- add no-unbound rule #360
- fix attribute-indentation) #358
- fix eol-last #344
- fix attribute-indentation #334
- Allow form elements to have reset actions #355
- No trailing dot(s) in a path expression #342
- Allow sharing and extending configs #322
- table-groups improvements #335
- Ensure that the configuration objects are not mutated.
- Add new
quotes
rule. Examples:
Enforce either:
or:
You can read more about the rule in the documentation.
- Ensure packages required by the executable script are dependencies. This fixes issues when using
ember-template-lint
as a globally installed package.
- Fix issue with
attribute-indentation
rule (reporting incorrect indentation for multiple valid invocations).
- Add new
no-trailing-spaces
rule. Examples:
Bad:
Good:
You can read more about the rule in the documentation.
- Add new
eol-last
rule. Examples:
Enforce either:
or:
You can read more about the rule in the documentation.
- Add support for
colgroup
andcaption
totable-groups
rule. - Colorize the error severity in the console output.
- Add new
table-groups
rule. Examples:
The rule forbids the following:
Instead, you should write your table as:
You can read more about the rule in the documentation.
- Ensure that the contents of else blocks (a.k.a.
inverse
blocks) are checked for indentation.
- Fix error in
simple-unless
rule when an{{if
or{{unless
block was empty.
- Add new
template-length
rule. When enabled, this rule restricts the total number of lines in a template file to the configured number. You can read more about the rule (and configuration) in the documentation.
- Add new
attribute-indentation
rule. Examples:
You can read more about the rule (and configuration) in the documentation.
- Update @glimmer packages to 0.27.0.
- Update
block-indentation
rule to allow{{#if foo}}stuff{{else}}stuff{{/if}}
. - Fix error being thrown by
linebreak-style
rule when dynamic attributes were being used (e.g.<img alt="example" src={{some/thing here}}>
).
- Add new rule
no-duplicate-attributes
to prevent duplicating the same attributes in a single mustache/block/element. Read the documentation for more details. - Add new rule
linkbreak-style
to ensure all templates use the same style of linebreaks throughout the template. Read the documentation for more details.
- Fix issue with console output formatting to avoid noisy console output when no errors are present.
- Refactor the console output formatter to be a much closer match to ESLint output (changes the signature of
Linter.errorsToMessages
).
- Cleanup dependencies (remove unused, update versions to latest, etc).
- Move rule documentation out of the
README.md
and intodocs/rules/<rule-name>.md
to make it simpler to reason about and link to documentation by rule. - Add
require
as an option toself-closing-void-elements
. Use this value if you would like to require that all void elements are self closing (e.g. you require<img />
).
- Move
strip-bom
todependencies
(was mistakenly adevDependency
).
- Prevent errors when using contextual components.
- Prevent errors within the
bare-strings
rule for<input placeholder="{{foo}}.">
-
Add support for user supplied rules and configuration. Please review the documentation for more details.
-
Add
ember-template-lint
command line script. This enable much easier running of the linter from the command line, editor plugins, etc. Supports--json
flag to enable easier consumption by tools. See documentation for more details. -
Allow
rel=noreferrer
to satisfy thelink-rel-noopener
rule. -
Add
inline-styles
rule, which forbids using thestyle
attribute in HTML elements. -
Drop support for Node < 4.
-
Fix a number of issues with
block-indentation
rule when using "whitespace control" characters (e.g.{{~if foo~}}
). -
Add support for globs in
.template-lintrc.js
'signore
option. -
Add
simple-unless
rule which forbids using{{unless
with an inverse (or from an inverse), and with complex helper invocations as the predicate. -
Add
simple-unless
to the recommended configuration. -
Allow
<form onsubmit={{action 'foo'}}></form>
from theinvalid-interactive
rule. -
Remove
deprecated-each-syntax
fromrecommended
config. -
Add configurable option to
link-rel-noopener
to require bothnoopener
andnoreferrer
. See the documentation for more details. -
Update to leverage ES2015 features that are supported in Node 4.
-
Added
no-log
andno-debugger
rules. These rules forbid usage of{{log}}
and{{debugger}
helpers, which should be used only for local debugging and never checked in. -
Fix issues around templates including a Byte Order Mark.
-
Upgrade underlying engine to leverage
@glimmer/compiler@0.25.1
. Includes much smaller footprint, better location support, easier to use plugin API. -
Change API around
Rule
definition. A simpleclass extends Rule { }
is all that is required.
-
Add support for Handlebars comments.
A few new types of control statements are now available:
{{! template-lint-enable some-rule-name }}
- This will enable the rulesome-rule-name
with the default configuration (from.template-lintrc.js
) ortrue
(if not present in the config file). This can be ran for multiple rules at once (i.e.{{! template-lint-enable bare-strings some-other-thing }}
).{{! template-lint-disable some-rule-name }}
- This will disable the rulesome-rule-name
. Multiple rules can be provided at once (i.e.{{! template-lint-disable bare-strings some-other-thing }}
).{{! template-lint-configure some-rule-name { "whitelist": ["some", "valid", "json"] } }}
- This configures the rulesome-rule-name
with theJSON.parse()
'ed result of the second argument. The configure instruction only applies toa single rule at a time.
These configuration instructions do not modify the rule for the rest of the template, but instead only modify it within whatever DOM scope the comment instruction appears.
An instruction will apply to all later siblings and their descendants:
An in-element instruction will apply to only that element:
An in-element instruction with the -tree suffix will apply to that element and all its descendants:
-
Deprecate using HTML comments for enabling/disabling rules. Support for HTML comments will be removed in v0.7.0.
- Add
ignore
to allowed configuration values.ignore
is an array of moduleId's that are to be completely ignored. This is similar (but different) frompending
. - Add
unused-block-params
rule. The following example would fail this rule (since it has an unused block paramindex
):
- Update
img-alt-attributes
rule to allow<img alt>
and<img alt="">
. - Update
invalid-interactive
rule to allow<form {{action 'foo' on="submit"}}>
.
- Fix issue with new
deprecated-inline-view-helper
(throwing error when parsing mustache statements).
- Add
invalid-interactive
to recommended rules. - Add
img-alt-attributes
to recommended rules. - Add
style-concatenation
to recommended rules. - Add
deprecated-inline-view-helper
to recommended rules. - Add
link-rel-noopener
to recommended rules. - Remove support for Node 0.10.
- Add
deprecated-inline-view-helper
rule. Usage of{{view
/{{#view
helper and{{view.path.here}}
were deprecated in Ember 1.13, and subsequently removed in Ember 2.0. This rule flags these usages.
- Fix issue with the
invalid-interactive
rule not honoring the documentedadditonalInteractiveTags
option.
- Fix issue with
link-rel-noopener
rule when using properly with a listing (i.e.rel="noopener noreferrer"
). - Add
inline-link-to
rule to prevent usage of inline{{link-to
. - Add
style-concatenation
rule. This prevents the usage of<div style="{{make-background url}}">
(quoted value with any dynamic segments) but allows<div style={{make-background url}}>
.
- Fix issue causing
<iframe>
to be detected as{{#if
. - Add
link-rel-noopener
rule. This rule requires that any<a target="_blank">
have arel="noopener"
. This prevents the newly opened window from having access to the opener (and helps prevent a number of phishing attacks).
- Fix
invalid-indentation
rule to allow scenarios where the opening and closing elements can have no space between. For example:
If the above </textarea>
had been after a newline and indented properly, the default contents of the textarea would then include that whitespace. The rule now enforces
that there be no child elements within a given block.
- Remove a few ARIA roles that were incorrectly flagging things as interactive elements (i.e.
dialog
andalertdialog
).
- Fix bug with
invalid-interactive
rule incorrectly flagging valid elements.
-
Change
nested-interactive
rule to ignore elements usingtabindex
when determining if a parent element is interactive.tabindex
is still used for detecting all child elements once already inside of another interactive element. -
Fix various issues with
nested-interactive
and<label>
.- Consider
<label>
an interactive element. - Specifically handle the various edge cases of having
<label><input></label>
. - Prevent multiple interactive elements inside of a
<label>
.
- Consider
-
Fix bugs with the
invalid-indentation
around escaped mustaches and raw blocks. -
Add
invalid-interactive
rule (full documentation). Adding interactivity to an element that is not naturally interactive content leads to a very poor experience for users of assistive technology (i.e. screen readers). In order to ensure that screen readers can provide useful information to their users, we should add an appropriaterole
attribute when the underlying element would not have made that role obvious.This rule forbids the following:
Instead, you should add a role
to the element in question so that the A/T is aware that it is interactive:
-
Add
img-alt-attributes
rule (full documentation). An<img>
without analt
attribute is essentially invisible to assistive technology (i.e. screen readers). In order to ensure that screen readers can provide useful information, we need to ensure that all<img>
elements have analt
specified. See WCAG Suggestion H37.The rule forbids the following:
Instead, you should write the template as:
- Add internal helper for determining if a given element is an interactive element.
- Update
nested-interactive
rule to use the newisInteractiveElement
helper function. - Change
nested-interactive
configuration. Now uses an object (instead of an array). Example:
rules: {
'nested-interactive': {
ignoredTags: ['a', 'button'], // list of tag names to ignore
ignoreTabindex: true, // ignore the tabindex check
ignoreUsemapAttribute: ['img', 'object'], // ignore `usemap` check for specific tag names
additionalInteractiveTags: ['some-custom-tag'], // not sure this is needed, but it seams neat :P
}
}
- Add ability to mark specific rules as pending for a module. Given the following
.template-lintrc.js
file, thefoo/bar/baz
module would have only its indentation related issues labeled as warnings:
module.exports = {
extends: 'recommended',
pending: [
{ moduleId: 'foo/bar/baz', only: ['block-indentation']}
]
}
All other rules with errors in the foo/bar/baz
template would still be reported as errors.
- Update internals to use better API for traversing nodes in template AST.
- Lock down parser version (should make package more stable as loose deps won't break consumers).
- Fix various issues with
block-indentation
rule:- Ensure that usage of whitespace control in end block does not trigger an error. Before this:
{{#if foo}}{{~/if}}
would error. - Validate indentation for block inverse (aka
{{else}}
).
- Ensure that usage of whitespace control in end block does not trigger an error. Before this:
- Fix a bug with
block-indentation
rule that would throw an error if a block contained a comment. - Fixed bugs upstream in HTMLBars that caused location information to be incorrect for attributes and comments.
- Remove
bare-strings
fromrecommended
configuration. See #27 for more details.
- Fix invalid rule name in
recommended
configuration. - Add ability to mark files as
pending
in the.template-lintrc.js
configuration file. When a module is listed in thepending
list, it will be checked but any errors detected will be marked as warnings (and will not trigger a failing test when using ember-cli-template-lint). If there are no errors detected when checking a pending file, a new error will be triggered. The goal of this process is to allow large existing projects begin utilizingember-template-lint
/ember-cli-template-lint
and slowly fix their template files to comply with the rules here. Feedback welcome on this idea/process...
-
Move rule configuration into
rules
property inside.template-lintrc.js
. Configuration in the root is still supported, but triggers a deprecation warning. Migration should be very straightforward.Before:
// .template-lintrc.js module.exports = { 'bare-strings': true }
After:
// .template-lintrc.js module.exports = { rules: { 'bare-strings': true } }
- Add ability to extend from internally managed configurations.
- Add
recommended
configuration, which can be used via the following in your.template-lintrc.js
:
module.exports = {
extends: 'recommended'
}
- Add
fix
information to the results object for:html-comments
self-closing-void-elements
deprecated-each-syntax
- Add support for context shifting
{{#each
(i.e.{{#each posts}}
) to thedeprecated-each-syntax
.
- Bring back rules lost during migration from ember-cli-template-lint (deprecated-each, self-closing-void-elements).
- Initial migration of plugins from ember-cli-template-lint.
- Implement new node API for the Linter.
- Implement new result objects.