You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
❌ This issue is not open for contribution. Visit Contributing guidelines to learn about the contributing process and how to find suitable issues.
Overview
Migrate kolibri-oidc-client-plugin from its standalone repo into python_packages/ as a workspace member.
It has frontend code (OIDCLogin.vue) alongside Python. Resolving its JS deps against the local pnpm workspace requires adding python_packages/* to pnpm-workspace.yaml — the first migration to do so. That glob change also pulls kolibri-sentry-plugin into the workspace. So this issue also finishes sentry's frontend wiring and adds the publish-workflow entry #14666 missed.
Per-plugin migration under #13720, following #14663 (setup), #14666 (sentry), and the Python-only sync-extras migration.
Complexity: Medium Target branch: develop
Context
kolibri-oidc-client-plugin lets Kolibri act as an OpenID Connect client (SSO login). Its standalone repo contains:
Move learningequality/kolibri-oidc-client-plugin contents into python_packages/kolibri-oidc-client-plugin/ (Python module + package.json).
Replace setup.cfg/setup.py with a pyproject.toml per Set up Kolibri as a Python monorepo #14663 conventions: static version field, mozilla-django-oidc declared as a dependency.
Drop standalone-only / root-duplicative files (.github/, Makefile, MANIFEST.in, LICENSE, AUTHORS.rst, CONTRIBUTING.rst, .flake8, setup.cfg, setup.py, yarn.lock); keep the plugin-specific README.
Conform the code to monorepo pre-commit (ruff etc.).
Git history
Preserve via git filter-repo --to-subdirectory-filter python_packages/kolibri-oidc-client-plugin on a fresh clone, then git merge --allow-unrelated-histories (procedure from Set up Kolibri as a Python monorepo #14663). git blame traces to original commits.
Frontend workspace integration
Add python_packages/* to pnpm-workspace.yaml (general infrastructure — retroactively makes sentry a workspace member).
kolibri → workspace:*.
kolibri-design-system → pnpm catalog (drop the #v1.3.1-beta0 git URL).
vue → 2.7.16.
kolibri-tools devDep → kolibri-build at workspace:*.
Python workspace integration
Picked up by the python_packages/* uv glob; uv sync --group dev resolves it. Add its import name to known-first-party in root pyproject.toml's ruff isort config.
Sentry catch-up (enabled by the glob change above)
Add kolibri-oidc-client-plugin to pypi_packages_publish.yml (paths filter + workflow_dispatch options).
If the plugin has Python tests, add a Stage 2 per-member-package job (modelled on sync_extras_plugin_tests) and wire it into stage2_required_checks's needs:.
Build / runtime
kolibri-build prod --plugins kolibri_oidc_client_plugin produces the JS bundle.
Wheel from the migrated dir installs into a fresh venv alongside Kolibri; OIDC login exercised against a test provider before merge.
Used Claude Code to draft this issue iteratively. I drove scope and decisions throughout — the workspace-vs-published dependency approach, modernising the JS deps as acceptance criteria, the kolibri-tools → kolibri-build rename, and folding the sentry fixes in here. Claude reviewed the source repo and the current monorepo state and surfaced two gaps not visible from #14666: sentry's package.json still uses published pins and isn't in pnpm-lock.yaml, and sentry was never added to pypi_packages_publish.yml.
❌ This issue is not open for contribution. Visit Contributing guidelines to learn about the contributing process and how to find suitable issues.
Overview
Migrate
kolibri-oidc-client-pluginfrom its standalone repo intopython_packages/as a workspace member.It has frontend code (
OIDCLogin.vue) alongside Python. Resolving its JS deps against the local pnpm workspace requires addingpython_packages/*topnpm-workspace.yaml— the first migration to do so. That glob change also pullskolibri-sentry-plugininto the workspace. So this issue also finishes sentry's frontend wiring and adds the publish-workflow entry #14666 missed.Per-plugin migration under #13720, following #14663 (setup), #14666 (sentry), and the Python-only sync-extras migration.
Complexity: Medium
Target branch: develop
Context
kolibri-oidc-client-pluginlets Kolibri act as an OpenID Connect client (SSO login). Its standalone repo contains:kolibri_oidc_client_plugin/):kolibri_plugin.py,auth.py,options.py,root_urls.py,settings.py,buildConfig.js.assets/src/views/OIDCLogin.vue.package.json(private: true) with stale pins:kolibri ^0.15.4, KDS via a#v1.3.1-beta0git URL,vue 2.6.14,kolibri-tools 0.16.0-dev.3.mozilla-django-oidc==1.2.4(old pin), pluskolibri>=0.15.setup.cfg/setup.py,Makefile,MANIFEST.in,CONTRIBUTING.rst,.flake8, standalone CI,yarn.lock.The Change
Code migration
learningequality/kolibri-oidc-client-plugincontents intopython_packages/kolibri-oidc-client-plugin/(Python module +package.json).setup.cfg/setup.pywith apyproject.tomlper Set up Kolibri as a Python monorepo #14663 conventions: staticversionfield,mozilla-django-oidcdeclared as a dependency..github/,Makefile,MANIFEST.in,LICENSE,AUTHORS.rst,CONTRIBUTING.rst,.flake8,setup.cfg,setup.py,yarn.lock); keep the plugin-specificREADME.Git history
git filter-repo --to-subdirectory-filter python_packages/kolibri-oidc-client-pluginon a fresh clone, thengit merge --allow-unrelated-histories(procedure from Set up Kolibri as a Python monorepo #14663).git blametraces to original commits.Frontend workspace integration
python_packages/*topnpm-workspace.yaml(general infrastructure — retroactively makes sentry a workspace member).kolibri→workspace:*.kolibri-design-system→ pnpm catalog (drop the#v1.3.1-beta0git URL).vue→2.7.16.kolibri-toolsdevDep →kolibri-buildatworkspace:*.Python workspace integration
python_packages/*uv glob;uv sync --group devresolves it. Add its import name toknown-first-partyin rootpyproject.toml's ruff isort config.Sentry catch-up (enabled by the glob change above)
package.jsondeps toworkspace:*/catalog (samekolibri-tools→kolibri-buildswap) and record it inpnpm-lock.yaml— finishing the frontend wiring Migrate kolibri-sentry-plugin into the Python monorepo #14666 intended.kolibri-sentry-plugintopypi_packages_publish.yml(missed in Migrate kolibri-sentry-plugin into the Python monorepo #14666).Publishing / CI
kolibri-oidc-client-plugintopypi_packages_publish.yml(paths filter +workflow_dispatchoptions).sync_extras_plugin_tests) and wire it intostage2_required_checks'sneeds:.Build / runtime
kolibri-build prod --plugins kolibri_oidc_client_pluginproduces the JS bundle.Out of Scope
mozilla-django-oidcis allowed where needed for the migration to work).Acceptance Criteria
Code migration
python_packages/kolibri-oidc-client-plugin/(Python module +package.json).pyproject.tomlreplacessetup.cfg/setup.py, follows Set up Kolibri as a Python monorepo #14663 conventions, declares a staticversionandmozilla-django-oidc..github/,Makefile,MANIFEST.in,LICENSE,AUTHORS.rst,CONTRIBUTING.rst,.flake8,setup.cfg,setup.py,yarn.lock) absent from the migrated directory.git filter-repo --to-subdirectory-filter;git blametraces to original commits.Frontend workspace integration
pnpm-workspace.yamlincludespython_packages/*.package.json:kolibriatworkspace:*, KDS from catalog (no git URL),vue 2.7.16,kolibri-buildatworkspace:*replacingkolibri-tools.pnpm installrecords oidc-client inpnpm-lock.yamlwith deps resolved to local workspace packages.Python workspace integration
uv sync --group devincludes it.known-first-party.Sentry catch-up
package.jsondeps converted toworkspace:*/catalog; sentry recorded inpnpm-lock.yaml.pypi_packages_publish.ymllistskolibri-sentry-plugin.Publishing / CI
pypi_packages_publish.ymllistskolibri-oidc-client-plugin(paths filter + workflow_dispatch options).stage2_required_checks'sneeds:.Build and runtime
kolibri-build prod --plugins kolibri_oidc_client_pluginproduces the JS bundle in the expected location.References
AI usage
Used Claude Code to draft this issue iteratively. I drove scope and decisions throughout — the workspace-vs-published dependency approach, modernising the JS deps as acceptance criteria, the
kolibri-tools→kolibri-buildrename, and folding the sentry fixes in here. Claude reviewed the source repo and the current monorepo state and surfaced two gaps not visible from #14666: sentry'spackage.jsonstill uses published pins and isn't inpnpm-lock.yaml, and sentry was never added topypi_packages_publish.yml.