diff --git a/.eslintignore b/.eslintignore index 2003cec41a0..d619eb5c112 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,5 +1,10 @@ blueprints/*/*files/**/*.js +blueprints-js/*/*files/**/*.js +blueprints/*/*files/**/*.ts node-tests/fixtures/**/*.js /docs/ dist/ tmp/ +smoke-tests/ +types/ +type-tests/ diff --git a/.eslintrc.js b/.eslintrc.js index ac34ace5fd1..a30b8021976 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -2,78 +2,72 @@ const path = require('path'); module.exports = { root: true, - parser: 'babel-eslint', + parser: '@typescript-eslint/parser', + reportUnusedDisableDirectives: true, extends: [ 'eslint:recommended', - 'prettier', 'plugin:import/errors', + 'plugin:import/typescript', 'plugin:qunit/recommended', + 'plugin:prettier/recommended', ], - plugins: [ - 'ember-internal', - 'prettier', - 'import', - 'qunit', - 'disable-features', - ], + plugins: ['ember-internal', 'import', 'qunit', 'disable-features'], rules: { + 'no-console': 'error', 'no-implicit-coercion': 'error', 'no-new-wrappers': 'error', 'no-unused-vars': 'error', 'no-throw-literal': 'error', 'no-var': 'error', - 'prettier/prettier': 'error', + + 'qunit/no-assert-equal': 'off', 'qunit/no-commented-tests': 'off', 'qunit/require-expect': 'off', + 'disable-features/disable-async-await': 'error', 'disable-features/disable-generator-functions': 'error', }, settings: { - 'import/core-modules': [ - 'require', - 'backburner', - 'router', - 'ember/version', - 'node-module', - ], - 'import/parsers': { - '@typescript-eslint/parser': ['.ts'], - }, + 'import/core-modules': ['require', 'backburner', 'router', '@glimmer/interfaces'], 'import/resolver': { node: { - extensions: [ '.js', '.ts' ], - paths: [ - path.resolve('./packages/'), - ] - } - } + extensions: ['.js', '.ts', '.d.ts'], + paths: [path.resolve('./packages/')], + }, + }, }, overrides: [ { - files: [ '**/*.ts' ], + files: ['*.ts'], - parser: '@typescript-eslint/parser', + extends: ['plugin:@typescript-eslint/recommended'], parserOptions: { sourceType: 'module', + project: './tsconfig.json', + tsconfigRootDir: __dirname, }, rules: { - // the TypeScript compiler already takes care of this and - // leaving it enabled results in false positives for interface imports - 'no-dupe-class-members': 'off', - 'no-unused-vars': 'off', - 'no-undef': 'off', - - 'import/export': 'off', - 'import/named': 'off', - 'import/no-unresolved': 'off', - } + '@typescript-eslint/ban-ts-comment': 'warn', + '@typescript-eslint/ban-types': 'off', + '@typescript-eslint/no-empty-function': 'off', + '@typescript-eslint/no-this-alias': 'off', + '@typescript-eslint/no-var-requires': 'warn', + '@typescript-eslint/consistent-type-imports': 'error', + + // TODO: Enable and fix these rules + // Typescript provides better types with these rules enabled + 'prefer-spread': 'off', + 'prefer-const': 'off', + 'prefer-rest-params': 'off', + }, }, { - files: [ 'packages/**/*.js' ], + // TODO: files: ['packages/**/*.[jt]s'], + files: ['packages/**/*.js'], parserOptions: { ecmaVersion: 2017, @@ -82,17 +76,18 @@ module.exports = { globals: { // A safe subset of 'browser:true': - 'window': true, - 'document': true, - 'setTimeout': true, - 'clearTimeout': true, - 'setInterval': true, - 'clearInterval': true, - 'console': true, - 'Map': true, - 'Set': true, - 'Symbol': true, - 'WeakMap': true, + window: true, + document: true, + setTimeout: true, + clearTimeout: true, + setInterval: true, + clearInterval: true, + console: true, + Map: true, + Set: true, + Symbol: true, + WeakMap: true, + Event: true, }, rules: { @@ -111,33 +106,35 @@ module.exports = { qunit: true, }, globals: { - 'expectAssertion': true, - 'expectDeprecation': true, - 'expectDeprecationAsync': true, - 'expectNoDeprecation': true, - 'expectWarning': true, - 'expectNoWarning': true, - 'ignoreAssertion': true, - 'ignoreDeprecation': true, + expectAssertion: true, + expectDeprecation: true, + expectDeprecationAsync: true, + expectNoDeprecation: true, + expectWarning: true, + expectNoWarning: true, + ignoreAssertion: true, + ignoreDeprecation: true, }, rules: { 'disable-features/disable-async-await': 'off', 'disable-features/disable-generator-functions': 'off', - } + }, }, { // matches all node-land files files: [ + '.eslintrc.js', 'node-tests/**/*.js', 'tests/node/**/*.js', 'blueprints/**/*.js', + 'blueprints-js/**/*.js', 'bin/**/*.js', 'tests/docs/*.js', 'config/**/*.js', 'lib/**/*.js', 'server/**/*.js', 'testem.js', - 'testem.travis-browsers.js', + 'testem.ci-browsers.js', 'testem.browserstack.js', 'd8-runner.js', 'broccoli/**/*.js', @@ -156,44 +153,28 @@ module.exports = { }, plugins: ['node'], - rules: Object.assign({}, require('eslint-plugin-node').configs.recommended.rules, { + extends: ['plugin:node/recommended'], + rules: { // add your custom rules and overrides for node files here 'no-process-exit': 'off', 'no-throw-literal': 'error', 'disable-features/disable-async-await': 'off', 'disable-features/disable-generator-functions': 'off', - }), - }, - { - // matches node-land files that aren't shipped to consumers (allows using Node 6+ features) - files: [ - 'broccoli/**/*.js', - 'tests/node/**/*.js', - 'ember-cli-build.js', - 'rollup.config.js', - 'd8-runner.js', - ], - - rules: { - 'node/no-unsupported-features': ['error', { version: 6 }], - } + }, }, { - files: [ 'node-tests/**/*.js' ], + files: ['node-tests/**/*.js'], env: { mocha: true, }, }, { - files: [ - 'tests/docs/**/*.js', - 'tests/node/**/*.js', - ], + files: ['tests/docs/**/*.js', 'tests/node/**/*.js'], env: { - qunit: true + qunit: true, }, }, - ] + ], }; diff --git a/.gitattributes b/.gitattributes index 09bc62c1393..9e09e498870 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,2 +1,5 @@ # Set the default behavior, in case people don't have core.autocrlf set. -* text=auto \ No newline at end of file +* text=auto + +# Tell GH to render all tsconfigs in the tsconfig dir correctly. +tsconfig/*.json linguist-language=JSON-with-Comments diff --git a/.github/ISSUE_TEMPLATE/4-other.md b/.github/ISSUE_TEMPLATE/4-other.md index f6ee379febb..7f9131c19f2 100644 --- a/.github/ISSUE_TEMPLATE/4-other.md +++ b/.github/ISSUE_TEMPLATE/4-other.md @@ -1,6 +1,6 @@ --- name: Other -about: Report an issue that does not fit any of the categoroes above. +about: Report an issue that does not fit any of the categories above. title: '' labels: '' assignees: '' diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000000..4aa0ece9968 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,23 @@ +version: 2 +updates: +- package-ecosystem: npm + directory: "/" + schedule: + interval: monthly + open-pull-requests-limit: 10 + versioning-strategy: increase + ignore: + - dependency-name: github + versions: + - "> 0.2.4" + - dependency-name: ember-cli + versions: + - 3.25.0 + - dependency-name: broccoli-rollup + versions: + - 4.1.1 +- package-ecosystem: github-actions + directory: "/" + schedule: + interval: weekly + open-pull-requests-limit: 10 diff --git a/.github/workflows/alpha-releases.yml b/.github/workflows/alpha-releases.yml new file mode 100644 index 00000000000..ec8c33043db --- /dev/null +++ b/.github/workflows/alpha-releases.yml @@ -0,0 +1,64 @@ +name: Alpha Releases + +on: + schedule: + - cron: '0 20 * * 3' # weekly (Wednesday) + +jobs: + test: + name: Basic Test + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 14.x + cache: yarn + - name: install dependencies + run: yarn install --frozen-lockfile --non-interactive + - name: build + env: + DISABLE_SOURCE_MAPS: true + BROCCOLI_ENV: production + run: yarn ember build + - name: test + env: + TEST_SUITE: each-package + run: yarn test + + release: + name: Tag + Release + runs-on: ubuntu-latest + needs: [test] + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 14.x + cache: yarn + registry-url: 'https://registry.npmjs.org' + - name: install dependencies + run: yarn install --frozen-lockfile --non-interactive + - name: setup git + run: | + git config --local user.email 'tomster@emberjs.com' + git config --local user.name 'Ember.js Alpha Releaser' + - name: Find next alpha + run: | + LATEST_ALPHA=`npm view ember-source dist-tags.alpha` + export NEXT_ALPHA=`node bin/next-alpha-version.js ${LATEST_ALPHA}` + echo "NEXT_ALPHA=$NEXT_ALPHA" >> $GITHUB_ENV + - name: tag the next alpha + run: npm version ${{env.NEXT_ALPHA}} --allow-same-version + - name: build for publish + env: + BUILD_TYPE: alpha + OVERRIDE_FEATURES: '' + run: node bin/build-for-publishing.js + - name: publish to npm + run: npm publish + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }} + - name: push tag + # Push in a way that will NOT trigger other workflows + run: git push origin v${{env.NEXT_ALPHA}} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000000..5d8468db559 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,394 @@ +name: CI + +on: + push: + branches: + - master + - beta + - release + # release branches + - release* + - lts* + # nightly ci cron branches + - cron* + tags: + - 'v*' + paths-ignore: + - 'CHANGELOG.md' + pull_request: + +jobs: + lint: + name: Linting + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 14.x + cache: yarn + - name: install dependencies + run: yarn install --frozen-lockfile --non-interactive + - name: linting + run: yarn lint + + types: + name: Type Checking (current version) + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 14.x + cache: yarn + - name: install dependencies + run: yarn install --frozen-lockfile --non-interactive + - name: Check published types + run: yarn type-check:types + + types-range: + name: Type Checking (other supported versions) + runs-on: ubuntu-latest + needs: ['types'] + strategy: + matrix: + ts-version: ['next'] + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 14.x + cache: yarn + - name: install dependencies + run: yarn install --frozen-lockfile --non-interactive + - name: build stable type definitions + run: yarn build:types + - name: install TS@${{matrix.ts-version}} + run: yarn add -D typescript@${{ matrix.ts-version }} + - name: Check published types with TS@${{matrix.ts-version}} + run: yarn type-check:types + + basic-test: + name: Debug and Prebuilt (All Tests by Package + Canary Features) + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 14.x + cache: yarn + - name: install dependencies + run: yarn install --frozen-lockfile --non-interactive + - name: build + env: + DISABLE_SOURCE_MAPS: true + BROCCOLI_ENV: production + run: yarn ember build + - name: Upload build + uses: actions/upload-artifact@v3 + with: + name: dist + path: dist + - name: test + env: + TEST_SUITE: each-package + run: yarn test + + browserstack-test: + name: Browserstack Tests (Safari, Edge) + runs-on: ubuntu-latest + needs: [basic-test, lint, types] + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 14.x + cache: yarn + - name: install dependencies + run: yarn install --frozen-lockfile --non-interactive + - name: build + env: + DISABLE_SOURCE_MAPS: true + BROCCOLI_ENV: production + SHOULD_TRANSPILE: true + run: yarn ember build + - name: test:browserstack + env: + BROWSERSTACK_USERNAME: emberjscoreteam1 + # This is in plaintext on purpose. It has no privileged access to anything (this is a free + # account) and it allows us to run browserstack tests against PRs. + BROWSERSTACK_ACCESS_KEY: o5LNEdygq1SP4L9kst4s + run: yarn test:browserstack + + smoke-test: + name: Smoke tests (Full Ember Apps) + runs-on: ubuntu-latest + needs: [basic-test, lint, types] + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 14.x + cache: yarn + - name: install dependencies + run: yarn install --frozen-lockfile --non-interactive + - name: build + run: yarn ember build -prod + - name: test + # todo: potentially more apps? use matrix? + run: | + yarn link + cd smoke-tests/ember-test-app/ + yarn + yarn link ember-source + yarn test + + production-test: + name: Production (All Tests + Canary Features) + runs-on: ubuntu-latest + needs: [basic-test, lint, types] + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 14.x + cache: yarn + - name: install dependencies + run: yarn install --frozen-lockfile --non-interactive + - name: build + env: + DISABLE_SOURCE_MAPS: true + BROCCOLI_ENV: production + run: yarn ember build -prod + - name: test + run: yarn test + + production-debug-render-test: + name: Production (All Tests + Canary Features with Debug Render Tree) + runs-on: ubuntu-latest + needs: [basic-test, lint, types] + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 14.x + cache: yarn + - name: install dependencies + run: yarn install --frozen-lockfile --non-interactive + - name: build + env: + DISABLE_SOURCE_MAPS: true + BROCCOLI_ENV: production + DEBUG_RENDER_TREE: true + run: yarn ember build -prod + - name: test + run: yarn test + + extend-prototypes-test: + name: Extend Prototypes + runs-on: ubuntu-latest + needs: [basic-test, lint, types] + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 14.x + cache: yarn + - name: install dependencies + run: yarn install --frozen-lockfile --non-interactive + - uses: actions/download-artifact@v3 + with: + name: dist + path: dist + - name: test + env: + TEST_SUITE: extend-prototypes + run: yarn test + + node-test: + name: Node.js Tests + runs-on: ubuntu-latest + needs: [basic-test, lint, types] + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 14.x + cache: yarn + - name: install dependencies + run: yarn install --frozen-lockfile --non-interactive + - name: build + env: + DISABLE_SOURCE_MAPS: true + BROCCOLI_ENV: production + SHOULD_TRANSPILE_FOR_NODE: true + run: yarn ember build -prod + - name: test + run: yarn test:node + + blueprint-test: + name: Blueprint Tests + runs-on: ubuntu-latest + needs: [lint] + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 14.x + cache: yarn + - name: install dependencies + run: yarn install --frozen-lockfile --non-interactive + - name: test + run: yarn test:blueprints + + browser-test: + name: Browser Tests (Firefox) + runs-on: ubuntu-latest + needs: [basic-test, lint, types] + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 14.x + cache: yarn + - name: install dependencies + run: yarn install --frozen-lockfile --non-interactive + - uses: actions/download-artifact@v3 + with: + name: dist + path: dist + - name: Setup firefox + uses: browser-actions/setup-firefox@latest + with: + firefox-version: 91.0.1 + - run: firefox --version + - name: test + run: yarn ember test -c testem.ci-browsers.js + + deploy-tag: + name: Deploy tags to npm + runs-on: ubuntu-latest + needs: + [ + basic-test, + lint, + browserstack-test, + production-test, + production-debug-render-test, + extend-prototypes-test, + node-test, + blueprint-test, + browser-test, + ] + if: startsWith(github.ref, 'refs/tags/v') + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 14.x + registry-url: 'https://registry.npmjs.org' + cache: yarn + - name: install dependencies + run: yarn install --frozen-lockfile --non-interactive + - name: build for publish + run: node bin/build-for-publishing.js + - name: publish to npm + run: npm publish + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }} + + publish: + name: Publish channel to s3 + runs-on: ubuntu-latest + needs: + [ + basic-test, + lint, + browserstack-test, + production-test, + production-debug-render-test, + extend-prototypes-test, + node-test, + blueprint-test, + browser-test, + ] + # Only run on pushes to branches that are not from the cron workflow + if: github.event_name == 'push' && contains(github.ref, 'cron') != true + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 14.x + cache: yarn + - name: install dependencies + run: yarn install --frozen-lockfile --non-interactive + - name: build for publish + run: node bin/build-for-publishing.js + - name: publish to s3 + run: node bin/publish_to_s3.js + env: + S3_BUCKET_NAME: 'builds.emberjs.com' + S3_SECRET_ACCESS_KEY: ${{ secrets.S3_SECRET_ACCESS_KEY}} + S3_ACCESS_KEY_ID: ${{ secrets.S3_ACCESS_KEY_ID}} + + publish-alpha: + name: Publish alpha from default branch + runs-on: ubuntu-latest + needs: + [ + basic-test, + lint, + browserstack-test, + production-test, + production-debug-render-test, + extend-prototypes-test, + node-test, + blueprint-test, + browser-test, + ] + # Only run on pushes to master + if: github.event_name == 'push' && github.ref == 'refs/heads/master' + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 14.x + cache: yarn + - name: install dependencies + run: yarn install --frozen-lockfile --non-interactive + - name: build for publish + run: node bin/build-for-publishing.js + - name: publish to s3 + run: node bin/publish_to_s3.js + env: + BUILD_TYPE: alpha + OVERRIDE_FEATURES: '' + S3_BUCKET_NAME: 'builds.emberjs.com' + S3_SECRET_ACCESS_KEY: ${{ secrets.S3_SECRET_ACCESS_KEY}} + S3_ACCESS_KEY_ID: ${{ secrets.S3_ACCESS_KEY_ID}} + + notify: + name: Notify Discord + runs-on: ubuntu-latest + needs: + [ + basic-test, + lint, + browserstack-test, + production-test, + production-debug-render-test, + extend-prototypes-test, + node-test, + blueprint-test, + browser-test, + ] + if: failure() && contains(github.ref, 'cron') == true + steps: + - uses: sarisia/actions-status-discord@v1 + with: + webhook: ${{ secrets.FRAMEWORK_WEBHOOK }} + status: "Failure" + title: "Ember.js Nightly CI" + color: 0xcc0000 + url: "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" + username: GitHub Actions diff --git a/.github/workflows/cron.yml b/.github/workflows/cron.yml new file mode 100644 index 00000000000..a6cd7eb04a3 --- /dev/null +++ b/.github/workflows/cron.yml @@ -0,0 +1,57 @@ +name: Cron + +on: + schedule: + - cron: '0 7 * * *' # daily, 7am + workflow_dispatch: + +jobs: + trigger-ci: + name: Trigger cron build + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + branch: + - master + - beta + - release + steps: + - uses: actions/checkout@v3 + with: + persist-credentials: false + fetch-depth: 0 + ref: ${{matrix.branch}} + + - name: Make a commit to have a unique sha + run: | + touch cron.txt + git config --local user.email 'cron@example.com' + git config --local user.name 'Ember.js Cron CI' + git add cron.txt + git commit -m "Cron $(date +%Y-%m-%d) for ${{matrix.branch}}" + export SHA=`git rev-parse HEAD` + echo "SHA=$SHA" >> $GITHUB_ENV + + - name: Push branch to trigger Build workflow + # This must use a personal access token because of a Github Actions + # limitation where it will not trigger workflows from pushes from + # other workflows with the token it provides. + # The PERSONAL_ACCESS secret must be a token with `repo` scope. + # See https://help.github.com/en/actions/reference/events-that-trigger-workflows#triggering-new-workflows-using-a-personal-access-token + run: | + git checkout -B cron-${{matrix.branch}}-${{env.SHA}} + git push https://${GITHUB_ACTOR}:${{ secrets.PERSONAL_TOKEN }}@github.com/${GITHUB_REPOSITORY} cron-${{matrix.branch}}-${{env.SHA}} --force + + - name: Wait for Build completion + uses: jitterbit/await-check-suites@v1 + with: + ref: ${{ env.SHA }} + appSlugFilter: github-actions + onlyFirstCheckSuite: true + timeoutSeconds: 1800 + + - name: Cleanup + # Always cleanup the cron-* branches + if: always() + run: git push https://${GITHUB_ACTOR}:${{ secrets.PERSONAL_TOKEN}}@github.com/${GITHUB_REPOSITORY} --delete cron-${{matrix.branch}}-${{env.SHA}} || true # Don't fail build if cleanup fails diff --git a/.github/workflows/night-ts.yml b/.github/workflows/night-ts.yml new file mode 100644 index 00000000000..3dfecdca87c --- /dev/null +++ b/.github/workflows/night-ts.yml @@ -0,0 +1,32 @@ +name: Nightly TypeScript Run + +jobs: + ts-next: + name: typescript@next + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: volta-cli/action@v4 + - run: yarn install --frozen-lockfile --non-interactive + - run: yarn add -D typescript@next + - run: yarn type-check + notify: + name: Notify Discord + runs-on: ubuntu-latest + needs: [ ts-next ] + if: failure() + steps: + - uses: sarisia/actions-status-discord@v1 + with: + webhook: ${{ secrets.TYPESCRIPT_WEBHOOK }} + status: "Failure" + title: "Ember.js Nightly TypeScript Run" + color: 0xcc0000 + url: "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" + username: GitHub Actions + +# ...nightly at midnight +on: + schedule: + - cron: 0 0 * * * + workflow_dispatch: diff --git a/.gitignore b/.gitignore index c03f4f312bd..0f018875cdc 100644 --- a/.gitignore +++ b/.gitignore @@ -45,4 +45,11 @@ npm-debug.log *.tgz *.tar.gz *.log +/.vscode +# These are automatically generated by our build process. +# TODO: make that *fully* true: The root types/stable directory is *not* +# automatically generated yet, and accordingly we have explicitly committed a +# couple of the files. Once it is, we can switch this over to just ignoring +# `types/stable` entirely. +types/stable diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index ac96d17ad5e..00000000000 --- a/.travis.yml +++ /dev/null @@ -1,120 +0,0 @@ -branches: - only: - - master - - beta - - release - # release branches - - /^(?:release|lts)-\d+-\d+$/ - # npm version tags - - /^v\d+\.\d+\.\d+/ - -language: node_js -node_js: - - "10" - -addons: - firefox: "latest" - -env: - global: - - BROWSERSTACK_USERNAME=emberjscoreteam1 - - BROWSERSTACK_ACCESS_KEY=YsPxXKcahx9XszyHS2Gr - - DISABLE_SOURCE_MAPS=true - - BROCCOLI_ENV=production - - S3_BUCKET_NAME=builds.emberjs.com - - secure: "SHnuJ4A3QbSc3LV2fYynDPbbSbhVl0ZWnCiKPuRgwnddDnoSaMQUY2RqyHdtsQGdUZCOeNaMvYUhYx6hzxBVHn0yuN3KA20aSwvYdwaMgZXfJi+lyxgsEI8iYdksWXvVbCAyKM8zjTWXUtNcMBGtsGYOfdD41wfZgI8GsI0YYJc=" - - secure: ! 'KXJmcGLpnxnPmmei/qPNVcdQxLX1xyYIaVocinQ0YAjtBvCtAwg63EWMFnGp - - VIzUNikE+Cej3g+nwEdDJiL1c9NFPL+zCnriR2iMVjPak+IQaG3YcMm0T+hY - /WLEPAquZBKw1gU6lBEUuDumTlkXQQdHz3cJYoidAXz3uV1EXIU=' - - secure: ! 'qCW0BVNFuQjAI53pvvE6oeGxtEdZ+RlvcCpYjU4vxEjedidEEcHKtIVh7d7J - - PZ8DNTxX0zsp2jjY8NwTR5MC8NBH+J5VjuTSGv82t5sm0i0jzaBmOOSLbKqH - - I/BFT0MbnR6JVCZiPV7TCWPgY1gvgZ6TEEIKGqauDMUBdL8ZK6I=' - - secure: e0yxVfwVW61d3Mi/QBOsY6Rfd1mZd3VXUd9xNRoz/fkvQJRuVwDe7oG3NOuJ4LZzvMw7BJ+zpDV9D8nKhAyPEEOgpkkMHUB7Ds83pHG4qSMzm4EAwBCadDLXCQirldz8dzN5FAqgGucXoj5fj/p2SKOkO6qWIZveGr8pdBJEG1E= - -cache: - yarn: true - -stages: - - basic tests - - additional tests - - name: deploy - if: type IN (push) - -before_install: - - curl -o- -L https://yarnpkg.com/install.sh | bash - - export PATH=$HOME/.yarn/bin:$PATH - - # install the most recent `npm version` - # used when publishing to build a properly packed tarball - - npm i -g npm - -install: - - yarn install --frozen-lockfile --non-interactive - -jobs: - include: - - stage: Basic Tests - name: Debug and Prebuilt (All Tests by Package + Canary Features + Optional Jquery) - env: TEST_SUITE=each-package - script: - - yarn ember build - - yarn test - - - name: Linting - script: - - yarn lint - - - stage: Additional Tests - name: Browserstack Tests (Safari, Edge, IE11) - env: SHOULD_TRANSPILE=true - script: - - yarn ember build - - yarn test:browserstack - - - name: Production (All Tests + Canary Features) - script: - - yarn ember build -prod - - yarn test - - - name: Production (All Tests + Canary Features + Debug Render Tree) - env: DEBUG_RENDER_TREE=true - script: - - yarn ember build -prod - - yarn test - - - name: Old Jquery and Extend Prototypes - env: TEST_SUITE=old-jquery-and-extend-prototypes - script: - - yarn ember build - - yarn test - - - name: Node.js Tests - script: - - yarn ember build -prod - - yarn test:node - - - name: Blueprint Tests - script: - - yarn test:blueprints - - - name: Browser Tests (Firefox) - script: - - yarn ember build - - yarn ember test -c testem.travis-browsers.js - - - stage: deploy - env: - - PUBLISH=true - script: - - "./bin/publish_builds" - - - if: branch = master - env: - - BUILD_TYPE=alpha - - OVERRIDE_FEATURES=EMBER_METAL_TRACKED_PROPERTIES - - PUBLISH=true - script: - - "./bin/publish_builds" diff --git a/CHANGELOG.md b/CHANGELOG.md index 1b2b830f141..509ef7759ab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,13 +1,579 @@ # Ember Changelog -### v3.19.0 (May 26, 2020) +## v4.12.3 (June 30, 2023) + +- [#20493](https://github.com/emberjs/ember.js/pull/20493) [BUGFIX LTS] Backport more types fixes + +## v4.12.2 (June 28, 2023) + +- [#20481](https://github.com/emberjs/ember.js/pull/20481) [BUGFIX LTS] Backport some stable type import locations + +## v4.12.1 (June 12, 2023) + +- [#20461](https://github.com/emberjs/ember.js/pull/20461) [BUGFIX] Fix cyclic module crash with engines and fastboot. + +## v4.12.0 (April 3, 2023) + +- [#20352](https://github.com/emberjs/ember.js/pull/20352) [FEATURE] Enable generating Typescript blueprints when `isTypeScriptProject` is true without additional environment variables per [RFC #800](https://rfcs.emberjs.com/id/0800-ts-adoption-plan). +- [#20355](https://github.com/emberjs/ember.js/pull/20355) [FEATURE] Enhance the Typescript blueprint for generated services per [RFC #800](https://rfcs.emberjs.com/id/0800-ts-adoption-plan). +- [#20356](https://github.com/emberjs/ember.js/pull/20356) [FEATURE] Generate signature in Typescript component blueprints per [RFC #800](https://rfcs.emberjs.com/id/0800-ts-adoption-plan). +- [#20388](https://github.com/emberjs/ember.js/pull/20388) [BUGFIX] Don't run getters while applying mixins +- [#20398](https://github.com/emberjs/ember.js/pull/20398) [BUGFIX] Fix runloop types on TS 5.0+ +- [#20385](https://github.com/emberjs/ember.js/pull/20385) [BUGFIX] Improve error for owner methods called after destroy + +## v4.11.0 (February 20, 2023) + +- [#20288](https://github.com/emberjs/ember.js/pull/20288) [FEATURE] Stable types for `@ember/owner` +- [#20323](https://github.com/emberjs/ember.js/pull/20323) [FEATURE] Introduce stable types for `@ember/error` +- [#20361](https://github.com/emberjs/ember.js/pull/20361) [BUGFIX] Support a `router.ts` file when generating routes +- [#20373](https://github.com/emberjs/ember.js/pull/20373) / [#20374](https://github.com/emberjs/ember.js/pull/20374) [BUGFIX] Make the type for `SafeString` public +- [#20345](https://github.com/emberjs/ember.js/pull/20345) [CLEANUP] Remove flags for released features +- [#20285](https://github.com/emberjs/ember.js/pull/20285) Update to TS v4.9 + +## v4.10.0 (January 11, 2023) + +- [#20270](https://github.com/emberjs/ember.js/pull/20270) / [#20271](https://github.com/emberjs/ember.js/pull/20271) [FEATURE] Add new imports for `getOwner` and `setOwner` from `@ember/owner` and introduce new `@ember/routing` sub-modules as part of [RFC #821](https://rfcs.emberjs.com/id/0821-public-types). +- [#20341](https://github.com/emberjs/ember.js/pull/20341) [DEPRECATION] Deprecations for importing `htmlSafe` and `isHTMLSafe` from `@ember/string`. They have moved to `@ember/template`. From [RFC #236](https://rfcs.emberjs.com/id/0236-deprecation-ember-string). +- [#20344](https://github.com/emberjs/ember.js/pull/20344) [DEPRECATION] Deprecate @ember/string when used from ember-source; point users to add the `@ember/string` addon per [RFC #236](https://rfcs.emberjs.com/id/0236-deprecation-ember-string). +- [#20342](https://github.com/emberjs/ember.js/pull/20342) [DEPRECATION] Deprecate @ember/error per [RFC #889](https://rfcs.emberjs.com/id/0889-deprecate-ember-error). +- [#20327](https://github.com/emberjs/ember.js/pull/20327) [BUGFIX] Fix the types for the mutation-methods of `NativeArray` +- [#20283](https://github.com/emberjs/ember.js/pull/20283) [BUGFIX] revert TS `compilerOptions.target` to ES2017 +- [#20253](https://github.com/emberjs/ember.js/pull/20253) Types: Add the `Resolver` type to preview types +- [#20319](https://github.com/emberjs/ember.js/pull/20319) Types: resolve services with `Owner.lookup` + +## v4.9.3 (December 13, 2022) + +- [#20321](https://github.com/emberjs/ember.js/pull/20321) [BUGFIX] ContainerDebugAdapter extends EmberObject + +## v4.8.4 (December 13, 2022) + +- [#20321](https://github.com/emberjs/ember.js/pull/20321) [BUGFIX] ContainerDebugAdapter extends EmberObject + +## v4.9.2 (December 12, 2022) + +- [#20296](https://github.com/emberjs/ember.js/pull/20296) Controller `queryParams` should support `readonly` arrays +- [#20318](https://github.com/emberjs/ember.js/pull/20318) Backport `Resolver` to preview types + +## v4.8.3 (December 12, 2022) + +- [#20296](https://github.com/emberjs/ember.js/pull/20296) Controller `queryParams` should support `readonly` arrays +- [#20318](https://github.com/emberjs/ember.js/pull/20318) Backport `Resolver` to preview types + +## v4.9.1 (November 30, 2022) + +- [#20284](https://github.com/emberjs/ember.js/pull/20284) [BUGFIX] remove incorrect types for deprecation functions + +## v3.28.11 (November 30, 2022) + +- [#20286](https://github.com/emberjs/ember.js/pull/20286) [BUGFIX] Allow class-based helpers in strict-mode + +## v4.9.0 (November 28, 2022) + +- [#20274](https://github.com/emberjs/ember.js/pull/20274) [BUGFIX] Add some missing types to preview types +- [#20256](https://github.com/emberjs/ember.js/pull/20256) [BUGFIX] Correct types for Ember Arrays +- [#20257](https://github.com/emberjs/ember.js/pull/20257) [BUGFIX] Fix types for `getOwner` and GlimmerComponent +- [#20233](https://github.com/emberjs/ember.js/pull/20233) [BUGFIX] Include package name in deprecation error message +- [#20235](https://github.com/emberjs/ember.js/pull/20235) [BUGFIX] Update `@types/node` for TS 4.9 issue +- [#20238](https://github.com/emberjs/ember.js/pull/20238) [BUGFIX] Update Node.js versions to match support policy +- [#20227](https://github.com/emberjs/ember.js/pull/20227) [BUGFIX] Fix unsafe internal cast for NativeArray +- [#20228](https://github.com/emberjs/ember.js/pull/20228) [BUGFIX] Remove type export for ControllerMixin +- [#20203](https://github.com/emberjs/ember.js/pull/20203) / [#20204](https://github.com/emberjs/ember.js/pull/20204) [FEATURE] Preview types: Update to Typescript 4.8 + +## v4.8.2 (November 3, 2022) + +- [#20244](https://github.com/emberjs/ember.js/pull/20244) Add missing type for `getComponentTemplate` to preview types + +## v4.8.1 (November 2, 2022) + +- [CVE pending](https://emberjs.com/blog/ember-4-8-1-released) Fix a prototype pollution vulnerability in `set` and `setProperties` + +## v4.4.4 (November 2, 2022) + +- [CVE pending](https://emberjs.com/blog/ember-4-8-1-released) Fix a prototype pollution vulnerability in `set` and `setProperties + +## v3.28.10 (November 2, 2022) + +- [CVE pending](https://emberjs.com/blog/ember-4-8-1-released) Fix a prototype pollution vulnerability in `set` and `setProperties` + +## v3.24.7 (November 2, 2022) + +- [CVE pending](https://emberjs.com/blog/ember-4-8-1-released) Fix a prototype pollution vulnerability in `set` and `setProperties` + +## v4.8.0 (October 17, 2022) + +- [#20180](https://github.com/emberjs/ember.js/pull/20180) [FEATURE] Publish an opt-in preview of public types for Ember +- [#20166](https://github.com/emberjs/ember.js/pull/20166) [BUGFIX] Upgrade router_js to fix Linked list of RouteInfos contains undefined object + +## v4.4.3 (October 12, 2022) + +- [#20166](https://github.com/emberjs/ember.js/pull/20166) [BUGFIX] Fix missing `RouteInfo` entries + +## v4.7.1 (October 12, 2022) + +- [#20166](https://github.com/emberjs/ember.js/pull/20166) [BUGFIX] Fix missing `RouteInfo` entries + +## v4.7.0 (September 6, 2022) + +- [#20126](https://github.com/emberjs/ember.js/pull/20126) [BUGFIX] Replace Firefox detection that used a deprecated browser API + +## v4.6.0 (July 25, 2022) + +- [#20125](https://github.com/emberjs/ember.js/pull/20125) [BUGFIX] Replace deprecated substr() method with substring() method. + +## v4.5.1 (July 25, 2022) + +- [#20120](https://github.com/emberjs/ember.js/pull/20120) [BUGFIX] Adjust uniqueId() implementation to only generate valid selectors. + +## v4.5.0 (June 13, 2022) + +- [#20052](https://github.com/emberjs/ember.js/pull/20052) / [#20055](https://github.com/emberjs/ember.js/pull/20055) [FEATURE] Add the default helper manager to implement [RFC #0756](https://github.com/emberjs/rfcs/blob/master/text/0756-helper-default-manager.md). +- [#20053](https://github.com/emberjs/ember.js/pull/20053) [FEATURE] Expose `renderSettled` from `@ember/renderer` to enable implementation of [RFC #0785](https://github.com/emberjs/rfcs/blob/master/text/0785-remove-set-get-in-tests.md). + +## v4.4.2 (June 13, 2022) + +- [#20114](https://github.com/emberjs/ember.js/pull/20114) [BUGFIX] Fix generated import paths for test setup functions in addons + +## v4.4.1 (May 31, 2022) + +- [#20082](https://github.com/emberjs/ember.js/pull/20082) [BUGFIX] Fix blueprints publication + +## v4.4.0 (May 2, 2022) + +- [#19882](https://github.com/emberjs/ember.js/pull/19882) / [#20005](https://github.com/emberjs/ember.js/pull/20005) [FEATURE] Implement the `unique-id` helper per [RFC #0659](https://github.com/emberjs/rfcs/blob/master/text/0659-unique-id-helper.md). +- [#19981](https://github.com/emberjs/ember.js/pull/19981) [FEATURE] Facilitate custom test setups per [RFC #0637](https://github.com/emberjs/rfcs/blob/master/text/0637-customizable-test-setups.md). +- [#16879](https://github.com/emberjs/ember.js/pull/16879) [BUGFIX] isEmpty on nested objects +- [#17978](https://github.com/emberjs/ember.js/pull/17978) Make hasListeners public +- [#20014](https://github.com/emberjs/ember.js/pull/20014) Log `until` for deprecations + +## v3.28.9 (April 19, 2022) + +- [#20028](https://github.com/emberjs/ember.js/pull/20028) Fix a memory leak in the Router Service class + +## v4.3.0 (March 21, 2022) + +- [#20025](https://github.com/emberjs/ember.js/pull/20025) [BUGFIX] Fix a memory leak in the Router Service class +- [#19971](https://github.com/emberjs/ember.js/pull/19971) [BUGFIX] Don't serialize default Query Params on RouterService +- [#20024](https://github.com/emberjs/ember.js/pull/20024) [BUGFIX] Correctly associate props with factory and owner in FactoryManager + +## v4.2.0 (February 7, 2022) + +- [#19878](https://github.com/emberjs/ember.js/pull/19878) [BUGFIX] Allow class-based helpers to work in strict-mode. + +## v4.1.0 (December 28, 2021) + +- [#19772](https://github.com/emberjs/ember.js/pull/19772) / [#19826](https://github.com/emberjs/ember.js/pull/19826) [FEATURE] Add a `@cached` decorator per [RFC #0566](https://github.com/emberjs/rfcs/blob/af64915b5ecde010fce09309a47ee6d2447588d0/text/0566-memo-decorator.md). +- [#19471](https://github.com/emberjs/ember.js/pull/19471) / [#19834](https://github.com/emberjs/ember.js/pull/19834) [FEATURE] Add `refresh` method to the Router Service per [RFC #0631](https://github.com/emberjs/rfcs/blob/master/text/0631-refresh-method-for-router-service.md). +- [#19776](https://github.com/emberjs/ember.js/pull/19776) [FEATURE] Provide `service` export from `@ember/service` in favour of `inject` implementing [RFC #0752](https://github.com/emberjs/rfcs/blob/master/text/0752-inject-service.md). +- [#19510](https://github.com/emberjs/ember.js/pull/19510) [DEPRECATION] Deprecate auto location per [RFC #0711](https://github.com/emberjs/rfcs/blob/master/text/0711-deprecate-auto-location.md). +- [#17570](https://github.com/emberjs/ember.js/pull/17570) [BUGFIX] Passing ObjectProxy with a property size to `isEmpty` would throw assertion +- [#18269](https://github.com/emberjs/ember.js/pull/18269) [BUGFIX] Fix for when query params are using a nested value + +## v4.0.1 (December 1, 2021) + +- [#19858](https://github.com/emberjs/ember.js/pull/19858) [BUGFIX] Improve assert message in default store for when routes have dynamic segments but no model hook +- [#19860](https://github.com/emberjs/ember.js/pull/19860) [BUGFIX] Add model hook in route blueprint for routes with dynamic segments + +## v4.0.0 (November 15, 2021) + +- [#19761](https://github.com/emberjs/ember.js/pull/19761) [BREAKING] Require ember-auto-import >= 2 or higher to enable ember-source to become a v2 addon in the 4.x cycle +- [#19706](https://github.com/emberjs/ember.js/pull/19706) [BREAKING] Explicitly drop Node 10 support to match support policy. +- [BREAKING] Remove deprecated features + - [#19838](https://github.com/emberjs/ember.js/pull/19838) [CLEANUP] Remove check to see if `ember` is defined as a Bower dependency + - [#19846](https://github.com/emberjs/ember.js/pull/19846) [CLEANUP] Make using the "classic" edition of Ember throw + - [#19833](https://github.com/emberjs/ember.js/pull/19833) [CLEANUP] Remove deprecated array observers + - [#19836](https://github.com/emberjs/ember.js/pull/19836) [CLEANUP] Turn `template-only-glimmer-components` deprecation into an error + - [#19843](https://github.com/emberjs/ember.js/pull/19843) [CLEANUP] Turn `argument-less-helper-paren-less-invocation` deprecation into an error + - [#19749](https://github.com/emberjs/ember.js/pull/19749) [CLEANUP] Remove `deprecate-router-events` support code + - [#19762](https://github.com/emberjs/ember.js/pull/19762) [CLEANUP] Update GlimmerVM to 0.81 + - removes deprecation of mutations during helper compute + - removes deprecation of mutations during unknownProperty + - `@glimmer/integration-tests`, `@glimmer/manager`, `@glimmer/validator` + * [#1330](https://github.com/glimmerjs/glimmer-vm/pull/1330) Remove deprecated support for mutation after consumption during certain manager hooks ([@snewcomer](https://github.com/snewcomer)) + - `@glimmer/manager` + * [#1328](https://github.com/glimmerjs/glimmer-vm/pull/1328) Remove deprecated Component Manager version 3.4 ([@nlfurniss](https://github.com/nlfurniss)) + - `@glimmer/integration-tests`, `@glimmer/manager` + * [#1329](https://github.com/glimmerjs/glimmer-vm/pull/1329) Remove deprecated Modifier Manager version 3.13 ([@nlfurniss](https://github.com/nlfurniss)) + - [#19806](https://github.com/emberjs/ember.js/pull/19806) [CLEANUP] Drop export of built-ins, remove legacy components + - [#19808](https://github.com/emberjs/ember.js/pull/19808) [CLEANUP] Remove the `--test-type` option from the helper blueprint + - [#19677](https://github.com/emberjs/ember.js/pull/19677) [CLEANUP] Remove jQuery from build + - [#19708](https://github.com/emberjs/ember.js/pull/19708) [CLEANUP] Remove class-binding-and-class-name-bindings-in-templates + - [#19650](https://github.com/emberjs/ember.js/pull/19650) [CLEANUP] Remove deprecated mouse events + - [#19675](https://github.com/emberjs/ember.js/pull/19675) [CLEANUP] Remove jQuery usage from ember-testing + - [#19704](https://github.com/emberjs/ember.js/pull/19704) [CLEANUP] Remove template-compiler.registerPlugin + - [#19707](https://github.com/emberjs/ember.js/pull/19707) [CLEANUP] Remove Application Controller Router Properties + - [#19528](https://github.com/emberjs/ember.js/pull/19528) [CLEANUP] Remove Logger + - [#19558](https://github.com/emberjs/ember.js/pull/19558) [CLEANUP] Remove IE11 support + - [#19563](https://github.com/emberjs/ember.js/pull/19563) [CLEANUP] Remove internal Ember.assign usage + - [#19636](https://github.com/emberjs/ember.js/pull/19636) [CLEANUP] Remove copy & Copyable + - [#19638](https://github.com/emberjs/ember.js/pull/19638) [CLEANUP] Remove deprecated with + - [#19639](https://github.com/emberjs/ember.js/pull/19639) [CLEANUP] Removes deprecated Private INVOKE API + - [#19640](https://github.com/emberjs/ember.js/pull/19640) [CLEANUP] Remove old deprecations import path + - [#19641](https://github.com/emberjs/ember.js/pull/19641) [CLEANUP] Remove isVisible + - [#19642](https://github.com/emberjs/ember.js/pull/19642) [CLEANUP] Remove aliasMethod + - [#19643](https://github.com/emberjs/ember.js/pull/19643) [CLEANUP] Remove deprecate without for and since + - [#19644](https://github.com/emberjs/ember.js/pull/19644) [CLEANUP] Remove -in-element + - [#19645](https://github.com/emberjs/ember.js/pull/19645) [CLEANUP] Remove tryInvoke + - [#19646](https://github.com/emberjs/ember.js/pull/19646) [CLEANUP] Remove loc + - [#19647](https://github.com/emberjs/ember.js/pull/19647) [CLEANUP] Remove Ember.merge + - [#19648](https://github.com/emberjs/ember.js/pull/19648) [CLEANUP] Remove getWithDefault + - [#19651](https://github.com/emberjs/ember.js/pull/19651) [CLEANUP] Remove LEGACY_OWNER + - [#19652](https://github.com/emberjs/ember.js/pull/19652) [CLEANUP] Remove Globals Resolver + - [#19653](https://github.com/emberjs/ember.js/pull/19653) [CLEANUP] Remove run and computed dot access + - [#19654](https://github.com/emberjs/ember.js/pull/19654) [CLEANUP] Remove @ember/string methods from native prototype + - [#19655](https://github.com/emberjs/ember.js/pull/19655) [CLEANUP] Remove meta-destruction-apis + - [#19656](https://github.com/emberjs/ember.js/pull/19656) [CLEANUP] Remove string-based setComponentManager + - [#19657](https://github.com/emberjs/ember.js/pull/19657) [CLEANUP] Remove hasBlock and hasBlockParams + - [#19658](https://github.com/emberjs/ember.js/pull/19658) [CLEANUP] Remove sendAction and string action passing + - [#19659](https://github.com/emberjs/ember.js/pull/19659) [CLEANUP] Remove renderTemplate, disconnectOutlet, render + - [#19660](https://github.com/emberjs/ember.js/pull/19660) [CLEANUP] Remove attrs/attrs-arg-access + - [#19661](https://github.com/emberjs/ember.js/pull/19661) [CLEANUP] Remove EMBER_EXTEND_PROTOTYPES + - [#19663](https://github.com/emberjs/ember.js/pull/19663) [CLEANUP] Remove function prototype extensions + - [#19665](https://github.com/emberjs/ember.js/pull/19665) [CLEANUP] Remove deprecated jQuery integration + - [#19666](https://github.com/emberjs/ember.js/pull/19666) [CLEANUP] Remove jQuery integration in EventDispatcher + - [#19667](https://github.com/emberjs/ember.js/pull/19667) [CLEANUP] Cleanup IE11 leftovers + - [#19670](https://github.com/emberjs/ember.js/pull/19670) [CLEANUP] Remove .volatile() + - [#19671](https://github.com/emberjs/ember.js/pull/19671) [CLEANUP] Remove .property() + - [#19673](https://github.com/emberjs/ember.js/pull/19673) [CLEANUP] Remove computed deep each + - [#19674](https://github.com/emberjs/ember.js/pull/19674) [CLEANUP] Remove ability to override computed property + - [#19678](https://github.com/emberjs/ember.js/pull/19678) [CLEANUP] Remove window.Ember global + - [#19695](https://github.com/emberjs/ember.js/pull/19695) [CLEANUP] Remove {{partial}} + - [#19691](https://github.com/emberjs/ember.js/pull/19691) Add build assertion against `{{outlet named}}` +- [#19680](https://github.com/emberjs/ember.js/pull/19680) [DEPRECATION] Deprecate owner.inject per [RFC #680](https://github.com/emberjs/rfcs/blob/sn/owner-inject-deprecation/text/0680-implicit-injection-deprecation.md#1-deprecate-implicit-injection-on-target-object) and cleanup related deprecations that are `until: 4.0.0`. +- [#19649](https://github.com/emberjs/ember.js/pull/19649) / [#19692](https://github.com/emberjs/ember.js/pull/19692) [DEPRECATION] Add deprecation warning to Ember.assign implementing [RFC #750](https://github.com/emberjs/rfcs/blob/master/text/0750-deprecate-ember-assign.md). +- [#19825](https://github.com/emberjs/ember.js/pull/19825) [BUGFIX] Replace `assert.equal` in blueprints with `assert.strictEqual` to pass eslint-plugin-qunit v7 on generation +- [#19227](https://github.com/emberjs/ember.js/pull/19227) [BUGFIX] Enable global event dispatcher listeners to be lazily created fixing Passive Listener Violation in Chrome +- [#19542](https://github.com/emberjs/ember.js/pull/19542) [BUGFIX] Fix initializer test blueprints +- [#19589](https://github.com/emberjs/ember.js/pull/19589) [BUGFIX] Don’t include type-tests in build output + +## v3.28.8 (December 2, 2021) + +- [#19868](https://github.com/emberjs/ember.js/pull/19868) [BUGFIX] Fix a bug with the implicit injections deprecation that meant injecting a store to avoid the deprecation did not work. + +## v3.28.7 (December 1, 2021) + +- [#19854](https://github.com/emberjs/ember.js/pull/19854) [BUGFIX] Fix implicit injections deprecation for routes to cover previously missed cases +- [#19857](https://github.com/emberjs/ember.js/pull/19857) [BUGFIX] Improve assert message in default store for when routes have dynamic segments but no model hook + +## v3.28.6 (November 4, 2021) + +- [#19683](https://github.com/emberjs/ember.js/pull/19683) Ensure super.willDestroy is called correctly in Router's willDestroy + +## v3.28.5 (November 3, 2021) + +- [#19820](https://github.com/emberjs/ember.js/pull/19820) Fix memory leak when looking up non-instantiable objects from the owner + +## v3.28.4 (October 22, 2021) + +- [#19798](https://github.com/emberjs/ember.js/pull/19798) More fixes for errors while precompiling inline templates (introduced in 3.28.2) +- [glimmerjs/glimmer-vm@0.80.3](https://github.com/glimmerjs/glimmer-vm/releases/tag/v0.80.3) Improve template compilation speed regression + +## v3.28.3 (October 22, 2021) + +- [#19799](https://github.com/emberjs/ember.js/pull/19799) / [glimmerjs/glimmer-vm#1354](https://github.com/glimmerjs/glimmer-vm/pull/1354) Fixes for errors while precompiling inline templates (introduced in 3.28.2) + +## v3.28.2 (October 21, 2021) + +- [glimmerjs/glimmer-vm#1351](https://github.com/glimmerjs/glimmer-vm/pull/1351) Support lexical scope in loose mode + +## v3.24.6 (October 18, 2021) + +- [glimmerjs/glimmer-vm#1347](https://github.com/glimmerjs/glimmer-vm/pull/1347) Avoid using a nested WeakMap for manager instances for a given owner (makes memory leak debugging easier) + +## v3.28.1 (August 30, 2021) + +- [#19733](https://github.com/emberjs/ember.js/pull/19733) [BUGFIX] Ensure that using `routerService.urlFor(...)` and `routerService.recognize(...)` does not error if the router is not fully initialized + +## v3.28.0 (August 9, 2021) + +- [#19697](https://github.com/emberjs/ember.js/pull/19697) [BUGFIX] Ensure `deserializeQueryParam` is called for lazy routes +- [#19681](https://github.com/emberjs/ember.js/pull/19681) [BUGFIX] Restore previous hash behavior +- [#19685](https://github.com/emberjs/ember.js/pull/19685) [BUGFIX] Fix memory leak in RouterService +- [#19690](https://github.com/emberjs/ember.js/pull/19690) [BUGFIX] Deprecates String.prototype.htmlSafe targeting Ember 4.0, as intended by the original deprecation. +- [#19584](https://github.com/emberjs/ember.js/pull/19584) [BUGFIX] Ensure hash objects correctly entangle as dependencies +- [#19491](https://github.com/emberjs/ember.js/pull/19491) [BUGFIX] Fix `owner.lookup` `owner.register` behavior with `singleton: true` option +- [#19472](https://github.com/emberjs/ember.js/pull/19472) [BUGFIX] Prevent transformation of block params called `attrs` + +## v3.24.5 (August 9, 2021) + +- [#19685](https://github.com/emberjs/ember.js/pull/19685) Fix memory leak with `RouterService` under Chrome +- [#19683](https://github.com/emberjs/ember.js/pull/19683) Ensure `super.willDestroy` is called correctly in `Router`'s `willDestroy` + +## v3.27.5 (June 10, 2021) + +- [#19597](https://github.com/emberjs/ember.js/pull/19597) [BIGFIX] Fix `` with nested children + +## v3.27.4 (June 9, 2021) + +- [#19594](https://github.com/emberjs/ember.js/pull/19594) [BUGFIX] Revert lazy hash changes +- [#19596](https://github.com/emberjs/ember.js/pull/19596) [DOC] Fix "Dormant" addon warning typo + +## v3.27.3 (June 3, 2021) + +- [#19565](https://github.com/emberjs/ember.js/pull/19565) [BUGFIX] Ensures that `computed` can depend on dynamic `(hash` keys +- [#19571](https://github.com/emberjs/ember.js/pull/19571) [BUGFIX] Extend `Route.prototype.transitionTo` deprecation until 5.0.0 +- [#19586](https://github.com/emberjs/ember.js/pull/19586) [BUGFIX] Fix Embroider compatibility + +## v3.27.2 (May 27, 2021) + +- [#19511](https://github.com/emberjs/ember.js/pull/19511) / [#19548](https://github.com/emberjs/ember.js/pull/19548) [BUGFIX] Makes the (hash) helper lazy +- [#19530](https://github.com/emberjs/ember.js/pull/19530) [DOC] fix passing params to named blocks examples +- [#19536](https://github.com/emberjs/ember.js/pull/19536) [BUGFIX] Fix `computed.*` deprecation message to include the correct import path +- [#19544](https://github.com/emberjs/ember.js/pull/19544) [BUGFIX] Use explicit this in helper test blueprints +- [#19555](https://github.com/emberjs/ember.js/pull/19555) [BUGFIX] Improve class based tranform deprecation message +- [#19557](https://github.com/emberjs/ember.js/pull/19557) [BUGFIX] Refine Ember Global deprecation message +- [#19564](https://github.com/emberjs/ember.js/pull/19564) [BUGFIX] Improve computed.* and run.* deprecation message (IE11) + +## v3.27.1 (May 13, 2021) + +- [#19540](https://github.com/emberjs/ember.js/pull/19540) [BUGFIX] Ensure ember-testing is loaded lazily +- [#19541](https://github.com/emberjs/ember.js/pull/19541) [BUGFIX] Add missing metadata for some deprecations enabled in 3.27.0 +- [#19541](https://github.com/emberjs/ember.js/pull/19541) [BUGFIX] Ensure passing `@href` to `` throws an error +- [#19541](https://github.com/emberjs/ember.js/pull/19541) [CLEANUP] Consistently use https://deprecations.emberjs.com/ in deprecation URLs + +## v3.27.0 (May 3, 2021) + +- [#19309](https://github.com/emberjs/ember.js/pull/19309) / [#19487](https://github.com/emberjs/ember.js/pull/19487) / [#19474](https://github.com/emberjs/ember.js/pull/19474) [FEATURE] Enable `(helper` and `(modifier` helpers per [RFC #432](https://github.com/emberjs/rfcs/blob/master/text/0432-contextual-helpers.md). +- [#19382](https://github.com/emberjs/ember.js/pull/19382) / [#19430](https://github.com/emberjs/ember.js/pull/19430) [FEATURE] Remaining implementation work per [RFC #671](https://github.com/emberjs/rfcs/blob/master/text/0671-modernize-built-in-components-1.md). +- [#19457](https://github.com/emberjs/ember.js/pull/19457) / [#19463](https://github.com/emberjs/ember.js/pull/19463) / [#19464](https://github.com/emberjs/ember.js/pull/19464) / [#19467](https://github.com/emberjs/ember.js/pull/19467) [DEPRECATION] Add deprecation for the Ember Global per [RFC #706](https://github.com/emberjs/rfcs/blob/master/text/0706-deprecate-ember-global.md). +- [#19407](https://github.com/emberjs/ember.js/pull/19407) [DEPRECATION] Add deprecation for `Route#disconnectOutlet` per [RFC #491](https://github.com/emberjs/rfcs/blob/master/text/0491-deprecate-disconnect-outlet.md). +- [#19433](https://github.com/emberjs/ember.js/pull/19433) [DEPRECATION] Add deprecation for `Route#renderTemplate` per [RFC #418](https://github.com/emberjs/rfcs/blob/master/text/0418-deprecate-route-render-methods.md). +- [#19442](https://github.com/emberjs/ember.js/pull/19442) [DEPRECATION] Add deprecation for `Route#render` method per [RFC #418](https://github.com/emberjs/rfcs/blob/master/text/0418-deprecate-route-render-methods.md). +- [#19429](https://github.com/emberjs/ember.js/pull/19429) [DEPRECATION] `registerPlugin` / `unregisterPlugin` and legacy class based AST plugins (private APIs) +- [#19499](https://github.com/emberjs/ember.js/pull/19499) [DEPRECATION] Deprecate `@foo={{helper}}` per [RFC #496](https://github.com/emberjs/rfcs/blob/master/text/0496-handlebars-strict-mode.md#3-no-implicit-invocation-of-argument-less-helpers). +- [#19499](https://github.com/emberjs/ember.js/pull/19499) [BUGFIX] Update rendering engine to `@glimmer/*` 0.78.2 for fixes including: + - `<:else>` and `<:inverse>` should be aliases (see https://github.com/glimmerjs/glimmer-vm/pull/1296) + - Fix nested calls to helpers in dynamic helpers (see https://github.com/glimmerjs/glimmer-vm/pull/1293) +- [#19477](https://github.com/emberjs/ember.js/pull/19477) [BUGFIX] Allow `` to override internal assertion +- [#19481](https://github.com/emberjs/ember.js/pull/19481) [BUGFIX] Export `on` from correct path +- [#19466](https://github.com/emberjs/ember.js/pull/19466) [BUGFIX] Rename private runloop functions +- [#19384](https://github.com/emberjs/ember.js/pull/19384) Use qunit-dom in helper and component test blueprints +- [#19390](https://github.com/emberjs/ember.js/pull/19390) Refactor the internal Ember loader to use the standard Ember CLI loader +- [#19441](https://github.com/emberjs/ember.js/pull/19441) Add automated publishing of weekly alpha releases to NPM +- [#19462](https://github.com/emberjs/ember.js/pull/19462) Use `positional` and `named` as the argument names in `ember g helper` blueprint + +## v3.24.4 (May 3, 2021) + +- [#19477](https://github.com/emberjs/ember.js/pull/19477) Allow `` to override internal assertion + +## v3.26.2 (October 4, 2021) + +- [#19683](https://github.com/emberjs/ember.js/pull/19683) [BUGFIX] Use `super.willDestroy` in native classes (instead of `this._super`) + +## v3.26.1 (March 24, 2021) + +- [#19473](https://github.com/emberjs/ember.js/pull/19473) Update Glimmer VM to latest. + +## v3.26.0 (March 22, 2021) + +- [#19255](https://github.com/emberjs/ember.js/pull/19255) [DEPRECATION] Deprecate transition methods of controller and route per [RFC #674](https://github.com/emberjs/rfcs/blob/master/text/0674-deprecate-transition-methods-of-controller-and-route.md). +- [#19345](https://github.com/emberjs/ember.js/pull/19345) [DEPRECATION] Deprecate `` positional arguments per [RFC #698](https://github.com/emberjs/rfcs/blob/master/text/0698-deprecate-link-to-positional-arguments.md). +- [#19346](https://github.com/emberjs/ember.js/pull/19346) [DEPRECATION] Deprecate `{{#with}}` per [RFC #445](https://github.com/emberjs/rfcs/blob/master/text/0445-deprecate-with.md) +- [#19358](https://github.com/emberjs/ember.js/pull/19358) [DEPRECATION] Deprecate implicit injections per [RFC #680](https://github.com/emberjs/rfcs/blob/master/text/0680-implicit-injection-deprecation.md) +- [#19359](https://github.com/emberjs/ember.js/pull/19359) [DEPRECATION] Deprecates old browser support policy per [RFC #685 New Browser Support Policy](https://github.com/emberjs/rfcs/blob/master/text/0685-new-browser-support-policy.md). +- [#19371](https://github.com/emberjs/ember.js/pull/19371) [DEPRECATION] Deprecate implicit `this` property lookup fallback per [RFC #308]https://github.com/emberjs/rfcs/blob/master/text/0308-deprecate-property-lookup-fallback.md +- [#19372](https://github.com/emberjs/ember.js/pull/19372) [DEPRECATION] Adds deprecations for Classic edition and optional features per [RFC #704](https://github.com/emberjs/rfcs/blob/master/text/0704-deprecate-octane-optional-features.md) and [RFC #705](https://github.com/emberjs/rfcs/blob/master/text/0705-deprecate-jquery-optional-feature.md). +- [#19373](https://github.com/emberjs/ember.js/pull/19373) [DEPRECATION] Deprecate old manager capabilities per [RFC #686](https://github.com/emberjs/rfcs/blob/master/text/0686-deprecate-old-manager-capabilities-versions.md) +- [#19374](https://github.com/emberjs/ember.js/pull/19374) [DEPRECATION] Deprecate `hasBlock` and `hasBlockParams` per [RFC #689](https://github.com/emberjs/rfcs/blob/master/text/0689-deprecate-has-block.md). +- [#19375](https://github.com/emberjs/ember.js/pull/19375) [DEPRECATION] Deprecate old class binding syntax and {{attrs}} per [RFC #691](https://github.com/emberjs/rfcs/blob/master/text/0691-deprecate-class-binding-and-class-name-bindings.md) and [RFC #690](https://github.com/emberjs/rfcs/blob/master/text/0690-deprecate-attrs-in-templates.md). +- [#19381](https://github.com/emberjs/ember.js/pull/19381) [DEPRECATION] Deprecate Array Observers per [RFC #692](https://github.com/emberjs/rfcs/blob/master/text/0692-deprecate-array-observers.md). +- [#19379](https://github.com/emberjs/ember.js/pull/19379) [CLEANUP] Refactor DataAdapter to not use observers or array observers +- [#19378](https://github.com/emberjs/ember.js/pull/19378) [BUGFIX] Fix typo in template-only-glimmer-components feature detection +- [#19298](https://github.com/emberjs/ember.js/pull/19298) [BUGFIX] Route serialize did not extract param off proxy +- [#19469](https://github.com/emberjs/ember.js/pull/19469) [BUGFIX] Prevent eager argument consumption on modifier destruction +- [#19405](https://github.com/emberjs/ember.js/pull/19405) [BUGFIX] Avoid instantiation errors when `app/router.js` injects the router service. +- [#19436](https://github.com/emberjs/ember.js/pull/19436) [BUGFIX] Support observer keys with colons + +## v3.25.4 (March 24, 2021) + +- [#19473](https://github.com/emberjs/ember.js/pull/19473) Update Glimmer VM to latest. + +## v3.25.3 (March 7, 2021) + +- [#19448](https://github.com/emberjs/ember.js/pull/19448) Ensure query params are preserved through an intermediate loading state transition +- [#19450](https://github.com/emberjs/ember.js/pull/19450) Ensure `routerService.currentRoute.name` and `routerService.currentRouteName` match during loading states + + +## v3.25.2 (March 7, 2021) + +- [#19389](https://github.com/emberjs/ember.js/pull/19389) Removes template ids +- [#19395](https://github.com/emberjs/ember.js/pull/19395) [BUGFIX] Ensure `` can return a valid `href` most of the time +- [#19396](https://github.com/emberjs/ember.js/pull/19396) [BUGFIX] Revert deprecation of htmlSafe and isHTMLSafe +- [#19397](https://github.com/emberjs/ember.js/pull/19397) [BUGFIX] Force building Ember bundles when `targets.node` is defined +- [#19399](https://github.com/emberjs/ember.js/pull/19399) [DOC] Update ArrayProxy Documentation +- [#19412](https://github.com/emberjs/ember.js/pull/19412) / [#19416](https://github.com/emberjs/ember.js/pull/19416) [BUGFIX] Update Glimmer VM to 0.77 (fix dynamic helpers/modifiers) + + +## v3.25.1 (February 10, 2021) + +- [#19326](https://github.com/emberjs/ember.js/pull/19326) / [#19387](https://github.com/emberjs/ember.js/pull/19387) [BUGFIX] Fix usage of `` prior to routing (e.g. component rendering tests) + +## v3.25.0 (February 08, 2021) + +- [#19302](https://github.com/emberjs/ember.js/pull/19302) / [#19306](https://github.com/emberjs/ember.js/pull/19306) / [#19319](https://github.com/emberjs/ember.js/pull/19319) [FEATURE] Implement the [Handlebars Strict Mode RFC](https://github.com/emberjs/rfcs/blob/master/text/0496-handlebars-strict-mode.md). +- [#19318](https://github.com/emberjs/ember.js/pull/19318) [FEATURE] Implement the [Named Blocks RFC](https://github.com/emberjs/rfcs/blob/master/text/0460-yieldable-named-blocks.md). +- [#19339](https://github.com/emberjs/ember.js/pull/19339) [DEPRECATION] Deprecate importing `htmlSafe` and `isHTMLSafe` from `@ember/string` per the [Deprecate Ember String RFC](https://github.com/emberjs/rfcs/blob/master/text/0236-deprecation-ember-string.md). +- [#19320](https://github.com/emberjs/ember.js/pull/19320) / [#19317](https://github.com/emberjs/ember.js/pull/19317) / [#19297](https://github.com/emberjs/ember.js/pull/19297) / [#19293](https://github.com/emberjs/ember.js/pull/19293) / [#19278](https://github.com/emberjs/ember.js/pull/19278) / [#19275](https://github.com/emberjs/ember.js/pull/19275) / [#19363](https://github.com/emberjs/ember.js/pull/19363) Update rendering engine to `@glimmer/*` 0.74.2 for various features and bugfixes including ensuring `{{component.name}}` works with implicit this fallback +- [#18148](https://github.com/emberjs/ember.js/pull/18148) [BUGFIX] Fix empty `htmlSafe` string to be treated as falsy +- [#19365](https://github.com/emberjs/ember.js/pull/19365) [BUGFIX] Remove non-existing re-export from helper-addon blueprint +- [#19370](https://github.com/emberjs/ember.js/pull/19370) [BUGFIX] Update glimmer-vm to prevent errors for older inline precompilation +- [#19351](https://github.com/emberjs/ember.js/pull/19351) [BUGFIX] Ensure locals do not clobber components of the same name +- [#19336](https://github.com/emberjs/ember.js/pull/19336) [BUGFIX] Ensure Component Lookup Is Well Formed +- [#19338](https://github.com/emberjs/ember.js/pull/19338) [BUGFIX] Add missing `deprecate` options (`for` + `since`) +- [#19342](https://github.com/emberjs/ember.js/pull/19342) [BUGFIX] Fix misleading LinkTo error message + +## v3.24.3 (March 7, 2021) + +- [#19448](https://github.com/emberjs/ember.js/pull/19448) Ensure query params are preserved through an intermediate loading state transition +- [#19450](https://github.com/emberjs/ember.js/pull/19450) Ensure `routerService.currentRoute.name` and `routerService.currentRouteName` match during loading states +- [#19395](https://github.com/emberjs/ember.js/pull/19395) [BUGFIX] Ensure `` can return a valid `href` most of the time +- [#19397](https://github.com/emberjs/ember.js/pull/19397) [BUGFIX] Force building Ember bundles when `targets.node` is defined + + +## v3.24.2 (February 10, 2021) + +- [#19326](https://github.com/emberjs/ember.js/pull/19326) / [#19387](https://github.com/emberjs/ember.js/pull/19387) [BUGFIX] Fix usage of `` prior to routing (e.g. component rendering tests) + +## v3.24.1 (January 14, 2021) + +- [#19337](https://github.com/emberjs/ember.js/pull/19337) [BUGFIX] Ensure query param only `` are properly scoped in engines + +## v3.24.0 (December 28, 2020) + +- [#19224](https://github.com/emberjs/ember.js/pull/19224) [FEATURE] Add `{{page-title}}` helper to route template blueprints to implement [RFC #0654](https://github.com/emberjs/rfcs/blob/master/text/0645-add-ember-page-title-addon.md). +- [#19133](https://github.com/emberjs/ember.js/pull/19133) [FEATURE / DEPRECATION] Add new options to `deprecate()` for `for` and `since` and deprecate using `deprecate()` without those options per the [Deprecation Staging RFC](https://github.com/emberjs/rfcs/blob/master/text/0649-deprecation-staging.md). +- [#19211](https://github.com/emberjs/ember.js/pull/19211) [DEPRECATION] Deprecate `Ember.String.loc` and `{{loc}}` per the [Deprecate Ember String RFC](https://github.com/emberjs/rfcs/blob/master/text/0236-deprecation-ember-string.md). +- [#19234](https://github.com/emberjs/ember.js/pull/19234) [DEPRECATION] Deprecate String Prototype extensions per the [Deprecate Ember String RFC](https://github.com/emberjs/rfcs/blob/master/text/0236-deprecation-ember-string.md). +- [#19254](https://github.com/emberjs/ember.js/pull/19254) [DEPRECATION] Deprecate tryInvoke to implement the [Deprecate `tryInvoke` RFC](https://github.com/emberjs/rfcs/blob/master/text/0673-deprecate-tryinvoke.md). +- [#19080](https://github.com/emberjs/ember.js/pull/19080) [BUGFIX] Lazily setup the router in non-application tests +- [#19253](https://github.com/emberjs/ember.js/pull/19253) [BUGFIX] Correct return of getComponentTemplate from null to undefined to align with original RFC (#481) +- [#19223](https://github.com/emberjs/ember.js/pull/19223) [BUGFIX] `` should link within the engine when used inside one +- [#19280](https://github.com/emberjs/ember.js/pull/19280) [BUGFIX] Ensure aliases cause recompute of a computed property when used with `@each` in the dependent keys of that property +- [#19196](https://github.com/emberjs/ember.js/pull/19196) [CLEANUP] Remove EMBER_GLIMMER_IN_ELEMENT feature flag +- [#19204](https://github.com/emberjs/ember.js/pull/19204) [CLEANUP] Remove EMBER_CACHE_API feature flag +- [#19206](https://github.com/emberjs/ember.js/pull/19206) [CLEANUP] Remove EMBER_ROUTING_MODEL_ARG feature flag +- [#19229](https://github.com/emberjs/ember.js/pull/19229) [CLEANUP] Remove the EMBER_GLIMMER_SET_COMPONENT_TEMPLATE feature flag +- [#19238](https://github.com/emberjs/ember.js/pull/19238) [CLEANUP] Removes the `expandLocalLookup` API +- [#19258](https://github.com/emberjs/ember.js/pull/19258) / [#19261](https://github.com/emberjs/ember.js/pull/19261) / [#19267](https://github.com/emberjs/ember.js/pull/19267) Update rendering engine to 0.65.0 + +## v3.23.1 (November 23, 2020) + +- [#19282](https://github.com/emberjs/ember.js/pull/19282) [BUGFIX] Issue deprecations (instead of assertions) for tracked mutation in constructor during rendering + +## v3.23.0 (November 16, 2020) + +- [#19160](https://github.com/emberjs/ember.js/pull/19160) / [#19182](https://github.com/emberjs/ember.js/pull/19182) [FEATURE] Implements the helper manager feature specified in the [Helper Managers RFC](https://github.com/emberjs/rfcs/blob/master/text/0625-helper-managers.md). +- [#19171](https://github.com/emberjs/ember.js/pull/19171) / [#19182](https://github.com/emberjs/ember.js/pull/19182) [FEATURE] Implements `invokeHelper` from the [JavaScript Helper Invocation API RFC](https://github.com/emberjs/rfcs/blob/master/text/0626-invoke-helper.md). +- [#19148](https://github.com/emberjs/ember.js/pull/19148) / [#19119](https://github.com/emberjs/ember.js/pull/19119) Update rendering engine to `@glimmer/*` 0.62.1 +- [#19122](https://github.com/emberjs/ember.js/pull/19122) [BUGFIX] Prevents dynamic invocations of string values when referenced directly in angle brackets +- [#19136](https://github.com/emberjs/ember.js/pull/19136) [BUGFIX] Update router microlib to improve Transition related debugging +- [#19173](https://github.com/emberjs/ember.js/pull/19173) [BUGFIX] Enforce usage of `capabilities` generation. +- [#19236](https://github.com/emberjs/ember.js/pull/19236) [BUGFIX] Only serialize query params once on activeTransition +- [#19250](https://github.com/emberjs/ember.js/pull/19250) [BUGFIX] Prevents infinite rerenders when errors occur during render +- [#19249](https://github.com/emberjs/ember.js/pull/19249) [BUGFIX] Fix bugs in query params with intermediate transitions +- [#19142](https://github.com/emberjs/ember.js/pull/19142) [BUGFIX] Fix App booting before DOM ready without jQuery +- [#19198](https://github.com/emberjs/ember.js/pull/19198) / [#19232](https://github.com/emberjs/ember.js/pull/19232) [BUGFIX] Restores the shadowed property set behavior +- [#19221](https://github.com/emberjs/ember.js/pull/19221) [BUGFIX] Ensure fn and (mut) work with falsy values +- [#19213](https://github.com/emberjs/ember.js/pull/19213) [BUGFIX] Update rendering engine to improve error ergonomics. + +## v3.22.2 (November 25, 2020) + +- [#19282](https://github.com/emberjs/ember.js/pull/19282) [BUGFIX] Issue deprecations (instead of assertions) for tracked mutation in constructor during rendering +- [#19263](https://github.com/emberjs/ember.js/pull/19263) [BUGFIX] Remove `@dependentKeyCompat` assertion + +## v3.22.1 (November 10, 2020) + +- [#19193](https://github.com/emberjs/ember.js/pull/19193) [BUGFIX] Ensure `@ember/component` user lifecycle hooks are untracked +- [#19197](https://github.com/emberjs/ember.js/pull/19197) [BUGFIX] Restore the shadowed property set behavior +- [#19199](https://github.com/emberjs/ember.js/pull/19199) [BUGFIX] Cleans up the DebugRenderTree more thoroughly on errors +- [#19249](https://github.com/emberjs/ember.js/pull/19249) [BUGFIX] Fix issues with query params during intermediate transitions + +## v3.22.0 (October 5, 2020) + +- [#19062](https://github.com/emberjs/ember.js/pull/19062) / [#19068](https://github.com/emberjs/ember.js/pull/19068) [FEATURE] Add @ember/destroyable feature from the [Destroyables RFC](https://github.com/emberjs/rfcs/blob/master/text/0580-destroyables.md). +- [#18984](https://github.com/emberjs/ember.js/pull/18984) / [#19067](https://github.com/emberjs/ember.js/pull/19067) [FEATURE] Add low-level Cache API per [Autotracking Memoization RFC](https://github.com/emberjs/rfcs/blob/master/text/0615-autotracking-memoization.md) +- [#19086](https://github.com/emberjs/ember.js/pull/19086) [FEATURE] Pass transition object to activate/deactivate hooks and events +- [#19094](https://github.com/emberjs/ember.js/pull/19094) [BUGFIX] Fix RouterService#isActive() to work with tracking +- [#19163](https://github.com/emberjs/ember.js/pull/19163) [BUGFIX] Use args proxy for modifier managers. +- [#19170](https://github.com/emberjs/ember.js/pull/19170) [BUGFIX] Make modifier manager 3.22 accept the resolved value directly. +- [#19124](https://github.com/emberjs/ember.js/pull/19124) [BUGFIX] Fix rendering engine usage within a `fastboot` sandbox + +## v3.21.3 (September 30, 2020) + +- [#19172](https://github.com/emberjs/ember.js/pull/19172) [BUGFIX] Ensures that tracked properties initialize property + +## v3.21.2 (September 30, 2020) + +- [#19138](https://github.com/emberjs/ember.js/pull/19138) [BUGFIX] Fix tag cycles in query parameters +- [#19164](https://github.com/emberjs/ember.js/pull/19164) [BUGFIX] Entangles custom EmberArray implementations when accessed with `Ember.get` + +## v3.21.1 (August 28, 2020) + +- [#19106](https://github.com/emberjs/ember.js/pull/19106) [BUGFIX] Ensure `destroy` methods on `CoreObject` are invoked. +- [#19111](https://github.com/emberjs/ember.js/pull/19111) [BUGFIX] Fixes `ArrayProxy` length reactivity. + +## v3.21.0 (August 24, 2020) + +- [#18993](https://github.com/emberjs/ember.js/pull/18993) [DEPRECATION] Deprecate `getWithDefault` per [RFC #554](https://github.com/emberjs/rfcs/blob/master/text/0554-deprecate-getwithdefault.md). +- [#19087](https://github.com/emberjs/ember.js/pull/19087) [BUGFIX] Generated initializer tests no longer causes a deprecation warning +- [#17571](https://github.com/emberjs/ember.js/pull/17571) [BUGFIX] Avoid tampering `queryParam` argument in RouterService#isActive + +## v3.20.6 (November 11, 2020) + +- [#19138](https://github.com/emberjs/ember.js/pull/19138) [BUGFIX] Fix tag cycles in query parameters +- [#19158](https://github.com/emberjs/ember.js/pull/19158) [BUGFIX] `RouterService#isActive()` now consumes `currentURL` to 3.20 +- [#19164](https://github.com/emberjs/ember.js/pull/19164) [BUGFIX] Entangles custom EmberArray implementations when accessed +- [#19172](https://github.com/emberjs/ember.js/pull/19172) / [#19197](https://github.com/emberjs/ember.js/pull/19197) [BUGFIX] Ensures that tracked properties initialize property +- [#19178](https://github.com/emberjs/ember.js/pull/19178) [BUGFIX] Allow computeds to have cycles in their deps + +## v3.20.5 (August 28, 2020) + +- [#19106](https://github.com/emberjs/ember.js/pull/19106) [BUGFIX] Ensure `destroy` methods on `CoreObject` are invoked. +- [#19111](https://github.com/emberjs/ember.js/pull/19111) [BUGFIX] Fixes `ArrayProxy` length reactivity. + +## v3.20.4 (August 11, 2020) + +- [#19047](https://github.com/emberjs/ember.js/pull/19047) Ensure `inject-babel-helpers` plugin can be parallelized +- [#19089](https://github.com/emberjs/ember.js/pull/19089) Update rendering engine to improve immediate encoding performance +- [#19082](https://github.com/emberjs/ember.js/pull/19082) Simplify mixin application +- [#19088](https://github.com/emberjs/ember.js/pull/19088) Simplify factory instantiation from the container +- [#19028](https://github.com/emberjs/ember.js/pull/19028) Ensure setter CP's with dependent keys on curly components can be two way bound +- [#19077](https://github.com/emberjs/ember.js/pull/19077) Simplify `get` and improve `computed` caching scheme. +- [#19065](https://github.com/emberjs/ember.js/pull/19065) / [#19072](https://github.com/emberjs/ember.js/pull/19072) - Updates GlimmerVM to improve internal destroyable system and improve tag / revision computation. +- [#19081](https://github.com/emberjs/ember.js/pull/19081) Reduces template compilation size in production builds. + +## v3.20.3 (July 30, 2020) + +- [#19048](https://github.com/emberjs/ember.js/pull/19048) [BUGFIX] Update `router.js` to ensure `transition.abort` works for query param only transitions +- [#19059](https://github.com/emberjs/ember.js/pull/19059) [BUGFIX] Prevent `` from erroring in `HistoryLocation` +- [#19060](https://github.com/emberjs/ember.js/pull/19060) [BUGFIX] Update rendering engine to `@glimmer/*` 0.55.1 +- [#19063](https://github.com/emberjs/ember.js/pull/19063) [DOC] Fix missing docs for `{{#in-element}}` + +## v3.20.2 (July 26, 2020) + +- [#19056](https://github.com/emberjs/ember.js/pull/19056) Update Glimmer rendering engine to 0.54.2. Fixes an issue with (private for now) destroyables work to enable the destroyables polyfill to work more appropriately. + +## v3.20.1 (July 13, 2020) + +- [#19040](https://github.com/emberjs/ember.js/pull/19040) [BUGFIX] Fix a memory leak that occurred when changing the array passed to `{{each}}` + +## v3.20.0 (July 13, 2020) + +- [#18867](https://github.com/emberjs/ember.js/pull/18867) / [#18927](https://github.com/emberjs/ember.js/pull/18927) / [#18928](https://github.com/emberjs/ember.js/pull/18928) [FEATURE] [Promote `{{in-element}}` to public API](https://github.com/emberjs/rfcs/blob/master/text/0287-promote-in-element-to-public-api.md) RFC. +- [#19025](https://github.com/emberjs/ember.js/pull/19025) [BUGFIX] Updates Glimmer VM to 0.54.0 +- [#19021](https://github.com/emberjs/ember.js/pull/19021) [BUGFIX] Disallow null/undefined targets in `in-element`. +- [#19023](https://github.com/emberjs/ember.js/pull/19023) [BUGFIX] Don't access properties during init unless required to prevent unnecessary rendering invalidations. +- [#18997](https://github.com/emberjs/ember.js/pull/18997) [BUGFIX] Fix components `` and `