Skip to content

feat!: migrate to frontend-base#669

Draft
arbrandes wants to merge 79 commits into
masterfrom
frontend-base
Draft

feat!: migrate to frontend-base#669
arbrandes wants to merge 79 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.

BREAKING CHANGE: refactors the MFE for frontend-base.
@arbrandes arbrandes requested a review from a team as a code owner June 24, 2025 18:58
@arbrandes arbrandes marked this pull request as draft June 24, 2025 18:59
@brian-smith-tcril

Copy link
Copy Markdown
Contributor

When trying to run npm run dev locally I hit the following error:

node:internal/fs/watchers:247
    const error = new UVException({
                  ^

Error: ENOSPC: System limit for number of file watchers reached, watch '/home/bsmith/code/frontend-app-learner-dashboard/node_modules/serve-index/node_modules/http-errors/LICENSE'

I did a bit of searching and found https://stackoverflow.com/a/65621732

I had the same problem. However, mine was coming from Webpack. Thankfully, they had a great solution on their site:

For some systems, watching many files can result in a lot of CPU or memory usage. It is possible to exclude a huge folder like node_modules using a regular expression:

module.exports = {
  watchOptions: {
    ignored: /node_modules/
  }
};

I haven't tried, but my guess is that adding a watchOptions block to https://github.com/openedx/frontend-base/blob/main/tools/webpack/webpack.config.dev.ts might fix this.

@arbrandes

arbrandes commented Jun 25, 2025

Copy link
Copy Markdown
Contributor Author

@brian-smith-tcril, what I did was just increase my fs.inotify.max_user_watches to 524288 in sysctl.conf. There's no reason to stick with the low default on modern systems.

That said, yes, it's arguable that few people will go messing around in node_modules, and fewer still would expect changes to be applied immediately.

Comment thread Makefile Outdated
Comment thread src/data/services/lms/urls.test.js Outdated
@arbrandes arbrandes linked an issue Jun 25, 2025 that may be closed by this pull request
16 tasks
@brian-smith-tcril

Copy link
Copy Markdown
Contributor

@brian-smith-tcril, what I did was just increase my fs.inotify.max_user_watches to 524288 in sysctl.conf. There's no reason to stick with the low default on modern systems.

That said, yes, it's arguable that few people will go messing around in node_modules, and fewer still would expect changes to be applied immediately.

Yeah, some of the other answers on that stackoverflow thread recommended increasing that limit. The reason excluding node_modules feels like a better solution to me is that it removes the need to do some "scary" (even if it's a reasonable change) configuration of dev environments.

@openedx-semantic-release-bot

Copy link
Copy Markdown

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

The release is available on:

Your semantic-release bot 📦🚀

brian-smith-tcril and others added 3 commits April 9, 2026 10:02
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Rename src/i18n/index.js → index.ts (project uses TypeScript)
- Replace placeholder messages object with clean re-export from ./messages
- Add src/i18n/messages.d.ts type stub so TypeScript is satisfied before
  translations:pull has been run
- Add translations:pull npm script (backed by openedx translations:pull)
- Replace old atlas-based pull_translations Makefile target with
  npm run translations:pull, passing ATLAS_OPTIONS through
- Remove unused intl_imports, i18n, ATLAS_EXTRA_SOURCES, and
  ATLAS_EXTRA_INTL_IMPORTS Makefile variables
- Remove detect_changed_source_translations Makefile target (unused by
  any CI workflow, extract_translations, or pull_translations)
- Add src/i18n/messages.ts, src/i18n/messages/, and
  src/i18n/site-messages/index.ts to .gitignore (generated files)
- Update package-lock to resolve @openedx/frontend-base to 1.0.0-alpha.23

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

Copy link
Copy Markdown

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

The release is available on:

Your semantic-release bot 📦🚀

The old App.messages pattern included apps exporting their messages via
\`src/index.ts\`. There is no reason for apps to export this. The file
only exists so the app can run as a site with \`npm run dev\`. With
frontend-base's i18n pipeline, translations are handled at the site
level via \`site.i18n\`.

App-only testing didn't catch this because the webpack fallback plugin
correctly resolves the missing messages file when \`npm run dev\` is
running the app as a site from the repo root (\`src/i18n/\` context).
The broken export only surfaces when the compiled \`dist/\` is consumed
by a site.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@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 📦🚀

arbrandes and others added 2 commits April 13, 2026 14:39
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.10 🎉

The release is available on:

Your semantic-release bot 📦🚀

Fixes #829

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 📦🚀

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 📦🚀

Use a roles array in the dashboard route so that header slot widgets
scope correctly to the dashboard role, and set the Courses link URL
accordingly.

Also wrap MasqueradeBar in a Paragon Container so its content aligns
with the header and main content areas.

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 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. Removes
the ./app.scss subpath export and drops @edx/brand since the dev
harness runs unbranded.

See 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.14 🎉

The release is available on:

Your semantic-release bot 📦🚀

arbrandes and others added 2 commits April 23, 2026 11:31
Adds an npm run build:ci script that exercises the real app graph through webpack, and wires it into the CI workflow after the existing build step.

Co-Authored-By: Claude <noreply@anthropic.com>
Ports the CertificateBanner portion of 5e69cf8 (#813). The
ResumeButton changes from that commit are already covered by
4a75852.

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.15 🎉

The release is available on:

Your semantic-release bot 📦🚀

@arbrandes arbrandes changed the title refactor: migrate to frontend-base feat!: migrate to frontend-base Apr 24, 2026
brian-smith-tcril and others added 2 commits April 29, 2026 12:43
…#840)

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Adopt the per-page document title pattern from frontend-base ADR 0015,
so the browser tab no longer keeps the previous app's title (commonly
"Login | <site>" after sign-in via authn).

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.16 🎉

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
4 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

Land frontend-base Convert Learner Dashboard to frontend-base