From d1fa421fb81f4ecdfbd750575d6f142f381df7b6 Mon Sep 17 00:00:00 2001 From: Edward Faulkner Date: Wed, 4 Mar 2026 13:08:56 -0500 Subject: [PATCH 01/25] extracing ember 6.10 upgrade from vite branch --- .../unpublished-development-types/index.d.ts | 2 +- .../types/@cardstack/boxel-motion/index.d.ts | 3 +++ .../types/boxel-motion-demo-app/index.d.ts | 3 +++ .../src/types/@cardstack/boxel-ui/index.d.ts | 1 - .../types/boxel-ui-test-app/index.d.ts | 1 - packages/host/app/deprecation-workflow.js | 25 ++++++++++++++++++- packages/host/app/lib/html-component.ts | 10 +++----- packages/host/app/lib/isolated-render.gts | 14 +++++------ packages/host/package.json | 14 +++++------ .../host/types/@cardstack/host/index.d.ts | 1 - packages/local-types/index.d.ts | 1 - .../matrix/types/@cardstack/matrix/index.d.ts | 1 - pnpm-workspace.yaml | 4 +-- 13 files changed, 49 insertions(+), 31 deletions(-) create mode 100644 packages/boxel-motion/addon/src/types/@cardstack/boxel-motion/index.d.ts create mode 100644 packages/boxel-motion/test-app/types/boxel-motion-demo-app/index.d.ts diff --git a/packages/boxel-icons/unpublished-development-types/index.d.ts b/packages/boxel-icons/unpublished-development-types/index.d.ts index 4f7deab2532..1afd42fe9be 100644 --- a/packages/boxel-icons/unpublished-development-types/index.d.ts +++ b/packages/boxel-icons/unpublished-development-types/index.d.ts @@ -2,7 +2,7 @@ // These will *not* be published as part of your addon, so be careful that your published code does not rely on them! import '@glint/environment-ember-loose'; -import 'ember-source/types/stable'; +import 'ember-source/types'; declare module '@glint/environment-ember-loose/registry' { export default interface Registry { diff --git a/packages/boxel-motion/addon/src/types/@cardstack/boxel-motion/index.d.ts b/packages/boxel-motion/addon/src/types/@cardstack/boxel-motion/index.d.ts new file mode 100644 index 00000000000..a2e59775409 --- /dev/null +++ b/packages/boxel-motion/addon/src/types/@cardstack/boxel-motion/index.d.ts @@ -0,0 +1,3 @@ +import 'ember-source/types'; + +export {}; diff --git a/packages/boxel-motion/test-app/types/boxel-motion-demo-app/index.d.ts b/packages/boxel-motion/test-app/types/boxel-motion-demo-app/index.d.ts new file mode 100644 index 00000000000..a2e59775409 --- /dev/null +++ b/packages/boxel-motion/test-app/types/boxel-motion-demo-app/index.d.ts @@ -0,0 +1,3 @@ +import 'ember-source/types'; + +export {}; diff --git a/packages/boxel-ui/addon/src/types/@cardstack/boxel-ui/index.d.ts b/packages/boxel-ui/addon/src/types/@cardstack/boxel-ui/index.d.ts index 42b849012e4..a2e59775409 100644 --- a/packages/boxel-ui/addon/src/types/@cardstack/boxel-ui/index.d.ts +++ b/packages/boxel-ui/addon/src/types/@cardstack/boxel-ui/index.d.ts @@ -1,4 +1,3 @@ import 'ember-source/types'; -import 'ember-source/types/preview'; export {}; diff --git a/packages/boxel-ui/test-app/types/boxel-ui-test-app/index.d.ts b/packages/boxel-ui/test-app/types/boxel-ui-test-app/index.d.ts index 42b849012e4..a2e59775409 100644 --- a/packages/boxel-ui/test-app/types/boxel-ui-test-app/index.d.ts +++ b/packages/boxel-ui/test-app/types/boxel-ui-test-app/index.d.ts @@ -1,4 +1,3 @@ import 'ember-source/types'; -import 'ember-source/types/preview'; export {}; diff --git a/packages/host/app/deprecation-workflow.js b/packages/host/app/deprecation-workflow.js index 7e793b0fd30..b0065f10e83 100644 --- a/packages/host/app/deprecation-workflow.js +++ b/packages/host/app/deprecation-workflow.js @@ -1,3 +1,26 @@ import setupDeprecationWorkflow from 'ember-cli-deprecation-workflow'; -setupDeprecationWorkflow(); +setupDeprecationWorkflow({ + workflow: [ + { + handler: 'silence', + matchId: 'importing-inject-from-ember-service', + }, + { + handler: 'silence', + matchId: 'deprecate-import--set-classic-decorator-from-ember', + }, + { + handler: 'silence', + matchId: 'deprecate-import-view-utils-from-ember', + }, + { + handler: 'silence', + matchId: 'deprecate-import-env-from-ember', + }, + { + handler: 'silence', + matchId: 'deprecate-import-onerror-from-ember', + }, + ], +}); diff --git a/packages/host/app/lib/html-component.ts b/packages/host/app/lib/html-component.ts index 9dce0f50d31..b5bf0eb3fb3 100644 --- a/packages/host/app/lib/html-component.ts +++ b/packages/host/app/lib/html-component.ts @@ -2,13 +2,12 @@ import { setComponentManager } from '@ember/component'; import { capabilities } from '@ember/component'; import { setComponentTemplate } from '@ember/component'; -import templateOnly from '@ember/component/template-only'; import { htmlSafe, type SafeString } from '@ember/template'; import { precompileTemplate } from '@ember/template-compilation'; -import { modifier } from 'ember-modifier'; +import { template } from '@ember/template-compiler/runtime'; -import { compiler } from '@cardstack/runtime-common/etc'; +import { modifier } from 'ember-modifier'; import type { ComponentLike } from '@glint/template'; @@ -72,10 +71,7 @@ export function htmlComponent( if (cache.has(source)) { component = cache.get(source)!; } else { - component = setComponentTemplate( - compiler.compile(source, { strictMode: true }), - templateOnly(), - ) as TopElement; + component = template(source) as TopElement; cache.set(source, component); } diff --git a/packages/host/app/lib/isolated-render.gts b/packages/host/app/lib/isolated-render.gts index 79986cf0005..1875dd96dfb 100644 --- a/packages/host/app/lib/isolated-render.gts +++ b/packages/host/app/lib/isolated-render.gts @@ -40,26 +40,24 @@ export function render( teardown(element); removeChildren(element); - let { _runtime, _context, _owner, _builder } = owner.lookup( - 'renderer:-dom', - ) as any; + let { + state: { owner: _owner, builder: _builder, context: _context }, + } = owner.lookup('renderer:-dom') as any; let self = createConstRef({}, 'this'); let layout = (getComponentTemplate as any)(root)(_owner).asLayout(); + let iterator = renderMain( - _runtime, _context, _owner, self, - _builder(_runtime.env, { element }), + _builder(_context.env, { element }), layout, ); let vm = (iterator as any).vm; let result: ActiveRender | undefined; try { - inTransaction(_runtime.env, () => { - result = vm._execute(); - }); + inTransaction(_context.env, () => vm._execute()); } catch (err: any) { // This is to compensate for the commitCacheGroup op code that is not called because // of the error being thrown here. we do this so we can keep the TRANSACTION_STACK diff --git a/packages/host/package.json b/packages/host/package.json index a23a935dadf..83f0acfe903 100644 --- a/packages/host/package.json +++ b/packages/host/package.json @@ -48,8 +48,8 @@ "@cardstack/runtime-common": "workspace:*", "@cardstack/view-transitions": "catalog:", "@ember/optional-features": "^2.0.0", - "@ember/string": "^3.1.1", - "@ember/test-helpers": "catalog:", + "@ember/string": "^4.0.0", + "@ember/test-helpers": "^5.4.1", "@ember/test-waiters": "catalog:", "@embroider/compat": "^3.5.5", "@embroider/core": "^3.4.15", @@ -103,7 +103,7 @@ "ember-async-data": "^1.0.3", "ember-auto-import": "^2.7.2", "ember-basic-dropdown": "8.0.4", - "ember-cli": "~5.4.1", + "ember-cli": "~6.10.0", "ember-cli-app-version": "^6.0.1", "ember-cli-babel": "^8.2.0", "ember-cli-clean-css": "^3.0.0", @@ -129,12 +129,12 @@ "ember-freestyle": "^0.20.0", "ember-keyboard": "^8.2.1", "ember-lifeline": "^7.0.0", - "ember-load-initializers": "^2.1.2", + "ember-load-initializers": "^3.0.0", "ember-modifier": "^4.1.0", - "ember-page-title": "^8.2.3", - "ember-provide-consume-context": "^0.7.0", + "ember-page-title": "^9.0.3", + "ember-provide-consume-context": "^0.8.0", "ember-qunit": "catalog:", - "ember-resolver": "^11.0.1", + "ember-resolver": "^13.0.0", "ember-resources": "catalog:", "ember-route-template": "^1.0.3", "ember-source": "catalog:", diff --git a/packages/host/types/@cardstack/host/index.d.ts b/packages/host/types/@cardstack/host/index.d.ts index 42b849012e4..a2e59775409 100644 --- a/packages/host/types/@cardstack/host/index.d.ts +++ b/packages/host/types/@cardstack/host/index.d.ts @@ -1,4 +1,3 @@ import 'ember-source/types'; -import 'ember-source/types/preview'; export {}; diff --git a/packages/local-types/index.d.ts b/packages/local-types/index.d.ts index 2e02b1d4e74..6ae60114b1e 100644 --- a/packages/local-types/index.d.ts +++ b/packages/local-types/index.d.ts @@ -1,5 +1,4 @@ import 'ember-source/types'; -import 'ember-source/types/preview'; import * as ContentTag from 'content-tag'; declare global { diff --git a/packages/matrix/types/@cardstack/matrix/index.d.ts b/packages/matrix/types/@cardstack/matrix/index.d.ts index 42b849012e4..a2e59775409 100644 --- a/packages/matrix/types/@cardstack/matrix/index.d.ts +++ b/packages/matrix/types/@cardstack/matrix/index.d.ts @@ -1,4 +1,3 @@ import 'ember-source/types'; -import 'ember-source/types/preview'; export {}; diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index f1198ac5b3b..c051ad664de 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -127,9 +127,9 @@ catalog: ember-concurrency: ^4.0.3 ember-concurrency-ts: ^0.3.1 ember-modify-based-class-resource: ^1.1.0 - ember-qunit: ^8.0.1 + ember-qunit: ^9.0.4 ember-resources: ^7.0.7 - ember-source: ~5.12.0 + ember-source: ~6.10.0 ember-template-lint: ^7.8.1 esbuild: ^0.24.0 eslint: ^8.57.1 From 95f2cf2971839a5f2cc289f79b514c6776472f47 Mon Sep 17 00:00:00 2001 From: Edward Faulkner Date: Wed, 4 Mar 2026 14:35:38 -0500 Subject: [PATCH 02/25] ember compat updates --- packages/base/field-component.gts | 22 ++++++++---------- packages/base/field-support.ts | 6 ++++- packages/host/app/deprecation-workflow.js | 4 ++++ packages/host/app/index.html | 28 +++++++++++++++-------- packages/host/ember-cli-build.js | 3 --- packages/host/tests/index.html | 9 ++++++++ packages/runtime-common/etc.ts | 2 +- 7 files changed, 47 insertions(+), 27 deletions(-) diff --git a/packages/base/field-component.gts b/packages/base/field-component.gts index 650971ee6ab..019d6457b9c 100644 --- a/packages/base/field-component.gts +++ b/packages/base/field-component.gts @@ -86,18 +86,14 @@ export class CardContextConsumer extends Component }; } - + } export class CardCrudFunctionsConsumer extends Component { @consume(CardCrudFunctionsContextName) declare cardCrudFunctions: CardCrudFunctions; - + } interface DefaultFormatConsumerSignature { @@ -113,9 +109,7 @@ export class DefaultFormatsConsumer extends Component - {{yield this.effectiveDefaultFormats}} - + } interface DefaultFormatsProviderSignature { @@ -137,9 +131,7 @@ interface PermissionsConsumerSignature { export class PermissionsConsumer extends Component { @consume(PermissionsContextName) declare permissions: Permissions | undefined; - + } const componentCache = initSharedState( @@ -527,7 +519,11 @@ function getFields(card: typeof CardDef): { } return [[maybeFieldName, maybeField]]; }); - fields = { ...fields, ...Object.fromEntries(currentFields) }; + fields = Object.assign( + Object.create(null), + fields, + Object.fromEntries(currentFields), + ); obj = Reflect.getPrototypeOf(obj); } return fields; diff --git a/packages/base/field-support.ts b/packages/base/field-support.ts index 6ff64d4db8d..66ee5c93c35 100644 --- a/packages/base/field-support.ts +++ b/packages/base/field-support.ts @@ -280,7 +280,11 @@ export function getFields( } return [[maybeFieldName, maybeField]]; }); - fields = { ...fields, ...Object.fromEntries(currentFields) }; + fields = Object.assign( + Object.create(null), + fields, + Object.fromEntries(currentFields), + ); obj = Reflect.getPrototypeOf(obj); } return fields; diff --git a/packages/host/app/deprecation-workflow.js b/packages/host/app/deprecation-workflow.js index b0065f10e83..ed6e5da65e9 100644 --- a/packages/host/app/deprecation-workflow.js +++ b/packages/host/app/deprecation-workflow.js @@ -22,5 +22,9 @@ setupDeprecationWorkflow({ handler: 'silence', matchId: 'deprecate-import-onerror-from-ember', }, + { + handler: 'silence', + matchId: 'deprecate-import-libraries-from-ember', + }, ], }); diff --git a/packages/host/app/index.html b/packages/host/app/index.html index 7bebf9bb510..345c7e7d75d 100644 --- a/packages/host/app/index.html +++ b/packages/host/app/index.html @@ -42,13 +42,23 @@
{{content-for "body"}} - - - - - {{content-for "body-footer"}} - + + + + + + {{content-for "body-footer"}} + + diff --git a/packages/host/ember-cli-build.js b/packages/host/ember-cli-build.js index 38f2d403dff..0e599e62264 100644 --- a/packages/host/ember-cli-build.js +++ b/packages/host/ember-cli-build.js @@ -76,9 +76,6 @@ module.exports = function (defaults) { plugins: [ new GlimmerScopedCSSWebpackPlugin(), new MonacoWebpackPlugin(), - new webpack.ProvidePlugin({ - process: 'process', - }), new webpack.IgnorePlugin({ resourceRegExp: /^https:\/\/cardstack\.com\/base/, }), diff --git a/packages/host/tests/index.html b/packages/host/tests/index.html index b42a2122447..b5698418a7f 100644 --- a/packages/host/tests/index.html +++ b/packages/host/tests/index.html @@ -25,6 +25,15 @@
+