Skip to content

Conversation

@rtibbles
Copy link
Member

@rtibbles rtibbles commented Oct 30, 2025

Summary

  • Migrates the hashi package to kolibri-sandbox - updates all names except those needed for backwards compatibility
  • Creates a new kolibri-glob package to house our slim wrapper around glob
  • Creates a kolibri-build package, specifically focused on building Javascript for plugins
  • Creates a kolibri-i18n package, focused solely on extracting messages and converting to and from CSV/JSON formats
  • Deletes all crowdin API code in favour of the Crowdin CLI utility
  • Changes our Crowdin upload workflow to only ever have a single 'release' branch that we upload updates to, thus removing the need to transfer screenshots across releases
  • Moves all non-crowdin related i18n Python code into build_tools/i18n as it is only needed in the Kolibri repository
  • Instead of recreating the kolibri test behaviour, instead just creates a package that exposes the jest configuration for reuse
  • Updates github action for npm publishing to include the new packages
  • Adds two manually dispatched github actions - one for uploading strings to crowdin, one for downloading strings from crowdin and making a PR to commit them

References

Fixes #8454

Reviewer guidance

As long as the build passes, this will also need checking of things that use the kolibri-sandbox, such as HTML5, H5P, and Bloompub resources.
I have personally tested upload and download to crowdin, but a double check wouldn't hurt, and a review of the documentation tweaks (by doing what it says in the docs) would be helpful!

Note that I used Claude Code extensively for this, but mostly in terms of code movement, path updating, and renaming things. It also generated the two new Python utilities, for generating language mappings and cleaning up unsupported language locale folders.

Create kolibri-glob package for reuse across other packages.
Clean up kolibri-tools code that has been migrated to kolibri-build.
@github-actions github-actions bot added DEV: dev-ops Continuous integration & deployment DEV: renderers HTML5 apps, videos, exercises, etc. DEV: backend Python, databases, networking, filesystem... APP: Learn Re: Learn App (content, quizzes, lessons, etc.) DEV: frontend DEV: tools Internal tooling for development SIZE: very large labels Oct 30, 2025
@rtibbles
Copy link
Member Author

Looks like I missed some cleanup here - will resolve before asking for any review.

@github-actions
Copy link
Contributor

github-actions bot commented Oct 30, 2025

@rtibbles
Copy link
Member Author

I think all cleanup should have happened now.

Copy link
Member

@marcellamaki marcellamaki left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've tested the different content types with the sandbox, checked the crowdin workflows by using the updated docs, and had no issues. I have not read through every line of this code, but I suspect that I wouldn't catch things in that way anyways. I think the best bet here is for this to be included in our integration testing for peter to confirm no critical regressions.

@rtibbles rtibbles merged commit 349b2d6 into learningequality:develop Nov 5, 2025
52 checks passed
@rtibbles rtibbles deleted the packages branch November 5, 2025 21:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

APP: Learn Re: Learn App (content, quizzes, lessons, etc.) DEV: backend Python, databases, networking, filesystem... DEV: dev-ops Continuous integration & deployment DEV: frontend DEV: renderers HTML5 apps, videos, exercises, etc. DEV: tools Internal tooling for development SIZE: very large

Projects

None yet

Development

Successfully merging this pull request may close these issues.

updates to naming and versioning of internal packages and tools

2 participants