Skip to content

feat!: migrate to frontend-base - #1512

Merged
arbrandes merged 84 commits into
masterfrom
frontend-base
Aug 28, 2026
Merged

arbrandes merged 84 commits into
masterfrom
frontend-base

Conversation

@arbrandes

@arbrandes arbrandes commented Jun 24, 2025 •

Copy link
Copy Markdown
Contributor

Description

Refer to the parent issue for a full description.

In short, this refactors the codebase for frontend-base support. There are several breaking changes. It is a long-lived feature branch, and as such, should not be rebased or squashed until time comes for it to either merge to master or become master.

BREAKING CHANGE: Plugins written prior to this will need to be adapted to frontend-base syntax.

Closes #1685

BREAKING CHANGE: refactors the MFE for frontend-base.
@arbrandes
arbrandes requested a review from a team as a code owner June 24, 2025 18:57
@arbrandes
arbrandes marked this pull request as draft June 24, 2025 18:59
@arbrandes arbrandes mentioned this pull request Jun 20, 2025
5 of 6 tasks
@arbrandes arbrandes linked an issue Jun 25, 2025 that may be closed by this pull request
5 of 6 tasks
Comment thread src/routes.jsx Resolved
arbrandes added 22 commits June 26, 2025 19:27
The only purpose of the included index.html is to serve the dev
environment, so modify it to make that clear.
Apps should avoid having a catch-all route, instead relying on the shell
to provide it.
Update package.json for publication as a "buildless" library.

(Also upgrade openedx-atlas.)
feat: Prepare for publication to NPM
Now we have a way to discover app URLs dynamically; do so for the
(default) redirect on login.
Bump frontend-base to alpha.4 to fix a bug with the route role
redirection mechanism.
Bump frontend-base to avoid the inotify handle resource starvation.
BREAKING CHANGE: Pre-design-tokens theming is no longer supported.
@openedx-semantic-release-bot

Copy link
Copy Markdown

🎉 This PR is included in version 1.0.0-alpha.9 🎉

The release is available on:

Your semantic-release bot 📦🚀

Co-Authored-By: Claude <noreply@anthropic.com>
@openedx-semantic-release-bot

Copy link
Copy Markdown

🎉 This PR is included in version 1.0.0-alpha.10 🎉

The release is available on:

Your semantic-release bot 📦🚀

frontend-base now expects `roles: [role]` instead of `role: role`
in route handle objects.

Co-Authored-By: Claude <noreply@anthropic.com>
@openedx-semantic-release-bot

Copy link
Copy Markdown

🎉 This PR is included in version 1.0.0-alpha.11 🎉

The release is available on:

Your semantic-release bot 📦🚀

arbrandes and others added 2 commits April 22, 2026 12:39
The shell stylesheet moved from a SCSS file to a JS manifest at
@openedx/frontend-base/shell/style. Imports it directly from
site.config.dev.tsx and drops the now-redundant site.scss. Also fixes
two @media queries in _base_component.scss that used a single-dash
custom-media name and were silently non-matching.

Refs openedx/frontend-base#232

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
@openedx-semantic-release-bot

Copy link
Copy Markdown

🎉 This PR is included in version 1.0.0-alpha.12 🎉

The release is available on:

Your semantic-release bot 📦🚀

Adds a build-ci make target (exposed as npm run build:ci) that runs openedx build against site.config.dev.tsx, and wires it into the CI workflow after the existing tsc-based build step. Catches errors in the real app graph (e.g. broken imports in lazy-loaded routes) that neither tsc nor Jest would surface.

Co-Authored-By: Claude <noreply@anthropic.com>
@arbrandes arbrandes changed the title refactor: migrate to frontend-base feat!: migrate to frontend-base Apr 24, 2026
NotFoundPage was the only authn route child without a <Helmet> block,
so /authn/notfound kept whatever title the previous page set.  Add the
title following the per-page pattern from frontend-base ADR 0015.

Refs openedx/frontend-base#250.

Co-Authored-By: Claude <noreply@anthropic.com>
@openedx-semantic-release-bot

Copy link
Copy Markdown

🎉 This PR is included in version 1.0.0-alpha.13 🎉

The release is available on:

Your semantic-release bot 📦🚀

@arbrandes arbrandes linked an issue Apr 29, 2026 that may be closed by this pull request
9 tasks
Adopt the release-branch model: publish stable 1.0.0 to npm @latest from
a long-lived release/frontend-base branch, and -alpha prereleases to
@Alpha from frontend-base. Bump the @openedx/frontend-base peer
dependency to the released stable (^1.0.0).

Co-Authored-By: Claude <noreply@anthropic.com>
@arbrandes arbrandes mentioned this pull request Aug 20, 2026
9 tasks done
arbrandes and others added 6 commits August 28, 2026 15:26
Ports the org-wide SHA-pinning that landed on master in a2e110c and
f5ef023, plus the dependabot bumps since, so that landing this branch
with `-s ours` does not silently revert it.

The only remaining difference from master's ci.yml is this branch's own
`Build (CI)` step.

Co-Authored-By: Claude <noreply@anthropic.com>
Per OEP-65 ADR 0004 section 3, the annotation names the branch that still
carries the micro-frontend once this branch takes over master. Teak, Ulmo
and Verawood all ship it, so it is `legacy-mfe` rather than null.

Co-Authored-By: Claude <noreply@anthropic.com>
Points semantic-release and the release workflow at `stable` (latest) and
`master` (alpha) instead of `release/frontend-base` and `frontend-base`,
and adds the n.x / n.m.x maintenance branch patterns.

`release/frontend-base` has already been renamed to `stable` and carries
the same change; `master` becomes the unstable line when this branch
lands. From this commit on, pushes to this branch no longer trigger
Release CI, which is deliberate for the duration of the landing.

Also pins the release workflow's actions to the same SHAs ci.yml uses.

Part of openedx/public-engineering#563.

Co-Authored-By: Claude <noreply@anthropic.com>
Adds a `Branches and Releases` section covering the OEP-10 ADR 0002
layout, states that this repository no longer participates in Open edX
releases by branch, and names `legacy-mfe` as where the micro-frontend
lives and where its release/RELEASENAME branches are cut.

Replaces the tutor-mfe development pointer, which does not apply to an
App Repository, with the `npm run dev` flow and the frontend-base npm
workspace setup.

Replaces the build-time environment variable tables with a Configuration
section describing how `getAppConfig` resolves app config, pointing at
`src/app.ts` for the full key list and keeping prose only for the keys
whose behaviour is not obvious. `MFE_CONFIG_API_URL` and `APP_ID` are
dropped: they no longer exist.

Also repoints the badges, two of which were dead - a Travis badge and a
CI badge that pointed at edx-developer-docs.

Co-Authored-By: Claude <noreply@anthropic.com>
Nothing in the App Repository reads it; dev configuration lives in
site.config.dev.tsx.

Co-Authored-By: Claude <noreply@anthropic.com>
Brings the section hierarchy in line with frontend-template-application
and the other landed App Repositories. Getting Help, License,
Contributing, The Open edX Code of Conduct, People and Reporting
Security Issues were all nested under Getting Started; they become
top-level sections, in the template's order.

Adds the two sections this README was missing: Slots, pointing at
src/slots/, and Developing, covering the project structure, the
difference between the library build and the CI build, and where the
i18n documentation lives.

Drops the empty `Known Issues` section, which the template does not
have.

Co-Authored-By: Claude <noreply@anthropic.com>
@arbrandes
arbrandes marked this pull request as ready for review August 28, 2026 18:37
@arbrandes
arbrandes removed the request for review from a team August 28, 2026 18:37
The frontend-base branch takes over master. This repository is now an App
Repository: a library published to NPM that plugs into the Open edX frontend
shell, rather than a standalone micro-frontend. Its branches follow OEP-10
ADR 0002, and it is no longer branched or tagged for Open edX releases in
its own right.

The micro-frontend goes on living on legacy-mfe, which is where any further
release/RELEASENAME branches for it are cut, for as long as a supported
release still ships it.

Closes #1685.

Co-Authored-By: Claude <noreply@anthropic.com>
@codecov

codecov Bot commented Aug 28, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 84.21053% with 36 lines in your changes missing coverage. Please review.
✅ Project coverage is 92.03%. Comparing base (562260b) to head (c9bfd49).
⚠️ Report is 84 commits behind head on master.

Files with missing lines Patch % Lines
...essive-profiling/ProgressiveProfilingPageModal.jsx 28.57% 5 Missing ⚠️
src/register/RegistrationPage.jsx 76.47% 4 Missing ⚠️
src/routes.jsx 0.00% 4 Missing ⚠️
src/Main.tsx 0.00% 3 Missing ⚠️
src/common-components/PasswordField.jsx 50.00% 3 Missing ⚠️
src/common-components/EnterpriseSSO.jsx 60.00% 2 Missing ⚠️
src/common-components/NotFoundPage.jsx 33.33% 2 Missing ⚠️
src/login/LoginPage.jsx 80.00% 2 Missing ⚠️
src/reset-password/data/apiHook.ts 50.00% 2 Missing ⚠️
src/app.ts 0.00% 1 Missing ⚠️
... and 8 more
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #1512      +/-   ##
==========================================
+ Coverage   91.02%   92.03%   +1.01%     
==========================================
  Files         110       93      -17     
  Lines        2350     2047     -303     
  Branches      666      588      -78     
==========================================
- Hits         2139     1884     -255     
+ Misses        204      160      -44     
+ Partials        7        3       -4     

☔ 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
arbrandes merged commit c9bfd49 into master Aug 28, 2026
5 of 6 checks passed
@openedx-semantic-release-bot

Copy link
Copy Markdown

🎉 This PR is included in version 2.0.0-alpha.1 🎉

The release is available on:

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Land frontend-base Land the frontend-base branch Convert Authn to frontend-base

10 participants