Conversation
Preview deployments |
Host Test Results 1 files ± 0 1 suites ±0 2h 15m 38s ⏱️ - 12m 24s Results for commit bdcf18b. ± Comparison against base commit 1ff4d11. This pull request removes 1 and adds 1 tests. Note that renamed tests count towards both.♻️ This comment has been updated with latest results. |
|
Next step here is to pick one of the remaining host test failures and dig into it. Many probably share the same few causes. I was investigating |
The previous approach extracted a template via getComponentTemplate() and rendered it through renderMain(). In Ember 6, strict-mode templates use scope-based resolution instead of upvars, and the asLayout() path does not preserve scope information. This caused "no free vars were found" errors when rendering the wrapper template. Switch to glimmerRenderComponent from @glimmer/runtime, which is the API Ember 6's own ComponentRootState uses internally. This properly handles strict-mode scope resolution and also fixes the missing `result` variable bug from a prior refactor. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Message.status was not @Tracked and MessageBuilder.updateMessage() never updated it. When a message transitioned from "sending" to sent via Matrix's LocalEchoUpdated event, the RoomResource would re-process events and find the existing Message via clientGeneratedId, but updateMessage() left status unchanged — keeping the is-pending CSS class permanently applied. Add @Tracked to Message.status and update it in updateMessage() so the UI reflects the correct send state. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Cached or pre-compiled templates from realm servers may still use the Ember 5 wire format where the block array has 4 elements: [statements, symbols, hasEval, upvars]. Ember 6 changed this to 3 elements: [statements, locals, upvars]. The opcode compiler's meta() function destructures block[2] as upvars, but for Ember 5 templates block[2] is the hasEval boolean (false), causing the "no free vars were found" assertion to fire. Detect the old format via block.length === 4 && typeof block[2] === 'boolean' and extract upvars from block[3] instead. This allows a safe rollout where existing cached templates continue to work while new templates are compiled in the Ember 6 format. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1406276 to
73360a4
Compare
uploadCards() stored entry.card.id (a resolved full URL like http://localhost:4201/skills/Skill/boxel-environment) as the sourceUrl. This broke lookups that use the portable prefix form (@cardstack/skills/Skill/boxel-environment). Use unresolveCardReference() to convert the URL back to its registered prefix form, making sourceUrl stable across different environments. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
73360a4 to
91add26
Compare
Commit 91add26 changed uploadCards() to call unresolveCardReference(entry.card.id), but card.id is undefined for cards that were never persisted (e.g. SearchCardsResult created by the search command). The undefined value causes a TypeError in unresolveCardReference when it calls resolvedURL.startsWith(). Guard against undefined by falling back to an empty string. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
In .gts files, glint's @ts-expect-error directive only suppresses the error on the immediate next line. For multi-line imports, the TS2307 error on the `from` clause is beyond the directive's reach, causing both "unused directive" and "cannot find module" errors. Collapse the @glimmer/runtime import to a single line with @ts-ignore (which is more permissive) and prettier-ignore to prevent reformatting. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
In Ember 6.10, settled() no longer waits for the async work inside
functions invoked via debounce() from @ember/runloop. The debounce
timer fires and calls the async drainCommandProcessingQueue(), but
settled() sees the timer as resolved and returns before the async
processing completes. This caused search command tests to fail
because the command result was never visible when assertions ran.
Two fixes:
- Add @ember/test-waiters to drainCommandProcessingQueue and
drainCodePatchProcessingQueue so settled() properly tracks the
full async lifecycle of debounced processing.
- Replace await settled() with await waitFor('[data-test-command-
result-header]') in search command tests for explicit waiting on
the rendered result rather than relying on settlement heuristics.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…tdout JSON parsing
Ember 6.10 added an unconditional console.log() deprecation warning to
dist/ember-template-compiler.js that prints to stdout whenever the legacy
AMD template compiler bundle is loaded:
--------
+ Your app is using the legacy ember-template-compiler.js AMD bundle.
This will be removed in ember-source 7.0.
--------
This breaks the software-factory "factory:go" package script, which writes
its JSON summary to stdout via process.stdout.write(JSON.stringify(...)).
The test at factory-entrypoint.integration.test.ts:234 parses this output
with JSON.parse(result.stdout). With the deprecation warning prepended to
stdout, the parser encounters "\n\n--------" before the JSON. It interprets
the first "-" as a negative number sign, then fails on the second "-":
SyntaxError: No number after minus sign in JSON at position 3
(line 3 column 2)
The fix extends the existing patches/ember-source.patch (which already
patches several ember-source files) to remove the console.log call from
ember-template-compiler.js. The pnpm-lock.yaml hash updates are a
consequence of the patch content changing.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
In Ember 6.10 the SSE event that assigns newInstance.id can arrive while hassan's auto-save is still pending its 500ms client-side delay, causing waitUntil(() => newInstance.id) to resolve before hassan's onSaveSubscriber fires. Guard the callback to only assert on newInstance's save. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Use a positive conditional instead of early return to satisfy the qunit/no-early-return lint rule. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
After discussions with @lukemelia and followup investigations, there's only one outstanding open question here, which is figured out what is consuming cached old-wire-format templates in our CI (making the patch of ember-source required). We're going to land this and then follow up on that part. We need to do that anyway because the wire format will change again (there are already more upstream wire format changes -- and it's not guarantee stable between any particular ember versions). |
This is extracted out of the vite branch.