Skip to content

Fix CI: compile gts templates again, repair types/lint, unblock workflows - #15

Merged
NullVoxPopuli merged 4 commits into
universal-ember:mainfrom
NullVoxPopuli-ai-agent:fix-ci
Jul 19, 2026
Merged

NullVoxPopuli merged 4 commits into
universal-ember:mainfrom
NullVoxPopuli-ai-agent:fix-ci

Conversation

@NullVoxPopuli-ai-agent

Copy link
Copy Markdown
Contributor

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: precompileTemplate called at runtime

ember-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 raw precompileTemplate() calls to the browser. Upgraded ETI to v4, which preprocesses gjs/gts with content-tag before babel — the compiled bundle now contains zero runtime precompileTemplate references. (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 . inside packages/ember-headless-form couldn't resolve prettier-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

  • utils.ts: the @ts-expect-error had drifted away from the line it suppresses → moved back adjacent.
  • field.gts: get() types improved upstream → dropped the now-unnecessary cast (eslint error).
  • test-app: ember-data@5.8 ships types as unstable-preview-types → added @ember-data/model/@ember-data/store devDeps + tsconfig types entries; typed the service:store lookups; cast createRecord results (5.8 returns opaque records without the warp-drive Type brand); removed a stray required attribute on field.Errors that its element types rightly reject.
  • docs-app: assert owner presence, ConstructorParameters<typeof EmberRouter> for the router, and a tsconfig paths mapping for @crowdstrike/ember-oss-docs/* (its exports map points at extensionless dist/* targets, which moduleResolution: bundler refuses for subpaths).

Workflow / infra

  • node 24 pinned in the shared pnpm action (jobs ran node 22 vs engines: ^24).
  • Floating Deps job: pnpm 11 re-verifies deps before every pnpm run and tripped a false-positive ERR_PNPM_OUTDATED_LOCKFILE (injected workspace deps + dedupeInjectedDeps) right after regenerating the lockfile → verifyDepsBeforeRun: false.
  • Docs publish: the Cloudflare secrets aren't configured on this repo, so the step hard-failed on every run → it now skips publish (still builds docs) when the token is absent. If you want deploys back, add UX_OSS_CLOUDFLARE_API_TOKEN / UX_OSS_CLOUDFLARE_ACCOUNT_ID and it lights up again.
  • Removed the changesets release job 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-error placement and a type-level cast removal). ember-try scenarios were left as-is (ember-source >=4.4 support matrix) — they'll get their first real run in months on this PR, so watch those jobs.

🤖 Generated with Claude Code

NullVoxPopuli-ai-agent and others added 4 commits July 19, 2026 16:08
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
NullVoxPopuli merged commit d313e21 into universal-ember:main Jul 19, 2026
8 of 17 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants