Fix CI: compile gts templates again, repair types/lint, unblock workflows - #15
Merged
NullVoxPopuli merged 4 commits intoJul 19, 2026
Merged
Conversation
ETI v3's babel-plugin ordering left every `precompileTemplate` emitted by gts test files uncompiled, so all 150+ rendering tests failed at runtime with 'Attempted to call precompileTemplate at runtime'. v4 preprocesses gjs/gts via content-tag before babel runs, so ember-cli-htmlbars' template-compilation plugin sees the output within the same pass. Also: - add prettier-plugin-ember-template-tag to the addon package (it runs prettier against the shared root config, which requires the plugin to resolve from the package under pnpm's strict layout) - add @ember-data/model + @ember-data/store devDeps and their unstable-preview-types to test-app's tsconfig so the ember-data 5.8 imports typecheck - verifyDepsBeforeRun: false — pnpm 11 re-verifies (and re-installs) before every run script; with injected workspace deps + dedupeInjectedDeps the regenerated lockfile trips a false-positive ERR_PNPM_OUTDATED_LOCKFILE in the floating-deps CI job Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- utils.ts: the @ts-expect-error had drifted away from the line it suppresses (an eslint-disable block sat between them), so it was both 'unused' and not suppressing the intended errors - field.gts: get() now returns DATA[KEY] on its own; drop the redundant cast - docs-app: assert owners before use, type the Router constructor via ConstructorParameters, and map @crowdstrike/ember-oss-docs/* through tsconfig paths (its exports map uses extensionless dist targets that bundler-mode resolution refuses for subpaths) - test-app: type the store lookups, cast createRecord results to UserModel (ember-data 5.8 returns opaque records without the warp-drive Type brand), and drop a stray 'required' attribute that field.Errors' element types rightly reject Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- setup-node had no version pinned, so jobs ran node 22 against the workspace's engines ^24 - the Cloudflare publish step hard-failed when the API token secret is absent (it is not configured on this repo); skip publish + PR comment instead, while still building the docs - the changesets release job predates the fork; release-plan (plan-release.yml + publish.yml) owns releasing now Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The prettier check never actually ran for the addon package before (the template-tag plugin could not resolve), and test-app had drifted. Mechanical `prettier -w` output only. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
NullVoxPopuli
approved these changes
Jul 19, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Gets every CI job that can pass on this repo passing again. Locally: build ✅, lint ✅ (all 8 projects), typecheck ✅, test-app suite ✅ (164 pass / 1 skip / 0 fail).
What was broken, and the fixes
All rendering tests failed:
precompileTemplatecalled at runtimeember-template-imports v3 transforms
<template>via a babel plugin, and its output was never seen by ember-cli-htmlbars' template-compilation plugin (plugin-ordering hazard within the single babel pass), so every gts test file shipped rawprecompileTemplate()calls to the browser. Upgraded ETI to v4, which preprocesses gjs/gts with content-tag before babel — the compiled bundle now contains zero runtimeprecompileTemplatereferences. (This is also why the Default Tests job "hung": 150 failing tests + cold caches blew the 5-minute timeout.)Addon prettier check never ran
prettier -c .insidepackages/ember-headless-formcouldn't resolveprettier-plugin-ember-template-tag(only test-app/docs-app declared it; pnpm's strict layout doesn't hoist it). Added the devDep — and applied the formatting drift it had been missing (the big mechanical commit).Type errors
@ts-expect-errorhad drifted away from the line it suppresses → moved back adjacent.get()types improved upstream → dropped the now-unnecessary cast (eslint error).ember-data@5.8ships types asunstable-preview-types→ added@ember-data/model/@ember-data/storedevDeps + tsconfigtypesentries; typed theservice:storelookups; castcreateRecordresults (5.8 returns opaque records without the warp-driveTypebrand); removed a strayrequiredattribute onfield.Errorsthat its element types rightly reject.ConstructorParameters<typeof EmberRouter>for the router, and a tsconfigpathsmapping for@crowdstrike/ember-oss-docs/*(its exports map points at extensionlessdist/*targets, whichmoduleResolution: bundlerrefuses for subpaths).Workflow / infra
engines: ^24).pnpm runand tripped a false-positiveERR_PNPM_OUTDATED_LOCKFILE(injected workspace deps +dedupeInjectedDeps) right after regenerating the lockfile →verifyDepsBeforeRun: false.UX_OSS_CLOUDFLARE_API_TOKEN/UX_OSS_CLOUDFLARE_ACCOUNT_IDand it lights up again.releasejob from ci.yml — it predates the fork; release-plan (plan-release.yml+publish.yml) owns releasing now.Not touched
Public API of the addon packages is unchanged (the only
src/edits are the@ts-expect-errorplacement and a type-level cast removal). ember-try scenarios were left as-is (ember-source >=4.4support matrix) — they'll get their first real run in months on this PR, so watch those jobs.🤖 Generated with Claude Code