From fed74f7d00ff0609ce3c3d7a5f9aff4421c60645 Mon Sep 17 00:00:00 2001 From: Philippe Ndiaye Date: Mon, 22 Jun 2026 18:04:04 +0200 Subject: [PATCH 1/5] ci: add Ember 4.12 scenario to default CI workflows Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .github/workflows/ci.yml | 39 +++++++++++++++++---- .github/workflows/compatibility-checks.yml | 40 ---------------------- 2 files changed, 33 insertions(+), 46 deletions(-) delete mode 100644 .github/workflows/compatibility-checks.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4793af92..b21fda90 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,8 +14,8 @@ env: FONTAWESOME_NPM_AUTH_TOKEN: ${{ secrets.FONTAWESOME_NPM_AUTH_TOKEN }} jobs: - test: - name: Lint & Test + lint: + name: Lint runs-on: ubuntu-24.04 if: (!contains(github.ref, 'refs/heads/master') || contains(github.ref, 'refs/tags/v')) timeout-minutes: 10 @@ -37,14 +37,41 @@ jobs: run: pnpm lint:js - name: Lint HBS run: pnpm prettier **/*.hbs -c - - name: Run Tests - run: pnpm test:ember + tests: + name: Tests + runs-on: ubuntu-24.04 + if: (!contains(github.ref, 'refs/heads/master') || contains(github.ref, 'refs/tags/v')) + timeout-minutes: 10 + strategy: + fail-fast: false + matrix: + include: + - name: current + command: pnpm test:ember + - name: next + command: pnpm ember try:one ember-4.12 + steps: + - uses: webfactory/ssh-agent@v0.5.0 + with: + ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }} + - uses: actions/checkout@v3 + - uses: pnpm/action-setup@v4 + with: + version: '${{ vars.PNPM_VERSION }}' + - uses: actions/setup-node@v3 + with: + node-version: '${{ env.NODE_VERSION }}' + cache: 'pnpm' + - name: Install Dependencies + run: pnpm install + - name: Run ${{ matrix.name }} scenario + run: ${{ matrix.command }} release: name: Release Package runs-on: ubuntu-24.04 if: contains(github.ref, 'refs/tags/v') - needs: [test] + needs: [lint, tests] timeout-minutes: 10 steps: - uses: webfactory/ssh-agent@v0.5.0 @@ -80,7 +107,7 @@ jobs: deploy: name: Deploy preview app runs-on: ubuntu-24.04 - needs: [test] + needs: [lint, tests] if: ${{ github.ref == 'refs/heads/master' }} timeout-minutes: 10 steps: diff --git a/.github/workflows/compatibility-checks.yml b/.github/workflows/compatibility-checks.yml deleted file mode 100644 index ac5a1283..00000000 --- a/.github/workflows/compatibility-checks.yml +++ /dev/null @@ -1,40 +0,0 @@ -name: Compatibility Checks - -on: - schedule: - - cron: '45 9 * * 1' - -env: - NODE_VERSION: 20 - GITHUB_TOKEN: ${{ secrets.PAT_TOKEN }} - FONTAWESOME_NPM_AUTH_TOKEN: ${{ secrets.FONTAWESOME_NPM_AUTH_TOKEN }} - -jobs: - compatibility-checks: - name: Tests against supported Ember versions - timeout-minutes: 10 - runs-on: ubuntu-24.04 - strategy: - matrix: - scenario: - - ember-lts-3.28 - - ember-4.12 - steps: - - uses: webfactory/ssh-agent@v0.5.0 - with: - ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }} - - uses: actions/checkout@v4 - - uses: pnpm/action-setup@v4 - with: - version: '${{ vars.PNPM_VERSION }}' - - uses: actions/setup-node@v4 - with: - node-version: '${{ env.NODE_VERSION }}' - cache: 'pnpm' - - name: Install Dependencies - run: pnpm install - env: - GITHUB_TOKEN: ${{ secrets.PAT_TOKEN }} - - run: pnpm ember try:one ${{ matrix.scenario }} - env: - GITHUB_TOKEN: ${{ secrets.PAT_TOKEN }} From d0746f3176097c05c82483f623b0b90bec49dbbf Mon Sep 17 00:00:00 2001 From: Philippe Ndiaye Date: Tue, 23 Jun 2026 08:11:38 +0200 Subject: [PATCH 2/5] 4.12 scenario: disble jquery-integration feature --- config/ember-try.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/config/ember-try.js b/config/ember-try.js index c19e4a1b..223d0e49 100644 --- a/config/ember-try.js +++ b/config/ember-try.js @@ -10,6 +10,11 @@ module.exports = async function () { }, { name: 'ember-4.12', + env: { + EMBER_OPTIONAL_FEATURES: JSON.stringify({ + 'jquery-integration': false // Disable per https://deprecations.emberjs.com/id/optional-feature-jquery-integration + }) + }, npm: { devDependencies: { 'ember-source': '~4.12.3', From 697f02845a4c96d31fb96b01c06bbde8b6e35325 Mon Sep 17 00:00:00 2001 From: Philippe Ndiaye Date: Tue, 23 Jun 2026 10:20:50 +0200 Subject: [PATCH 3/5] fix (would fail in 4.12) tests --- addon/types/table.js | 16 ++------------- package.json | 3 ++- pnpm-lock.yaml | 47 +++++++++++++++++++++++++++++++++----------- tests/test-helper.ts | 11 ++++++----- 4 files changed, 46 insertions(+), 31 deletions(-) diff --git a/addon/types/table.js b/addon/types/table.js index c012f524..e569677e 100644 --- a/addon/types/table.js +++ b/addon/types/table.js @@ -1,6 +1,7 @@ -import EmberObject, { computed } from '@ember/object'; +import EmberObject from '@ember/object'; import { or } from '@ember/object/computed'; import { scheduleOnce } from '@ember/runloop'; +import { typeOf } from '@ember/utils'; import { dasherize } from '@ember/string'; import { isEmpty, typeOf } from '@ember/utils'; @@ -78,19 +79,6 @@ export default EmberObject.extend({ } }, - // eslint-disable-next-line ember/no-deeply-nested-dependent-keys-with-each - appliedFilters: computed('columns.@each.filters.[]', function () { - return this.columns - .map((column) => { - if (!isEmpty(column.filters)) { - let _c = {}; - _c[column.key] = column.filters; - return _c; - } - }) - .compact(); - }), - updateFields(fields) { this.set('fields', fields); }, diff --git a/package.json b/package.json index 71467d98..2c58c683 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,7 @@ "remove-pre-push-hook": "rm -rf ./.git/hooks/pre-push" }, "dependencies": { + "@ember/string": "^4.0.1", "@embroider/macros": "^1.7.1", "@embroider/util": "^0.50.0", "ember-auto-import": "^2.2.4", @@ -85,7 +86,7 @@ "@types/sinon": "^10.0.6", "@types/tether": "^1.4.6", "@typescript-eslint/parser": "^5.32.0", - "@upfluence/oss-components": "^3.81.1", + "@upfluence/oss-components": "^3.97.4", "@upfluence/w-conf": "^0.2.0", "broccoli-asset-rev": "^3.0.0", "ember-cli": "~3.28.6", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c85a1a64..d1f47137 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,6 +10,9 @@ overrides: importers: .: dependencies: + '@ember/string': + specifier: ^4.0.1 + version: 4.0.1 '@embroider/macros': specifier: ^1.7.1 version: 1.16.10(@glint/template@1.5.1) @@ -150,8 +153,8 @@ importers: specifier: ^5.32.0 version: 5.62.0(eslint@7.32.0)(typescript@4.9.5) '@upfluence/oss-components': - specifier: ^3.81.1 - version: 3.81.1(@babel/core@7.26.0)(@ember/test-helpers@2.9.4(@babel/core@7.26.0)(@glint/template@1.5.1)(ember-source@3.28.12(@babel/core@7.26.0)))(@glint/template@1.5.1)(ember-source@3.28.12(@babel/core@7.26.0))(qunit@2.23.1)(typescript@4.9.5)(webpack@5.97.1) + specifier: ^3.97.4 + version: 3.97.4(@babel/core@7.26.0)(@ember/test-helpers@2.9.4(@babel/core@7.26.0)(@glint/template@1.5.1)(ember-source@3.28.12(@babel/core@7.26.0)))(@glint/template@1.5.1)(ember-source@3.28.12(@babel/core@7.26.0))(qunit@2.23.1)(typescript@4.9.5)(webpack@5.97.1) '@upfluence/w-conf': specifier: ^0.2.0 version: 0.2.0(@trivago/prettier-plugin-sort-imports@6.0.2(prettier@3.8.4))(prettier@3.8.4) @@ -1035,6 +1038,10 @@ packages: '@glint/template': optional: true + '@ember/string@4.0.1': + resolution: + { integrity: sha512-VWeng8BSWrIsdPfffOQt/bKwNKJL7+37gPFh/6iZZ9bke+S83kKqkS30poo4bTGfRcMnvAE0ie7txom+iDu81Q== } + '@ember/test-helpers@2.9.4': resolution: { integrity: sha512-z+Qs1NYWyIVDmrY6WdmOS5mdG1lJ5CFfzh6dRhLfs9lq45deDaDrVNcaCYhnNeJZTvUBK2XR2SvPcZm0RloXdA== } @@ -1191,14 +1198,14 @@ packages: typescript: optional: true - '@fortawesome/fontawesome-pro@git+https://git@github.com:upfluence/fontawesome-pro.git#2ae6c0044b34d06543101723202e117125257264': + '@fortawesome/fontawesome-pro@git+https://git@github.com:upfluence/fontawesome-pro.git#c639fe415de762c946eaebf4cc4e815ce3ede420': resolution: { - commit: 2ae6c0044b34d06543101723202e117125257264, + commit: c639fe415de762c946eaebf4cc4e815ce3ede420, repo: git@github.com:upfluence/fontawesome-pro.git, type: git } - version: 6.7.2 + version: 7.0.1 engines: { node: '>=6' } '@glimmer/component@1.1.2': @@ -1652,6 +1659,10 @@ packages: resolution: { integrity: sha512-ugBFJlmykvwofTYZIci+5oixX2aqw/3lMqYN90v3NRupTgpVLa16StBgewjSXe/I5tWSiGrttlb66iBeDgPQgg== } + '@types/trusted-types@2.0.7': + resolution: + { integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw== } + '@typescript-eslint/parser@5.62.0': resolution: { integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA== } @@ -1688,11 +1699,11 @@ packages: { integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== } engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - '@upfluence/oss-components@3.81.1': + '@upfluence/oss-components@3.97.4': resolution: { - integrity: sha512-qERzhdIJtZGcoRpM5J7gq9hHkdfixyAt8qtZLbrxsu+kvcpZA4SHsCt8XMBJEvBl0MwQTsPNtSBTa9TmVTAykQ==, - tarball: https://npm.pkg.github.com/download/@upfluence/oss-components/3.81.1/a5be47f63b2e12cb05c48936151d232c75134829 + integrity: sha512-JESHwfWlzLYtfaoK/MhNxOmEpnjUqTTV7MHpkC/o2AMJMEAwYCiR9U54Y9PijXjeMFf8Y80w+ZODzD/bAPys5Q==, + tarball: https://npm.pkg.github.com/download/@upfluence/oss-components/3.97.4/68029be86ea8e3d2aa5b433591552218bf3c82b6 } engines: { node: 12.* || 14.* || >= 16 } peerDependencies: @@ -3699,6 +3710,10 @@ packages: { integrity: sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== } engines: { node: '>=0.4', npm: '>=1.2' } + dompurify@3.4.11: + resolution: + { integrity: sha512-zhlUV12GsaRzMsf9q5M254YhA4+VuF0fG+QFqu6aYpoGlKtz+w8//jBcGVYBgQkR5GHjUomejY84AV+/uPbWdw== } + dot-case@3.0.4: resolution: { integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== } @@ -9438,6 +9453,8 @@ snapshots: - '@babel/core' - supports-color + '@ember/string@4.0.1': {} + '@ember/test-helpers@2.9.4(@babel/core@7.26.0)(@glint/template@1.5.1)(ember-source@3.28.12(@babel/core@7.26.0))': dependencies: '@ember/test-waiters': 3.1.0 @@ -9666,7 +9683,7 @@ snapshots: optionalDependencies: typescript: 4.9.5 - '@fortawesome/fontawesome-pro@git+https://git@github.com:upfluence/fontawesome-pro.git#2ae6c0044b34d06543101723202e117125257264': + '@fortawesome/fontawesome-pro@git+https://git@github.com:upfluence/fontawesome-pro.git#c639fe415de762c946eaebf4cc4e815ce3ede420': {} '@glimmer/component@1.1.2(@babel/core@7.26.0)': @@ -10130,6 +10147,9 @@ snapshots: '@types/tether@1.4.9': {} + '@types/trusted-types@2.0.7': + optional: true + '@typescript-eslint/parser@5.62.0(eslint@7.32.0)(typescript@4.9.5)': dependencies: '@typescript-eslint/scope-manager': 5.62.0 @@ -10168,18 +10188,19 @@ snapshots: '@typescript-eslint/types': 5.62.0 eslint-visitor-keys: 3.4.3 - '@upfluence/oss-components@3.81.1(@babel/core@7.26.0)(@ember/test-helpers@2.9.4(@babel/core@7.26.0)(@glint/template@1.5.1)(ember-source@3.28.12(@babel/core@7.26.0)))(@glint/template@1.5.1)(ember-source@3.28.12(@babel/core@7.26.0))(qunit@2.23.1)(typescript@4.9.5)(webpack@5.97.1)': + '@upfluence/oss-components@3.97.4(@babel/core@7.26.0)(@ember/test-helpers@2.9.4(@babel/core@7.26.0)(@glint/template@1.5.1)(ember-source@3.28.12(@babel/core@7.26.0)))(@glint/template@1.5.1)(ember-source@3.28.12(@babel/core@7.26.0))(qunit@2.23.1)(typescript@4.9.5)(webpack@5.97.1)': dependencies: '@ember/render-modifiers': 2.1.0(@babel/core@7.26.0)(@glint/template@1.5.1)(ember-source@3.28.12(@babel/core@7.26.0)) '@embroider/macros': 1.16.10(@glint/template@1.5.1) '@embroider/util': 1.13.3(@glint/template@1.5.1)(ember-source@3.28.12(@babel/core@7.26.0)) '@floating-ui/dom': 1.7.2 - '@fortawesome/fontawesome-pro': git+https://git@github.com:upfluence/fontawesome-pro.git#2ae6c0044b34d06543101723202e117125257264 + '@fortawesome/fontawesome-pro': git+https://git@github.com:upfluence/fontawesome-pro.git#c639fe415de762c946eaebf4cc4e815ce3ede420 babel-plugin-debug-macros: 0.3.4(@babel/core@7.26.0) bootstrap: 3.4.1 broccoli-funnel: 3.0.8 broccoli-merge-trees: 4.2.0 calculate-cache-key-for-tree: 2.0.0 + dompurify: 3.4.11 ember-auto-import: 2.10.0(@glint/template@1.5.1)(webpack@5.97.1) ember-cli-babel: 7.26.11 ember-cli-htmlbars: 6.3.0 @@ -12393,6 +12414,10 @@ snapshots: domain-browser@1.2.0: {} + dompurify@3.4.11: + optionalDependencies: + '@types/trusted-types': 2.0.7 + dot-case@3.0.4: dependencies: no-case: 3.0.4 diff --git a/tests/test-helper.ts b/tests/test-helper.ts index 26991744..df383503 100644 --- a/tests/test-helper.ts +++ b/tests/test-helper.ts @@ -1,15 +1,16 @@ // @ts-ignore -import Application from '../app'; -// @ts-ignore -import config from '../config/environment'; import { setApplication } from '@ember/test-helpers'; +import registerAssertions from '@upfluence/oss-components/test-support/register-assertions'; +// @ts-ignore +import { forceModulesToBeLoaded, sendCoverage } from 'ember-cli-code-coverage/test-support'; import { start } from 'ember-qunit'; import QUnit from 'qunit'; import { setup } from 'qunit-dom'; + +import Application from '../app'; // @ts-ignore -import { forceModulesToBeLoaded, sendCoverage } from 'ember-cli-code-coverage/test-support'; -import registerAssertions from '@upfluence/oss-components/test-support/register-assertions'; +import config from '../config/environment'; setup(QUnit.assert); registerAssertions(QUnit.assert); From 8b9ee6e2804f773a8439a36dfca13679805b4c30 Mon Sep 17 00:00:00 2001 From: Philippe Ndiaye Date: Thu, 25 Jun 2026 16:35:28 +0200 Subject: [PATCH 4/5] linter fix --- addon/types/table.js | 1 - 1 file changed, 1 deletion(-) diff --git a/addon/types/table.js b/addon/types/table.js index e569677e..23960c6a 100644 --- a/addon/types/table.js +++ b/addon/types/table.js @@ -1,7 +1,6 @@ import EmberObject from '@ember/object'; import { or } from '@ember/object/computed'; import { scheduleOnce } from '@ember/runloop'; -import { typeOf } from '@ember/utils'; import { dasherize } from '@ember/string'; import { isEmpty, typeOf } from '@ember/utils'; From 1a252583ba5747982f46f9a5f08c4fce9a60089d Mon Sep 17 00:00:00 2001 From: Philippe Ndiaye Date: Thu, 25 Jun 2026 16:43:04 +0200 Subject: [PATCH 5/5] ts fix --- addon/types/table.js | 2 +- tests/test-helper.ts | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/addon/types/table.js b/addon/types/table.js index 23960c6a..ff7456d0 100644 --- a/addon/types/table.js +++ b/addon/types/table.js @@ -2,7 +2,7 @@ import EmberObject from '@ember/object'; import { or } from '@ember/object/computed'; import { scheduleOnce } from '@ember/runloop'; import { dasherize } from '@ember/string'; -import { isEmpty, typeOf } from '@ember/utils'; +import { typeOf } from '@ember/utils'; import Tether from 'tether'; diff --git a/tests/test-helper.ts b/tests/test-helper.ts index df383503..33deb47b 100644 --- a/tests/test-helper.ts +++ b/tests/test-helper.ts @@ -3,15 +3,14 @@ import { setApplication } from '@ember/test-helpers'; import registerAssertions from '@upfluence/oss-components/test-support/register-assertions'; // @ts-ignore +import Application from 'dummy/app'; +import config from 'dummy/config/environment'; +// @ts-ignore import { forceModulesToBeLoaded, sendCoverage } from 'ember-cli-code-coverage/test-support'; import { start } from 'ember-qunit'; import QUnit from 'qunit'; import { setup } from 'qunit-dom'; -import Application from '../app'; -// @ts-ignore -import config from '../config/environment'; - setup(QUnit.assert); registerAssertions(QUnit.assert);