Description
Publish @openedx/frontend-app-notifications 3.0.0 (the frontend-base rewrite) as the new stable, by adopting the release-branch model from ADR 0012 (amended in openedx/frontend-base#274). Part of openedx/frontend-base#244.
This repo is the odd one out. Today main carries the old architecture (last stable v2.0.11, published as @edx/frontend-plugin-notifications) and frontend-base carries the rewrite (3.0.0-alpha.3, published as @openedx/frontend-app-notifications to @latest). The two branches have diverged (shared base, then main +11 / frontend-base +23, entirely different trees), and the old and new code are different npm packages.
End state: main becomes the unstable dev branch by adopting the rewrite (retiring frontend-base), and release publishes 3.0.0 to @latest. The old architecture is preserved on a frozen 2.x branch that is deliberately left out of the release automation (see Notes). This differs from the other apps: notifications reclaims main as its dev branch, because main is a live branch rather than dead legacy.
Separately, this repository is named frontend-plugin-notifications, while its rewrite npm package is @openedx/frontend-app-notifications. As part of this work the repository should be renamed to frontend-app-notifications, to match the package name and the sibling MFEs.
"branches": [
{ "name": "release", "channel": "latest" },
{ "name": "main", "prerelease": "alpha", "channel": "alpha" }
]
Plan
Notes
Use a release branch, not an n.x branch, for the current stable. semantic-release classifies n.x names as maintenance branches, which can only patch a major that already shipped, never originate one.
The old and new code are different npm packages: the 2.x line is @edx/frontend-plugin-notifications (legacy @edx scope), while the rewrite is @openedx/frontend-app-notifications. 2.x is therefore kept as a frozen preservation branch.
Set channel: alpha explicitly, or prereleases land on a dist-tag named after the branch (@main) instead of @alpha.
The first stable release's changelog exceeds GitHub's release-body limit and 422s; the npm publish still succeeds, so create the GitHub Release manually.
Landing the rewrite onto main, following openedx/frontend-base#243. Running -s ours on the frontend-base side keeps the rewrite's tree while recording both histories, then main fast-forwards onto it - no force-push and no tree fixup:
git checkout frontend-base
git merge -s ours main
git checkout main
git merge frontend-base # fast-forward
Description
Publish
@openedx/frontend-app-notifications3.0.0(the frontend-base rewrite) as the new stable, by adopting therelease-branch model from ADR 0012 (amended in openedx/frontend-base#274). Part of openedx/frontend-base#244.This repo is the odd one out. Today
maincarries the old architecture (last stablev2.0.11, published as@edx/frontend-plugin-notifications) andfrontend-basecarries the rewrite (3.0.0-alpha.3, published as@openedx/frontend-app-notificationsto@latest). The two branches have diverged (shared base, thenmain +11/frontend-base +23, entirely different trees), and the old and new code are different npm packages.End state:
mainbecomes the unstable dev branch by adopting the rewrite (retiringfrontend-base), andreleasepublishes3.0.0to@latest. The old architecture is preserved on a frozen2.xbranch that is deliberately left out of the release automation (see Notes). This differs from the other apps: notifications reclaimsmainas its dev branch, becausemainis a live branch rather than dead legacy.Separately, this repository is named
frontend-plugin-notifications, while its rewrite npm package is@openedx/frontend-app-notifications. As part of this work the repository should be renamed tofrontend-app-notifications, to match the package name and the sibling MFEs.Plan
Rename the repository
frontend-plugin-notifications->frontend-app-notifications, to match the npm package name and the sibling MFEs.Bump the
@openedx/frontend-basedependency to^1.0.0(the released stable) onfrontend-base.Cut
2.xfrom currentmainto preserve the old architecture as a frozen branch.Land the rewrite onto
mainusing the technique from Land frontend-base frontend-base#243 (see Notes), then retire thefrontend-basebranch.Set
.releaserconmainto the target config (release+mainonly) and pointrelease.ymlat[main, release].Cut
releasefrommain(no-op), then dry-run semantic-release to confirm it computes3.0.0.Configure the
2.xbranch to auto-publish to@edx/frontend-plugin-notifications.Fast-forward
releaseup tomainto publish3.0.0to@latest.Create the
v3.0.0GitHub Release by hand, with curated notes (see Notes).Add branch protection to
release; deletion-protect2.xso the frozen history is preserved.Verify:
@latest = 3.0.0on@openedx/frontend-app-notifications, and@alphatrackingmain.Notes
Use a
releasebranch, not ann.xbranch, for the current stable. semantic-release classifiesn.xnames as maintenance branches, which can only patch a major that already shipped, never originate one.The old and new code are different npm packages: the 2.x line is
@edx/frontend-plugin-notifications(legacy@edxscope), while the rewrite is@openedx/frontend-app-notifications.2.xis therefore kept as a frozen preservation branch.Set
channel: alphaexplicitly, or prereleases land on a dist-tag named after the branch (@main) instead of@alpha.The first stable release's changelog exceeds GitHub's release-body limit and 422s; the npm publish still succeeds, so create the GitHub Release manually.
Landing the rewrite onto
main, following openedx/frontend-base#243. Running-s ourson thefrontend-baseside keeps the rewrite's tree while recording both histories, thenmainfast-forwards onto it - no force-push and no tree fixup: