Skip to content

feat!: migrate to frontend-base - #906

Merged
arbrandes merged 7 commits into
mainfrom
frontend-base
Aug 27, 2026
Merged

feat!: migrate to frontend-base#906
arbrandes merged 7 commits into
mainfrom
frontend-base

Conversation

@arbrandes

@arbrandes arbrandes commented Jun 25, 2025

Copy link
Copy Markdown
Contributor

Description

This converts the template into an App Repository built on frontend-base: a library that plugs into the Open edX frontend shell, rather than a standalone micro-frontend with its own webpack build. There are breaking changes throughout, and the work was done on a long-lived branch rather than in place, which is why it arrives as one large diff.

Landing it is not a reconciliation. The two branches have diverged across nearly every file, and there is nothing left to merge because the ports from master already happened. The conversion branch takes over instead: legacy-mfe is cut from master's tip first, master is merged into this branch with -s ours to join both histories while keeping the conversion tree, and master then fast-forwards onto the result. openedx/frontend-base#243 has the procedure, settled in OEP-65 ADR 0004. Please do not use the merge button here, which would add a second merge commit and invert the first-parent history the procedure depends on.

The default branch is renamed from master to main immediately before the landing, per #621. This tree already names main in its workflow triggers and documentation links, so they are correct the moment it lands and the new default branch has working push CI from its first commit. The legacy standalone MFE template goes on living on legacy-mfe, which the README points at.

Alongside the conversion, this adds the release setup OEP-10 ADR 0002 defines: a .releaserc naming stable, main and the maintenance branch patterns, and a Release CI workflow that publishes from all of them. Repositories created from this template publish to NPM and are governed by that ADR, but the template shipped neither, so every copy started off the layout it settles on. The workflow's job is gated on the repository name, so this template never publishes and copies need no edit to it. That is the part of openedx/public-engineering#563 that belongs here.

The @openedx/frontend-base peer range also moves from ^1.0.0-alpha to ^1.0.0, and the lockfile from 1.0.0-alpha.39 to 1.0.1 with it, so the template stops demonstrating the library it is built on by depending on an alpha of it.

One deviation from ADR 0004 is deliberate. The ADR has a converted repository annotate openedx.org/release: "legacy-mfe" so release tooling keeps finding the micro-frontend it replaces. This repository already left named releases, its annotation is already null, and no supported release ships it, so null is what it stays. There is nothing for legacy-mfe to be cut for here.

Part of #1029, openedx/frontend-base#243 and #621.

LLM usage notice

Built with assistance from Claude.

@arbrandes
arbrandes force-pushed the frontend-base branch 2 times, most recently from 0c86523 to 0dc7444 Compare June 27, 2025 01:08
Follows the frontend-base migration how-to to turn this template into
a library that plugs into the Open edX frontend shell, rather than a
standalone webpack-bundled MFE.

Co-Authored-By: Claude <[email protected]>
@arbrandes arbrandes changed the title refactor: migrate to frontend-base feat!: migrate to frontend-base Apr 23, 2026
@arbrandes arbrandes linked an issue Apr 23, 2026 that may be closed by this pull request
@codecov

codecov Bot commented Apr 23, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 30.00000% with 14 lines in your changes missing coverage. Please review.
✅ Project coverage is 27.27%. Comparing base (c09fccf) to head (7cc13e5).
⚠️ Report is 7 commits behind head on main.

Files with missing lines Patch % Lines
src/routes.tsx 0.00% 7 Missing ⚠️
src/slots/ExampleSlot/ExampleSlot.tsx 0.00% 3 Missing ⚠️
src/slots.tsx 0.00% 2 Missing ⚠️
src/app.ts 0.00% 1 Missing ⚠️
src/widgets/ExampleHeader/app.tsx 0.00% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##            main     #906       +/-   ##
==========================================
+ Coverage   0.00%   27.27%   +27.27%     
==========================================
  Files          3        9        +6     
  Lines         24       22        -2     
  Branches       0        1        +1     
==========================================
+ Hits           0        6        +6     
+ Misses        24       16        -8     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@arbrandes

Copy link
Copy Markdown
Contributor Author

PR updated for frontend-base 1.0.0 (aka Verawood).

Adopt the per-page document title pattern from frontend-base ADR 0015,
so apps generated from this template ship with a sensible browser-tab
title instead of inheriting the previous app's.  Since frontend-base's
migration how-to points to this repo for complete examples, including
the pattern here also makes it discoverable for new apps.

Refs openedx/frontend-base#250.

Co-Authored-By: Claude <[email protected]>
@arbrandes arbrandes linked an issue Apr 29, 2026 that may be closed by this pull request
9 tasks
@arbrandes arbrandes mentioned this pull request Aug 20, 2026
7 tasks
Ports e6b421f and the action bumps that followed it on master, which the
-s ours takeover merge would otherwise discard.
The default branch is renamed to main and the legacy MFE template moves to
legacy-mfe as part of the frontend-base takeover, so the landed tree names
both up front. Drops the warning banner, folding its substance into Purpose.
Repositories created from this template publish to NPM and are governed by
OEP-10 ADR 0002, but the template shipped no .releaserc and no release
workflow, so every copy started off the layout the ADR settles on.

Adds both, plus the branch documentation each audience needs: one-time
repository setup in this README, the durable branch layout in the templated
one.  The workflow's job is gated on the repository name so the template
itself never publishes; copies need no edit to it.

Part of openedx/public-engineering#563.
The peer range still admitted 1.0.0 prereleases and the lockfile resolved
1.0.0-alpha.39, long after frontend-base reached latest: 1.0.1.  A template
should not demonstrate the library it is built on by depending on an alpha
of it.

The || 0.0.0-dev arm stays: the bind-mounted workspace checkout carries that
placeholder version, and npm run dev:packages does not resolve without it.
@arbrandes
arbrandes marked this pull request as ready for review August 27, 2026 13:05
@arbrandes
arbrandes merged commit 7cc13e5 into main Aug 27, 2026
6 checks passed
@arbrandes
arbrandes deleted the frontend-base branch August 27, 2026 13:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Land frontend-base Update frontend-base branch

1 participant