Skip to content

Releases: learningequality/studio

v2026.05.14

14 May 21:09
89a2796

Choose a tag to compare

What's Changed

  • Fixes issue with Stripe redirect after payment in production.

Supporting PRs:

Full Changelog: v2026.05.13...v2026.05.14

v2026.05.13

13 May 21:33
d39e5ca

Choose a tag to compare

What's Changed

High level overview

Easy Sharing of Community Channels lets channel editors share their channels with the broader Kolibri community. Editors submit a channel with country, language, and subject metadata, walk through a license audit to confirm their resources are shareable, and get notified when an admin reviewer approves the submission or asks for changes.

The question editor has been overhauled. Editors can now apply bold, italic, underline, and strikethrough; create ordered and unordered lists and headings; embed images, formulas, and links; and paste content from Microsoft Word and other editors with much less cleanup needed afterwards.

Added

New Feature: Easy Sharing of Community Channels

Channel editors can share their channels with the broader Kolibri community via admin review.

  • Submit a channel to the community library via a new Share button. Editors fill in country and description; languages and subjects are auto-populated.
  • License audit scans the channel at submission. Channels containing All Rights Reserved resources are blocked. Channels containing resources under licenses that require special permissions are flagged so admins can review the license description.
  • Admin review — admins filter submissions by community status, review any license descriptions flagged by the audit, add notes, and approve or request changes.
  • Notifications for all editors of a channel when a submission is approved or needs changes.
  • Resubmit prompt when a previously-submitted channel is republished.

A related draft channel publishing workflow sits behind the draft_channels feature flag — editors can publish a draft for testing in Kolibri without changing the live version of the channel.

List of supporting PRs
  • CommunityLibrarySubmission model by @Jakoma02 in #5156
  • Populate Country table by @Jakoma02 in #5168
  • CommunityLibrarySubmission viewset by @Jakoma02 in #5167
  • Save channel included categories and expose channel version history by @Jakoma02 in #5176
  • Add action to resolve Community Library Submissions by @Jakoma02 in #5178
  • Add to community library on submission approve by @Jakoma02 in #5228
  • Update channel logic to support publishing channel draft by @taoerman in #5241
  • Copy Side Panel Modal and add community channels strings file by @AlexVelezLl in #5216
  • Update channel publishing UX to support publishing channel draft versions by @taoerman in #5274
  • Community library submission fields and filters in AdminChannelViewSet by @Jakoma02 in #5292
  • Add bitmask fields for ChannelMetadata categories by @Jakoma02 in #5272
  • Ensure channel version database exists when adding to community library by @Jakoma02 in #5233
  • ESoCC: Update UIUX of admin ChannelTable to support new Community Library info by @Jakoma02 in #5370
  • Submit to Community Library panel by @Jakoma02 in #5405
  • Add a public filter to the kolibri-public's ChannelMetadata viewset by @taoerman in #5486
  • Prevent inconsistent states beteween public channels and community ch… by @taoerman in #5500
  • Info messages about previous submissions in create submission side panel by @taoerman in #5513
  • Add loader if channel is being published and community library side p… by @taoerman in #5523
  • Hide share button in TreeViewBase if user does not have permissions t… by @taoerman in #5550
  • Handle deletion of a Channel with a related Community Library Submission by @taoerman in #5551
  • Create license audit task and special permissions model by @taoerman in #5538
  • Show resubmit channel to community library CTA after channel publish by @taoerman in #5541
  • Community Library Notifications Filtering by @taoerman in #5566
  • Issue 5449 show license audit and special permissions checks by @taoerman in #5563
  • Create ChannelVersion model with token support by @taoerman in #5589
  • Refactor publish side panel by @AlexVelezLl in #5603
  • Use channelVersion objects instead of special permission ids by @taoerman in #5622
  • Temporarily hide draft button. by @rtibbles in #5652
  • [ESoCC] Command to create channel versions by @nucleogenesis in #5660
  • Compute license audit task results during publish workflow by @taoerman in #5665
  • Set distributable Special Permissions Licenses by @taoerman in #5681
  • Add migration command for channel versioned content databases by @ozer550 in #5692
  • Add Notifications page by @AlexVelezLl in #5610
  • Add submission details page by @AlexVelezLl in #5716
  • Show version history in the channel publish side panel by @AllanOXDi in #5721
  • Remove channelVersion object and database with version "next" when stale by @ozer550 in #5728
  • Show draft tokens in Studio by @AlexVelezLl in #5729
  • Add draft_channels feature flag by @AlexVelezLl in #5759
  • Add support for channel version tokens on v1 public channel endpoint by @AlexVelezLl in #5772
  • Community channels page by @AlexVelezLl in #5770
  • Update ChannelVersion size field type to FloatField by @AlexVelezLl in #5799
  • Review submission side panel by @Jakoma02 in #5630
  • Add details to submit panel about acceptance criteria by @marcellamaki in #5820
  • feat: add library field to v1 and v2 public channel APIs, gate v1 ChannelVersion lookup by @rtibblesbot in #5828
  • Update ESoCC strings after UX writing review by @marcellamaki in #5819
  • Add guards for channel version computed values by @AlexVelezLl in #5858
  • Robust solution for filtering unpublishable changes on frontend by @AlexVelezLl in #5844
  • Revert "Temporarily hide draft button." by @rtibbles in #5856
  • Update community library page by @AlexVelezLl in #5809
  • Fix duplicate community library submission by @AlexVelezLl in #5773
  • Fix add to community library change making channel publishable by @AlexVelezLl in #5825
  • Fix lookup not finding draft tokens by @AlexVelezLl in #5857
  • fix: populate draft ChannelVersion metadata during draft publishes by @rtibblesbot in #5841
  • fix: populate channel snapshot fields on draft ChannelVersion during draft publish by @rtibblesbot in #5851
  • fix: write version=0 in ChannelMetadata for draft publishes by @rtibblesbot in #5853
  • Fill the deploy-migrate command with ESoCC migrations by @AlexVelezLl in #5878

New question editor

The question editor has been overhauled.

  • Inline formatting: bold, italic, underline, and strikethrough.
  • Content structure: ordered and unordered lists, and headings.
  • Embeds: images, formulas, and links.
  • Paste from Microsoft Word and other external editors with significantly less cleanup.
  • Touchscreen-friendly toolbar on touch devices.
  • Improved accessibility: math formulas now announce themselves correctly in screen readers, including non-English locales.
List of supporting PRs
  • feat(texteditor): Markdown dual conversion for backward compatibility by @habibayman in #5189
  • feat(texteditor): Mobile view and responsiveness enhancements by @habibayman in #5220
  • feat(texteditor): completely replace old with new TipTap editor 🎉 by @habibayman in #5246
  • refactor(texteditor...
Read more

v2026.03.25

25 Mar 20:20
d7067ef

Choose a tag to compare

What's Changed

Full Changelog: v2026.03.16...v2026.03.25

v2026.03.16

16 Mar 23:21
0d3365b

Choose a tag to compare

What's Changed

  • Downgrade non-urgent _sort_by_order logging error to warning by @LianaHarris360 in #5712
  • Fix exercise extra_fields migration for non-m_of_n mastery models by @rtibbles in #5714
  • Update snackbar to use multiline overflow option by @marcellamaki in #5730
  • Add link to new DCMA form by @marcellamaki in #5738
  • Add additional completion to exercises that have already had their completion criteria fixed but their complete value is still wrong by @rtibbles in #5731

Full Changelog: v2026.02.18...v2026.03.16

v2026.02.18

18 Feb 21:23
e315609

Choose a tag to compare

What's Changed

This release makes our new AI-powered recommendations in search (previously in beta) available for all Studio users.

Pull Requests:

  • Remove ai_feature feature flag and ungate search recommendations by @rtibblesbot in #5695
  • Add management command for auditing missing sources by @bjester in #5711

Full Changelog: v2026.01.21...v2026.02.18

v2026.01.21

22 Jan 00:11
b888505

Choose a tag to compare

What's Changed

Full Changelog: v2025.12.02...v2026.01.21

v2025.12.02

02 Dec 22:26
e5d1416

Choose a tag to compare

What's Changed

  • Pin pip due to pip-tools incompatibility. by @rtibbles in #5518
  • Add focus trapping to resource preview side panel by @AllanOXDi in #5505
  • Adds defensive check when generating language text in the language dropdown by @akolson in #5465
  • Fix responsive issues when Importing from other channels within search recommendations by @AllanOXDi in #5542
  • Fixes folders or resources with missing title remain 'incomplete' after editing just the title by @AllanOXDi in #5539
  • Make 'updateDescendants' true by default by @marcellamaki in #5075

Full Changelog: v2025.10.29...v2025.12.02

v2025.10.29

29 Oct 23:35
69a1ff4

Choose a tag to compare

What's Changed

  • Adds defensive check when reading file_format on file object by @akolson in #5440
  • Adds defensive check when validating node title by @akolson in #5464
  • Fix focus ring on some buttons + confirmation dialogs not appearing for channel sharing operations by @MisRob in #5483
  • [Remove Vuetify from Studio] Buttons/links in Import from channels by @Abhishek-Punhani in #5467
  • Restore EPUB renderer height by @bjester in #5491
  • Renames dupilicate recommendations endpoint names by @akolson in #5506
  • Add file duration setting as migration task by @rtibbles in #5508

Full Changelog: v2025.10.06...v2025.10.29

v2025.10.06

06 Oct 23:44
aeb632b

Choose a tag to compare

What's Changed

  • Fix validation to allow upload of HTML5 files by @rtibbles in #5418
  • When creating exercises, default randomize to true as data. by @rtibbles in #5427

Full Changelog: v2025.9.29...v2025.10.06

v2025.9.29

29 Sep 21:31
f538d9c

Choose a tag to compare

What's Changed

High level overview

This major release includes:

  • a closed beta for recommendations when importing content from other channels in Studio
  • support for QTI exercise export
  • foundational technical work for a new Rich Text Editor (not yet available to users in the UI)
  • foundational technical work for a staging/draft channel publishing experience (not yet available to users in the UI)
  • contributions towards the Open Source Community project "Remove Vuetify from Studio"
  • numerous bug fixes, optimizations, and improvements

Supporting PRs for Recommendations and Feedback Mechanism
Supporting PRs for Dev Experience, Automations, QoL, Environment/Build
  • Remove studio PR template in favor of org template. by @marcellamaki in #4823
  • Remove use of deprecated set-output, use pre-commit lite action instead by @rtibbles in #4806
  • Use notify_team_new_comment workflow action from .github repo by @rparadowski in #4844
  • Remove 'pull_request_review' event from the community contributions spreadsheet action by @MisRob in #4859
  • QoL improvement for IntelliJ based IDEs by @bjester in #4858
  • feat: add community contribution labeling workflow by @iamshobhraj in #4927
  • Fix the action not updating some data in the contributions tracking sheet by @MisRob in #4900
  • Add new local_dev_wsl guide and update host and docker guides with references to it by @GautamBytes in #4904
  • Node.js 18, pnpm 8, jest 29, linting/formatting updates, and webpack fixes by @bjester in #4462
  • Switch package ecosystem to npm by @bjester in #5030
  • Pin node and yarn versions by @EshaanAgg in #4822
  • Remove unused code and dependencies by @rtibbles in #4934
  • Reinstate .styl noop replacement for production webpack builds by @bjester in #5344
  • unassign inactive users by @SukhvirKooner in #4979
  • Revert flake8 and re-formats python files by @akolson in #5044
  • Update Minio download link in local_dev_host.md and host_setup_services.md by @GautamBytes in #4892
  • Prepare transition to postgresql 16 by @bjester in #4912
  • Update contact information in the contributing guidelines by @MisRob in #4932
  • Update workflow that handles contributor comments to the latest version by @MisRob in #5190
  • Update manage issue header workflow events by @MisRob in #5177
  • Update Node.js version to 20.x by @rtibbles in #5143
  • Remove stylus module replacement causing non-hot devserver to break by @bjester in #5035
  • Remove custom issue templates, turn on issue header automation, reference new contributing guidelines by @MisRob in #5105
  • Explicitly specify localhost as an allowed host, and add WSLIP IP in WSLEnvironments. by @rtibbles in #5134
  • Approve vue-demi postinstall build by @bjester in #5070
Supporting PRs for new Rich Text Editor
  • feat(texteditor): initial standalone tiptap editor component by @habibayman in #5097
  • feat(texteditor): implement insertion toolbar actions by @habibayman in #5155
  • Use bundler advice for including fonts for mathlive. by @rtibbles in #5196
  • Make tip tap editor sandbox completely dev only by @rtibbles in #5197
Supporting PRs for Remove Vuetify from Studio
  • Replace Material Icons with Kolibri Design System Icon by @SukhvirKooner in #4913
  • Migrate kradiobutton usages by @akolson in #4889
  • Migrate LESS styles to SCSS by @adibmbrk in #4880
  • Removed unused vuetify components by @drona-gyawali in #4911
  • Upgrade KDS from 5.2.0 to 5.2.1 by @MisRob in #5210
  • Issue#5123 : Migrated the offline alert bar in Settings from Vuetify to Kolibri Design System. by @AadarshM07 in #5162
  • Do not use hardcoded colors in 'Request more space' form by @yeshwanth235 in #5195
  • Use KTransition instead of VSlideYTransition in 'Request more space' form by @yeshwanth235 in #5194
  • Feedback utility functions by @akolson in #5088
  • Remove old Kolibri loading gif in favour of KLogo. by @rtibbles in #5149
  • [Remove Vuetify from Studio] Top-level buttons in Channels by @RONAK-AI647 in #5232
  • Updated LoadingText to KCircularLoader KDS component by @yeshwanth235 in #5215
  • Fix/Replace Vuetify with KDS on ‘Channel Not Found’ Page by @vtushar06 in #5242
  • Upgrade KDS from 5.0.0 to 5.2.0. by @MisRob in #5108
  • Updated the license info section to use the KExternalLink component for l...
Read more