From 49ddf5f02d34a2fa3ff5d3d4b05e284f58e1ff42 Mon Sep 17 00:00:00 2001 From: NullVoxPopuli <199018+NullVoxPopuli@users.noreply.github.com> Date: Tue, 14 Apr 2026 22:00:11 -0500 Subject: [PATCH 1/4] Add support for earlier embers fix --- .try.mjs | 34 ++++++++++++++++++++++++++++++++-- src/modifiers/did-update.ts | 29 ++++++++++++++++++++++++++++- 2 files changed, 60 insertions(+), 3 deletions(-) diff --git a/.try.mjs b/.try.mjs index 61b4553c..359db3f0 100644 --- a/.try.mjs +++ b/.try.mjs @@ -26,10 +26,24 @@ const compatDeps = { export default { scenarios: [ { - name: 'ember-lts-5.8', + name: 'ember-lts-3.28', npm: { devDependencies: { - 'ember-source': '~5.8.0', + 'ember-source': '~3.28.0', + ...compatDeps, + 'ember-cli': '^4.12', + }, + }, + env: { + ENABLE_COMPAT_BUILD: true, + }, + files: compatFiles, + }, + { + name: 'ember-lts-4.12', + npm: { + devDependencies: { + 'ember-source': '~4.12.0', ...compatDeps, }, }, @@ -59,6 +73,22 @@ export default { }, }, }, + { + name: 'ember-lts-6.8', + npm: { + devDependencies: { + 'ember-source': 'npm:ember-source@~6.8.0', + }, + }, + }, + { + name: 'ember-lts-6.12', + npm: { + devDependencies: { + 'ember-source': 'npm:ember-source@~6.12.0', + }, + }, + }, { name: 'ember-latest', npm: { diff --git a/src/modifiers/did-update.ts b/src/modifiers/did-update.ts index 298f7a3b..1ae364eb 100644 --- a/src/modifiers/did-update.ts +++ b/src/modifiers/did-update.ts @@ -1,5 +1,32 @@ import { setModifierManager, capabilities } from '@ember/modifier'; -import { untrack } from '@glimmer/validator'; +import { + macroCondition, + dependencySatisfies, + importSync, +} from '@embroider/macros'; + +// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment +const untrack: (fn: () => void) => void = (function () { + if (macroCondition(dependencySatisfies('ember-source', '> 3.27.0-beta.1'))) { + // ember-source@3.27 shipped "real modules" by default, so we can just use + // importSync to get @glimmer/validator directly + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-explicit-any + const module = importSync('@glimmer/validator') as any; + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + return module.untrack as unknown as (fn: () => void) => void; + } else if ( + macroCondition(dependencySatisfies('ember-source', '>= 3.22.0-alpha.1')) + ) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-explicit-any + const module = importSync('ember') as any; + // we can access `window.Ember` here because it wasn't deprecated until at least 3.27 + // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access + return module.__loader.require('@glimmer/validator').untrack; + } else { + // we do not call `untrack` when ember-source < 3.22 + // (we don't suport ember-source < 3.22) + } +})(); import type { ModifierArgs, From 08149eaa24ff62bfd1fda803387e5a2efa1cd2b5 Mon Sep 17 00:00:00 2001 From: NullVoxPopuli <199018+NullVoxPopuli@users.noreply.github.com> Date: Tue, 14 Apr 2026 22:50:59 -0500 Subject: [PATCH 2/4] Revert fix --- src/modifiers/did-update.ts | 29 +---------------------------- 1 file changed, 1 insertion(+), 28 deletions(-) diff --git a/src/modifiers/did-update.ts b/src/modifiers/did-update.ts index 1ae364eb..298f7a3b 100644 --- a/src/modifiers/did-update.ts +++ b/src/modifiers/did-update.ts @@ -1,32 +1,5 @@ import { setModifierManager, capabilities } from '@ember/modifier'; -import { - macroCondition, - dependencySatisfies, - importSync, -} from '@embroider/macros'; - -// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -const untrack: (fn: () => void) => void = (function () { - if (macroCondition(dependencySatisfies('ember-source', '> 3.27.0-beta.1'))) { - // ember-source@3.27 shipped "real modules" by default, so we can just use - // importSync to get @glimmer/validator directly - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-explicit-any - const module = importSync('@glimmer/validator') as any; - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access - return module.untrack as unknown as (fn: () => void) => void; - } else if ( - macroCondition(dependencySatisfies('ember-source', '>= 3.22.0-alpha.1')) - ) { - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-explicit-any - const module = importSync('ember') as any; - // we can access `window.Ember` here because it wasn't deprecated until at least 3.27 - // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access - return module.__loader.require('@glimmer/validator').untrack; - } else { - // we do not call `untrack` when ember-source < 3.22 - // (we don't suport ember-source < 3.22) - } -})(); +import { untrack } from '@glimmer/validator'; import type { ModifierArgs, From ad75f5af165965404ce3346e39dc92ae80c40e1d Mon Sep 17 00:00:00 2001 From: NullVoxPopuli <199018+NullVoxPopuli@users.noreply.github.com> Date: Tue, 14 Apr 2026 22:54:56 -0500 Subject: [PATCH 3/4] Revert "Revert fix" This reverts commit a6cc73124f13f83bf4ed8df0b1a0350fe469e009. --- src/modifiers/did-update.ts | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/src/modifiers/did-update.ts b/src/modifiers/did-update.ts index 298f7a3b..1ae364eb 100644 --- a/src/modifiers/did-update.ts +++ b/src/modifiers/did-update.ts @@ -1,5 +1,32 @@ import { setModifierManager, capabilities } from '@ember/modifier'; -import { untrack } from '@glimmer/validator'; +import { + macroCondition, + dependencySatisfies, + importSync, +} from '@embroider/macros'; + +// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment +const untrack: (fn: () => void) => void = (function () { + if (macroCondition(dependencySatisfies('ember-source', '> 3.27.0-beta.1'))) { + // ember-source@3.27 shipped "real modules" by default, so we can just use + // importSync to get @glimmer/validator directly + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-explicit-any + const module = importSync('@glimmer/validator') as any; + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + return module.untrack as unknown as (fn: () => void) => void; + } else if ( + macroCondition(dependencySatisfies('ember-source', '>= 3.22.0-alpha.1')) + ) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-explicit-any + const module = importSync('ember') as any; + // we can access `window.Ember` here because it wasn't deprecated until at least 3.27 + // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access + return module.__loader.require('@glimmer/validator').untrack; + } else { + // we do not call `untrack` when ember-source < 3.22 + // (we don't suport ember-source < 3.22) + } +})(); import type { ModifierArgs, From 0710684c38c2acd922e0775fdf64b899a0f24ab1 Mon Sep 17 00:00:00 2001 From: NullVoxPopuli <199018+NullVoxPopuli@users.noreply.github.com> Date: Wed, 15 Apr 2026 06:44:39 -0500 Subject: [PATCH 4/4] Reapply "Revert fix" This reverts commit ad75f5af165965404ce3346e39dc92ae80c40e1d. --- src/modifiers/did-update.ts | 29 +---------------------------- 1 file changed, 1 insertion(+), 28 deletions(-) diff --git a/src/modifiers/did-update.ts b/src/modifiers/did-update.ts index 1ae364eb..298f7a3b 100644 --- a/src/modifiers/did-update.ts +++ b/src/modifiers/did-update.ts @@ -1,32 +1,5 @@ import { setModifierManager, capabilities } from '@ember/modifier'; -import { - macroCondition, - dependencySatisfies, - importSync, -} from '@embroider/macros'; - -// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -const untrack: (fn: () => void) => void = (function () { - if (macroCondition(dependencySatisfies('ember-source', '> 3.27.0-beta.1'))) { - // ember-source@3.27 shipped "real modules" by default, so we can just use - // importSync to get @glimmer/validator directly - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-explicit-any - const module = importSync('@glimmer/validator') as any; - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access - return module.untrack as unknown as (fn: () => void) => void; - } else if ( - macroCondition(dependencySatisfies('ember-source', '>= 3.22.0-alpha.1')) - ) { - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-explicit-any - const module = importSync('ember') as any; - // we can access `window.Ember` here because it wasn't deprecated until at least 3.27 - // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access - return module.__loader.require('@glimmer/validator').untrack; - } else { - // we do not call `untrack` when ember-source < 3.22 - // (we don't suport ember-source < 3.22) - } -})(); +import { untrack } from '@glimmer/validator'; import type { ModifierArgs,