Repository navigation
[SCF-2416] [Part 6] Upgrade addon dependencies off ember-cli-babel 7 - #21
Open
Gaurav0 wants to merge 11 commits into
Conversation
… to ^6.0.1 On Ember 4.12, importing @ember/string without having the package in the project raises the ember-string.add-package deprecation, and setupNoDeprecations turns it into a test failure. ember-bootstrap no longer imports it, but the dummy app's ember-resolver 8.1.0 and ember-cli-app-version 4.0.0 still do. Resolver 11 embeds the string utils it needs, and app-version 6 no longer imports @ember/string. Both are 5.4 addon blueprint versions. ember-resolver was held back with ember-qunit and @ember/test-helpers until after the ember-cli-update, but only ember-qunit 7+ actually needs ember-cli 5; resolver 11 works on ember-cli 3.28 and needs ember-source ^4.8.3. Its breaking changes (no Ember 3.x, no resolvers/classic path, no container-debug-adapter initializer) don't affect the dummy app. The remaining @ember/string importer is ember-style-modifier 0.7.0, upgraded next. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ember-style-modifier 0.7.0 depends on ember-cli-babel 7, imports
dasherize from @ember/string (deprecated on Ember 4.12 unless the app
installs @ember/string), and uses the class-based ember-modifier API
that ember-modifier 3.2.7 deprecates.
4.6.0 is a v2 addon that has none of those, and it accepts
ember-modifier ^3.2.7 || ^4.0.0, matching ember-bootstrap's peer
range. {{style}} keeps the same positional-hash and named-argument
forms, so templates are unchanged. The ember-modifier deprecation
warnings the dummy app's test run used to print are gone.
It was the last package in the dummy app's tree importing
@ember/string.
4.6.0 declares engines.pnpm, which yarn v1 reports as a warning only.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ember-lts-4.12 was commented out of the CI matrix because Ember 4.12 deprecates importing @ember/string when the app doesn't install it (emberjs/ember.js#20377), and setupNoDeprecations fails every test on it. Nothing in the dummy app's tree imports @ember/string any more: ember-bootstrap's own import went with @ember/string, and the last importers were ember-resolver 8, ember-cli-app-version 4 and ember-style-modifier 0.7. The scenario also drops its `env: { FAIL_ON_DEPRECATION: false }`, which was added for that deprecation but never read by anything. Partners runs Ember 4.12. Locally, BOOTSTRAPVERSION=4 ember try:one ember-lts-4.12 runs 554 tests with 0 failures. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ember-modifier is a peer dependency with the range ^3.2.7 || ^4.0.0, so this only moves the dummy app's own copy: the devDependency goes to ^4.3.0 and the "ember-modifier": "^3.2.7" resolution, which forced every requester onto 3.2.7, is removed. The lockfile is deduplicated to a single ember-modifier 4.3.0, so ember-bootstrap's track* modifiers, ember-style-modifier and ember-popper-modifier all run against 4.x here. 3.2.7's ember-cli-babel 7 and ember-cli-typescript 5 subtree is gone with it. ember-bootstrap only uses the function-based modifier() API, which v4 keeps, so no code changes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ember-popper-modifier 3.0.0 depends on ember-cli-babel 7. 4.x is on
ember-cli-babel 8, and its breaking changes are all ones 5.0.0 already
meets: Ember >= 4.8, ember-modifier 4 (it depends on ^4.0.0 itself, so
apps that stay on ember-modifier 3 get a nested 4.x copy for popper)
and no classic optional features.
{{popper-tooltip}} takes the same positional reference element and
options, so templates are unchanged.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ember/render-modifiers 2.1.0 depends on ember-cli-babel 7 and
ember-modifier-manager-polyfill, which in turn pulls in another
ember-cli-babel 7 and ember-cli-version-checker 2. 4.0.0 is a v2 addon
that depends only on @embroider/addon-shim.
{{did-insert}}, {{did-update}} and {{will-destroy}} keep the same
arguments and timing; the managers now declare 3.22 capabilities, so
the "modifier manager capabilities prior to 3.22" deprecation that
setupNoDeprecations ignored no longer fires and the ignore entry is
removed.
4.0.0's README lists Ember 4.12 as its minimum, but it declares no
ember-source peer, and the full suite passes on Ember 4.8.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ember-render-helpers was pinned to exactly 0.2.0 because 0.2.1
deprecated the {{did-insert}}/{{did-update}}/{{will-destroy}} helper
names, which clash with the @ember/render-modifiers modifiers of the
same names. 0.2.0 depends on ember-cli-babel 7.
2.0.0 is a v2 addon with only the suffixed names, so the four
helper-form call sites move to {{did-insert-helper}} and
{{did-update-helper}} (bs-modal, bs-popover, bs-tooltip). The helpers'
behaviour is unchanged: did-insert-helper still runs once on first
compute, did-update-helper skips the first compute, and both call the
callback with (positional, named). The modifier-form {{did-insert}} and
{{did-update}} on elements still come from @ember/render-modifiers.
Not ^3: it requires Node 22. 2.0.0 accepts Node 20.
Apps that used the unsuffixed helper names through ember-bootstrap's
dependency need to depend on ember-render-helpers themselves.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ember-concurrency was still declared as ^2.1.2. 2.x and 3.x depend on
ember-cli-babel 7; 4.x is a v2 addon without it, so fresh installs now
get 4.x (4.0.6 here). Apps that pin 3.x for their own code or for
ember-power-select 6, like partners, stay in range instead of
overriding it.
bs-carousel is the only user, with task(function* () {}) plus
.restartable()/.drop(), which 4.x still supports. 4.0.0's one breaking
change, registering the async-arrow Babel transform, only applies to
async-arrow tasks. Not ^5: 5.0.0 removes task(function* () {}) and the
decorator APIs.
A new ember-concurrency-v3 ember-try scenario, run in CI on Bootstrap
3, keeps the 3.x path tested.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…nd @ember-decorators/object 7 ember-decorators 6 and its @ember-decorators/* packages depend on ember-cli-babel 7. 7.0.0 turns all of them into v2 addons, and the ember-decorators meta package no longer makes the individual packages available to its importers (ember-decorators#511). ember-auto-import only resolves imports of packages that ember-bootstrap itself lists, so the 29 tagName imports from @ember-decorators/component and the 3 observes imports from @ember-decorators/object need those packages as direct dependencies. Both decorators keep the same API, so no code changes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
tracked-toolbox 1.3.0 depends on ember-cli-babel 7 and ember-cache-primitive-polyfill (another ember-cli-babel 7). 2.0.0 converted it to a v2 addon and 3.0.0 dropped the polyfill, which Ember 4.8 doesn't need. ember-bootstrap only uses @dedupeTracked (bs-form/element), which neither major changed. The breaking changes were the removed localCopy memo-function variant, Node versions and the polyfill. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ember-modifier and @glimmer/component are peer dependencies with
ranges wider than what the dummy app installs, so two scenarios cover
the other end of each, and CI runs them:
- ember-modifier-v3 (Bootstrap 3): ember-modifier ^3.2.7, which is
what partners runs. The track* modifiers and ember-style-modifier
resolve 3.2.7, while ember-popper-modifier 4 keeps its own 4.x copy.
setupNoDeprecations turns ember-modifier 3's function-based-options
deprecation into a failure, so this also checks { eager: false }.
- glimmer-component-v2 (Bootstrap 4): @glimmer/component ^2.0.0, which
the peer range allows. 2.x imports @ember/owner, which needs Ember
4.10, so this scenario runs on Ember 4.12; Ember 4.8 apps stay on
@glimmer/component 1.x.
ember-concurrency-v3 already landed with the ember-concurrency range.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Nov 5, 2026
[SCF-2416] [Part 2] Upgrade test and lint tooling (ESLint 8, Prettier 3, ember-try 3, stylelint)
#17
Open
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.
Summary
Upgrades the remaining runtime addon dependencies to releases without ember-cli-babel 7, and puts Ember 4.12 back in CI.
@ember/stringimporters besides ember-style-modifier.@ember/stringimport and no deprecated modifier API.{{style}}usage is unchanged.@ember/stringany more, which is what failed every test on 4.12.^3.2.7 || ^4.0.0.{{did-insert-helper}}and{{did-update-helper}}. Not ^3, which requires Node 22.^3.1.1 || ^4.0.0. Fresh installs get 4.x, and apps pinned to 3.x (e.g. for ember-power-select 6) stay in range. A newember-concurrency-v3scenario keeps 3.x tested.@ember-decorators/componentand@ember-decorators/object7 replace theember-decoratorsmeta package. ember-auto-import only resolves packages ember-bootstrap lists directly.@dedupeTrackedis used, and it is unchanged.ember-modifier-v3andglimmer-component-v2scenarios cover the other end of each peer range.glimmer-component-v2runs on Ember 4.12.+57/−25 lines, not counting
yarn.lock.Breaking changes (5.0.0 release notes)
{{did-insert}}/{{did-update}}/{{will-destroy}}helpers through ember-bootstrap's dependency on ember-render-helpers need to depend on ember-render-helpers themselves. The modifiers of the same names come from@ember/render-modifiersand are unaffected.Stack
Part of the SCF-2416 work (ember-bootstrap 5.0.0), split from
scf-2416-reworkfor easier review. This is part 6 of 9. Stacked on Part 5: its base isgaurav/chore/SCF-2416-part-5-replace-on-helper-and-ref-bucket, so the diff only shows this part. Merge in order.Review notes
Each commit is one dependency, with its breaking changes checked in the commit message. Code changes are limited to the render-helper renames (bs-modal, bs-popover, bs-tooltip) and the
@ember-decorators/*imports.Testing
Run on this branch with Node 20.19.6:
yarn install --frozen-lockfilepasses,yarn lintreports 0 errors (the same 150 warnings asscf_master), andember test(Ember 4.8, the default) has 550 passed, 9 skipped and 0 failed. No new tests. CI covers the ember-try matrix.🤖 Generated with Claude Code