Skip to content

Latest commit

 

History

History
1630 lines (1225 loc) · 103 KB

CHANGELOG.md

File metadata and controls

1630 lines (1225 loc) · 103 KB

v2.6.0 (2020-04-28)

🚀 Enhancement

🐛 Bug Fix

  • #1303 Update ember-template-recast to remove extraneous whitespace in --fix for inline-link-to rule (@dcyriller)
  • #1297 Fix reading from stdin on Windows (@dcyriller)

📝 Documentation

  • #1305 Fix example in no-invalid-role documentation (@MelSumner)
  • #1304 Tweak Installation section of README.md to clarify that ember-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)

🏠 Internal

Committers: 7

v2.5.2 (2020-04-11)

🐛 Bug Fix

  • #1264 Ensure --json argument can be used anywhere on the command line. (@dcyriller)

🏠 Internal

Committers: 1

v2.5.1 (2020-04-09)

🚀 Enhancement

  • #1260 Expose ember-template-recast API on main entry point (e.g. require('ember-template-lint').recast) (@dcyriller)

Committers: 1

v2.5.0 (2020-04-08)

🚀 Enhancement

  • #1251 Pass env from ember-template-recast to rules so they can use env.syntax.builders.* during ember-template-lint **/*.hbs --fix. (@dcyriller)
  • #1238 Add new rule: require-form-method (@raido)

🐛 Bug Fix

  • #1257 Ensure GitHub Action annotations are not emitted for warnings. (@eramod)

📝 Documentation

  • #1250 Update each rule doc to mention what config enables the rule (@bmish)

Committers: 5

v2.4.1 (2020-03-25)

🐛 Bug Fix

  • #1229 Ensure template parsing errors are only reported once (not once per-rule) (@lifeart)
  • #1210 Fix invalid failure for invalid block param definition (@lifeart)

📝 Documentation

  • #1220 Ensure each rule documentation file has the right title and an examples section (@bmish)

🏠 Internal

  • #1212 Re-run npm init rwjblue-release-it-setup --update. (@rwjblue)

Committers: 3

v2.4.0 (2020-03-08)

🚀 Enhancement

  • #1200 Add --ignore-pattern and --no-ignore-pattern command line flags (@kangax)

📝 Documentation

Committers: 2

v2.3.0 (2020-03-04)

🚀 Enhancement

  • #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)

📝 Documentation

🏠 Internal

Committers: 5

v2.2.0 (2020-03-02)

🚀 Enhancement

🐛 Bug Fix

  • #1189 Ensure resolvable plugins work when the config is not resolved. (@rwjblue)

🏠 Internal

  • #1188 Ensure yarn new emits the expected TODO format (@MelSumner)
  • #1181 Ensure the exported class name matches the rule name (@bmish)

Committers: 5

v2.1.0 (2020-02-28)

🚀 Enhancement

🐛 Bug Fix

  • #1167 Ensure accessing this.editorConfig in a rule instance does not error. (@rwjblue)

📝 Documentation

  • #1159 Rewrite documentation for link-href-attributes rule to explain motivation and migration (@MelSumner)
  • #1154 Fix CI badge in README (@rwjblue)

🏠 Internal

  • #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 using fixturify-project (@suchitadoshi1987)
  • #1157 Refactor rule logging to track results locally. (@rwjblue)
  • #1156 Extract Linter.prototype.buildRule internal helper method to build rule instances. (@rwjblue)

Committers: 5

v2.0.1 (2020-02-24)

🚀 Enhancement

  • #935 Implement more plumbing for --fix support (add Linter.prototype.verifyAndFix) (@dcyriller)

🐛 Bug Fix

  • #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 new filePath property for rules to access). (@bobisjan)

🏠 Internal

Committers: 3

v2.0.0 (2020-02-22)

See the migration guide for this release.

💥 Breaking Change

  • #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 to recommended configuration. (@rwjblue)
  • #1053 Add no-invalid-role and no-negated-condition rules to recommended preset (@bmish)
  • #1052 Change allowDynamicStyles option to default to true in no-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 by no-invalid-meta (@bmish)
  • #1047 Add no-args-path, no-invalid-link-text, no-invalid-meta, require-button-type into recommended configuration. (@rwjblue)
  • #1023 Drop NodeJs v8 support (@dcyriller)
  • #918 Use .editorconfig to choose default value for block-indentation (@lifeart)
  • #919 Use .editorconfig to choose default value for linebreak-style (@lifeart)
  • #899 Update recommended config (@rwjblue)
  • #844 Remove HTML comment config (@initram)
  • #885 Drop support for NodeJs v6 and v11 (@dcyriller)

🚀 Enhancement

  • #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 to no-invalid-interactive rule (@bmish)
  • #1086 Update block-indentation rule to add new ignoreComments 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 to recommended configuration. (@rwjblue)
  • #1053 Add no-invalid-role and no-negated-condition rules to recommended preset (@bmish)
  • #1052 Change allowDynamicStyles option to default to true in no-inline-styles rule (@bmish)
  • #1048 Add stylistic configuration (@bmish)
  • #1047 Add no-args-path, no-invalid-link-text, no-invalid-meta, require-button-type into recommended configuration. (@rwjblue)
  • #1045 Remove no-implicit-this from recommended config. (@rwjblue)
  • #918 Use .editorconfig to choose default value for block-indentation (@lifeart)
  • #919 Use .editorconfig to choose default value for linebreak-style (@lifeart)
  • #906 Add utility function to allow reading from .editorconfig (@lifeart)
  • #873 Leverage ember-template-recast (@dcyriller)

🐛 Bug Fix

  • #1123 Fix issues introduced by ember-template-recast@4.0.1. (@rwjblue)
  • #1051 Fix configuration of quotes rule in stylistic preset (@bmish)
  • #1049 Bring no-implicit-this back into the octane 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 the component 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)

📝 Documentation

  • #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 that logo and spacer are forbidden words (@gojefferson)

🏠 Internal

  • #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 with micromatch #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 by no-invalid-meta (@bmish)
  • #1046 Update octane config to extend from recommended. (@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)

Committers: 9

v2.0.0-beta.5 (2020-01-15)

This release includes all the changes that went into v1.12.1 - v1.13.1.

💥 Breaking Change

  • #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 to recommended configuration. (@rwjblue)
  • #1053 Add no-invalid-role and no-negated-condition rules to recommended preset (@bmish)
  • #1052 Change allowDynamicStyles option to default to true in no-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 by no-invalid-meta (@bmish)
  • #1047 Add no-args-path, no-invalid-link-text, no-invalid-meta, require-button-type into recommended configuration. (@rwjblue)
  • #1023 Drop NodeJs v8 support (@dcyriller)

🚀 Enhancement

  • #1060 Add more rules to stylistic config (@bmish)
  • #1062 Add support for detecting eol-last from .editorconfig (@rwjblue)
  • #1059 Add no-index-component-invocation to recommended configuration. (@rwjblue)
  • #1053 Add no-invalid-role and no-negated-condition rules to recommended preset (@bmish)
  • #1052 Change allowDynamicStyles option to default to true in no-inline-styles rule (@bmish)
  • #1048 Add stylistic configuration (@bmish)
  • #1047 Add no-args-path, no-invalid-link-text, no-invalid-meta, require-button-type into recommended configuration. (@rwjblue)
  • #1045 Remove no-implicit-this from recommended config. (@rwjblue)

🐛 Bug Fix

  • #1051 Fix configuration of quotes rule in stylistic preset (@bmish)
  • #1049 Bring no-implicit-this back into the octane config (@rwjblue)

📝 Documentation

🏠 Internal

  • #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 by no-invalid-meta (@bmish)
  • #1046 Update octane config to extend from recommended. (@rwjblue)
  • #1023 Drop NodeJs v8 support (@dcyriller)

Committers: 3

v1.14.0 (2020-02-20)

🚀 Enhancement

🐛 Bug Fix

  • #1108 Update no-bare-strings rule to allow &ndash; (@jrjohnson)
  • #1090 Update no-curly-component-invocation rule to ignore all usages of the yield helper (@wagenet)

📝 Documentation

🏠 Internal

  • #1121 Update dependencies to latest allowed versions. (@rwjblue)
  • #1107 Simplify a few rules by using the path visitor argument (@Turbo87)

Committers: 6

v1.13.2 (2020-01-18)

🐛 Bug Fix

  • #1087 Fix crash from missing content attribute in no-invalid-meta rule (@bmish)

📝 Documentation

Committers: 1

v1.13.1 (2020-01-15)

🐛 Bug Fix

  • #1071 Update no-invalid-interactive to allow change event with <form> elements (@lifeart)

📝 Documentation

  • #1076 Normalize handlebars comments to {{!-- syntax (@locks)
  • #1068 no-curly-component-invocation: Document default config (@dcyriller)

Committers: 3

v1.13.0 (2020-01-07)

🚀 Enhancement

📝 Documentation

🏠 Internal

Committers: 4

v2.0.0-beta.4 (2019-12-13)

This release includes all the changes that went into v1.10.0 - v1.12.0.

v2.0.0-beta.3 (2019-12-04)

This release includes all the changes that went into v1.9.0.

🏠 Internal

Committers: 1

v2.0.0-beta.2 (2019-11-17)

💥 Breaking Change

  • #918 Use .editorconfig to choose default value for block-indentation (@lifeart)
  • #919 Use .editorconfig to choose default value for linebreak-style (@lifeart)

🚀 Enhancement

  • #918 Use .editorconfig to choose default value for block-indentation (@lifeart)
  • #919 Use .editorconfig to choose default value for linebreak-style (@lifeart)
  • #906 Add utility function to allow reading from .editorconfig (@lifeart)

🐛 Bug Fix

  • #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 the component 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)

📝 Documentation

  • #911 Update documentation for require-valid-alt-text to clarify that logo and spacer are forbidden words (@gojefferson)

🏠 Internal

  • #876 Begin migrating tests to inline fixtures (via broccoli-test-helper) (@lifeart)

Committers: 5

v2.0.0-beta.1 (2019-11-04)

💥 Breaking Change

🚀 Enhancement

🏠 Internal

  • #898 Update dependencies to latest (requiring Node 8+). (@rwjblue)

Committers: 3

v1.12.3 (2019-12-23)

🐛 Bug Fix

  • #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 and textarea components (@Turbo87)

Committers: 1

v1.12.2 (2019-12-23)

🐛 Bug Fix

  • #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)

📝 Documentation

🏠 Internal

  • #1011 Add test cases for {{!-- template-lint-disable --}} comments (@Turbo87)

Committers: 4

v1.12.1 (2019-12-13)

🐛 Bug Fix

  • #1013 Fix missing Linter.errorsToMessages() API for ember-cli-template-lint (@Turbo87)

Committers: 1

v1.12.0 (2019-12-13)

🚀 Enhancement

🐛 Bug Fix

  • #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)

📝 Documentation

🏠 Internal

Committers: 3

v1.11.1 (2019-12-12)

🐛 Bug Fix

  • #998 Ensure no-invalid-meta does not error on non-meta elements. (@rwjblue)

🏠 Internal

  • #994 Use Template and Block nodes instead of Program fallback (@Turbo87)

Committers: 2

v1.11.0 (2019-12-12)

🚀 Enhancement

Committers: 2

v1.10.0 (2019-12-07)

🚀 Enhancement

  • #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 empty alt attribute (@MelSumner)
  • #980 Add no-invalid-role rule (@MelSumner)

🐛 Bug Fix

  • #986 no-multiple-empty-lines: Fix parseConfig() implementation (@Turbo87)

🏠 Internal

Committers: 2

v1.9.0 (2019-12-04)

🚀 Enhancement

  • #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)

🐛 Bug Fix

  • #944 Fix no-invalid-interactive to allow {{on "load"...}} and {{on "error"...}} for <img> (@lifeart)

🏠 Internal

Committers: 4

v1.8.2 (2019-11-17)

🐛 Bug Fix

  • #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 the component 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)

📝 Documentation

  • #911 Update documentation for require-valid-alt-text to clarify that logo and spacer are forbidden words (@gojefferson)

Committers: 5

v1.8.1 (2019-11-04)

🐛 Bug Fix

  • #902 Do not validate indentation within <pre>,<script>, or <style>. (@rwjblue)

Committers: 1

v1.8.0 (2019-11-04)

🚀 Enhancement

🐛 Bug Fix

  • #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)

🏠 Internal

  • #896 Pass moduleName and rawSource to Rule upon creation. (@rwjblue)
  • #892 Remove reliance on preprocess (from @glimmer/syntax) ability to accept an array of AST plugins (@rwjblue)
  • #890 Remove TransformDotComponentInvocation. (@rwjblue)

Committers: 4

v1.7.0 (2019-10-31)

🚀 Enhancement

Committers: 2

v1.6.2 (2019-10-30)

🐛 Bug Fix

  • #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)

📝 Documentation

  • #877 Document requirement on Node.js >= 6 (@bmish)

Committers: 3

v1.6.1 (2019-10-28)

🐛 Bug Fix

  • #864 Update no-invalid-interactive to check for on modifier (in addition to action). (@lifeart)

🏠 Internal

  • #874 test-harness: Make it available for (external) plugins (@dcyriller)

Committers: 2

v1.6.0 (2019-10-22)

🚀 Enhancement

  • #862 ✨Add option --print-pending from ember-cli-template-lint (@TristanToye)
  • #858 Add no-action to octane preset configuration. (@rwjblue)
  • #853 Add no-action rule (@lifeart)
  • #783 Add support for reading a file to lint from process.stdin (e.g cat some-file.hbs | ember-template-lint) (@sukima)

🐛 Bug Fix

  • #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-escaped MustacheStatement) (@initram)
  • #836 Expose internal errors from erroneous config when consuming it (@ygongdev)

🏠 Internal

  • #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)

Committers: 11

v1.5.3 (2019-08-20)

🐛 Bug Fix

  • #805 Update no-action-modifiers and no-element-event-actions rules to suggest using the on modifier (@bmish)
  • #803 Add 'octane' config to export list so it can be used in .template-lintrc.js (@pgengler)

Committers: 3

v1.5.2 (2019-08-12)

🐛 Bug Fix

🏠 Internal

  • #798 Ensure that fundamental setup (docs, tests, exports, etc) is correct when adding new rules (@lifeart)

Committers: 2

v1.5.1 (2019-08-06)

🚀 Enhancement

🐛 Bug Fix

  • #796 Allow {{#-in-element}} and {{#in-element}} for no-curly-component-invocation rule (@mydea)
  • #791 Ensure table-group rule allows each, each-in, let, and comments (@mongoose700)

Committers: 4

v1.5.0 (2019-07-31)

🚀 Enhancement

🐛 Bug Fix

  • #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)

📝 Documentation

  • #775 Add rule documentation to missing rule to docs/rules.md. (@bmish)

Committers: 5

v1.4.0 (2019-07-12)

🚀 Enhancement

  • #759 Deprecate img-alt-attributes rule in favor of require-valid-alt-text (@bmish)
  • #753 Add no-unnecessary-component-helper rule (@bmish)
  • #518 Add blacklist support to simple-unless rule (@mattbalmer)

🐛 Bug Fix

  • #772 Fix no-element-event-actions rule to ignore case when checking the DOM event attribute name (should handle either onclick or ONCLICK) (@bmish)
  • #773 Fix no-invalid-interactive rule to consider any DOM event attribute usage as adding interactivity to an element (@bmish)

Committers: 3

v1.3.0 (2019-06-19)

🚀 Enhancement

  • #742 Update table-groups rule to allow {{#some-component tagName="tbody"}}{{/some-component}} to be a child of table (@bmish)

🐛 Bug Fix

  • #750 Ensure custom rules can be disabled with inline comments. (@rwjblue)

📝 Documentation

  • #744 Tweak error message for no-element-event-actions rule. (@bmish)
  • #740 Fix rule ordering and incorrect rule name in plugin documentation (@bmish)

🏠 Internal

  • #738 Add support for new node types to the AST (@CvX)

Committers: 4

v1.2.0 (2019-06-12)

🚀 Enhancement

  • #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 a table (@raycohen)
  • #672 Add allowDynamicStyles option to no-inline-styles lint rule (@bmish)
  • #638 Update table-groups rule to allow comments inside <table> (@lifeart)
  • #614 Add rule: no-element-event-actions (@bmish)

🐛 Bug Fix

  • #737 Allow onerror for img elements in no-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 the simple-unless and no-negated-condition rules (@bmish)
  • #613 Avoid suggesting unless with helpers in condition in no-negated-condition rule (@bmish)

📝 Documentation

  • #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 and no-action-modifiers as related rules (@keanedawg)
  • #641 Add template for writing documentation for new rules (@bmish)

🏠 Internal

  • #627 Add -test suffix to some test files that were not running in CI (@bmish)

Committers: 16

v1.1.0 (2019-01-16)

🚀 Enhancement

  • #609 Add 'no-negated-condition' rule (@bmish)
  • #573 Allow RegExp's with no-implicit-this (@iki6)

🐛 Bug Fix

  • #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)

📝 Documentation

  • #608 Improve clarity of descriptions and examples in rule docs. (@bmish)
  • #606 Fix typo in 'no-unnecessary-concat' doc migration regexp. (@bmish)

🏠 Internal

Committers: 5

v1.0.0 (2019-01-08)

💥 Breaking Change

  • #599 Remove attribute-indentation from recommended config. (@rwjblue)

🚀 Enhancement

  • #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)

🐛 Bug Fix

  • #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)

📝 Documentation

  • #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)

🏠 Internal

  • #570 TravisCI: Remove deprecated sudo: false option (@Turbo87)

Committers: 16

v1.0.0-beta.6

  • 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).

v1.0.0-beta.5

  • Refactor linebreak-style rule to add:
    • system setting which enforces current system native line endings
    • true 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 either maxHelpers or whitelist or both together

v1.0.0-beta.4

  • Ensure the no-implicit-this rule allows hasBlock / has-block without arguments.
  • Ensure no-ambiguous-elements rule does not mark angle bracket invocation of yielded block param paths as invalid.

v1.0.0-beta.3

  • Fix issue causing node_modules to be scanned when running ember-template-lint ..

v1.0.0-beta.2

  • 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 default recommended configuration.

v1.0.0-beta.1

  • 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 default true 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

v0.8.23

  • Fix regression in no-unused-block-params rule.
  • Add support for element validation to attribute-indentation rule (enableable via the process-elements configuration option).

v0.8.22

  • Add link-href-attributes rule to forbid a elements without an href attribute.

v0.8.21

  • Add --quiet option to command line interface. Similar to the same option in eslint the --quiet prevents warnings from being printed.
  • Fix issue with block param scope tracking (from BlockStatements) included in prior versions.

v0.8.20

  • Fix issue with using literals in mustaches (e.g. {{false}}).

v0.8.19

Bugfixes

  • Update to latest @glimmer/compiler (0.35.5).
  • Correct naming of no-attrs-in-components rule (deprecating no-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.

New Rules

  • Add no-implicit-this rule. See the documentation for more details.
  • Add no-shadowed-elements rule.

0.8.18

  • Ensure no-nested-interactive rule does not flag angle bracket invoked components.

0.8.17

  • 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.

0.8.16

  • Add invocable-blacklist rule allowing specific invokables to be disabled (e.g. you want to forbid a stinky-garbage component or helper from usage in your app).
  • Fix various ordering issues with link-rel-noopener rule (combinations of noreferrer and noopener 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 the no-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

0.8.15

  • 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

0.8.14

  • Ensure that the configuration objects are not mutated.

0.8.13

  • Add new quotes rule. Examples:

Enforce either:

<div class="my-class">test</div>
{{my-helper "hello there"}}

or:

<div class='my-class'>test</div>
{{my-helper 'hello there'}}

You can read more about the rule in the documentation.

0.8.12

  • Ensure packages required by the executable script are dependencies. This fixes issues when using ember-template-lint as a globally installed package.

0.8.11

  • Fix issue with attribute-indentation rule (reporting incorrect indentation for multiple valid invocations).

0.8.10

  • Add new no-trailing-spaces rule. Examples:

Bad:

<div>test</div>//••
//•••••

Good:

<div>test</div>//
//

You can read more about the rule in the documentation.

  • Add new eol-last rule. Examples:

Enforce either:

<div>test</div>

or:

<div>test</div>

You can read more about the rule in the documentation.

0.8.9

  • Add support for colgroup and caption to table-groups rule.
  • Colorize the error severity in the console output.

0.8.8

  • Add new table-groups rule. Examples:

The rule forbids the following:

<table>
  <tr>
    <td></td>
  </tr>
</table>
<table>
  {{some-thing content=content}}
</table>

Instead, you should write your table as:

<table>
  <tbody>
    <tr>
      <td></td>
    </tr>
  </tbody>
</table>
<table>
  <tbody>
    {{some-thing content=content}}
  </tbody>
</table>

You can read more about the rule in the documentation.

0.8.7

  • Ensure that the contents of else blocks (a.k.a. inverse blocks) are checked for indentation.

0.8.6

  • Fix error in simple-unless rule when an {{if or {{unless block was empty.

0.8.5

  • 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.

0.8.4

  • Add new attribute-indentation rule. Examples:
{{! good }}

{{foo-bar baz="bat" derp="qux"}}

{{foo-bar
  baz="bat"
  derp="qux"
}}

{{#foo-bar
  baz="bat"
  derp="qux"
as |foo|}}
  stuff here
{{/foo-bar}}

{{#foo-bar baz="bat" derp="qux" as |foo|}}
  stuff here
{{/foo-bar}}
{{! bad }}

{{foo-bar baz="bat"
  derp="qux"
}}

{{foo-bar
baz="bat"
derp="qux"
}}

{{foo-bar
  baz="bat"
  derp="qux"}}

You can read more about the rule (and configuration) in the documentation.

0.8.3

  • 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}}>).

0.8.2

  • 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.

0.8.1

  • Fix issue with console output formatting to avoid noisy console output when no errors are present.

0.8.0

  • Refactor the console output formatter to be a much closer match to ESLint output (changes the signature of Linter.errorsToMessages).

0.7.4

  • Cleanup dependencies (remove unused, update versions to latest, etc).
  • Move rule documentation out of the README.md and into docs/rules/<rule-name>.md to make it simpler to reason about and link to documentation by rule.
  • Add require as an option to self-closing-void-elements. Use this value if you would like to require that all void elements are self closing (e.g. you require <img />).

0.7.3

  • Move strip-bom to dependencies (was mistakenly a devDependency).

0.7.2

  • Prevent errors when using contextual components.

0.7.1

  • Prevent errors within the bare-strings rule for <input placeholder="{{foo}}.">

0.7.0

  • 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 the link-rel-noopener rule.

  • Add inline-styles rule, which forbids using the style 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's ignore option.

  • Add simple-unless rule which forbids using {{unless with an inverse (or from an inverse), and with complex helper invocations as the predicate.

    {{! good }}
    
    <div class="{{unless foo "bar"}}"></div>
    {{#unless something}}
    {{/unless}}
    
    {{! bad }}
    
    {{#unless something}}
    {{else}}
    {{/unless}}
    
    
    {{#unless (complex (helper (invocation)))}}
    {{/unless}}
  • Add simple-unless to the recommended configuration.

  • Allow <form onsubmit={{action 'foo'}}></form> from the invalid-interactive rule.

  • Remove deprecated-each-syntax from recommended config.

  • Add configurable option to link-rel-noopener to require both noopener and noreferrer. See the documentation for more details.

  • Update to leverage ES2015 features that are supported in Node 4.

  • Added no-log and no-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 simple class extends Rule { } is all that is required.

v0.6.3

  • 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 rule some-rule-name with the default configuration (from .template-lintrc.js) or true (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 rule some-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 rule some-rule-name with the JSON.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:

    {{! disable for <p> and <span> and their contents, but not for <div> or <hr> }}
    <div>
      <hr>
      {{! template-lint-disable }}
      <p>
        <span>Hello!</span>
      </p>
    </div>

    An in-element instruction will apply to only that element:

    {{! enable for <p>, but not for <div>, <hr> or <span> }}
    <div>
      <hr>
      <p {{! template-lint-enable }}>
        <span>Hello!</span>
      </p>
    </div>

    An in-element instruction with the -tree suffix will apply to that element and all its descendants:

    {{! configure for <p>, <span> and their contents, but not for <div> or <hr> }}
    <div>
      <hr>
      <p {{! template-lint-configure-tree block-indentation "tab" }}>
        <span>Hello!</span>
      </p>
    </div>
  • Deprecate using HTML comments for enabling/disabling rules. Support for HTML comments will be removed in v0.7.0.

v0.6.2

  • Add ignore to allowed configuration values. ignore is an array of moduleId's that are to be completely ignored. This is similar (but different) from pending.
  • Add unused-block-params rule. The following example would fail this rule (since it has an unused block param index):
{{#each foo as |bar index|}}
  {{bar}}
{{/each}}
  • Update img-alt-attributes rule to allow <img alt> and <img alt="">.
  • Update invalid-interactive rule to allow <form {{action 'foo' on="submit"}}>.

v0.6.1

  • Fix issue with new deprecated-inline-view-helper (throwing error when parsing mustache statements).

v0.6.0

  • 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.

v0.5.18

  • 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.

v0.5.17

  • Fix issue with the invalid-interactive rule not honoring the documented additonalInteractiveTags option.

v0.5.16

  • 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}}>.

v0.5.15

  • Fix issue causing <iframe> to be detected as {{#if.
  • Add link-rel-noopener rule. This rule requires that any <a target="_blank"> have a rel="noopener". This prevents the newly opened window from having access to the opener (and helps prevent a number of phishing attacks).

v0.5.14

  • Fix invalid-indentation rule to allow scenarios where the opening and closing elements can have no space between. For example:
<textarea
    class="form-control"
    id="job-instructions"
    rows="3"
    placeholder="Do it well"
    value={{job.instructions}}
    oninput={{action 'updateInstructions' value='target.value'}}></textarea>

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 and alertdialog).

v0.5.13

  • Fix bug with invalid-interactive rule incorrectly flagging valid elements.

v0.5.12

  • Change nested-interactive rule to ignore elements using tabindex 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>.
  • 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 appropriate role attribute when the underlying element would not have made that role obvious.

    This rule forbids the following:

<div {{action 'foo'}}></div>

Instead, you should add a role to the element in question so that the A/T is aware that it is interactive:

<div role="button" {{action "foo"}}></div>
  • Add img-alt-attributes rule (full documentation). An <img> without an alt 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 an alt specified. See WCAG Suggestion H37.

    The rule forbids the following:

<img src="rwjblue.png">

Instead, you should write the template as:

<img src="rwjblue.png" alt="picture of Robert Jackson">

v0.5.11

  • Add internal helper for determining if a given element is an interactive element.
  • Update nested-interactive rule to use the new isInteractiveElement 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
  }
}

v0.5.10

  • Add ability to mark specific rules as pending for a module. Given the following .template-lintrc.js file, the foo/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.

v0.5.9

  • 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).

v0.5.8

  • 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}}).

v0.5.7

  • 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.

v0.5.6

  • Remove bare-strings from recommended configuration. See #27 for more details.

v0.5.5

  • 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 the pending 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 utilizing ember-template-lint / ember-cli-template-lint and slowly fix their template files to comply with the rules here. Feedback welcome on this idea/process...

v0.5.4

  • 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
      }
    }

v0.5.3

  • 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'
}

v0.5.2

  • 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 the deprecated-each-syntax.

v0.5.1

  • Bring back rules lost during migration from ember-cli-template-lint (deprecated-each, self-closing-void-elements).

v0.5.0

  • Initial migration of plugins from ember-cli-template-lint.
  • Implement new node API for the Linter.
  • Implement new result objects.