Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
77 commits
Select commit Hold shift + click to select a range
8f8531a
refactor: migrate to frontend-base
arbrandes Jun 15, 2025
7c8051a
test: fix a couple of tests
arbrandes Jun 26, 2025
014a990
docs: remove reference to devstack
arbrandes Jun 26, 2025
3d77880
fix: update index.html
arbrandes Jun 26, 2025
aea12a6
fix: remove catch-all route
arbrandes Jun 26, 2025
6acbf64
chore: prepare for publication
arbrandes Jun 26, 2025
4dd5ddc
refactor: use appId from constants
arbrandes Jun 27, 2025
18951cc
chore: clean up npmignore
arbrandes Jun 27, 2025
1ecdb0b
chore: gitignore npm pack artifacts
arbrandes Jun 27, 2025
033e0fd
feat: handle authentication roles
arbrandes Jun 28, 2025
095b156
chore: bump frontend-base
arbrandes Jun 28, 2025
762ff75
Merge pull request #1515 from arbrandes/frontend-base-fixes
arbrandes Jun 28, 2025
b811648
v1.0.0-alpha.0
arbrandes Jun 28, 2025
f83f24a
chore: bump frontend-base
arbrandes Jun 28, 2025
7efa279
1.0.0-alpha.1
arbrandes Jun 28, 2025
b6c659c
feat: redirect to route role on successful login
arbrandes Jun 29, 2025
c98b9a1
1.0.0-alpha.2
arbrandes Jun 29, 2025
3252b59
fix: bump frontend-base
arbrandes Jun 29, 2025
967c52b
1.0.0-alpha.3
arbrandes Jun 29, 2025
9a48fe3
fix: work around inotify handle starvation
arbrandes Jul 24, 2025
c602136
chore: bump frontend-base and regenerate package-lock
arbrandes Aug 20, 2025
2d6b401
1.0.0-alpha.4
arbrandes Aug 20, 2025
49f42a8
feat!: add design tokens support
arbrandes Dec 8, 2025
4f79099
build: Upgrade to Node 24
arbrandes Dec 12, 2025
dad2887
fix: linting errors
arbrandes Dec 12, 2025
c107093
fix: bump frontend-base
arbrandes Dec 17, 2025
f311539
fix: CI
arbrandes Dec 17, 2025
e53c499
fix: missing styles
arbrandes Jan 6, 2026
45535ee
build: Add minimum node version warning
arbrandes Jan 13, 2026
92208a0
1.0.0-alpha.5
arbrandes Feb 9, 2026
1a0a6e3
feat: added code spliting on main module (#1627)
holaontiveros Feb 12, 2026
b9f2c5d
feat!: compile to JS before publishing
arbrandes Feb 6, 2026
2337a71
1.0.0-alpha.6
arbrandes Mar 4, 2026
ed58e02
chore: update route base path
holaontiveros Feb 13, 2026
fe44896
chore: bump frontend-base to 1.0.0-alpha.14
arbrandes Mar 6, 2026
5e41382
refactor: replace injectIntl with useIntl
diana-villalvazo-wgu Mar 6, 2026
df9454b
chore: handle forbidden username exceptions on registration
hassan-raza-1 Mar 6, 2026
4fc41b0
fix: username suggestions alignment
ihor-romaniuk Mar 6, 2026
c31c397
feat: add Slot for login page
xitij2000 Mar 6, 2026
7bfb5d1
fix: add missing space symbol to the 'additional.help.text' field
bydawen Mar 6, 2026
65462e7
fix: adding value length check for full name field
cmltaWt0 Mar 6, 2026
cb3ad5c
feat: migrate from Redux to React Query and React Context
arbrandes Mar 6, 2026
3dbd6a7
fix: pass correct arguments to setEmailSuggestionContext in handleSug…
arbrandes Mar 6, 2026
70ffc55
fix: move navigate() calls from render to useEffect in ResetPasswordPage
arbrandes Mar 6, 2026
5d8743f
fix: use functional state updater in validateInput to prevent stale c…
arbrandes Mar 6, 2026
1733f6e
fix: remove duplicate RedirectLogistration in ProgressiveProfiling
arbrandes Mar 6, 2026
fc40952
fix: correct LoginContext setter types and remove dead PASSWORD_RESET…
arbrandes Mar 6, 2026
bb3ab6c
perf: add staleTime to third-party auth context query
arbrandes Mar 6, 2026
e52d3d8
fix: include payload in TPA query key to prevent stale cache
arbrandes Mar 6, 2026
8dcf552
fix: call setThirdPartyAuthContextBegin only on mount in LoginPage
arbrandes Mar 6, 2026
86b4ea7
perf: add enabled flag to TPA query hook to skip unnecessary fetches
arbrandes Mar 6, 2026
56d8a10
fix: add missing deps to registrationResult useEffect
arbrandes Mar 12, 2026
c2a3c70
fix: address review nits for test mock cleanup
arbrandes Mar 12, 2026
444e825
test: restore missing test coverage for items 6, 8, 9
arbrandes Mar 12, 2026
1267024
style: add explanatory comments for late imports after jest.mock()
arbrandes Mar 13, 2026
c0cf462
refactor: decouple PasswordField from RegisterContext via props
arbrandes Mar 13, 2026
ec11c96
feat: handle relative next param locally after login/registration
arbrandes Mar 13, 2026
93f0889
fix: use role-based routing
arbrandes Mar 16, 2026
32bf75e
feat: Internal dashboard navigation
arbrandes Mar 16, 2026
0cf13b3
refactor: simplify onSuccess redirect logic in login and registration
arbrandes Mar 16, 2026
575892f
fix: treat dashboard route role as optional with '/' fallback
arbrandes Mar 19, 2026
510de50
fix: simplify i18n extraction pipeline
brian-smith-tcril Mar 26, 2026
3f7ceb5
feat: support npm workspaces for local development
arbrandes Mar 12, 2026
ffe7e18
build: add semantic-release for automated npm publishing
arbrandes Apr 2, 2026
222a0af
feat: add atlasTranslations to package.json
brian-smith-tcril Apr 6, 2026
48d97e8
feat: properly use `openedx translations:pull`
brian-smith-tcril Apr 7, 2026
956cf7f
chore: rename i18n index to .ts, add messages.d.ts, clean up Makefile
brian-smith-tcril Apr 9, 2026
3764889
fix: pass ATLAS_OPTIONS through to translations:pull
brian-smith-tcril Apr 9, 2026
80394d2
chore: trigger release
arbrandes Apr 9, 2026
e11cd04
fix: remove authnMessages export from index.ts
brian-smith-tcril Apr 9, 2026
b61a6f4
feat: provide chromeless roles to hide shell header and footer
arbrandes Apr 9, 2026
104975f
fix: use roles array in route handle config
arbrandes Apr 15, 2026
ab1bc56
fix: adopt frontend-base shell style manifest
arbrandes Apr 21, 2026
d859ebf
chore: name the authn-main webpack chunk
arbrandes Apr 22, 2026
65c13df
chore: add build:ci smoke test to verify webpack build
arbrandes Apr 22, 2026
d1993a6
fix: set document title via Helmet on the not-found route
arbrandes Apr 29, 2026
9d8c25c
fix: publish stable releases from a release/frontend-base branch
arbrandes Jul 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 0 additions & 43 deletions .env

This file was deleted.

4 changes: 0 additions & 4 deletions .env.private.example

This file was deleted.

20 changes: 0 additions & 20 deletions .env.test

This file was deleted.

6 changes: 0 additions & 6 deletions .eslintignore

This file was deleted.

52 changes: 0 additions & 52 deletions .eslintrc.js

This file was deleted.

3 changes: 3 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,9 @@ jobs:
- name: Build
run: npm run build

- name: Build (CI)
run: npm run build:ci

- name: Run Code Coverage
uses: codecov/codecov-action@v5
with:
Expand Down
33 changes: 33 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: Release CI
on:
push:
branches:
- frontend-base
- release/frontend-base

permissions:
id-token: write # Required for OIDC
contents: write # For Semantic Release tagging

jobs:
release:
name: Release
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v6
with:
fetch-depth: 0

- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version-file: '.nvmrc'

- name: Install dependencies
run: npm ci

- name: Release to npm/Github
run: npx semantic-release@25
env:
GITHUB_TOKEN: ${{ secrets.OPENEDX_SEMANTIC_RELEASE_GITHUB_TOKEN }}
22 changes: 11 additions & 11 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,21 +1,21 @@
.DS_Store
.eslintcache
.idea
node_modules
npm-debug.log
coverage
module.config.js
.env.private

dist/
src/i18n/transifex_input.json
temp/babel-plugin-react-intl
packages/
/.turbo
/turbo.json
/*.tgz

### pyenv ###
.python-version
### i18n ###
src/i18n/transifex_input.json
src/i18n/messages.ts
src/i18n/messages/
src/i18n/site-messages/index.ts

### Emacs ###
### Editors ###
.DS_Store
*~
/temp
/.vscode
src/i18n/messages
15 changes: 5 additions & 10 deletions .npmignore
Original file line number Diff line number Diff line change
@@ -1,11 +1,6 @@
.eslintignore
.eslintrc.json
.gitignore
docker-compose.yml
Dockerfile
Makefile
npm-debug.log

coverage
__mocks__
node_modules
public
*.test.js
*.test.jsx
*.test.ts
*.test.tsx
2 changes: 1 addition & 1 deletion .nvmrc
Original file line number Diff line number Diff line change
@@ -1 +1 @@
20
24
13 changes: 13 additions & 0 deletions .releaserc
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"branches": [
{ "name": "release/frontend-base", "channel": "latest" },
{ "name": "frontend-base", "prerelease": "alpha", "channel": "alpha" }
],
"tagFormat": "v${version}",
"plugins": [
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
"@semantic-release/npm",
"@semantic-release/github"
]
}
71 changes: 43 additions & 28 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,10 +1,4 @@
intl_imports = ./node_modules/.bin/intl-imports.js
transifex_utils = ./node_modules/.bin/transifex-utils.js
i18n = ./src/i18n
transifex_input = $(i18n)/transifex_input.json

# This directory must match .babelrc .
transifex_temp = ./temp/babel-plugin-formatjs
TURBO = TURBO_TELEMETRY_DISABLED=1 turbo --dangerously-disable-package-manager-check

precommit:
npm run lint
Expand All @@ -13,32 +7,53 @@ precommit:
requirements:
npm ci

i18n.extract:
# Pulling display strings from .jsx files into .json files...
rm -rf $(transifex_temp)
npm run-script i18n_extract
# turbo.site.json is the standalone turbo config for this package. It is
# renamed to avoid conflicts with turbo v2's workspace validation, which
# rejects root task syntax (//#) and requires "extends" in package-level
# turbo.json files, such as when running in a site repository. The targets
# below copy it into place before running turbo and clean up after.
turbo.json: turbo.site.json
cp $< $@

# NPM doesn't bin-link workspace packages during install, so it must be done manually.
bin-link:
[ -f packages/frontend-base/package.json ] && npm rebuild --ignore-scripts @openedx/frontend-base || true

build-packages: turbo.json
$(TURBO) run build; rm -f turbo.json
$(MAKE) bin-link

clean-packages: turbo.json
$(TURBO) run clean; rm -f turbo.json

i18n.concat:
# Gathering JSON messages into one file...
$(transifex_utils) $(transifex_temp) $(transifex_input)
dev-packages: turbo.json
$(TURBO) run watch:build dev:site; rm -f turbo.json

extract_translations: | requirements i18n.extract i18n.concat
dev-site: bin-link
npm run dev

# Despite the name, we actually need this target to detect changes in the incoming translated message files as well.
detect_changed_source_translations:
# Checking for changed translations...
git diff --exit-code $(i18n)
clean:
rm -rf dist

pull_translations:
rm -rf src/i18n/messages
mkdir src/i18n/messages
cd src/i18n/messages \
&& atlas pull $(ATLAS_OPTIONS) \
translations/paragon/src/i18n/messages:paragon \
translations/frontend-platform/src/i18n/messages:frontend-platform \
translations/frontend-app-authn/src/i18n/messages:frontend-app-authn
build:
tsc --project tsconfig.build.json
tsc-alias -p tsconfig.build.json
find src -type f -name '*.scss' -exec sh -c '\
for f in "$$@"; do \
d="dist/$${f#src/}"; \
mkdir -p "$$(dirname "$$d")"; \
cp "$$f" "$$d"; \
done' sh {} +

build-ci:
SITE_CONFIG_PATH=site.config.ci.tsx openedx build

extract_translations: | requirements
# Pulling display strings from source files into src/i18n/transifex_input.json...
npm run i18n_extract

$(intl_imports) paragon frontend-platform frontend-app-authn
pull_translations: | requirements
npm run translations:pull -- --atlas-options="$(ATLAS_OPTIONS)"

# This target is used by Travis.
validate-no-uncommitted-package-lock-changes:
Expand Down
26 changes: 1 addition & 25 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -34,26 +34,6 @@ Installation
.. _Tutor: https://github.com/overhangio/tutor
.. _relevant tutor-mfe documentation: https://github.com/overhangio/tutor-mfe?tab=readme-ov-file#mfe-development

Devstack (Deprecated) instructions
==================================

1. Install Devstack using the `Getting Started <https://github.com/openedx/devstack#getting-started>`_ instructions.

2. Start up LMS, if it's not already started.

4. Within this project (frontend-app-authn), install requirements and start the development server:

.. code-block::

npm install
npm start # The server will run on port 1999

5. Once the dev server is up, visit http://localhost:1999 to access the MFE

.. image:: ./docs/images/frontend-app-authn-localhost-preview.png

**Note:** Follow `Enable social auth locally <docs/how_tos/enable_social_auth.rst>`_ for enabling Social Sign-on Buttons (SSO) locally

Environment Variables/Setup Notes
=================================

Expand Down Expand Up @@ -143,10 +123,6 @@ Furthermore, there are several edX-specific environment variables that enable in
- Enables support for opting in marketing emails that helps us getting user consent for sending marketing emails.
- ``true`` | ``''`` (empty strings are falsy)

* - ``SHOW_CONFIGURABLE_EDX_FIELDS``
- For edX, country and honor code fields are required by default. This flag enables edX specific required fields.
- ``true`` | ``''`` (empty strings are falsy)

For more information see the document: `Micro-frontend applications in Open
edX <https://github.com/overhangio/tutor-mfe?tab=readme-ov-file#mfe-development>`__.

Expand Down Expand Up @@ -225,4 +201,4 @@ Please see `LICENSE <https://github.com/openedx/frontend-app-authn/blob/master/L
:target: https://github.com/openedx/edx-developer-docs/actions/workflows/ci.yml
:alt: Continuous Integration
.. |semantic-release| image:: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg
:target: https://github.com/semantic-release/semantic-release
:target: https://github.com/semantic-release/semantic-release
5 changes: 5 additions & 0 deletions app.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
/// <reference types="@openedx/frontend-base" />

declare module 'site.config' {
export default SiteConfig;
}
3 changes: 3 additions & 0 deletions babel.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
const { createConfig } = require('@openedx/frontend-base/tools');

module.exports = createConfig('babel');
Loading
Loading