From 49d7337ccfdeef02c9a9c74f4f04ae35b6918837 Mon Sep 17 00:00:00 2001 From: Katie Gengler Date: Tue, 12 May 2026 13:36:39 -0400 Subject: [PATCH 01/42] Add v7.1.0-beta.1 to CHANGELOG for `ember-source` --- CHANGELOG.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ee14276c1c0..6fecc603218 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,21 @@ # Ember Changelog +## v7.1.0-beta.1 (May 12, 2026) + +- [#21068](https://github.com/emberjs/ember.js/pull/21068) [FEATURE] Build in the `{{on}}` modifier as a keyword in strict-mode templates per [RFC# 997](https://rfcs.emberjs.com/id/0997-make-on-built-in). +- [#21299](https://github.com/emberjs/ember.js/pull/21299) [FEATURE] Build in the `{{fn}}` helper as a keyword in strict-mode templates per [RFC #998](https://rfcs.emberjs.com/id/0998-make-fn-built-in). +- [#21230](https://github.com/emberjs/ember.js/pull/21230) / [#21343](https://github.com/emberjs/ember.js/pull/21343) [FEATURE] Add a built-in `(element)`/ `{{element}}` helper for dynamic tag names in strict-mode templates per [RFC #389](https://rfcs.emberjs.com/id/0389-dynamic-tag-names). +- [#21334](https://github.com/emberjs/ember.js/pull/21334) [FEATURE] Build in the `{{hash}}` helper as a keyword in strict-mode templates per [RFC# 999](https://rfcs.emberjs.com/id/0999-make-hash-built-in). +- [#21336](https://github.com/emberjs/ember.js/pull/21336) [FEATURE] Build in the `{{array}}` helper as a keyword in strict-mode templates per [RFC#1000](https://rfcs.emberjs.com/id/1000-make-array-built-in). +- [#21337](https://github.com/emberjs/ember.js/pull/21337) [FEATURE] Build in `{{and}}`, `{{or}}`, `{{not}}` helpers as keywords in strict-mode templates per [RFC #562](https://rfcs.emberjs.com/id/0562-add-logical-operators/). +- [#21339](https://github.com/emberjs/ember.js/pull/21339) [FEATURE] Build in `{{eq}}` and `{{neq}}` helpers as keywords in strict-mode templates per [RFC #560](https://rfcs.emberjs.com/id/0560-add-equality-operators/). +- [#21342](https://github.com/emberjs/ember.js/pull/21342) [FEATURE] Build in the `{{lt}}`, `{{lte}}`, `{{gt}}`, `{{gte}}` helpers as keywords in strict-mode templates per [RFC# 561](https://rfcs.emberjs.com/id/0561-add-numeric-comparison-operators). +- [#21373](https://github.com/emberjs/ember.js/pull/21373) [BUGFIX] Fix newly added keywords polluting the JS namespace +- [#21232](https://github.com/emberjs/ember.js/pull/21232) [INTERNAL] Clean up scope bag, wire format, and debug render tree +- [#21350](https://github.com/emberjs/ember.js/pull/21350) [INTERNAL] Remove barrel file imports from internal code for better tree-shaking +- [#21402](https://github.com/emberjs/ember.js/pull/21402) [INTERNAL] Do not use any caches on release and lock publishing of `ember-source` to `npm` to require approval from select persons. +- [#21379](https://github.com/emberjs/ember.js/pull/21379) [CLEANUP] Remove old Component Lookup + ## v7.0.0 (May 11, 2026) - [#21240](https://github.com/emberjs/ember.js/pull/21240) [CLEANUP] Remove deprecated amd bundles and `use-ember-modules` optional feature per [RFC #1101](https://rfcs.emberjs.com/id/1101-deprecate-ember-vendor-bundles). From 053de89db6f65ee7709846f588c0cf3b9597c4ad Mon Sep 17 00:00:00 2001 From: Katie Gengler Date: Tue, 12 May 2026 13:36:59 -0400 Subject: [PATCH 02/42] Release v7.1.0-beta.1 of ember-source --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 51e8d17d769..09c36eadbd0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ember-source", - "version": "7.1.0-alpha.1", + "version": "7.1.0-beta.1", "description": "A JavaScript framework for creating ambitious web applications", "keywords": [ "ember-addon" From ea06dd0fc5b93ccc826705a68d2749cd96bf6fdf Mon Sep 17 00:00:00 2001 From: NullVoxPopuli <199018+NullVoxPopuli@users.noreply.github.com> Date: Tue, 19 May 2026 18:54:06 -0400 Subject: [PATCH 03/42] Set pnpm version (cherry picked from commit f8a5f5332569c8bd1182fc34c47c6fba33516f42) --- .github/actions/setup/action.yml | 23 ++++++++++--------- .github/workflows/docs.yml | 9 ++++---- .../smoke-test-app-template-updates.yml | 14 +++++++---- 3 files changed, 26 insertions(+), 20 deletions(-) diff --git a/.github/actions/setup/action.yml b/.github/actions/setup/action.yml index b5cfa8f9fdb..24a10b91bee 100644 --- a/.github/actions/setup/action.yml +++ b/.github/actions/setup/action.yml @@ -2,40 +2,41 @@ name: Setup node and pnpm description: Setup node and install dependencies using pnpm inputs: use_lockfile: - description: 'Whether to use the lockfile vs latest floating dependencies' + description: "Whether to use the lockfile vs latest floating dependencies" required: false - default: 'true' + default: "true" node-version: - description: 'The node version to use' + description: "The node version to use" required: false - default: '20' + default: "20" use-node-modules-cache: - description: 'Whether to use the node-modules cache' + description: "Whether to use the node-modules cache" required: false - default: 'true' + default: "true" runs: - using: 'composite' + using: "composite" steps: - name: Install pnpm uses: pnpm/action-setup@903f9c1a6ebcba6cf41d87230be49611ac97822e # v6.0.3 with: + version: 10.33.2 run_install: false - name: Install Node.js (WITH cache) if: ${{ inputs.use-node-modules-cache == 'true' }} uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 with: - node-version: '${{ inputs.node-version }}' - registry-url: 'https://registry.npmjs.org' + node-version: "${{ inputs.node-version }}" + registry-url: "https://registry.npmjs.org" cache: pnpm - name: Install Node.js (NO cache) if: ${{ inputs.use-node-modules-cache != 'true' }} uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 with: - node-version: '${{ inputs.node-version }}' - registry-url: 'https://registry.npmjs.org' + node-version: "${{ inputs.node-version }}" + registry-url: "https://registry.npmjs.org" - run: pnpm install ${INSTALL_OPTIONS} env: diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index c90741abdec..e3e24d6eb4b 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -2,7 +2,7 @@ name: Generate Docs on: push: tags: - - 'v*' + - "v*" workflow_dispatch: inputs: ref: @@ -10,9 +10,9 @@ on: required: true description: Tag name or branch or ref to generate docs for -permissions: +permissions: contents: read - + jobs: generate-and-pr: runs-on: ubuntu-latest @@ -42,12 +42,13 @@ jobs: - uses: pnpm/action-setup@903f9c1a6ebcba6cf41d87230be49611ac97822e # v6.0.3 name: Install pnpm with: + version: 10.33.2 run_install: false - name: Set up Node.js uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 with: - node-version: '20' + node-version: "20" package-manager-cache: false - name: Install dependencies for ember-jsonapi-docs diff --git a/.github/workflows/smoke-test-app-template-updates.yml b/.github/workflows/smoke-test-app-template-updates.yml index 8b07719343a..3019771b914 100644 --- a/.github/workflows/smoke-test-app-template-updates.yml +++ b/.github/workflows/smoke-test-app-template-updates.yml @@ -3,7 +3,7 @@ name: Update smoke-test templates on: workflow_dispatch: schedule: - - cron: '0 9 * * 1' # weekly on Monday; job will self-gate to every 10 weeks + - cron: "0 9 * * 1" # weekly on Monday; job will self-gate to every 10 weeks permissions: contents: read @@ -45,7 +45,9 @@ jobs: with: node-version: 20 - name: Setup pnpm - uses: pnpm/action-setup@903f9c1a6ebcba6cf41d87230be49611ac97822e # v6.0.3 + uses: pnpm/action-setup@91ab88e2619ed1f46221f0ba42d1492c02baf788 # v6.0.6 + with: + version: 10.33.2 - name: Generate ember-test-app using classic blueprint run: | set -euo pipefail @@ -61,7 +63,7 @@ jobs: run: pnpm install --no-frozen-lockfile - name: Create PR - uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 # v8.1.0 + uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v8.1.1 with: token: ${{ secrets.SMOKE_TEST_TEMPLATE_GEN_TOKEN }} branch: smoke-tests/update-app-template @@ -88,7 +90,9 @@ jobs: with: node-version: 20 - name: Setup pnpm - uses: pnpm/action-setup@903f9c1a6ebcba6cf41d87230be49611ac97822e # v6.0.3 + uses: pnpm/action-setup@91ab88e2619ed1f46221f0ba42d1492c02baf788 # v6.0.6 + with: + version: 10.33.2 - name: Generate v2-app-template run: | set -euo pipefail @@ -103,7 +107,7 @@ jobs: run: pnpm install --no-frozen-lockfile - name: Create PR - uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 # v8.1.0 + uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v8.1.1 with: token: ${{ secrets.SMOKE_TEST_TEMPLATE_GEN_TOKEN }} branch: smoke-tests/update-v2-app-template From ee0b5c3de5ec3020f516344c56e0cf436f4a050a Mon Sep 17 00:00:00 2001 From: NullVoxPopuli <199018+NullVoxPopuli@users.noreply.github.com> Date: Thu, 21 May 2026 12:09:05 -0400 Subject: [PATCH 04/42] Only run perf-check on prs and main (cherry picked from commit fe5acedfda6f5d82a353ea423d134fe54d998e15) --- .github/workflows/ci-jobs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci-jobs.yml b/.github/workflows/ci-jobs.yml index 73f644736d9..34f1f04b741 100644 --- a/.github/workflows/ci-jobs.yml +++ b/.github/workflows/ci-jobs.yml @@ -260,7 +260,7 @@ jobs: name: Perf script still works runs-on: ubuntu-latest timeout-minutes: 10 - if: ${{ !startsWith(github.ref, 'refs/tags/') }} # Don't run on tags + if: ${{ github.event_name == 'pull_request' || github.ref == 'refs/heads/main' }} # Only run on PRs and main steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: From 7aa1f7eeaee222289ad9f23dcfb18e1ff9dc8928 Mon Sep 17 00:00:00 2001 From: Katie Gengler Date: Thu, 21 May 2026 12:40:50 -0400 Subject: [PATCH 05/42] Disable workflow caches. They allowed workflows to continue to pass when upgrading pnpm/action-setup even though the version we upgraded to required changes for the workflows to actually work. Add a READ_THIS.md to the .github directory with some guidelines for workflows and actions. To be fleshed out later. (cherry picked from commit 7d2b189e29e1010a303d2a11ccce8a22db443f48) --- .github/READ_THIS.md | 29 +++++++++++++++++++ .github/actions/setup/action.yml | 4 ++- .github/workflows/docs.yml | 1 + .github/workflows/publish-to-npm.yml | 2 +- .../smoke-test-app-template-updates.yml | 4 +++ 5 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 .github/READ_THIS.md diff --git a/.github/READ_THIS.md b/.github/READ_THIS.md new file mode 100644 index 00000000000..41ea05d6311 --- /dev/null +++ b/.github/READ_THIS.md @@ -0,0 +1,29 @@ +# READ THIS + +_not named README because GitHub will display a README.md from this directory at the root_ + +## Workflows + +## Guidelines + +### Avoid caches + +We first disabled caches for publish due to the risk of cache poisoning. + +Later we found caches were allowing CI to pass when updating actions. They would +later fail when the caches were cycled. To avoid this, and after testing to ensure +the slowdown was acceptable, we have disabled all caching on actions/setup-node +and pnpm/action-setup. + +### Actions must be pinned to shas + +Actions are pinned to shas and this is a requirement of the GitHub organization. +This prevents the risk of a malicious action being used -- as releases can be reset +to different shas. + +To update actions to shas run `pnpm actions-up`. + +### Run Zizmor + +The workflow-lint.yml workflow runs [Zizmor](https://github.com/zizmorcore/zizmor) +on all workflows and actions to statically check for insecure patterns. diff --git a/.github/actions/setup/action.yml b/.github/actions/setup/action.yml index 24a10b91bee..cb111598d02 100644 --- a/.github/actions/setup/action.yml +++ b/.github/actions/setup/action.yml @@ -14,7 +14,7 @@ inputs: use-node-modules-cache: description: "Whether to use the node-modules cache" required: false - default: "true" + default: "false" # We don't want to use the cache. It causes false passes of CI when updating actions and workflows. runs: using: "composite" @@ -22,6 +22,7 @@ runs: - name: Install pnpm uses: pnpm/action-setup@903f9c1a6ebcba6cf41d87230be49611ac97822e # v6.0.3 with: + cache: false version: 10.33.2 run_install: false - name: Install Node.js (WITH cache) @@ -35,6 +36,7 @@ runs: if: ${{ inputs.use-node-modules-cache != 'true' }} uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 with: + package-manager-cache: false node-version: "${{ inputs.node-version }}" registry-url: "https://registry.npmjs.org" diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index e3e24d6eb4b..76ef654e54e 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -42,6 +42,7 @@ jobs: - uses: pnpm/action-setup@903f9c1a6ebcba6cf41d87230be49611ac97822e # v6.0.3 name: Install pnpm with: + cache: false version: 10.33.2 run_install: false diff --git a/.github/workflows/publish-to-npm.yml b/.github/workflows/publish-to-npm.yml index 8ad17dec492..5a21e12e4b9 100644 --- a/.github/workflows/publish-to-npm.yml +++ b/.github/workflows/publish-to-npm.yml @@ -24,7 +24,7 @@ jobs: - uses: ./.github/actions/setup with: node-version: 20 - use-node-modules-cache: false + use-node-modules-cache: false # Absolutely no cache should be used when publishing due to the potential of cache-poisoning. - name: Update npm run: npm install -g npm@latest # npm >= 11.5.1 is needed - name: Build for Publish (Alpha) diff --git a/.github/workflows/smoke-test-app-template-updates.yml b/.github/workflows/smoke-test-app-template-updates.yml index 3019771b914..874b567c609 100644 --- a/.github/workflows/smoke-test-app-template-updates.yml +++ b/.github/workflows/smoke-test-app-template-updates.yml @@ -43,10 +43,12 @@ jobs: - name: Setup Node.js uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 with: + package-manager-cache: false node-version: 20 - name: Setup pnpm uses: pnpm/action-setup@91ab88e2619ed1f46221f0ba42d1492c02baf788 # v6.0.6 with: + cache: false version: 10.33.2 - name: Generate ember-test-app using classic blueprint run: | @@ -88,10 +90,12 @@ jobs: - name: Setup Node.js uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 with: + package-manager-cache: false node-version: 20 - name: Setup pnpm uses: pnpm/action-setup@91ab88e2619ed1f46221f0ba42d1492c02baf788 # v6.0.6 with: + cache: false version: 10.33.2 - name: Generate v2-app-template run: | From 39a9acddda092fc4185b93d3d08ad32721fed899 Mon Sep 17 00:00:00 2001 From: Katie Gengler Date: Thu, 11 Jun 2026 16:19:36 -0400 Subject: [PATCH 06/42] Update @glimmer/component/index API docs to use template tag (cherry picked from commit 781d3128d47b093ffcca718e7f0b01d57a51a700) --- packages/@glimmer/component/src/index.ts | 314 ++++++++++++----------- 1 file changed, 170 insertions(+), 144 deletions(-) diff --git a/packages/@glimmer/component/src/index.ts b/packages/@glimmer/component/src/index.ts index 55936ebf3a2..92f7e357c3b 100644 --- a/packages/@glimmer/component/src/index.ts +++ b/packages/@glimmer/component/src/index.ts @@ -5,10 +5,10 @@ import _GlimmerComponent, { type Args } from './-private/component'; import { setOwner, type default as Owner } from '@ember/owner'; /** - A component is a reusable UI element that consists of a `.hbs` template and an + A component is a reusable UI element that consists of a template and an optional JavaScript class that defines its behavior. For example, someone might make a `button` in the template and handle the click behavior in the - JavaScript file that shares the same name as the template. + JavaScript. Components are broken down into two categories: @@ -27,41 +27,41 @@ import { setOwner, type default as Owner } from '@ember/owner'; Below is the documentation for Template-only and Glimmer components. If you are looking for the API documentation for Classic components, it is [available here](/ember/release/classes/Component). The source code for - Glimmer components can be found in [`@glimmer/component`](https://github.com/glimmerjs/glimmer.js/tree/master/packages/%40glimmer/component). + Glimmer components can be found in [`@glimmer/component`](https://github.com/emberjs/ember.js/tree/main/packages/%40glimmer/component). + Note: Prior to Ember 6.8, by default, components were authored in paired `.hbs` and `.js` + files. This is still supported, but the default authoring format is now `.gjs` or "template tag". + To read more about how components were previously authored, see the + [6.7 version of this API documentation](https://api.emberjs.com/ember/6.7/modules/@glimmer%2Fcomponent). + ## Defining a Template-only Component - The simplest way to create a component is to create a template file in - `app/templates/components`. For example, if you name a template - `app/templates/components/person-profile.hbs`: + The simplest way to create a component is to create a `gjs` file in + `app/components` with a `