Release Notes
List of the most important changes for each release.
0.19.4
High-level overview
This release adds picture password login, a way for learners to sign in by selecting a sequence of pictures instead of typing a password. It is configured per facility and is currently available only when the interface language is set to English.
It also adds the ability to import and update channels from the community library directly within Kolibri.
The rest of the release is mostly internal: a round of security improvements, behind-the-scenes work to keep the codebase maintainable, and early groundwork for an upcoming Courses feature that is not yet available to use.
Added
Picture Password login (English-only, per-facility setting)
Add new picture_password field to FacilityUser by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/14365
Add new facility setting fields to support picture password login. by @AllanOXDi in https://github.com/learningequality/kolibri/pull/14400
Add picture password API endpoint with role-based access by @akolson in https://github.com/learningequality/kolibri/pull/14462
Implement logic to assign picture password to learners by @ozer550 in https://github.com/learningequality/kolibri/pull/14469
Add modal for reaching picture-password learner limit by @bjester in https://github.com/learningequality/kolibri/pull/14526
Refactored facility settings page with picture password settings by @bjester in https://github.com/learningequality/kolibri/pull/14495
Add base AllPasswordsPage component and coach routing for picture passwords by @akolson in https://github.com/learningequality/kolibri/pull/14547
Update CreateSessionSerializer to support learners logging in with a picture password by @AllanOXDi in https://github.com/learningequality/kolibri/pull/14550
Auto-assign picture_password to new learners and clear on role assignment by @rtibblesbot in https://github.com/learningequality/kolibri/pull/14551
Add utility for picture passwords exhaustion by @bjester in https://github.com/learningequality/kolibri/pull/14560
Assign picture password when user’s last role is deleted by @rtibblesbot in https://github.com/learningequality/kolibri/pull/14566
Implement PicturePasswordGrid component by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/14546
Update user edit page and user table for picture login by @bjester in https://github.com/learningequality/kolibri/pull/14573
Register task to assign picture password by @ozer550 in https://github.com/learningequality/kolibri/pull/14565
Update UserCreateSidePanel to display info about picture password assignment by @AllanOXDi in https://github.com/learningequality/kolibri/pull/14600
Learner summary page picture password by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/14632
Implement full icon display and print functionality for AllPasswordsPage by @akolson in https://github.com/learningequality/kolibri/pull/14617
Add facility plugin route and ClassEditPage entry point for picture passwords by @akolson in https://github.com/learningequality/kolibri/pull/14652
Update Facility Settings Page with informational modals by @AllanOXDi in https://github.com/learningequality/kolibri/pull/14641
Picture password sign-in integration by @bjester in https://github.com/learningequality/kolibri/pull/14649
Add picture password row to learner Profile page by @nucleogenesis in https://github.com/learningequality/kolibri/pull/14679
Show Change password row for admins; respect facility’s show_icon_text by @rtibbles in https://github.com/learningequality/kolibri/pull/14692
Responsive picture password sign in by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/14682
Add picture password confirm modal by @akolson in https://github.com/learningequality/kolibri/pull/14691
Fix new user creation when picture password is enabled by @rtibbles in https://github.com/learningequality/kolibri/pull/14693
Add route wrapper components for Coach and Facility picture password page by @akolson in https://github.com/learningequality/kolibri/pull/14701
Implement sign-up/join picture password confirmation modal by @bjester in https://github.com/learningequality/kolibri/pull/14698
Resolve picture_password sync collisions via PicturePasswordCollisionOperation by @rtibblesbot in https://github.com/learningequality/kolibri/pull/14699
Assign picture passwords to synced learners missing them on receiver by @rtibblesbot in https://github.com/learningequality/kolibri/pull/14650
Picture Password Animations by @DXCanas in https://github.com/learningequality/kolibri/pull/14690
Use class summary password settings instead of useFacility by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/14737
Show picture password modal on home page after signup/facility change by @akolson in https://github.com/learningequality/kolibri/pull/14725
Gate picture-password UI on isPictureLoginFeatureEnabled by @rtibbles in https://github.com/learningequality/kolibri/pull/14739
Use KListbox by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/14745
Fix picture password icons broken on Coach page refresh by @akolson in https://github.com/learningequality/kolibri/pull/14751
Add visible error notification for wrong picture password by @akolson in https://github.com/learningequality/kolibri/pull/14741
ensure picture password modal appears on LOD join by @marcellamaki in https://github.com/learningequality/kolibri/pull/14753
Community library import
Add channel token support to importchannel management command by @rtibbles in https://github.com/learningequality/kolibri/pull/14056
Thread token-resolved metadata (library, version) through channel import pipeline by @rtibblesbot in https://github.com/learningequality/kolibri/pull/14598
Fetch versioned channel DB URL when importing with a version token by @rtibblesbot in https://github.com/learningequality/kolibri/pull/14607
Use Studio v2 API for community library channel update checks by @rtibblesbot in https://github.com/learningequality/kolibri/pull/14608
Allow channel downgrade when version explicitly requested via token by @rtibblesbot in https://github.com/learningequality/kolibri/pull/14609
Pass channel token through to remotechannelimport task params by @rtibblesbot in https://github.com/learningequality/kolibri/pull/14605
Handle draft channels with no published Studio version by @rtibblesbot in https://github.com/learningequality/kolibri/pull/14638
Fix content tree hidden and 404 error when importing from draft channels by @rtibblesbot in https://github.com/learningequality/kolibri/pull/14664
Set prop for import modal to ensure devices have facilities by @bjester in https://github.com/learningequality/kolibri/pull/14749
Fix token-based channel import: redirect to new version page and support draft channels by @rtibblesbot in https://github.com/learningequality/kolibri/pull/14747
Course tools (foundational work, not yet available)
Pre/Post test renderer by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/14389
Use useGoBack for course back navigation instead of hardcoded HOME by @nucleogenesis in https://github.com/learningequality/kolibri/pull/14403
Exclude Courses in Search, Resume, Library & plugin_data flag for courses by @nucleogenesis in https://github.com/learningequality/kolibri/pull/14132
Add unit learning objectives report API endpoint by @AllanOXDi in https://github.com/learningequality/kolibri/pull/14422
Refined prev/next buttons in course viewer by @nucleogenesis in https://github.com/learningequality/kolibri/pull/14399
Create content download requests and removal requests for courses descendants by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/14448
Add Learning Objectives report tab to CourseSummaryPage by @nucleogenesis in https://github.com/learningequality/kolibri/pull/14440
Fix unit report to credit all mapped LOs for multi-LO items by @rtibblesbot in https://github.com/learningequality/kolibri/pull/14472
Prioritize course content download based on learner progress by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/14496
Add Learners report tab to CourseSummaryPage and Learner SidePanel View by @AllanOXDi in https://github.com/learningequality/kolibri/pull/14497
Add course-level learner progress notifications by @rtibblesbot in https://github.com/learningequality/kolibri/pull/14523
Add Learning Objective side panel detail view by @nucleogenesis in https://github.com/learningequality/kolibri/pull/14454
Handle deleted course content gracefully on courses pages by @nucleogenesis in https://github.com/learningequality/kolibri/pull/14521
Add unit lesson progress API endpoint by @rtibblesbot in https://github.com/learningequality/kolibri/pull/14535
Add URL routing for tab and side panel state on Course Summary page by @rtibblesbot in https://github.com/learningequality/kolibri/pull/14606
Update course title by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/14557
Course lod content update by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/14619
Reinstate learner interaction blocking for course pre/post test flow by @nucleogenesis in https://github.com/learningequality/kolibri/pull/14562
Other additions
Add Python 3.14 support by @rtibblesbot in https://github.com/learningequality/kolibri/pull/14395
Add official container image with best practices by @bjester in https://github.com/learningequality/kolibri/pull/14450
Enable postgres SSL configuration through Kolibri options by @bjester in https://github.com/learningequality/kolibri/pull/14702
Add locally-triggered impact-stories prompt for super admins by @rtibbles in https://github.com/learningequality/kolibri/pull/14729
Changed
Security hardening
Fix/remove pickle protocol cache defaults v0.19.x by @Swoyamjeetcodes in https://github.com/learningequality/kolibri/pull/14198
Add minReleaseAge to pnpm settings to reduce likelihood of supply chain compromises by @bjester in https://github.com/learningequality/kolibri/pull/14475
Add excludes for dep cool downs by @bjester in https://github.com/learningequality/kolibri/pull/14477
Automigrate allow_other_browsers_to_connect to True as it was previously always wrong by @rtibbles in https://github.com/learningequality/kolibri/pull/14596
Harden workflow_run comment pipelines against artifact poisoning by @rtibblesbot in https://github.com/learningequality/kolibri/pull/14715
Restructure InitializeAppView redirect to validate-then-use, drop HTTP_REFERER fallback by @rtibblesbot in https://github.com/learningequality/kolibri/pull/14710
Fix fork-PR lookup in findPrByHeadSha by @rtibbles in https://github.com/learningequality/kolibri/pull/14719
Replace execSync with execFileSync argv array in kolibri-build by @rtibblesbot in https://github.com/learningequality/kolibri/pull/14713
Sweep str(e) information disclosure and log idioms from API paths by @rtibblesbot in https://github.com/learningequality/kolibri/pull/14717
Add least-privilege permissions blocks to all GitHub workflow files by @rtibblesbot in https://github.com/learningequality/kolibri/pull/14716
Drop expanduser from filesystem helpers; echo submitted path in API by @rtibblesbot in https://github.com/learningequality/kolibri/pull/14718
Update CodeQL workflow to allow running on prs from forks by @rtibbles in https://github.com/learningequality/kolibri/pull/14721
Extract npm version report artifact to temp dir by @rtibbles in https://github.com/learningequality/kolibri/pull/14720
Authorization scopes with enhanced test coverage by @bjester in https://github.com/learningequality/kolibri/pull/14706
Tighten API endpoints that fetch from a caller-supplied remote URL by @rtibbles in https://github.com/learningequality/kolibri/pull/14705
Bypass facility ID filter for superusers, but require it for all other users by @bjester in https://github.com/learningequality/kolibri/pull/14730
Frontend architecture
Refactor facilityConfig Vuex module into useFacilityEditor composable by @bjester in https://github.com/learningequality/kolibri/pull/14449
Replace samePageCheckGenerator with route identity checks by @rtibblesbot in https://github.com/learningequality/kolibri/pull/14518
Move setUnspecifiedPassword from core Vuex to user_auth utility by @rtibblesbot in https://github.com/learningequality/kolibri/pull/14528
Remove dead Vuex notification state and consumers by @rtibblesbot in https://github.com/learningequality/kolibri/pull/14529
Replace Vuex pageVisibility state with reactive ref in browserInfo by @rtibblesbot in https://github.com/learningequality/kolibri/pull/14530
Move fetchUserSyncStatus to coach plugin, add notification dismiss, and relocate setUnspecifiedPassword by @rtibblesbot in https://github.com/learningequality/kolibri/pull/14531
Move allowRemoteAccess from core to per-plugin plugin_data by @rtibblesbot in https://github.com/learningequality/kolibri/pull/14532
Remove Vuex page loading state, use shared composable by @rtibblesbot in https://github.com/learningequality/kolibri/pull/14527
Replace Vuex error state with appError utility module by @rtibblesbot in https://github.com/learningequality/kolibri/pull/14536
Remove Vue event bus from pluginMediator by @rtibblesbot in https://github.com/learningequality/kolibri/pull/14540
Move usePageLoading composable to kolibri-common by @rtibbles in https://github.com/learningequality/kolibri/pull/14544
Add dynamic RTL CSS loading support for webpack bundles by @rtibbles in https://github.com/learningequality/kolibri/pull/14479
Remove vuex-router-sync; replace store.state.route with useRoute() by @rtibblesbot in https://github.com/learningequality/kolibri/pull/14541
Double down on hooks, remove app plugin in favour of individual hooks for individual capabilities by @rtibbles in https://github.com/learningequality/kolibri/pull/12879
Developer tooling and build
Update dependabot to monthly schedule with 7-day cooldown by @rtibbles in https://github.com/learningequality/kolibri/pull/14020
Remove call-holiday-message github action by @LianaHarris360 in https://github.com/learningequality/kolibri/pull/14048
fix(docs): correct spelling mistakes in documentation files by @himanshujays29 in https://github.com/learningequality/kolibri/pull/14059
Update Node.js version in getting_started docs from 18.x to 20.x by @curiouscoder-cmd in https://github.com/learningequality/kolibri/pull/14232
Refactor epub navigation button tests to use Vue Testing Library by @curiouscoder-cmd in https://github.com/learningequality/kolibri/pull/14237
Converted user auth page unit tests to Vue Testing Library by @AadarshM07 in https://github.com/learningequality/kolibri/pull/14245
Convert epub viewer bar unit tests to Vue Testing Library by @sharma-anushka in https://github.com/learningequality/kolibri/pull/14225
Convert epub viewer settings unit tests to Vue Testing Library for SettingsButton.spec.js and SettingsSideBar.spec.js by @ketan0919 in https://github.com/learningequality/kolibri/pull/14280
Refactor user auth layout tests to use Vue Testing Library by @curiouscoder-cmd in https://github.com/learningequality/kolibri/pull/14329
Add workflow for pull request events by @MisRob in https://github.com/learningequality/kolibri/pull/14333
Add tests for allow_other_browsers_to_connect remote access setting by @rtibblesbot in https://github.com/learningequality/kolibri/pull/14334
Add jest-fail-on-console and fix console noise in frontend tests by @rtibblesbot in https://github.com/learningequality/kolibri/pull/14337
Remove stale Python 2.7 references from comments and docstrings by @ketan0919 in https://github.com/learningequality/kolibri/pull/14342
Migrate epub viewer search tests to Vue Testing Library by @sahibsiddiqui in https://github.com/learningequality/kolibri/pull/14321
test: migrate setup_wizard tests to Vue Testing Library by @rohitt-pandey in https://github.com/learningequality/kolibri/pull/14219
Convert PDF viewer unit tests to Vue Testing Library #14194 by @rohitt-pandey in https://github.com/learningequality/kolibri/pull/14287
Migrate ESLint config from legacy .eslintrc to flat config (ESLint 9) by @rtibblesbot in https://github.com/learningequality/kolibri/pull/14346
Migrate plugin tests to Vue Testing Library by @Swoyamjeetcodes in https://github.com/learningequality/kolibri/pull/14197
refactor TaskPanel and PinAuthenticationModal to use vue test library by @curiouscoder-cmd in https://github.com/learningequality/kolibri/pull/14393
Add explicit run mode setting to smoke test. by @rtibbles in https://github.com/learningequality/kolibri/pull/14442
Add FUNDING.yml by @bjester in https://github.com/learningequality/kolibri/pull/14446
Refactor device plugin test files to use Vue Testing Library by @curiouscoder-cmd in https://github.com/learningequality/kolibri/pull/14376
Fix broken pnpm lock file. by @rtibbles in https://github.com/learningequality/kolibri/pull/14509
Remove quotes and generalize workflow names by @bjester in https://github.com/learningequality/kolibri/pull/14520
Automate npm package publishing by @rtibbles in https://github.com/learningequality/kolibri/pull/14561
Use VTL v1 syntax for stubs. by @rtibbles in https://github.com/learningequality/kolibri/pull/14568
Add npm package publish check tooling and bump versions by @rtibbles in https://github.com/learningequality/kolibri/pull/14576
Exclude frontend/ directories from sdist instead of old assets/ by @rtibbles in https://github.com/learningequality/kolibri/pull/14575
Fix npm publish workflow permissions for provenance by @rtibbles in https://github.com/learningequality/kolibri/pull/14577
Drop –provenance and –access public from npm publish by @rtibbles in https://github.com/learningequality/kolibri/pull/14578
Use pnpm pack + npm publish for OIDC trusted publishing by @rtibbles in https://github.com/learningequality/kolibri/pull/14581
Revert pnpm pack change, use Node 24 for npm publish by @rtibbles in https://github.com/learningequality/kolibri/pull/14582
Remove pnpm install from npm publish workflow by @rtibbles in https://github.com/learningequality/kolibri/pull/14583
Use lightweight install for npm publish workflow by @rtibbles in https://github.com/learningequality/kolibri/pull/14584
Add published packages summary for Slack notifications by @rtibbles in https://github.com/learningequality/kolibri/pull/14586
Strengthen frontend linting with dependency, Node.js, and test rules by @rtibbles in https://github.com/learningequality/kolibri/pull/14594
Replace babel-loader with swc-loader for webpack transpilation by @rtibbles in https://github.com/learningequality/kolibri/pull/14595
Update android installer version to v0.1.7.1 by @rtibbles in https://github.com/learningequality/kolibri/pull/14602
Update to android app version with APK build fix by @rtibbles in https://github.com/learningequality/kolibri/pull/14604
Convert setup wizard step unit tests to Vue Testing Library by @AadarshM07 in https://github.com/learningequality/kolibri/pull/14616
Narrow npm publish triggers and add Slack notifications by @rtibbles in https://github.com/learningequality/kolibri/pull/14615
Migrate epub viewer TOC tests from vue test utils to Vue testing library by @curiouscoder-cmd in https://github.com/learningequality/kolibri/pull/14542
Update browserslist config to new support matrix by @rtibblesbot in https://github.com/learningequality/kolibri/pull/14627
Add new guidance and linter rules for Testing Library tests by @MisRob in https://github.com/learningequality/kolibri/pull/14579
Enable import-x module-system ESM enforcement rules by @rtibblesbot in https://github.com/learningequality/kolibri/pull/14639
Add ‘opened’ to pull-request-target trigger types by @rtibbles in https://github.com/learningequality/kolibri/pull/14672
Conditionalize webpack cache by hot/transpile to prevent errors. by @rtibbles in https://github.com/learningequality/kolibri/pull/14678
Replace add_contributor workflow with monthly updater and backfill AUTHORS.md by @rtibbles in https://github.com/learningequality/kolibri/pull/14686
Cancel outdated CI runs when a PR is updated by @rtibbles in https://github.com/learningequality/kolibri/pull/14694
Bump kolibri-app workflow refs to v0.5.1 by @rtibbles in https://github.com/learningequality/kolibri/pull/14744
Other changes
Consolidate deprovision to reuse facility deletion utilities by @rtibblesbot in https://github.com/learningequality/kolibri/pull/14343
Optimize Role and Membership bulk creation with bulk_create by @rtibblesbot in https://github.com/learningequality/kolibri/pull/14341
Upgrade KDS from v5.5.2 to v5.6.1 by @MisRob in https://github.com/learningequality/kolibri/pull/14517
Upgrade morango and pin setuptools by @bjester in https://github.com/learningequality/kolibri/pull/14567
UI cleanup by @marcellamaki in https://github.com/learningequality/kolibri/pull/14533
Bump morango version to v0.8.11 by @bjester in https://github.com/learningequality/kolibri/pull/14655
Upgrade morango to resolve dirty-bit issue and cleanup by @bjester in https://github.com/learningequality/kolibri/pull/14683
Fixed
Prevent crash in content cleanup when no eligible user downloads are available by @remo-lab in https://github.com/learningequality/kolibri/pull/14054
Fix UnboundLocalError in ClassroomNotificationsViewset.list when filter_queryset raises DatabaseError by @TheGreatPratyush in https://github.com/learningequality/kolibri/pull/14345
Add better error message for deleted learners in assignments by @AllanOXDi in https://github.com/learningequality/kolibri/pull/14209
Fix selected value handling in select components by @Abhishek-Punhani in https://github.com/learningequality/kolibri/pull/14250
Use update_dirty_bit_to in pre_save to allow null user fields during deserialization by @ozer550 in https://github.com/learningequality/kolibri/pull/14234
Fix ResourceLayout remounting default slot on side panel toggle by @rtibbles in https://github.com/learningequality/kolibri/pull/14397
Handle frontend loaded zip archive content (h5p, bloom(pub/d), perseus, kpub) that contains large files by @rtibbles in https://github.com/learningequality/kolibri/pull/12805
Fix benchmark command Session import and macOS psutil crash by @rtibblesbot in https://github.com/learningequality/kolibri/pull/14447
Remove duplicate page name definitions which was causing errors by @marcellamaki in https://github.com/learningequality/kolibri/pull/14463
Remove remaining duplicate PageNames definitions in coach plugin by @rtibbles in https://github.com/learningequality/kolibri/pull/14467
Ensure Attendance Tracking confirmation snackbar is displayed by @LianaHarris360 in https://github.com/learningequality/kolibri/pull/14478
Fix flash of unstyled text (FOUT) on login page by @rtibbles in https://github.com/learningequality/kolibri/pull/14476
Check progress before notifications in coach lesson report status by @rtibbles in https://github.com/learningequality/kolibri/pull/14516
Fix progress bar resetting during import/export operations by @rtibbles in https://github.com/learningequality/kolibri/pull/14057
Do early resolution of language redirect for redirect views to prevent multihop redirects. by @rtibbles in https://github.com/learningequality/kolibri/pull/14597
fix(qti-viewer): accessibility and maxChoices fixes for choice and text-entry interactions by @rajeshuchil in https://github.com/learningequality/kolibri/pull/14374
Fix mark-all-present switch requiring two clicks after modal cancel by @akolson in https://github.com/learningequality/kolibri/pull/14552
Skip download when file already exists in fallback storage dir by @rtibblesbot in https://github.com/learningequality/kolibri/pull/14630
Fix UI freeze when cancelling Edit Attendance by @akolson in https://github.com/learningequality/kolibri/pull/14653
A11y fixes by @marcellamaki in https://github.com/learningequality/kolibri/pull/14645
Miscellaneous bug fixes by @rtibbles in https://github.com/learningequality/kolibri/pull/14688
Fixes for global facility state handling by @bjester in https://github.com/learningequality/kolibri/pull/14703
Reload on back/forward navigation to prevent stale auth state by @akolson in https://github.com/learningequality/kolibri/pull/14704
Bundle colorama so Click works on Windows by @rtibbles in https://github.com/learningequality/kolibri/pull/14757
Set up Django app registry before building WSGI applications by @rtibbles in https://github.com/learningequality/kolibri/pull/14760
0.19.3
High-level overview
Special English-only prerelease of attendance tracking feature to support partnership feedback and testing.
Attendance Tracking (Special English-only prerelease until 0.20)
Add AttendanceSession and AttendanceRecord models by @rtibblesbot in https://github.com/learningequality/kolibri/pull/14323
Add attendance REST API endpoints by @rtibblesbot in https://github.com/learningequality/kolibri/pull/14332
Add AttendanceSessionResource and useAttendance composable by @rtibblesbot in https://github.com/learningequality/kolibri/pull/14335
Add AttendanceBlock to coach class home page by @rtibblesbot in https://github.com/learningequality/kolibri/pull/14355
Add attendance stub pages and route wiring by @rtibblesbot in https://github.com/learningequality/kolibri/pull/14362
Fix ISO 8601 datetime parsing for attendance session creation by @marcellamaki in https://github.com/learningequality/kolibri/pull/14378
Attendance UI improvements: KButtonGroup, print/export, pagination by @rtibblesbot in https://github.com/learningequality/kolibri/pull/14394
Fix attendance UI: scrollbars, contrast, button wrapping, pagination, and layout by @akolson in https://github.com/learningequality/kolibri/pull/14398
Implement AttendanceNewPage — attendance-taking form by @rtibblesbot in https://github.com/learningequality/kolibri/pull/14364
Replace KButton with KRouterLink in AttendanceBlock by @rtibblesbot in https://github.com/learningequality/kolibri/pull/14381
Implement AttendanceHistoryPage — attendance session history by @rtibblesbot in https://github.com/learningequality/kolibri/pull/14379
Implement AttendanceEditPage for editing existing attendance sessions by @rtibblesbot in https://github.com/learningequality/kolibri/pull/14382
Toggle overflow by @marcellamaki in https://github.com/learningequality/kolibri/pull/14401
Enqueue automatic daily KDP sync after facility registration by @rtibbles in https://github.com/learningequality/kolibri/pull/14404
Add feature flag to facility settings and conditionally render attendance block by @akolson in https://github.com/learningequality/kolibri/pull/14405
Added/Changed/Fixed
update version 0.19.2 to .3 by @marcellamaki in https://github.com/learningequality/kolibri/pull/14360
Add autoapproval of identical translations from translation memory as part of upload by @rtibbles in https://github.com/learningequality/kolibri/pull/14252
Tweaks to agent instructions and how tos. by @rtibbles in https://github.com/learningequality/kolibri/pull/14377
Pre-Post Tests: Foundational feature work (to be released in 0.20)
[Pre|Post Tests] Progress tracking by @nucleogenesis in https://github.com/learningequality/kolibri/pull/14316
Integrate assesment wrapper to CourseUnitView by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/14248
Fix missing/mismatched string on course welcome page by @marcellamaki in https://github.com/learningequality/kolibri/pull/14330
Fix course unit navigation issues by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/14319
Rename compat.py to modules.py and update imports by @ketan0919 in https://github.com/learningequality/kolibri/pull/14336
Integrate course quiz renderer to CourseUnitView by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/14290
improve error handling for deleted users in course assignment by @AllanOXDi in https://github.com/learningequality/kolibri/pull/14210
Add morango integration tests for syncing new courses by @bjester in https://github.com/learningequality/kolibri/pull/14214
Update courses dropdown options to open course preview and assign recipients side panels by @LianaHarris360 in https://github.com/learningequality/kolibri/pull/14203
Remove TestStatus reference, use “closed” defaulting to False instead. by @rtibbles in https://github.com/learningequality/kolibri/pull/14361
Creates SparklineBar distribution chart component by @AllanOXDi in https://github.com/learningequality/kolibri/pull/14338
Import descendants metadata by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/14363
0.19.2
High level overview
This release makes some upgrades to the developer experience, fixes various bugs, and includes foundational work for the upcoming courses feature, including API endpoints and frontend architecture for course listing and course session management. We also continued to make progress on cleaning up Python 2.7 compatibility code.
Added
Courses Features (Foundational)
Courses frontend setup by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/14077
Create courses models and viewset by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/14091
Add select courses and recipients subpages by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/14103
Add Course Session Context to Progress Tracking by @LianaHarris360 in https://github.com/learningequality/kolibri/pull/14116
Learn Course Assignments API Endpoints by @LianaHarris360 in https://github.com/learningequality/kolibri/pull/14113
Add UnitTestAssignment model for managing pre/post tests in course units by @AllanOXDi in https://github.com/learningequality/kolibri/pull/14115
Implement Course list data loading and display by @AllanOXDi in https://github.com/learningequality/kolibri/pull/14114
ResourceLayout component architecture for course content display by @rtibbles in https://github.com/learningequality/kolibri/pull/14109
Add API endpoints for activating/closing quizzes & returning active quiz by @AllanOXDi in https://github.com/learningequality/kolibri/pull/14121
Course Preview by @nucleogenesis in https://github.com/learningequality/kolibri/pull/14117
Add course unit view by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/14128
Course unit view 2 by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/14145
Course welcome view by @LianaHarris360 in https://github.com/learningequality/kolibri/pull/14146
Course cards homepage by @marcellamaki in https://github.com/learningequality/kolibri/pull/14122
Pre/Post-Tests Activation UI by @nucleogenesis in https://github.com/learningequality/kolibri/pull/14147
Add confirmation modal to prevent accidental closure of Course Assignment Side Panel by @LianaHarris360 in https://github.com/learningequality/kolibri/pull/14150
Sync & Backend
Add sync operations and filter utilities for classroom partitioning by @bjester in https://github.com/learningequality/kolibri/pull/14070
Implement new deserialization logic according to sync_filter by @ozer550 in https://github.com/learningequality/kolibri/pull/14148
Developer Tooling
Add AI agent documentation and multi-agent isolation support by @rtibbles in https://github.com/learningequality/kolibri/pull/14144
Add documentation indicating that APIs are internal by @rtibbles in https://github.com/learningequality/kolibri/pull/14090
Add ESLint rule to prevent RTL-breaking inline styles by @rtibbles in https://github.com/learningequality/kolibri/pull/14093
Add linting to prevent non-scoped lodash/dateFn imports by @rtibbles in https://github.com/learningequality/kolibri/pull/14125
Add browser smoke test to PR build workflow by @rtibbles in https://github.com/learningequality/kolibri/pull/14153
Add hashing to font CSS and WOFF generation by @rtibbles in https://github.com/learningequality/kolibri/pull/14088
Developer-facing improvements
Build & Infrastructure
Migrate from yarn to pnpm by @rtibbles in https://github.com/learningequality/kolibri/pull/14086
Restore frontend linting and fix issues that happened in the interim by @rtibbles in https://github.com/learningequality/kolibri/pull/14126
Prevent traversal of symlinks in node_modules during egg info generation by @rtibbles in https://github.com/learningequality/kolibri/pull/14127
Migrate from tibdex/github-app-token to actions/create-github-app-token by @rtibblesbot in https://github.com/learningequality/kolibri/pull/14206
Update ignores for worktrees and JetBrains features by @bjester in https://github.com/learningequality/kolibri/pull/14162
Slim down agents.md with progressive disclosure and moving more into Claude.md by @rtibbles in https://github.com/learningequality/kolibri/pull/14164
Install kolibri in i18n-upload workflow by @rtibbles in https://github.com/learningequality/kolibri/pull/14239
Fix invocations of i18n commands and ignores by @rtibbles in https://github.com/learningequality/kolibri/pull/14247
Tech debt / refactors
Replace CSS Variables in favor of theme variable for css styling by @AllanOXDi in https://github.com/learningequality/kolibri/pull/14089
Removes residue style overrides prop code by @akolson in https://github.com/learningequality/kolibri/pull/14112
Remove no longer needed overflow: unset by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/14202
Clean up localeCompare usage for proper internationalization (fixes #3888) by @rtibbles in https://github.com/learningequality/kolibri/pull/14087
Update kolibri-zip with support for css import statements, fix browser compatibility by @rtibbles in https://github.com/learningequality/kolibri/pull/14085
Python 2.7 Cleanup
Remove unnecessary UTF-8 coding declarations from Python files by @manocormen in https://github.com/learningequality/kolibri/pull/14215
Remove explicit object base class from Python classes by @manocormen in https://github.com/learningequality/kolibri/pull/14224
Clean up outdated Python 2.7 comments and unicode string literals by @curiouscoder-cmd in https://github.com/learningequality/kolibri/pull/14227
Remove Python 2 compatibility shims by @sharma-anushka in https://github.com/learningequality/kolibri/pull/14226
Translations
Update translations from Crowdin for release-v0.19.x by @learning-equality-bot[bot] in https://github.com/learningequality/kolibri/pull/14249
Fixed
Better handle unclean server shutdown by @rtibbles in https://github.com/learningequality/kolibri/pull/14123
Fix missing dep in Coach by @nucleogenesis in https://github.com/learningequality/kolibri/pull/14098
Fix flaky Python tests: ordering, network mocking, and missing request mocks by @rtibblesbot in https://github.com/learningequality/kolibri/pull/14177
Fixes notification for no resources on the device being shown when no exercises exist by @akolson in https://github.com/learningequality/kolibri/pull/14288
“Resume” card display and progress fixes by @marcellamaki in https://github.com/learningequality/kolibri/pull/14289
Resume pagination fixes by @rtibbles in https://github.com/learningequality/kolibri/pull/14313
Better missing resources handling by @akolson in https://github.com/learningequality/kolibri/pull/14201
Unprovisioned URL Redirect (+ remove dead code) by @nucleogenesis in https://github.com/learningequality/kolibri/pull/14200
Prevent double scrollbar in side panel modal by @AllanOXDi in https://github.com/learningequality/kolibri/pull/14228
Reset selection after applying filter by @AllanOXDi in https://github.com/learningequality/kolibri/pull/13880
Retry peeruserimport task on Database or connection errors by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/13821
Fix The ‘Recipients’ drop-down to show groups list by @AllanOXDi in https://github.com/learningequality/kolibri/pull/14156
Fixes TypeError on clicking ‘Select recipients’ from the course details page by @AllanOXDi in https://github.com/learningequality/kolibri/pull/14160
0.19.1
High level overview
This release includes HTML5 Article Renderer improvements, performance optimizations including a ~25% reduction in JS bundle size, and foundational work for upcoming features. We also addressed some tech debt and continued cleaning up Python 2.7 compatibility code with great help from the community.
Added
Content & Rendering
Adds polyfill for to ensure browser compatibility in HTML5 Article Renderer by @AllanOXDi in https://github.com/learningequality/kolibri/pull/13951
[HTML5 Article Renderer] Refactor Table Implementation by @AllanOXDi in https://github.com/learningequality/kolibri/pull/14002
Implements simple scroll progress tracking for safe html5 renderer by @akolson in https://github.com/learningequality/kolibri/pull/13983
Add modality field to ContentNode by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/14042
Add modality filter query param in Content API by @nucleogenesis in https://github.com/learningequality/kolibri/pull/14058
Courses Feature (Foundational)
Add initial core courses Django app files by @LianaHarris360 in https://github.com/learningequality/kolibri/pull/14066
Add courses_exist to the coach’s plugin_data by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/14068
Developer Tooling
Add ESLint rule to validate translator key destructuring by @rtibbles in https://github.com/learningequality/kolibri/pull/13932
LFS File pre-commit check by @rtibbles in https://github.com/learningequality/kolibri/pull/13947
Add comprehensive documentation for URL namespacing by @rtibbles in https://github.com/learningequality/kolibri/pull/13863
Add documentation about plugin enabling on pex by @rtibbles in https://github.com/learningequality/kolibri/pull/13948
Developer-facing improvements
Performance & Build
Reduce JS production build size by ~25% by @rtibbles in https://github.com/learningequality/kolibri/pull/13912
Update KDS to 5.5.0 by @MisRob in https://github.com/learningequality/kolibri/pull/13999
Update H5P JavaScript library by @learning-equality-bot[bot] in https://github.com/learningequality/kolibri/pull/13993
remove varchar_pattern_ops index by @ozer550 in https://github.com/learningequality/kolibri/pull/14076
Tech debt / refactors
Removes the paginatedListContainerWithBackend by @AllanOXDi in https://github.com/learningequality/kolibri/pull/13871
Migrate from assets/src to frontend by @rtibbles in https://github.com/learningequality/kolibri/pull/14009
Update .git-blame-ignore-revs for frontend migration changes by @rtibbles in https://github.com/learningequality/kolibri/pull/14011
Python 2.7 Cleanup
Remove Python 2.7 legacy: hasattr(output, ‘decode’) runtime checks by @AadarshM07 in https://github.com/learningequality/kolibri/pull/13915
Remove Python 2.7: Replace mkdirp() with os.makedirs() by @AadarshM07 in https://github.com/learningequality/kolibri/pull/13927
Remove Python 2.7 legacy: Simplify OSError/IOError exception by @AadarshM07 in https://github.com/learningequality/kolibri/pull/13943
Refactor replace replace() with os.replace() by @AadarshM07 in https://github.com/learningequality/kolibri/pull/13949
Remove Python 2.7 legacy: Remove lru_cache backport by @Prashant-thakur77 in https://github.com/learningequality/kolibri/pull/13952
Remove Python 2.7 legacy: Update JSONDecodeError exception handling by @Prashant-thakur77 in https://github.com/learningequality/kolibri/pull/13950
Remove Python 2.7: Simple syntax and import cleanups by @AadarshM07 in https://github.com/learningequality/kolibri/pull/13955
Update super calls python3 by @Prashant-thakur77 in https://github.com/learningequality/kolibri/pull/13984
Remove Python 2.7 FileNotFoundError compatibility shims by @rtibbles in https://github.com/learningequality/kolibri/pull/13985
Dependencies
Bump the babel group with 3 updates by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13899
Bump launch-editor-middleware from 2.11.1 to 2.12.0 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13903
Bump peter-evans/create-pull-request from 6 to 7 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13901
Bump sass-loader from 16.0.5 to 16.0.6 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13902
Bump axios from 1.12.2 to 1.13.2 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13905
Bump dayjs from 1.11.18 to 1.11.19 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13906
Bump core-js from 3.46.0 to 3.47.0 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13918
Bump eslint-plugin-jest from 29.0.1 to 29.1.0 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13920
Bump @rushstack/eslint-patch from 1.14.1 to 1.15.0 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13921
Bump ini from 5.0.0 to 6.0.0 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13922
Bump autoprefixer from 10.4.21 to 10.4.22 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13923
Bump js-yaml from 3.14.0 to 3.14.2 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13916
Bump webpack from 5.102.1 to 5.103.0 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13937
Bump actions/checkout from 5 to 6 in the github group by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13938
Bump eslint-plugin-jest from 29.1.0 to 29.2.1 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13939
Bump html-webpack-plugin from 5.6.4 to 5.6.5 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13940
Bump commander from 14.0.1 to 14.0.2 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13941
Bump node-forge from 1.3.1 to 1.3.2 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13946
Bump kolibri-design-system from 5.4.0 to 5.4.2 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13919
Bump @crowdin/cli from 4.11.0 to 4.12.0 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13961
Bump prettier from 3.6.2 to 3.7.3 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13962
Bump peter-evans/create-pull-request from 7 to 8 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13989
Bump prettier from 3.7.3 to 3.7.4 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13988
Bump katex from 0.16.25 to 0.16.27 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13987
Bump dompurify from 3.3.0 to 3.3.1 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13990
Bump css-minimizer-webpack-plugin from 7.0.2 to 7.0.3 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13991
Bump terser-webpack-plugin from 5.3.14 to 5.3.15 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13992
Bump css-minimizer-webpack-plugin from 7.0.3 to 7.0.4 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/14019
Bump eslint-plugin-jest from 29.2.1 to 29.5.0 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/14018
Bump the github group with 3 updates by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/14014
Bump terser-webpack-plugin from 5.3.15 to 5.3.16 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/14012
Bump autoprefixer from 10.4.22 to 10.4.23 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/14015
Bump webpack from 5.103.0 to 5.104.0 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/14016
0.19.0
High level overview
Release 0.19.0 updates user management capabilities to make it easier for administrators to manage user accounts. The changes reduce the number of repetitive tasks required for class enrollment and unenrollment of learners, and general account management. This makes both setting up new programs and year-over-year user management simpler and more efficient.
Added
New Feature: Bulk User Management
Administrators can now perform actions on multiple users at once, reducing the time needed to manage users at scale. Key workflows include:
Bulk user selection and actions: Allows admins to select multiple users and apply actions to all of them at once, including enrollment, removal from classes, and deletion
Copy classes: Admins can now copy classes of learners and coaches
Learner-only device management: Allow admins to remove learner-only devices users from a device and import them outside of the setup wizard workflow
Improved user creation workflow Admins can now enroll a user in one or more classes during user account creation
List of supporting PRs
- [WIP] Added Sorting facility to Users KTable by @BabyElias in https://github.com/learningequality/kolibri/pull/13393 - Implement all_objects manager class in FacilityUser by @ozer550 in https://github.com/learningequality/kolibri/pull/13433 - Bulk User Management strings by @nucleogenesis in https://github.com/learningequality/kolibri/pull/13424 - Selectable list by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/13460 - Implement soft delete users in bulk by @ozer550 in https://github.com/learningequality/kolibri/pull/13483 - Bulk User: Strings fixes w/ ICU + add Class copy strings by @nucleogenesis in https://github.com/learningequality/kolibri/pull/13466 - Insert checkbox column in Facility > Users KTable to allow user selection by @AllanOXDi in https://github.com/learningequality/kolibri/pull/13479 - Improved Object Validations with New ValidateObject by @Abhishek-Punhani in https://github.com/learningequality/kolibri/pull/13301 - Deleted facilityuser viewset by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/13502 - Update Fundamental routing & data architecture for users page by @LianaHarris360 in https://github.com/learningequality/kolibri/pull/13515 - Manage users in LOD by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/12228 - BUM SidePanel: Implement Enroll (learners) to classes functionality by @LianaHarris360 in https://github.com/learningequality/kolibri/pull/13544 - Introduce copy class functionality by @AllanOXDi in https://github.com/learningequality/kolibri/pull/13517 - BUM: Improved user creation by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/13538 - Setup bulk user action buttons on the Facility Users page by @AllanOXDi in https://github.com/learningequality/kolibri/pull/13513 - Implement repeating cleanup task for hard-deleting expired soft-deleted FacilityUsers by @ozer550 in https://github.com/learningequality/kolibri/pull/13591 - Disable class copy submission if class name is empty by @LianaHarris360 in https://github.com/learningequality/kolibri/pull/13607 - Remove class title in favour of class name in class copy form by @AllanOXDi in https://github.com/learningequality/kolibri/pull/13617 - sorts class names in the dropdown menu alphabetically by @AllanOXDi in https://github.com/learningequality/kolibri/pull/13616 - Add user type column to csv logs export by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/13624 - [BUM] Add filters side panel by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/13608 - Implement move to trash side panel by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/13600 - BUM SidePanel: Implement remove users from classes side panel functionality by @LianaHarris360 in https://github.com/learningequality/kolibri/pull/13651 - Add removed users page by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/13650 - Fix error when deleting a single user in UsersTable by @LianaHarris360 in https://github.com/learningequality/kolibri/pull/13655 - BUM SidePanel: Implement Assign (coaches) to classes functionality by @ozer550 in https://github.com/learningequality/kolibri/pull/13614 - Update copy class to include learners and move from SidePanelModal to KModal by @LianaHarris360 in https://github.com/learningequality/kolibri/pull/13665 - Remove white spaces from formfields by @AllanOXDi in https://github.com/learningequality/kolibri/pull/13606 - Refactor undo actions + consistent go back and close confirmation guards by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/13674 - Fix scroll users page by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/13671 - Fix LOD user management server sync interruptions by @LianaHarris360 in https://github.com/learningequality/kolibri/pull/13695 - Move auth methods to the useUser composable by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/13704 - Fixes the remove icon enabled when a super admin is selected by @AllanOXDi in https://github.com/learningequality/kolibri/pull/13700 - Resolve error when re-enrolling the same user in multiple classes by @LianaHarris360 in https://github.com/learningequality/kolibri/pull/13681 - Fixes the deletion of super admin by admin user. by @AllanOXDi in https://github.com/learningequality/kolibri/pull/13666 - Uncenter dropdown options within Users Table by @LianaHarris360 in https://github.com/learningequality/kolibri/pull/13741 - Fix users reload after soft-deleting a user by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/13739 - Update bulk action icons to need only one TAB press for keyboard navigation by @LianaHarris360 in https://github.com/learningequality/kolibri/pull/13755 - Standarize side panels styles by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/13763 - Handle deletion of coach from the assigned classes by @AllanOXDi in https://github.com/learningequality/kolibri/pull/13652 - Fixes selected users clearing before an action is completed by @AllanOXDi in https://github.com/learningequality/kolibri/pull/13701 - Can copy (or rename or delete) on ClassEditPage as well by @nucleogenesis in https://github.com/learningequality/kolibri/pull/13771 - User Table Style Updates by @nucleogenesis in https://github.com/learningequality/kolibri/pull/13743 - Allow class search to match text anywhere in the string by @LianaHarris360 in https://github.com/learningequality/kolibri/pull/13773 - Remove unused modal by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/13788 - Add empty messages on classes lists by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/13785 - [Bulk User]: Handle bad-data errors w/ `handleApiError` (+ better side panel refresh handling) by @nucleogenesis in https://github.com/learningequality/kolibri/pull/13769 - Filter out soft deleted users from lessons, quizzes and groups by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/13806 - Prototyping User Table Design Updates by @nucleogenesis in https://github.com/learningequality/kolibri/pull/13808 - [Copy a class]: Use vuex getter for facility-aware redirection by @nucleogenesis in https://github.com/learningequality/kolibri/pull/13858 - [BUM Side Panel]: Fix hidden android side panels by @nucleogenesis in https://github.com/learningequality/kolibri/pull/13855 - have copy learners in copy class workflow set to true by default by @marcellamaki in https://github.com/learningequality/kolibri/pull/13864 - Refactor UsersTableToolbar by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/13862 - Updates empty filter state messaging by @AllanOXDi in https://github.com/learningequality/kolibri/pull/13762 - Manually cherry-picked rebasing of @AllanOXDi 's `filtersupdate` branch #13830 by @nucleogenesis in https://github.com/learningequality/kolibri/pull/13860 - Fixes Bulk User Creation Failed prop console error by @AllanOXDi in https://github.com/learningequality/kolibri/pull/13830 - Fix CopyClassModal handle removed coaches by @nucleogenesis in https://github.com/learningequality/kolibri/pull/13879 - Robustly clear sessions on user deletion to cause immediate logout by @rtibbles in https://github.com/learningequality/kolibri/pull/13757Noteworthy technical updates include upgrading to Node.js v20, upgrading to Morango for improved sync reliability, implementing SQLite transaction improvements for better performance, and adding Django-silk support for development performance profiling.
Other technical additions include upgrading Morango for improved sync performance, implementing load testing framework for learner interactions, and finalizing JS package renaming and migration in the packages directory.
List of supporting PRs
- Morango upgrade and sync queue tweaks by @rtibbles in https://github.com/learningequality/kolibri/pull/13774 - Add load testing framework for learner lesson interactions by @rtibbles in https://github.com/learningequality/kolibri/pull/13856 - Use BEGIN IMMEDIATE for all SQLite transactions by default by @rtibbles in https://github.com/learningequality/kolibri/pull/13878Changed
Code cleanup and refactoring.
Supporting PRs
- Upgrade Node.js from v18 to v20 by @rtibbles in https://github.com/learningequality/kolibri/pull/13531 - Remove vestigial is_facility_user flag in favour of standard Django user properties by @rtibbles in https://github.com/learningequality/kolibri/pull/13857 - Cleanup unused dependencies for kolibri-tools by @rtibbles in https://github.com/learningequality/kolibri/pull/13877 - Complete removal of content renderer mixin. by @rtibbles in https://github.com/learningequality/kolibri/pull/13628 - Finalize the renaming and migration of JS packages in the packages directory by @rtibbles in https://github.com/learningequality/kolibri/pull/13869 - Unwrapped strings rule by @rtibbles in https://github.com/learningequality/kolibri/pull/13787Fixed
Miscellaneous UX improvements and fixes
List of supporting PRs
- handles errors at editing quiz when there are no resources by @AllanOXDi in https://github.com/learningequality/kolibri/pull/13288 - Learn > Library - Loading state improvements by @AllanOXDi in https://github.com/learningequality/kolibri/pull/13341 - Ensure lesson resources load correctly across users and roles by @ozer550 in https://github.com/learningequality/kolibri/pull/13714 - [Bugfix]: Remove breaking h1 w/ previously removed string in quiz section editor by @nucleogenesis in https://github.com/learningequality/kolibri/pull/13768 - Console error cleanup by @AllanOXDi in https://github.com/learningequality/kolibri/pull/13772 - Check unusable device on user_auth plugin by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/13759 - shows error message immediately the token entered fails by @AllanOXDi in https://github.com/learningequality/kolibri/pull/13870 - options button remain active after selection by @AllanOXDi in https://github.com/learningequality/kolibri/pull/13838 - Fix createsuperuser command failing due to email parameter by @rtibbles in https://github.com/learningequality/kolibri/pull/13898 - Fix copy pasta error in management command argument help string by @rtibbles in https://github.com/learningequality/kolibri/pull/13679 - Fix morango integration tests by @rtibbles in https://github.com/learningequality/kolibri/pull/13930 - Mask sensitive fields in error reports and console logging by @rtibbles in https://github.com/learningequality/kolibri/pull/13981 - Remove component for redirect only route. by @rtibbles in https://github.com/learningequality/kolibri/pull/13980Developer-facing improvements
This release includes improvements to developer tooling and documentation.
List of supporting PRs
- Remove custom issue templates and turn on issue header automation by @MisRob in https://github.com/learningequality/kolibri/pull/13480 - Update workflow that handles contributor comments to the latest version by @MisRob in https://github.com/learningequality/kolibri/pull/13580 - Update manage issue header workflow events by @MisRob in https://github.com/learningequality/kolibri/pull/13554 - Remove flake8 requirements, unpin other dev dependencies for ease of use by @rtibbles in https://github.com/learningequality/kolibri/pull/13594 - Add Python 3.9 requirement and WSL note to setup docs by @NihalShinde4933 in https://github.com/learningequality/kolibri/pull/13463 - Update build docs by @rtibbles in https://github.com/learningequality/kolibri/pull/13789 - Add always on support for Django-silk in development by @rtibbles in https://github.com/learningequality/kolibri/pull/13807 - Update macOS runner versions to avoid deprecation and removal by @rtibbles in https://github.com/learningequality/kolibri/pull/13908 - Install dependencies for message upload and download actions by @rtibbles in https://github.com/learningequality/kolibri/pull/13931 - Update our sqlalchemy schema generation to not include constraints by @rtibbles in https://github.com/learningequality/kolibri/pull/13161 - Unwrapped strings rule by @rtibbles in https://github.com/learningequality/kolibri/pull/13787 - Fix regression that caused all devserver building to use hot reload by @rtibbles in https://github.com/learningequality/kolibri/pull/13945 - Update build tools to allow building JS on Python 3.13 by @rtibbles in https://github.com/learningequality/kolibri/pull/13577Dependencies
List of PRs
- Bump eslint-plugin-jest from 28.11.1 to 28.12.0 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13451 - Bump the babel group with 2 updates by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13449 - Bump babel-jest from 29.7.0 to 30.0.0 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13469 - Bump eslint-plugin-jest from 28.12.0 to 28.13.3 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13473 - Bump core-js from 3.42.0 to 3.43.0 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13470 - Bump dompurify from 3.2.4 to 3.2.6 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13452 - Bump eslint-plugin-jest from 28.13.3 to 28.14.0 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13496 - Bump axios from 1.9.0 to 1.10.0 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13495 - Bump kolibri-constants from 0.2.10 to 0.2.11 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13509 - Bump enhanced-resolve from 5.18.1 to 5.18.2 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13506 - Bump @babel/core from 7.27.4 to 7.27.7 in the babel group by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13525 - Bump the babel group with 3 updates by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13540 - Bump prettier from 3.5.3 to 3.6.2 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13529 - Bump @rushstack/eslint-patch from 1.11.0 to 1.12.0 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13527 - Bump eslint-plugin-jest from 28.14.0 to 29.0.1 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13510 - Bump jest and @types/jest by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13528 - Bump webpack from 5.99.9 to 5.100.2 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13569 - Bump kolibri-constants from 0.2.11 to 0.2.12 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13570 - Bump core-js from 3.43.0 to 3.44.0 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13571 - Bump csv-parse from 5.6.0 to 6.0.0 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13572 - Bump babel-jest from 30.0.0 to 30.0.4 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13573 - Bump form-data from 4.0.0 to 4.0.4 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13581 - Bump jest-environment-jsdom from 29.7.0 to 30.0.4 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13541 - Bump jest from 30.0.4 to 30.0.5 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13584 - Bump csv-parse from 6.0.0 to 6.1.0 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13586 - Bump eslint-config-prettier from 10.1.5 to 10.1.8 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13588 - Bump kolibri-design-system from 5.2.0 to 5.2.1 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13587 - Bump babel-jest from 30.0.4 to 30.0.5 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13585 - Bump axios from 1.10.0 to 1.11.0 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13589 - Bump webpack-dev-server from 5.2.0 to 5.2.2 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13453 - Bump brace-expansion from 1.1.11 to 1.1.12 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13478 - Bump @testing-library/jest-dom from 6.6.3 to 6.6.4 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13604 - Bump webpack from 5.100.2 to 5.101.0 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13603 - Bump tmp from 0.2.3 to 0.2.4 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13622 - Bump actions/download-artifact from 4 to 5 in the github group by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13618 - Bump enhanced-resolve from 5.18.2 to 5.18.3 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13642 - Bump actions/checkout from 4 to 5 in the github group by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13641 - Bump launch-editor-middleware from 2.10.0 to 2.11.1 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13643 - Bump core-js from 3.44.0 to 3.45.0 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13619 - Bump mini-css-extract-plugin from 2.9.2 to 2.9.4 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13646 - Bump the babel group with 3 updates by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13664 - Bump ua-parser-js from 1.0.40 to 1.0.41 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13660 - Bump html-webpack-plugin from 5.6.3 to 5.6.4 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13659 - Bump core-js from 3.45.0 to 3.45.1 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13677 - Bump kolibri-design-system from 5.2.1 to 5.2.2 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13658 - Bump babel-jest from 30.0.5 to 30.1.2 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13711 - Bump jest-environment-jsdom from 30.0.5 to 30.1.2 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13705 - Bump google-github-actions/auth from 2 to 3 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13707 - Bump google-github-actions/setup-gcloud from 2 to 3 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13709 - Bump postcss-loader from 8.1.1 to 8.2.0 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13706 - Bump jest from 30.0.5 to 30.1.3 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13710 - Bump dayjs from 1.11.13 to 1.11.18 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13708 - Bump the github group with 4 updates by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13728 - Bump google-github-actions/upload-cloud-storage from 2 to 3 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13729 - Bump @babel/core from 7.28.3 to 7.28.4 in the babel group by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13723 - Bump typescript from 5.8.3 to 5.9.2 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13725 - Bump webpack from 5.101.0 to 5.101.3 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13663 - Bump web-streams-polyfill from 4.1.0 to 4.2.0 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13661 - Bump commander from 13.1.0 to 14.0.1 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13752 - Bump ad-m/github-push-action from 0.8.0 to 1.0.0 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13748 - Bump axios from 1.11.0 to 1.12.2 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13749 - Bump kolibri-design-system from 5.2.2 to 5.3.0 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13751 - Bump uuid from 8.3.2 to 13.0.0 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13753 - Bump dompurify from 3.2.6 to 3.2.7 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13776 - Bump iso8601-duration from 2.1.2 to 2.1.3 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13775 - Bump jest-environment-jsdom from 30.1.2 to 30.2.0 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13797 - Bump babel-jest from 30.1.2 to 30.2.0 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13798 - Bump webpack from 5.101.3 to 5.102.0 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13800 - Bump typescript from 5.9.2 to 5.9.3 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13802 - Bump jest from 30.1.3 to 30.2.0 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13801 - Bump @testing-library/jest-dom from 6.6.4 to 6.9.1 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13815 - Bump core-js from 3.45.1 to 3.46.0 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13835 - Bump dompurify from 3.2.7 to 3.3.0 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13836 - Bump katex from 0.16.22 to 0.16.25 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13831 - Bump webpack from 5.102.0 to 5.102.1 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13814 - Bump min-document from 2.19.0 to 2.19.1 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13881 - Bump the github group across 1 directory with 4 updates by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13876 - Bump the babel group with 3 updates by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13899 - Bump launch-editor-middleware from 2.11.1 to 2.12.0 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13903 - Bump peter-evans/create-pull-request from 6 to 7 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13901 - Bump sass-loader from 16.0.5 to 16.0.6 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13902 - Bump axios from 1.12.2 to 1.13.2 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13905 - Bump dayjs from 1.11.18 to 1.11.19 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13906 - Bump core-js from 3.46.0 to 3.47.0 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13918 - Bump eslint-plugin-jest from 29.0.1 to 29.1.0 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13920 - Bump @rushstack/eslint-patch from 1.14.1 to 1.15.0 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13921 - Bump ini from 5.0.0 to 6.0.0 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13922 - Bump autoprefixer from 10.4.21 to 10.4.22 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13923 - Bump js-yaml from 3.14.0 to 3.14.2 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13916 - Bump webpack from 5.102.1 to 5.103.0 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13937 - Bump actions/checkout from 5 to 6 in the github group by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13938 - Bump eslint-plugin-jest from 29.1.0 to 29.2.1 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13939 - Bump html-webpack-plugin from 5.6.4 to 5.6.5 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13940 - Bump commander from 14.0.1 to 14.0.2 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13941 - Bump node-forge from 1.3.1 to 1.3.2 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13946 - Bump kolibri-design-system from 5.4.0 to 5.4.2 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13919 - Bump @crowdin/cli from 4.11.0 to 4.12.0 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13961 - Bump prettier from 3.6.2 to 3.7.3 by @dependabot[bot] in https://github.com/learningequality/kolibri/pull/13962 - Bump python requests to 2.27.1 to match core requirements by @bjester in https://github.com/learningequality/kolibri/pull/139170.18.4
This release is a hotfix to address a bug in the QTI survey functionality (feature flagged).
Added
Remove unneeded post-approval BCK upload by @rtibbles in https://github.com/learningequality/kolibri/pull/13756
Fixed
QTI Survey fixes by @rtibbles in https://github.com/learningequality/kolibri/pull/13791
0.18.3
High level overview
This release includes two important performance improvements. It fixes a long standing performance issue in our Windows app and it also improves the content import speed when downloading content from the Kolibri Library onto the device.
The release also makes some small but meaningful updates to the Learner experience, including fixing a community-reported bug that prevented listing of all resources in the resource side panel for large folders and updating the titles on content cards, displaying more words on longer titles.
It contains a variety of other bug fixes and small improvements.
Added
For forthcoming Windows Installer project support and windows performance fixes
Upgrade windows installer action usage to latest version. by @rtibbles in https://github.com/learningequality/kolibri/pull/13672
Vendor magicbus wait method to fix non-blocking select calls in Windows. by @rtibbles in https://github.com/learningequality/kolibri/pull/13673
Changed
Update to latest kolibri-installer-android release. by @rtibbles in https://github.com/learningequality/kolibri/pull/13740
Fixed
Improve download speeds on Kolibri in “Streamline download skip chunked files” by @rtibbles
Fixes stale state in USB content import page “Reloads channel list after import” by @akolson
Fixes errors with user import via the setup wizard in “use token generator to authenticate just provisioned facility superadmin” by @AlexVelezLl
Update Learn > Library Sidepanel show all folder resources by @LianaHarris360
Update title truncation on cards to 3 lines by @AllanOXDi
Fix
KSelectin quiz reports to reactively update the time passed in “Prevent time desynchronization in survey report dropdowns” by @ozer550Fixes issue where unavailable nodes are not flagged for import (and adds regression test) by @rtibbles
Bug fixes for QTI beta feature in “fix long text input in free response questions” by @ozer550 and “render MathML in QTI questions generated by Studio” by @rtibbles
Make instance_ids from sync sessions unique before passing to class constructor by @rtibbles in https://github.com/learningequality/kolibri/pull/13638
0.18.2
High level overview
This release contains MVP functionality for the use of short-form survey responses as a type of exercise, which introduces the first pieces of QTI into Kolibri. The release contains foundational technical pieces for HTML5 article rendering, although not the feature. Finally, it contains bug fixes.
Added
QTI and HTML5 Article Rendering
MVP Implementation of QTI Multiple Choice and Text Entry by @rtibbles in https://github.com/learningequality/kolibri/pull/8070
Content viewer composable by @rtibbles in https://github.com/learningequality/kolibri/pull/13533
Fix answer saving for quizzes, practice quizzes, and surveys by @rtibbles in https://github.com/learningequality/kolibri/pull/13602
[HTML5 Article Renderer] Apply text styling by @WinnyChang in https://github.com/learningequality/kolibri/pull/13503
[HTML5 Article Renderer] Apply image styling by @WinnyChang in https://github.com/learningequality/kolibri/pull/13567
[HTML5 Article Renderer] Apply table styling by @WinnyChang in https://github.com/learningequality/kolibri/pull/13523
Fixed
Remove unnecessary max-width on the Kolibri logo by @rtibbles in https://github.com/learningequality/kolibri/pull/13547
Tweak content queue polling to prevent overloading the server by @rtibbles in https://github.com/learningequality/kolibri/pull/13500
Fix build failures by @rtibbles in https://github.com/learningequality/kolibri/pull/13553
Allow bloompubs with undefined distribution files to be rendered by @rtibbles in https://github.com/learningequality/kolibri/pull/13576
Fix urls.js module regression by @rtibbles in https://github.com/learningequality/kolibri/pull/13568
Remove unnecessary menu items displaying along with the “Sync all facility data” by @AllanOXDi in https://github.com/learningequality/kolibri/pull/13582
Create task for initial device provisioning by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/13102
upgrade version to 0.18.2 by @marcellamaki in https://github.com/learningequality/kolibri/pull/13595
invokes translated string variables by @akolson in https://github.com/learningequality/kolibri/pull/13545
Fix lesson completed number to be filtered by user by @marcellamaki in https://github.com/learningequality/kolibri/pull/13601
0.18.1
High level overview
This release includes bug fixes and improvements, including resolving a longstanding bug where quizzes were not syncing when assigned to individual learners or learner groups when those learners were using learner-only devices. It also updates quizzes so that sections now have fixed question order by default, based on feedback we heard from our community.
Finally, it contains some non-breaking technical pre-work for upcoming projects.
Added
Add scopedLabelsLoading to useBaseSearch to handle loading states for non-search displaying label fetching by @LianaHarris360 in https://github.com/learningequality/kolibri/pull/13329
Use SQLAlchemy URL.create to better handle special characters in passwords by @LianaHarris360 in https://github.com/learningequality/kolibri/pull/13374
Add questions url prop to Bloom player by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/13384
Add a date_deleted field to FacilityUser and add Django migration file by @LianaHarris360 in https://github.com/learningequality/kolibri/pull/13420
Add SoftDeletedFacilityUserModelManager by @LianaHarris360 in https://github.com/learningequality/kolibri/pull/13439
Initial setup for HTML Article Renderer plugin by @rtibbles in https://github.com/learningequality/kolibri/pull/13274
Changed
Cleans up no longer used component. by @rtibbles in https://github.com/learningequality/kolibri/pull/13349
Merge all commits from unmerged release branches but prefer all current changes by @rtibbles in https://github.com/learningequality/kolibri/pull/13362
cleans up learning activity imports from the learn plugin by @AllanOXDi in https://github.com/learningequality/kolibri/pull/13233
Limit job update DB writes to significant events by @rtibbles in https://github.com/learningequality/kolibri/pull/13403
Reference new contributing guidelines by @MisRob in https://github.com/learningequality/kolibri/pull/13389
Quiz Creation: Sections have fixed question order by default by @nucleogenesis in https://github.com/learningequality/kolibri/pull/13427
Remove deep KTextTruncator styles from AccessibleResourceCard by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/13392
Upgrade version to 0.18.1 by @marcellamaki in https://github.com/learningequality/kolibri/pull/13444
Upgrade Kolibri windows installer for new signing workflow. by @rtibbles in https://github.com/learningequality/kolibri/pull/13487
Reduce size of built whl file by stripping unused Django locale files by @rtibbles in https://github.com/learningequality/kolibri/pull/13465
Fixed
Drag widget and lesson cleanup by @rtibbles in https://github.com/learningequality/kolibri/pull/13297
Resolve long standing issue which prevents proper refresh of stats file data. by @rtibbles in https://github.com/learningequality/kolibri/pull/13348
Fix LearnerSummaryPage lesson count discrepency by @nucleogenesis in https://github.com/learningequality/kolibri/pull/13338
RTL fixes in Quiz Creation by @nucleogenesis in https://github.com/learningequality/kolibri/pull/13340
Fix broken links in developer documentation by @vagrdev in https://github.com/learningequality/kolibri/pull/13343
Fix design issue in Facility > Class tables on Mac app and Safari by @LianaHarris360 in https://github.com/learningequality/kolibri/pull/13369
Fix coach filtering by @akolson in https://github.com/learningequality/kolibri/pull/13413
Fix blank issue template by @MisRob in https://github.com/learningequality/kolibri/pull/13432
Override get_queryset to exclude soft deleted users by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/13423
Upgrade KDS version by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/13441
Fix truncated learn filters select options by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/13404
Remove empty div in favor of cards sync metrics by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/13320
Set min-width: 0 to fix always truncated titles in Safari and Mac app by @LianaHarris360 in https://github.com/learningequality/kolibri/pull/13438
Restore the demo banner by @rtibbles in https://github.com/learningequality/kolibri/pull/13442
Don’t override the adHoc learner assignments with the whole class by @marcellamaki in https://github.com/learningequality/kolibri/pull/13448
fix inadvertently swapped icons by @marcellamaki in https://github.com/learningequality/kolibri/pull/13454
Ensure “Submit quiz” button is visible in portrait mode on mobile when viewing practice quizzes by @LianaHarris360 in https://github.com/learningequality/kolibri/pull/13459
Fix learnergroup adhocgroup exam syncing by @marcellamaki in https://github.com/learningequality/kolibri/pull/13485
Handle all bad foreign keys by @rtibbles in https://github.com/learningequality/kolibri/pull/13486
0.18.0
High level overview
Release 0.18.0 introduces improvements and new features in the Coach experience to make it easier to find materials when creating a lesson or quiz.
Added
New Feature: Coaches can now use metadata filtering when creating lessons and quizzes
Updates to lessons and quizzes help coaches find what they need faster. Coaches can use filters like activity type (video, audio, reading materials), language, level, category (school subjects, vocational materials), and more. By combining a variety of filters, coaches can quickly locate specific and relevant materials they need.
Additional new workflows
The navigation in coach is updated and simplified. Pages are now organized around “Lessons” and “Quizzes”, rather than “Reports” and “Plan”, making it easier to quickly find the relevant lesson and quiz pages. Some pages also have additional information and interactions added.
Coaches have updated quiz creation options. They can choose to have Kolibri create a quiz for them from selected exercises, or they can choose specific questions from their available resources.
Bloom player is now supported in Kolibri.
Coaches can choose when to make quiz reports available to learners.
Noteworthy technical updates include rearchitecting our Coach plugin pages to support the navigation updates, extending the routing structure in coach to use nested routes and a side-panel style UX in lessons, and upgrading KDS to provide a variety of bug fixes and introduce the new KCard component.
List of supporting PRs
- 0.18: Groups view updates by @nucleogenesis in https://github.com/learningequality/kolibri/pull/12696 - 0.18: Plan Quizzes view updates by @ozer550 in https://github.com/learningequality/kolibri/pull/12704 - Add checks for exam groups and learner_ids to fix empty quiz page display by @LianaHarris360 in https://github.com/learningequality/kolibri/pull/13264 - Add individual learners as recipient type in quiz report by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/13100 - Add questions auto replacement feature by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/13230 - Add searchFiltersPanel to Lessons by @ozer550 in https://github.com/learningequality/kolibri/pull/12871 - Add learner_needs field to contentnode API by @rtibbles in https://github.com/learningequality/kolibri/pull/12763 - Add warning banner for "insufficient resources" by @AllanOXDi in https://github.com/learningequality/kolibri/pull/13146 - Adds ability to preview non-practice resources from the sidepanel by @AllanOXDi in https://github.com/learningequality/kolibri/pull/13012 - Adds ability to preview selected exercise by @AllanOXDi in https://github.com/learningequality/kolibri/pull/13032 - Adds temporary routes for lesson creation and edits by @ozer550 in https://github.com/learningequality/kolibri/pull/12672 - Avoid displaying CoachClassListPage until after data is finished loading by @LianaHarris360 in https://github.com/learningequality/kolibri/pull/12951 - Basic layout for displaying "resources currently in lesson" by @AllanOXDi in https://github.com/learningequality/kolibri/pull/12845 - Add quiz recipients selector as Side Panel by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/12952 - Add quiz report visibility control for coaches by @LianaHarris360 in https://github.com/learningequality/kolibri/pull/13064 - Add searchAndFilterStrings translator into kolibri-common by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/12623 - Category search modal icon update by @marcellamaki in https://github.com/learningequality/kolibri/pull/13092 - Clean up resource preview for practice quiz selection by @rtibbles in https://github.com/learningequality/kolibri/pull/13283 - Coach main navigation refactor by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/12775 - Conditionalize empty message string in lesson and quiz tables by @marcellamaki in https://github.com/learningequality/kolibri/pull/13256 - Conditionalize Save & Finish button by @marcellamaki in https://github.com/learningequality/kolibri/pull/13241 - ContentCardList: Fix ultrawide radio buttons by @nucleogenesis in https://github.com/learningequality/kolibri/pull/13221 - Copies & renames useSearch to useBaseSearch in kolibri-common package (On develop this time) by @nucleogenesis in https://github.com/learningequality/kolibri/pull/12566 - Create skeleton page for question selection shopping cart workflow by @ozer550 in https://github.com/learningequality/kolibri/pull/13049 - Disable all ungrouped learners checkbox when there are no ungrouped leaners by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/13224 - Drag widget and lesson cleanup by @rtibbles in https://github.com/learningequality/kolibri/pull/13297 - Ensure quiz report visibility is updated correctly after a quiz has been closed by @LianaHarris360 in https://github.com/learningequality/kolibri/pull/13164 - Exam Page: Move smaller screen timer to top by @nucleogenesis in https://github.com/learningequality/kolibri/pull/12485 - Extracts QuestionsAccordion component by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/13026 - Fix 'computed property already' defined on the lesson summary page in Coach by @MisRob in https://github.com/learningequality/kolibri/pull/13126 - Fix 'New quiz' button is visible in the print report by @AllanOXDi in https://github.com/learningequality/kolibri/pull/12945 - Fix "Invalid prop" error by @MisRob in https://github.com/learningequality/kolibri/pull/13125 - Fix accesibility issues by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/13246 - Fix alignment of language buttons in setup flow by @malviya-rajveer in https://github.com/learningequality/kolibri/pull/13024 - Fix broken CSV export features in COACH tabs by @ozer550 in https://github.com/learningequality/kolibri/pull/12919 - Fix bugs in common CategorySearchModal by @AllanOXDi in https://github.com/learningequality/kolibri/pull/13056 - Fix Coach > Quizzes blank page after copying a quiz by @LianaHarris360 in https://github.com/learningequality/kolibri/pull/12941 - Fix coach quizzes blank page by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/12940 - Fix colors of list items in quiz preview by @nucleogenesis in https://github.com/learningequality/kolibri/pull/12920 - fix conditional for channels in useCoachMetatdataTags by @rtibbles in https://github.com/learningequality/kolibri/pull/13214 - Fix creating a quiz without having imported resources or users enrolled in the class by @AllanOXDi in https://github.com/learningequality/kolibri/pull/12739 - Fix filters in csv exports for Lessons page by @ozer550 in https://github.com/learningequality/kolibri/pull/12949 - Fix glitch in completed quiz report sections displaying incorrect values by @LianaHarris360 in https://github.com/learningequality/kolibri/pull/13220 - Fix question count reset when isChoosingManually changed by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/13263 - Fix redirection issues in coach resource selection side panels by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/13223 - Fix regression with category icons overlapping text by @marcellamaki in https://github.com/learningequality/kolibri/pull/13156 - fix repetitive strings for drag and drop aria labels by @marcellamaki in https://github.com/learningequality/kolibri/pull/13296 - Fix search in quiz workflows by @rtibbles in https://github.com/learningequality/kolibri/pull/13234 - Fix: Show search & setting buttons at channel level in quiz resource selection by @nucleogenesis in https://github.com/learningequality/kolibri/pull/13198 - Fixes Coach > Lessons - 'Recipients' drop-down not working by @AllanOXDi in https://github.com/learningequality/kolibri/pull/12911 - Fixes filters not displayed on the imported exercises from QA channel by @AllanOXDi in https://github.com/learningequality/kolibri/pull/12935 - fixes workskills string not being available in the commoncorestrings by @AllanOXDi in https://github.com/learningequality/kolibri/pull/13135 - Helper function(s) to manage display of metadata tags in the new cards by @AllanOXDi in https://github.com/learningequality/kolibri/pull/12686 - Hide the 'Search' button when there's nothing to search for by @AllanOXDi in https://github.com/learningequality/kolibri/pull/13277 - Implement manual questions selection workflow by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/13091 - Implement new questions replacement by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/13180 - Implement quiz resources selection switching mode by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/13123 - Information Architecture Refactor: Update the Plan > Lesson Summary by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/12730 - Initial implementation of the Resource management side panel by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/12857 - Integrate search resource selection by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/13008 - Integrate shopping cart into lesson resource selection side panel by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/12996 - Integrate the "useSearch" composable and search filters panel into the results list in quizzes by @AllanOXDi in https://github.com/learningequality/kolibri/pull/13083 - LearnerSummaryPage: Fix quiz/lesson report links by @nucleogenesis in https://github.com/learningequality/kolibri/pull/13037 - Lesson resources selection by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/12895 - Lesson Summary children routes refactor by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/12852 - LessonResourceSelection: Add margin to bottom controls when isAppContext & touch device by @nucleogenesis in https://github.com/learningequality/kolibri/pull/13215 - Manage title truncation across quiz and lesson side panel workflows by @LianaHarris360 in https://github.com/learningequality/kolibri/pull/13235 - Manual selection workflow by @ozer550 in https://github.com/learningequality/kolibri/pull/13089 - Migrate quizzes to updated resource selection by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/13043 - Move SearchFiltersPanel into kolibri-common by @jredrejo in https://github.com/learningequality/kolibri/pull/12669 - Move useChannels & SearchChips to kolibri-common by @nucleogenesis in https://github.com/learningequality/kolibri/pull/12745 - No redirect resource preview by @marcellamaki in https://github.com/learningequality/kolibri/pull/13166 - Update SearchFiltersPanel for Coach by @nucleogenesis in https://github.com/learningequality/kolibri/pull/12759 - Update strings and message files. by @rtibbles in https://github.com/learningequality/kolibri/pull/13304 - Update strings and references after UX writing review by @marcellamaki in https://github.com/learningequality/kolibri/pull/13289 - Update the Plans > Lessons landing page to match the new information architecture by @LianaHarris360 in https://github.com/learningequality/kolibri/pull/12713 - Update preview plan quiz by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/12685 - Update question settings back navigation by @marcellamaki in https://github.com/learningequality/kolibri/pull/13169 - Update UI and add additional info to Learner Reports pages by @LianaHarris360 in https://github.com/learningequality/kolibri/pull/12711 - Use Accessible Cards in Lesson Resource Selection by @nucleogenesis in https://github.com/learningequality/kolibri/pull/13060 - Visual fixes on the 'Create new lesson' page by @MisRob in https://github.com/learningequality/kolibri/pull/13133Other technical additions include adding file storage option, allowing plugins to be enabled/disabled/applied via env vars, allowing studio URLs to be created as network locations, and the implementation of a task polling composable.
List of key PRs
- Add file storage option by @nucleogenesis in https://github.com/learningequality/kolibri/pull/12590 - Allow plugins to be enabled, disabled, and applied via env vars. by @rtibbles in https://github.com/learningequality/kolibri/pull/12844 - Allow Studio URLs to be created as network locations by @nucleogenesis in https://github.com/learningequality/kolibri/pull/13044 - Implement task polling composable by @ozer550 in https://github.com/learningequality/kolibri/pull/13158Changed
Kolibri JS Public API - BREAKING CHANGES
BREAKING CHANGE - Large parts of the JS Public API have now been removed. For a complete specification of the current public API see the kolibri npm package.
BREAKING CHANGE - Only the TaskResource is now available as a public resource within the JS API. All other API endpoints, aside from those namespaced as ‘public’ are considered internal and using them is not supported.
All previously public code has either been deleted, or is in the unpublished kolibri-common package in the repository. If you need to continue using any of this code, it is recommended to vendor and modify.
List of key PRs related to public API and refactoring
- Consolidate content node utilities into kolibri-common. by @rtibbles in https://github.com/learningequality/kolibri/pull/12699 - Fix import path error in kolibri-tools migrate core API functionality by @rtibbles in https://github.com/learningequality/kolibri/pull/13031 - JS Public API Update by @rtibbles in https://github.com/learningequality/kolibri/pull/12722 - Add pre-commit hook to prevent references to kolibri-common package in published packages by @rtibbles in https://github.com/learningequality/kolibri/pull/12891 - Move core channel state into coach - the only place it is still used. by @rtibbles in https://github.com/learningequality/kolibri/pull/12574 - Move core module registration out of the core store module. by @rtibbles in https://github.com/learningequality/kolibri/pull/12573 - Move language object sorting and comparison utilities into core i18n module by @rtibbles in https://github.com/learningequality/kolibri/pull/12602 - Move navroute generation into usenav composable. by @rtibbles in https://github.com/learningequality/kolibri/pull/12701 - Move renderer suffix into core constants. by @rtibbles in https://github.com/learningequality/kolibri/pull/12700 - Moved core notifications handling into NotificationsRoot component by @iamshobhraj in https://github.com/learningequality/kolibri/pull/12644 - Remove unneeded TotalPoints component from core API. by @rtibbles in https://github.com/learningequality/kolibri/pull/12600 - Remove CoreSnackbar from core API. by @rtibbles in https://github.com/learningequality/kolibri/pull/12627 - Use webpack's built in dynamic public path setting by @rtibbles in https://github.com/learningequality/kolibri/pull/12848Other important technical updates include:
upgrading to Vue 2.7
Python 3.13
making linting a standalone package
Other changes include:
- Don't allow any learn subnavigation if the user isn't logged in. by @rtibbles in https://github.com/learningequality/kolibri/pull/13287 - Pin python version to 3.11 for node-gyp support. by @rtibbles in https://github.com/learningequality/kolibri/pull/12984 - Update pre-commit for python 3.12 by @jredrejo in https://github.com/learningequality/kolibri/pull/12677 - Upgrade dependencies and test matrix for Python 3.13. by @rtibbles in https://github.com/learningequality/kolibri/pull/12746 - Upgrade kds v5.0.0 by @marcellamaki in https://github.com/learningequality/kolibri/pull/13098 - Upgrade to vue2.7 and remove @vue/composition-api. by @rtibbles in https://github.com/learningequality/kolibri/pull/12933 - Use explicit Python version to suppress warning by @rtibbles in https://github.com/learningequality/kolibri/pull/12802Fixed
Content renderer updates and fixes
List of supporting PRs
- Auto update h5p by @rtibbles in https://github.com/learningequality/kolibri/pull/12806 - Bloom player by @nikkuAg in https://github.com/learningequality/kolibri/pull/12586 - Fix various bugs in the Bloom Player implementation by @rtibbles in https://github.com/learningequality/kolibri/pull/12752 - Update Bloom player assets with improved navigation button opacity by @GautamBytes in https://github.com/learningequality/kolibri/pull/13063 - Don't use 'auto' public paths to resolve resources. by @rtibbles in https://github.com/learningequality/kolibri/pull/12942 com/learningequality/kolibri/pull/13137 - Fix H5P update builds by @rtibbles in https://github.com/learningequality/kolibri/pull/12977 - Fix H5P resources not showing completion when all questions answered correctly by @rtibbles in https://github. - Add blob: to CSP_SCRIPT_SRC to allow perseus graphie rendering. by @rtibbles in https://github.com/learningequality/kolibri/pull/13136 - Update H5P to latest by @rtibbles in https://github.com/learningequality/kolibri/pull/12993Miscellaneous small improvements and fixes
List of supporting PRs
- Add a placeholder string when no resources are available/no channels on devices by @marcellamaki in https://github.com/learningequality/kolibri/pull/13041 - Add optional padding argument to logo tool by @rtibbles in https://github.com/learningequality/kolibri/pull/12409 - Add ordering for FacilityUser viewset by @ozer550 in https://github.com/learningequality/kolibri/pull/12324 - Add powershell fallback for windows disk information. by @rtibbles in https://github.com/learningequality/kolibri/pull/13186 - Add score in practice quiz by @thesujai in https://github.com/learningequality/kolibri/pull/12564 - Add side panel title margins for consistency and spacing by @LianaHarris360 in https://github.com/ - Add tests for useQuizResources and update functionality for annotation and loading states by @GautamBytes in https://github.com/learningequality/kolibri/pull/13080 - Add to heartbeat API to keep useConnection composable more tightly encapsulated in the heartbeat module. by @rtibbles in https://github.com/learningequality/kolibri/pull/12698 - Add unstarted quiz string to quiz reports for learners who haven't started a quiz by @LianaHarris360 in https://github.com/learningequality/kolibri/pull/13112 - Annotate channels with some ordered metadata by @jredrejo in https://github.com/learningequality/kolibri/pull/12944 - Clean up of unneeded Python translated strings. by @rtibbles in https://github.com/learningequality/kolibri/pull/13293 - Clean up outdated references to NodeJS versions less than 18.20 by @rtibbles in https://github.com/learningequality/kolibri/pull/13245 - Clean up unnecessarily verbose strings in favour of $formatRelative. by @rtibbles in https://github.com/learningequality/kolibri/pull/13294 - Consistent 400 Response for Invalid Input in Kolibri Public Content APIs by @manzil-infinity180 in https://github.com/learningequality/kolibri/pull/12818 - Consolidate list remote users api by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/12321 - Creating composable for connection monitoring and replacing existing logic with it by @nathanaelg16 in https://github.com/learningequality/kolibri/pull/12584 - Creating useTotalProgress composable and migrating code to use it by @nathanaelg16 in https://github.com/learningequality/kolibri/pull/12621 - Delete unused mappers module. by @rtibbles in https://github.com/learningequality/kolibri/pull/13268 - Don't use reactive on an array. by @rtibbles in https://github.com/learningequality/kolibri/pull/13140 - Drop and recreate M2M field to avoid constraint errors. by @rtibbles in https://github.com/learningequality/kolibri/pull/12957 - Ensure session and summary log outputs are consistent between channel and displayed node by @rtibbles in https://github.com/learningequality/kolibri/pull/12804 - Fix change facility workflow by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/13165 - fix construction of cookie using user supplied input #12808 by @KumarVivekPathak in https://github.com/learningequality/kolibri/pull/13029 - Fix incorrect validator. by @rtibbles in https://github.com/learningequality/kolibri/pull/13160 - Fix infinite load more by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/13185 - Fix lesson resource selection issues by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/13085 - Fix linting on develop. by @rtibbles in https://github.com/learningequality/kolibri/pull/12598 - Fix masterylog end timestamp issues by @rtibbles in https://github.com/learningequality/kolibri/pull/12870 - Fix missing "Create a class and enroll learners" by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/13084 - Fix missing device name in SelectDeviceForm by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/13082 - Fix missing facility_name in facility removal notification by @nucleogenesis in https://github.com/learningequality/kolibri/pull/13050 - Fix no resources available" instead of the available libraries by @AllanOXDi in https://github.com/learningequality/kolibri/pull/13184 - Fix redirection to all facilities page for multi facility admins by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/13096 - Fix snackbar errors in content import by @rtibbles in https://github.com/learningequality/kolibri/pull/12946 - Fix the action not updating some data in the contributions tracking sheet by @MisRob in https://github.com/learningequality/kolibri/pull/13059 - Fix the CLI --pythonpath parameter by @rtibbles in https://github.com/learningequality/kolibri/pull/12874 - Fix the invalid prop on the KTable usage by @AllanOXDi in https://github.com/learningequality/kolibri/pull/13257 - Fix top navigation positioning when window is resized by @LianaHarris360 in https://github.com/learningequality/kolibri/pull/13007 - Fix typo which prevents error from dispatching by @marcellamaki in https://github.com/learningequality/kolibri/pull/12839 - Fix view learn device regression by @ozer550 in https://github.com/learningequality/kolibri/pull/13138 - Fix write-to-disk option for dev server. by @rtibbles in https://github.com/learningequality/kolibri/pull/12850 - Fixed:UserTable Tests by @Abhishek-Punhani in https://github.com/learningequality/kolibri/pull/13088 - Fixes 400 Bad request errors in the masterylog in un started quiz by @AllanOXDi in https://github.com/learningequality/kolibri/pull/13231 - Fixes assigned lessons and quizzes are not visible to the learner by @AllanOXDi in https://github.com/learningequality/kolibri/pull/12992 - Fixes regression in cli plugin apply command. by @rtibbles in https://github.com/learningequality/kolibri/pull/13291 - Fixes: Library - Connection state's position when there are no libraries around #11442 by @yashhash2 in https://github.com/learningequality/kolibri/pull/12948 - Handle Studio 404s by @rtibbles in https://github.com/learningequality/kolibri/pull/12593 - Improved Object Validations with New ValidateObject by @Abhishek-Punhani in https://github.com/learningequality/kolibri/pull/13232 - Make Kolibri compliant with a secure Content Security Policy by @rtibbles in https://github.com/learningequality/kolibri/pull/12851 - Makes sync schedule update/edit string available by @marcellamaki in https://github.com/learningequality/kolibri/pull/13207 - Migrate core logic of deletecontent and exportcontent to a util function by @thesujai in https://github.com/learningequality/kolibri/pull/13211 - Migrate core logic of exportchannel to a utility function and update associated tasks by @thesujai in https://github.com/learningequality/kolibri/pull/13178 - Migrate core logic of importchannel to a utility function and update associated tasks by @thesujai in https://github.com/learningequality/kolibri/pull/13099 - Migrate disconnectionErrorCodes into constants. by @rtibbles in https://github.com/learningequality/kolibri/pull/12583 - Migrated UserTable to KTable (Without Sorting) by @BabyElias in https://github.com/learningequality/kolibri/pull/13028 - Migrating existing references to session getters to use the useUser composable by @nathanaelg16 in https://github.com/learningequality/kolibri/pull/12438 - Miscellaneous fixes for things flagged by automated code scan by @rtibbles in https://github.com/learningequality/kolibri/pull/12784 - Modified validators in few files according to new ValidateObject by @Abhishek-Punhani in https://github.com/learningequality/kolibri/pull/13015 - Moving remaining references to session getters to the useUser composable by @nathanaelg16 in https://github.com/learningequality/kolibri/pull/12611 - Only show attempts column in lesson reports for practice quizzes by @nucleogenesis in https://github.com/learningequality/kolibri/pull/13046 - Pressing Enter key successfully submits Facility Import Admin Credentials form by @shruti862 in https://github.com/learningequality/kolibri/pull/13090 - Propagate setSelectedResources in quiz search for practice quiz selection. by @rtibbles in https://github.com/learningequality/kolibri/pull/13273 - Quiz creation: Show correct answers for questions by @nucleogenesis in https://github.com/learningequality/kolibri/pull/13038 - Redirect user when loading class summary results in 403 by @nucleogenesis in https://github.com/learningequality/kolibri/pull/12755 - Refactor facilityconfig facility actions into composables by @ozer550 in https://github.com/learningequality/kolibri/pull/13014 - Reintroduce paddingTop when we are in an immersive modal view by @rtibbles in https://github.com/learningequality/kolibri/pull/13162 - Refactor usesearch by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/12570 - Refactor accordion component by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/12693 - reload on connect in quizsummarypage; avoid possible error w/ missing… by @nucleogenesis in https://github.com/learningequality/kolibri/pull/12554 - Remove channels label fetching in useBaseSearch composable by @LianaHarris360 in https://github.com/learningequality/kolibri/pull/12877 - Resource discovery: Implement channel card by @AllanOXDi in https://github.com/learningequality/kolibri/pull/12607 - Resource discovery: Implement folder and resource card by @AllanOXDi in https://github.com/learningequality/kolibri/pull/12418 - Resource selection preview: Include metadata for all resource kinds by @nucleogenesis in https://github.com/learningequality/kolibri/pull/13242 - Remove .js extension from configuration imports for better compatibility by @rtibbles in https://github.com/learningequality/kolibri/pull/13106 - Remove "Activity" tab from learner view by @AllanOXDi in https://github.com/learningequality/kolibri/pull/12816 - Remove any reference to long gone DeviceOwner model in docs and docstrings by @rtibbles in https://github.com/learningequality/kolibri/pull/13269 - Remove attempt at automation of test pypi cleanup. by @rtibbles in https://github.com/learningequality/kolibri/pull/13181 - remove the class name from the appbarr by @AllanOXDi in https://github.com/learningequality/kolibri/pull/13183 - Removes individual learners from the recipient dropdown by @AllanOXDi in https://github.com/learningequality/kolibri/pull/13205 - Swap /lessonstemp to /lessons and remove old Lesson resource selection components by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/13167 - Remove FocusTrap in favor of KFocusTrap by @lokesh-sagi125 in https://github.com/learningequality/kolibri/pull/12718 - Remove Hardcoded Color for Button Hover State in `QuizStatus.vue` by @shivam-daksh in https://github.com/learningequality/kolibri/pull/12645 - Remove kolibri PR template in favor of org template by @marcellamaki in https://github.com/learningequality/kolibri/pull/12846 - Remove non-extant TODO by @rtibbles in https://github.com/learningequality/kolibri/pull/12943 - Remove the channel labels from the non-public ContentNode API by @ozer550 in https://github.com/learningequality/kolibri/pull/12985 - Remove unmaintained django debug panel in favour of django debug toolbar by @rtibbles in https://github.com/learningequality/kolibri/pull/13159 - Remove unnecessary icon. Leave kgrid element for spacing. by @rtibbles in https://github.com/learningequality/kolibri/pull/13130 - Remove unnecessary thumbnail setting when it is set on the API response. by @rtibbles in https://github.com/learningequality/kolibri/pull/12605 - Removing legacy vuex module for monitoring connection by @nathanaelg16 in https://github.com/learningequality/kolibri/pull/12594 - Replace requests with NetworkClient by @thesujai in https://github.com/learningequality/kolibri/pull/12096 - Replace unwrapped "up" and "down" strings used for aria labeling by @AllanOXDi in https://github.com/learningequality/kolibri/pull/12817 - Replaced the Placeholder with 'Find' for smaller screen sizes by @Abhishek-Punhani in https://github.com/learningequality/kolibri/pull/12997 - Reserved network locations for Studio and KDP by @LianaHarris360 in https://github.com/learningequality/kolibri/pull/12703 - Resolve issue with user not seeing updated practice quiz score on TopicsContentPage by @LianaHarris360 in https://github.com/learningequality/kolibri/pull/12823 - Revert use of network client in test utils. by @rtibbles in https://github.com/learningequality/kolibri/pull/12549 - Sets default value in the "Recipients" drop-down should be "All" by @AllanOXDi in https://github.com/learningequality/kolibri/pull/13272 - SetupWizard: Fix import facility superuser password by @nucleogenesis in https://github.com/learningequality/kolibri/pull/13213 - Skip initClassInfo request for quiz and lesson resource selection side panel subpages by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/13210 - Small tweaks to simplify publishing packages. by @rtibbles in https://github.com/learningequality/kolibri/pull/13009 - Trim section title on save by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/13225 - Update broken references by @emmanuel-ferdman in https://github.com/learningequality/kolibri/pull/12867 - Update content cache key after metadata update. by @rtibbles in https://github.com/learningequality/kolibri/pull/13199 - Update content request handling to only use reserved locations representing Studio by @LianaHarris360 in https://github.com/learningequality/kolibri/pull/12881 - Update destroy to destroyed, to properly remove by @marcellamaki in https://github.com/learningequality/kolibri/pull/13259 - Update DownloadButton.vue by @lokesh-sagi125 in https://github.com/learningequality/kolibri/pull/13047 - Update dropshadows to the latest Kolibri Design System guidelines by @Suraj-kumar00 in https://github.com/learningequality/kolibri/pull/12630 - Updates to quiz/lesson resource selection metadata display by @rtibbles in https://github.com/learningequality/kolibri/pull/13258 - Use KRadioButtonGroup in the language switcher modal and on the Device settings page by @muditchoudhary in https://github.com/learningequality/kolibri/pull/12325 - When running under the Kolibri process bus, use a logging queue to prevent reentrant logging errors and file contention by @rtibbles in https://github.com/learningequality/kolibri/pull/12785 - Wrapped KRadioButton groups in KRadioButtonGroup by @iamshobhraj in https://github.com/learningequality/kolibri/pull/12751Developer-facing improvements
In this release are also changes that support our use of Github actions in the Kolibri repo, making it easier to engage with our open source community, as well as documentation updates, release process improvements, and developer tooling improvements.
List of supporting PRs
- Use notify_team_new_comment workflow action from .github repo by @rparadowski in https://github.com/learningequality/kolibri/pull/12900 - Use kolibri-image-pi repo for building raspberry pi image. by @rtibbles in https://github.com/learningequality/kolibri/pull/12869 - Add required sanity check flags to ensure deletion of testpypi artifacts by @rtibbles in https://github.com/learningequality/kolibri/pull/12978 - Adds loose pinning of dev docs requirements to ensure correct builds … by @benjaoming in https://github.com/learningequality/kolibri/pull/12466 - Create github action for automatically cleaning up test pypi. by @rtibbles in https://github.com/learningequality/kolibri/pull/12905 - Developer documentation updates by @MisRob in https://github.com/learningequality/kolibri/pull/12849 - Docs: Remove legacy stuff from conf.py by @benjaoming in https://github.com/learningequality/kolibri/pull/12563 - feat: add community contribution labeling workflow by @iamshobhraj in https://github.com/learningequality/kolibri/pull/13128 - Feat: added update-spreadsheet action by @GarvitSinghal47 in https://github.com/learningequality/kolibri/pull/12866 - Final fix to update the AUTHORS for new contributors by @thesujai in https://github.com/learningequality/kolibri/pull/12689 - Make linting a standalone package by @rtibbles in https://github.com/learningequality/kolibri/pull/12847 - Make no unused properties checking maximally strict by @rtibbles in https://github.com/learningequality/kolibri/pull/12910 - Reactivate PR Size labels by @rtibbles in https://github.com/learningequality/kolibri/pull/12811 - Remove 'pull_request_review' event from the community contributions spreadsheet action by @MisRob in https://github.com/learningequality/kolibri/pull/12950 - Remove custom eslint rules that are redundant with eslint-plugin-vue rules. by @rtibbles in https://github.com/learningequality/kolibri/pull/12757 - Turn off gcloudignore parsing as we do not have one, to suppress warnings by @rtibbles in https://github.com/learningequality/kolibri/pull/12803 - unassign inactive users action by @SukhvirKooner in https://github.com/learningequality/kolibri/pull/13275 - Update all jobs to avoid ubuntu-20.04 image removal by @rtibbles in https://github.com/learningequality/kolibri/pull/13163 - Update contact information in the contributing guidelines by @MisRob in https://github.com/learningequality/kolibri/pull/13139 - Update eslint-plugin-kolibri version. by @rtibbles in https://github.com/learningequality/kolibri/pull/12899 - Update linting to properly distinguish between warnings and errors. by @rtibbles in https://github.com/learningequality/kolibri/pull/13113 - Update mappings for theme updates for newly introduced tokens made by @rtibbles in https://github.com/learningequality/kolibri/pull/12765 - Update obsolete email in the developer documentation by @MisRob in https://github.com/learningequality/kolibri/pull/13202 - Update our sqlalchemy schema generation to not include constraints by @rtibbles in https://github.com/learningequality/kolibri/pull/13161 - Update repository information for all npm packages that will be published. by @rtibbles in https://github.com/learningequality/kolibri/pull/12903 - Update the pretranslate so that it works correctly with the API by @marcellamaki in https://github.com/learningequality/kolibri/pull/13279 - Update windows installer to prevent errors from long paths by @rtibbles in https://github.com/learningequality/kolibri/pull/13236Dependencies
List of supporting PRs
- Bump @babel/plugin-syntax-import-assertions from 7.24.7 to 7.25.6 in the babel group by @dependabot in https://github.com/learningequality/kolibri/pull/12634 - Bump @rushstack/eslint-patch from 1.10.3 to 1.10.4 by @dependabot in https://github.com/learningequality/kolibri/pull/12509 - Bump @rushstack/eslint-patch from 1.10.4 to 1.10.5 by @dependabot in https://github.com/learningequality/kolibri/pull/12980 - Bump @rushstack/eslint-patch from 1.10.5 to 1.11.0 by @dependabot in https://github.com/learningequality/kolibri/pull/13191 - Bump @testing-library/jest-dom from 6.4.6 to 6.4.8 by @dependabot in https://github.com/learningequality/kolibri/pull/12480 - Bump @testing-library/jest-dom from 6.4.8 to 6.5.0 by @dependabot in https://github.com/learningequality/kolibri/pull/12614 - Bump @testing-library/jest-dom from 6.5.0 to 6.6.2 by @dependabot in https://github.com/learningequality/kolibri/pull/12768 - Bump @testing-library/jest-dom from 6.6.2 to 6.6.3 by @dependabot in https://github.com/learningequality/kolibri/pull/12829 - Bump @testing-library/user-event from 14.5.2 to 14.6.1 by @dependabot in https://github.com/learningequality/kolibri/pull/13019 - Bump @types/jest from 29.5.12 to 29.5.14 by @dependabot in https://github.com/learningequality/kolibri/pull/12772 - Bump autoprefixer from 10.4.19 to 10.4.20 by @dependabot in https://github.com/learningequality/kolibri/pull/12543 - Bump autoprefixer from 10.4.20 to 10.4.21 by @dependabot in https://github.com/learningequality/kolibri/pull/13193 - Bump axios from 1.7.2 to 1.7.3 by @dependabot in https://github.com/learningequality/kolibri/pull/12542 - Bump axios from 1.7.3 to 1.7.5 by @dependabot in https://github.com/learningequality/kolibri/pull/12604 - Bump axios from 1.7.5 to 1.7.7 by @dependabot in https://github.com/learningequality/kolibri/pull/12638 - Bump axios from 1.7.7 to 1.7.8 by @dependabot in https://github.com/learningequality/kolibri/pull/12883 - Bump axios from 1.7.8 to 1.7.9 by @dependabot in https://github.com/learningequality/kolibri/pull/12926 - Bump axios from 1.7.9 to 1.8.2 by @dependabot in https://github.com/learningequality/kolibri/pull/13182 - Bump axios from 1.8.2 to 1.8.3 by @dependabot in https://github.com/learningequality/kolibri/pull/13227 - Bump axios from 1.8.3 to 1.8.4 by @dependabot in https://github.com/learningequality/kolibri/pull/13252 - Bump babel-loader from 9.1.3 to 9.2.1 by @dependabot in https://github.com/learningequality/kolibri/pull/12831 - Bump babel-loader from 9.2.1 to 10.0.0 by @dependabot in https://github.com/learningequality/kolibri/pull/13154 - Bump commander from 12.1.0 to 13.0.0 by @dependabot in https://github.com/learningequality/kolibri/pull/12974 - Bump commander from 13.0.0 to 13.1.0 by @dependabot in https://github.com/learningequality/kolibri/pull/13017 - Bump core-js from 3.37.1 to 3.38.0 by @dependabot in https://github.com/learningequality/kolibri/pull/12546 - Bump core-js from 3.38.0 to 3.38.1 by @dependabot in https://github.com/learningequality/kolibri/pull/12578 - Bump core-js from 3.38.1 to 3.39.0 by @dependabot in https://github.com/learningequality/kolibri/pull/12864 - Bump core-js from 3.39.0 to 3.40.0 by @dependabot in https://github.com/learningequality/kolibri/pull/12981 - Bump core-js from 3.40.0 to 3.41.0 by @dependabot in https://github.com/learningequality/kolibri/pull/13151 - Bump cross-spawn from 7.0.3 to 7.0.6 by @dependabot in https://github.com/learningequality/kolibri/pull/12856 - Bump css-minimizer-webpack-plugin from 7.0.0 to 7.0.2 by @dependabot in https://github.com/learningequality/kolibri/pull/13190 - Bump csv-parse from 5.5.6 to 5.6.0 by @dependabot in https://github.com/learningequality/kolibri/pull/12885 - Bump dayjs from 1.11.11 to 1.11.12 by @dependabot in https://github.com/learningequality/kolibri/pull/12481 - Bump dayjs from 1.11.12 to 1.11.13 by @dependabot in https://github.com/learningequality/kolibri/pull/12579 - Bump eslint from 8.23.0 to 8.57.0 by @dependabot in https://github.com/learningequality/kolibri/pull/12637 - Bump eslint-config-prettier from 10.0.1 to 10.0.2 by @dependabot in https://github.com/learningequality/kolibri/pull/13148 - Bump eslint-config-prettier from 10.0.2 to 10.1.1 by @dependabot in https://github.com/learningequality/kolibri/pull/13192 - Bump eslint-config-prettier from 9.1.0 to 10.0.1 by @dependabot in https://github.com/learningequality/kolibri/pull/13002 - Bump eslint-plugin-compat from 5.0.0 to 6.0.0 by @dependabot in https://github.com/learningequality/kolibri/pull/12461 - Bump eslint-plugin-compat from 6.0.0 to 6.0.1 by @dependabot in https://github.com/learningequality/kolibri/pull/12798 - Bump eslint-plugin-compat from 6.0.1 to 6.0.2 by @dependabot in https://github.com/learningequality/kolibri/pull/12961 - Bump eslint-plugin-import from 2.29.1 to 2.30.0 by @dependabot in https://github.com/learningequality/kolibri/pull/12639 - Bump eslint-plugin-import from 2.30.0 to 2.31.0 by @dependabot in https://github.com/learningequality/kolibri/pull/12795 - Bump eslint-plugin-jest from 28.10.0 to 28.11.0 by @dependabot in https://github.com/learningequality/kolibri/pull/13018 - Bump eslint-plugin-jest from 28.6.0 to 28.7.0 by @dependabot in https://github.com/learningequality/kolibri/pull/12544 - Bump eslint-plugin-jest from 28.7.0 to 28.8.0 by @dependabot in https://github.com/learningequality/kolibri/pull/12561 - Bump eslint-plugin-jest from 28.8.0 to 28.8.2 by @dependabot in https://github.com/learningequality/kolibri/pull/12640 - Bump eslint-plugin-jest from 28.8.2 to 28.8.3 by @dependabot in https://github.com/learningequality/kolibri/pull/12650 - Bump eslint-plugin-jest from 28.8.3 to 28.9.0 by @dependabot in https://github.com/learningequality/kolibri/pull/12797 - Bump eslint-plugin-jest from 28.9.0 to 28.10.0 by @dependabot in https://github.com/learningequality/kolibri/pull/12970 - Bump eslint-plugin-jest-dom from 5.4.0 to 5.5.0 by @dependabot in https://github.com/learningequality/kolibri/pull/12863 - Bump eslint-plugin-vue from 9.27.0 to 9.28.0 by @dependabot in https://github.com/learningequality/kolibri/pull/12641 - Bump eslint-plugin-vue from 9.28.0 to 9.30.0 by @dependabot in https://github.com/learningequality/kolibri/pull/12796 - Bump eslint-plugin-vue from 9.30.0 to 9.31.0 by @dependabot in https://github.com/learningequality/kolibri/pull/12830 - Bump eslint-plugin-vue from 9.31.0 to 9.32.0 by @dependabot in https://github.com/learningequality/kolibri/pull/12909 - Bump eslint-plugin-vue from 9.32.0 to 9.33.0 by @dependabot in https://github.com/learningequality/kolibri/pull/13194 - Bump espree from 10.1.0 to 10.3.0 by @dependabot in https://github.com/learningequality/kolibri/pull/12774 - Bump express from 4.19.2 to 4.21.0 by @dependabot in https://github.com/learningequality/kolibri/pull/12666 - Bump express from 4.21.0 to 4.21.1 by @dependabot in https://github.com/learningequality/kolibri/pull/12828 - Bump express from 4.21.1 to 4.21.2 by @dependabot in https://github.com/learningequality/kolibri/pull/12929 - Bump express from 4.21.2 to 5.1.0 by @dependabot in https://github.com/learningequality/kolibri/pull/13286 - Bump fast-glob from 3.3.2 to 3.3.3 by @dependabot in https://github.com/learningequality/kolibri/pull/12983 - Bump fuse.js from 7.0.0 to 7.1.0 by @dependabot in https://github.com/learningequality/kolibri/pull/13054 - Bump html-webpack-plugin from 5.6.0 to 5.6.3 by @dependabot in https://github.com/learningequality/kolibri/pull/12769 - Bump http-proxy-middleware from 2.0.6 to 2.0.7 by @dependabot in https://github.com/learningequality/kolibri/pull/12749 - Bump ini from 1.3.5 to 5.0.0 by @dependabot in https://github.com/learningequality/kolibri/pull/12781 - Bump ini from 4.1.3 to 5.0.0 by @dependabot in https://github.com/learningequality/kolibri/pull/12654 - Bump jscodeshift from 0.16.1 to 17.1.1 by @dependabot in https://github.com/learningequality/kolibri/pull/12860 - Bump jscodeshift from 17.1.1 to 17.1.2 by @dependabot in https://github.com/learningequality/kolibri/pull/13006 - Bump jscodeshift from 17.1.2 to 17.3.0 by @dependabot in https://github.com/learningequality/kolibri/pull/13253 - Bump katex from 0.16.11 to 0.16.15 by @dependabot in https://github.com/learningequality/kolibri/pull/12928 - Bump katex from 0.16.15 to 0.16.17 by @dependabot in https://github.com/learningequality/kolibri/pull/12962 - Bump katex from 0.16.17 to 0.16.18 by @dependabot in https://github.com/learningequality/kolibri/pull/12971 - Bump katex from 0.16.18 to 0.16.19 by @dependabot in https://github.com/learningequality/kolibri/pull/12975 - Bump katex from 0.16.19 to 0.16.20 by @dependabot in https://github.com/learningequality/kolibri/pull/13004 - Bump katex from 0.16.20 to 0.16.21 by @dependabot in https://github.com/learningequality/kolibri/pull/13013 - Bump kolibri-constants from 0.2.6 to 0.2.7 by @dependabot in https://github.com/learningequality/kolibri/pull/12652 - Bump kolibri-constants from 0.2.7 to 0.2.8 by @dependabot in https://github.com/learningequality/kolibri/pull/12827 - Bump kolibri-constants from 0.2.8 to 0.2.9 by @dependabot in https://github.com/learningequality/kolibri/pull/13251 - Bump kolibri-design-system from 5.0.0 to 5.0.1 by @dependabot in https://github.com/learningequality/kolibri/pull/13121 - Bump kolibri-design-system from 5.0.0-rc1 to 5.0.0-rc2 by @dependabot in https://github.com/learningequality/kolibri/pull/12580 - Bump kolibri-design-system from 5.0.0-rc2 to 5.0.0-rc3 by @dependabot in https://github.com/learningequality/kolibri/pull/12616 - Bump kolibri-design-system from 5.0.0-rc3 to 5.0.0-rc5 by @dependabot in https://github.com/learningequality/kolibri/pull/12651 - Bump kolibri-design-system from 5.0.0-rc8 to 5.0.0-rc9 by @dependabot in https://github.com/learningequality/kolibri/pull/12833 - Bump kolibri-design-system from 5.0.0-rc9 to 5.0.0-rc10 by @dependabot in https://github.com/learningequality/kolibri/pull/12888 - Bump launch-editor-middleware from 2.8.0 to 2.8.1 by @dependabot in https://github.com/learningequality/kolibri/pull/12545 - Bump launch-editor-middleware from 2.8.1 to 2.9.1 by @dependabot in https://github.com/learningequality/kolibri/pull/12656 - Bump launch-editor-middleware from 2.9.1 to 2.10.0 by @dependabot in https://github.com/learningequality/kolibri/pull/13118 - Bump learningequality/kolibri-installer-debian from 0.16.1 to 0.18.0 by @dependabot in https://github.com/learningequality/kolibri/pull/12986 - Bump loglevel from 1.9.1 to 1.9.2 by @dependabot in https://github.com/learningequality/kolibri/pull/12653 - Bump micromatch from 4.0.5 to 4.0.8 by @dependabot in https://github.com/learningequality/kolibri/pull/12597 - Bump mime-db from 1.52.0 to 1.53.0 by @dependabot in https://github.com/learningequality/kolibri/pull/12457 - Bump mime-db from 1.53.0 to 1.54.0 by @dependabot in https://github.com/learningequality/kolibri/pull/13229 - Bump mini-css-extract-plugin from 2.9.0 to 2.9.1 by @dependabot in https://github.com/learningequality/kolibri/pull/12577 - Bump mini-css-extract-plugin from 2.9.1 to 2.9.2 by @dependabot in https://github.com/learningequality/kolibri/pull/12825 - Bump nanoid from 3.3.7 to 3.3.8 by @dependabot in https://github.com/learningequality/kolibri/pull/12938 - Bump path-to-regexp from 1.8.0 to 1.9.0 in /packages/kolibri-core-for-export by @dependabot in https://github.com/learningequality/kolibri/pull/12658 - Bump peter-evans/create-pull-request from 6 to 7 by @dependabot in https://github.com/learningequality/kolibri/pull/12976 - Bump postcss-html from 1.7.0 to 1.8.0 by @dependabot in https://github.com/learningequality/kolibri/pull/13005 - Bump pre-commit-ci/lite-action from 1.0.2 to 1.0.3 by @dependabot in https://github.com/learningequality/kolibri/pull/12667 - Bump pre-commit-ci/lite-action from 1.0.3 to 1.1.0 by @dependabot in https://github.com/learningequality/kolibri/pull/12721 - Bump prettier from 3.3.2 to 3.3.3 by @dependabot in https://github.com/learningequality/kolibri/pull/12459 - Bump prettier from 3.3.3 to 3.4.1 by @dependabot in https://github.com/learningequality/kolibri/pull/12886 - Bump prettier from 3.4.1 to 3.4.2 by @dependabot in https://github.com/learningequality/kolibri/pull/12931 - Bump prettier from 3.4.2 to 3.5.0 by @dependabot in https://github.com/learningequality/kolibri/pull/13069 - Bump prettier from 3.5.0 to 3.5.2 by @dependabot in https://github.com/learningequality/kolibri/pull/13117 - Bump prettier from 3.5.2 to 3.5.3 by @dependabot in https://github.com/learningequality/kolibri/pull/13153 - Bump react-window from 1.8.10 to 1.8.11 by @dependabot in https://github.com/learningequality/kolibri/pull/12963 - Bump recast from 0.23.9 to 0.23.11 by @dependabot in https://github.com/learningequality/kolibri/pull/13150 - Bump rtlcss from 4.1.1 to 4.2.0 by @dependabot in https://github.com/learningequality/kolibri/pull/12506 - Bump rtlcss from 4.2.0 to 4.3.0 by @dependabot in https://github.com/learningequality/kolibri/pull/12618 - Bump sass-loader from 14.2.1 to 15.0.0 by @dependabot in https://github.com/learningequality/kolibri/pull/12482 - Bump sass-loader from 15.0.0 to 16.0.0 by @dependabot in https://github.com/learningequality/kolibri/pull/12510 - Bump sass-loader from 16.0.0 to 16.0.1 by @dependabot in https://github.com/learningequality/kolibri/pull/12576 - Bump sass-loader from 16.0.1 to 16.0.2 by @dependabot in https://github.com/learningequality/kolibri/pull/12773 - Bump sass-loader from 16.0.2 to 16.0.3 by @dependabot in https://github.com/learningequality/kolibri/pull/12800 - Bump sass-loader from 16.0.3 to 16.0.4 by @dependabot in https://github.com/learningequality/kolibri/pull/12932 - Bump sass-loader from 16.0.4 to 16.0.5 by @dependabot in https://github.com/learningequality/kolibri/pull/13119 - Bump semver from 5.7.1 to 7.7.1 by @dependabot in https://github.com/learningequality/kolibri/pull/13200 - Bump semver from 7.6.2 to 7.6.3 by @dependabot in https://github.com/learningequality/kolibri/pull/12458 - Bump semver from 7.6.3 to 7.7.1 by @dependabot in https://github.com/learningequality/kolibri/pull/13053 - Bump slackapi/slack-github-action from 1.26.0 to 1.27.0 by @dependabot in https://github.com/learningequality/kolibri/pull/12643 - Bump stylelint-config-sass-guidelines from 11.1.0 to 12.1.0 by @dependabot in https://github.com/learningequality/kolibri/pull/12793 - Bump terser-webpack-plugin from 5.3.10 to 5.3.11 by @dependabot in https://github.com/learningequality/kolibri/pull/12959 - Bump terser-webpack-plugin from 5.3.11 to 5.3.12 by @dependabot in https://github.com/learningequality/kolibri/pull/13152 - Bump terser-webpack-plugin from 5.3.12 to 5.3.14 by @dependabot in https://github.com/learningequality/kolibri/pull/13189 - Bump the babel group across 1 directory with 2 updates by @dependabot in https://github.com/learningequality/kolibri/pull/12512 - Bump the babel group with 2 updates by @dependabot in https://github.com/learningequality/kolibri/pull/12454 - Bump the babel group with 2 updates by @dependabot in https://github.com/learningequality/kolibri/pull/12612 - Bump the babel group with 2 updates by @dependabot in https://github.com/learningequality/kolibri/pull/13039 - Bump the babel group with 2 updates by @dependabot in https://github.com/learningequality/kolibri/pull/13187 - Bump the babel group with 3 updates by @dependabot in https://github.com/learningequality/kolibri/pull/13066 - Bump the babel group with 3 updates by @dependabot in https://github.com/learningequality/kolibri/pull/13115 - Bump the babel group with 4 updates by @dependabot in https://github.com/learningequality/kolibri/pull/12766 - Bump typescript from 5.5.3 to 5.5.4 by @dependabot in https://github.com/learningequality/kolibri/pull/12479 - Bump typescript from 5.5.4 to 5.6.2 by @dependabot in https://github.com/learningequality/kolibri/pull/12657 - Bump typescript from 5.6.2 to 5.6.3 by @dependabot in https://github.com/learningequality/kolibri/pull/12794 - Bump typescript from 5.6.3 to 5.7.2 by @dependabot in https://github.com/learningequality/kolibri/pull/12884 - Bump typescript from 5.7.2 to 5.7.3 by @dependabot in https://github.com/learningequality/kolibri/pull/13003 - Bump typescript from 5.7.3 to 5.8.2 by @dependabot in https://github.com/learningequality/kolibri/pull/13149 - Bump typescript from 5.8.2 to 5.8.3 by @dependabot in https://github.com/learningequality/kolibri/pull/13307 - Bump ua-parser-js from 1.0.38 to 1.0.39 by @dependabot in https://github.com/learningequality/kolibri/pull/12799 - Bump ua-parser-js from 1.0.39 to 1.0.40 by @dependabot in https://github.com/learningequality/kolibri/pull/12969 - Bump video.js from 7.21.6 to 7.21.7 by @dependabot in https://github.com/learningequality/kolibri/pull/13254 - Bump web-streams-polyfill from 4.0.0 to 4.1.0 by @dependabot in https://github.com/learningequality/kolibri/pull/12982 - Bump webpack from 5.92.1 to 5.93.0 by @dependabot in https://github.com/learningequality/kolibri/pull/12460 - Bump webpack from 5.93.0 to 5.94.0 by @dependabot in https://github.com/learningequality/kolibri/pull/12615 - Bump webpack from 5.94.0 to 5.96.1 by @dependabot in https://github.com/learningequality/kolibri/pull/12832 - Bump webpack from 5.96.1 to 5.97.0 by @dependabot in https://github.com/learningequality/kolibri/pull/12907 - Bump webpack from 5.97.0 to 5.97.1 by @dependabot in https://github.com/learningequality/kolibri/pull/12927 - Bump webpack from 5.97.1 to 5.98.0 by @dependabot in https://github.com/learningequality/kolibri/pull/13120 - Bump webpack from 5.98.0 to 5.99.5 by @dependabot in https://github.com/learningequality/kolibri/pull/13308 - Bump webpack-cli from 5.1.4 to 6.0.1 by @dependabot in https://github.com/learningequality/kolibri/pull/12968 - Bump webpack-dev-server from 5.0.4 to 5.1.0 by @dependabot in https://github.com/learningequality/kolibri/pull/12642New Contributors
@shivam-daksh made their first contribution in https://github.com/learningequality/kolibri/pull/12645
@iamshobhraj made their first contribution in https://github.com/learningequality/kolibri/pull/12644
@BabyElias made their first contribution in https://github.com/learningequality/kolibri/pull/12571
@Suraj-kumar00 made their first contribution in https://github.com/learningequality/kolibri/pull/12630
@lokesh-sagi125 made their first contribution in https://github.com/learningequality/kolibri/pull/12718
@m3tal10 made their first contribution in https://github.com/learningequality/kolibri/pull/12835
@emmanuel-ferdman made their first contribution in https://github.com/learningequality/kolibri/pull/12867
@manzil-infinity180 made their first contribution in https://github.com/learningequality/kolibri/pull/12818
@rparadowski made their first contribution in https://github.com/learningequality/kolibri/pull/12900
@yashhash2 made their first contribution in https://github.com/learningequality/kolibri/pull/12948
@Abhishek-Punhani made their first contribution in https://github.com/learningequality/kolibri/pull/12997
@malviya-rajveer made their first contribution in https://github.com/learningequality/kolibri/pull/13024
@KumarVivekPathak made their first contribution in https://github.com/learningequality/kolibri/pull/13029
@GautamBytes made their first contribution in https://github.com/learningequality/kolibri/pull/13063
@shruti862 made their first contribution in https://github.com/learningequality/kolibri/pull/13090
@SukhvirKooner made their first contribution in https://github.com/learningequality/kolibri/pull/13275
Full Changelog: https://github.com/learningequality/kolibri/compare/v0.17.5…v0.18.0-beta4
0.17.4
Fixed
Ensures users can ‘Continue’ from the SelectFacilityForm component in SetupWizard by @rtibbles in https://github.com/learningequality/kolibri/pull/12893
0.17.3
Changed
Improve learn folder contents display by @rtibbles in https://github.com/learningequality/kolibri/pull/12737
Update KDS theme token by @AllanOXDi in https://github.com/learningequality/kolibri/pull/12742
Final token updates by @marcellamaki in https://github.com/learningequality/kolibri/pull/12754
Added
Add Fulfulde translations by @radinamatic in https://github.com/learningequality/kolibri/pull/12738
Update morango for conditional indexes on store to improve deserialization performance. by @rtibbles in https://github.com/learningequality/kolibri/pull/12747
Fixed
Settings is not correct after tzlocal update by @jredrejo in https://github.com/learningequality/kolibri/pull/12683
Add missing
indeterminatestates on Select All checkboxes by @nucleogenesis in https://github.com/learningequality/kolibri/pull/12587Fix import channel in Postgresql by @jredrejo in https://github.com/learningequality/kolibri/pull/12709
Branding tweaks by @rtibbles in https://github.com/learningequality/kolibri/pull/12736
Tweaks to CLI and message extraction utility function by @rtibbles in https://github.com/learningequality/kolibri/pull/12320
Delete resource from everywhere when force_delete is selected by @thesujai in https://github.com/learningequality/kolibri/pull/12680
Dont delete the entire channel when deleting a single content by @thesujai in https://github.com/learningequality/kolibri/pull/12740
Prevent access to undefined AttemptLogs while looking at reports by @LianaHarris360 in https://github.com/learningequality/kolibri/pull/12723
Update StorageNotification.vue to prevent undefined access if device plugin is disabled by @rtibbles in https://github.com/learningequality/kolibri/pull/12724
Update favicon to be available when the default theme is disabled by @marcellamaki in https://github.com/learningequality/kolibri/pull/12760
Fix on my own merge account KCheckbox issue by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/12761
0.17.2
Changed
Make ‘save to device’ file downloads initiate immediately by @rtibbles in #12675
0.17.1
Added
Changed
Fixed
0.17.0
Added
New Feature: Updates to quiz workflow with new sections and question replacement functionality
Updates to our quizzes provide coaches more flexibility in creating quizzes by swapping out questions or removing questions to create the quiz they want. Coaches choose resources from which questions are selected. They can then review individual questions, and replace or remove individual questions, customising the quiz to learner needs. Coaches can also divide the quiz into sections of up to 25 questions each, allowing for longer quizzes.
Noteworthy technical updates include updating to a third version of our Exam model data schema, the addtion of a new draft exam model to allow editing of quizzes before they are made active/syncable, introducing a new accordion component, and changing the quiz creation routing structure to use nested routes and a side-panel style UX.
List of supporting PRs
- Restore exam/utils.spec.js to previous version; tests pass by @nucleogenesis in https://github.com/learningequality/kolibri/pull/11155 - Enhanced Quizzes: Initial frontend state management API by @nucleogenesis in https://github.com/learningequality/kolibri/pull/11088 - adds the new Quiz Creation Component by @AllanOXDi in https://github.com/learningequality/kolibri/pull/11077 - Enhanced Quiz Management: Side panel and routing foundations by @nucleogenesis in https://github.com/learningequality/kolibri/pull/11132 - Build flexible and accessible accordion component by @AllanOXDi in https://github.com/learningequality/kolibri/pull/11087 - Update Exam model with V3 question_sources, update relevant JS utils by @nucleogenesis in https://github.com/learningequality/kolibri/pull/11025 - Quiz creation DEBUG data improvements by @nucleogenesis in https://github.com/learningequality/kolibri/pull/11662 - Quiz rebase regression fixes by @nucleogenesis in https://github.com/learningequality/kolibri/pull/11661 - Quiz foundations & data connection by @nucleogenesis in https://github.com/learningequality/kolibri/pull/11277 - Section settings side panel by @AllanOXDi in https://github.com/learningequality/kolibri/pull/11314 - Feature quiz section tabs with overflow by @nucleogenesis in https://github.com/learningequality/kolibri/pull/11382 - Finishing up the Quiz Root Page by @nucleogenesis in https://github.com/learningequality/kolibri/pull/11434 - [Accordion] Add "collapse all"/ "expand all" logic into AccordionContainer by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/11565 - Migrate quizForge object references to composition API standard by @ozer550 in https://github.com/learningequality/kolibri/pull/11562 - Remove stray references to quizForge by @marcellamaki in https://github.com/learningequality/kolibri/pull/11633 - Fix title validation error bug in quizSection by @ozer550 in https://github.com/learningequality/kolibri/pull/11642 - Coach Quiz Exercise Resources by @nucleogenesis in https://github.com/learningequality/kolibri/pull/11682 - Question sources by @AllanOXDi in https://github.com/learningequality/kolibri/pull/11658 - Update ExamSerializers according to v3 model by @ozer550 in https://github.com/learningequality/kolibri/pull/11674 - useFetchTree specs by @nucleogenesis in https://github.com/learningequality/kolibri/pull/11766 - Synchronise user selections with Quiz Creation State by @ozer550 in https://github.com/learningequality/kolibri/pull/11783 - EQM clean up resouce selection by @AllanOXDi in https://github.com/learningequality/kolibri/pull/11764 - Conditionalizes the loading action for quiz routes by @akolson in https://github.com/learningequality/kolibri/pull/11822 - Quiz creation bookmark selection by @ozer550 in https://github.com/learningequality/kolibri/pull/11835 - Questions randomly selected from resource pool by @nucleogenesis in https://github.com/learningequality/kolibri/pull/11823 - number of resources updates on selection by @AllanOXDi in https://github.com/learningequality/kolibri/pull/11825 - Resource selection UX- Improvement by @AllanOXDi in https://github.com/learningequality/kolibri/pull/11815 - Quiz Creation Select Resources - Keyword search by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/11887 - Quiz creation resource selection: Topic selection & "Select all" by @nucleogenesis in https://github.com/learningequality/kolibri/pull/11864 - Fix: Side panel closing confirmation & logic in child component by @nucleogenesis in https://github.com/learningequality/kolibri/pull/11862 - Quiz creation: Question replacement & a bevy of misc fixes and polish by @nucleogenesis in https://github.com/learningequality/kolibri/pull/11937 - Move handleReplacement logic from ReplaceQuestions.vue to useQuizCreation.js by @KshitijThareja in https://github.com/learningequality/kolibri/pull/12099 - Use router.replace for redirect. by @rtibbles in https://github.com/learningequality/kolibri/pull/12067 - Quiz editing capability for not yet activated quizzes by @rtibbles in https://github.com/learningequality/kolibri/pull/12232 - Move NotEnoughResourcesModal to CreateQuizSection by @LianaHarris360 in https://github.com/learningequality/kolibri/pull/12249 - Remove empty sections from quizzes on publish by @rtibbles in https://github.com/learningequality/kolibri/pull/12252 - Revert change that prevented search redirect in all cases. by @rtibbles in https://github.com/learningequality/kolibri/pull/12236 - Updates to sections in ExamPage by @nucleogenesis in https://github.com/learningequality/kolibri/pull/12182 - EQM: On first save, update the quiz's ID when redirecting by @nucleogenesis in https://github.com/learningequality/kolibri/pull/12283 - Use && instead of & for logical AND. by @rtibbles in https://github.com/learningequality/kolibri/pull/12254 - Update to allow and implement randomization of sections. by @rtibbles in https://github.com/learningequality/kolibri/pull/12278 - EQM Fix: Use can actually select topics by @nucleogenesis in https://github.com/learningequality/kolibri/pull/12265 - EQM: Validation improvements by @nucleogenesis in https://github.com/learningequality/kolibri/pull/12281 - Fix single quiz selection flow by @rtibbles in https://github.com/learningequality/kolibri/pull/12274 - Improve messaging around question replacement requirements by @AllanOXDi in https://github.com/learningequality/kolibri/pull/12122 - Exams: Create them, take them, view reports by @nucleogenesis in https://github.com/learningequality/kolibri/pull/12111 - Add "Update resources" option to Options dropdown by @AllanOXDi in https://github.com/learningequality/kolibri/pull/12137 - Quiz creation: Snackbar improvements by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/12080 - Revert ExamPage BottomAppBar to previous version (0.16.x) by @nucleogenesis in https://github.com/learningequality/kolibri/pull/12169 - Fixes issue where activeTabId is not set when viewing quiz reports for a group by @nathanaelg16 in https://github.com/learningequality/kolibri/pull/12179 - fixes user selection getting lost on closing the sidepanel by @AllanOXDi in https://github.com/learningequality/kolibri/pull/12160 - Fixes progress indication bug by @nathanaelg16 in https://github.com/learningequality/kolibri/pull/12185 - EQM Lesson regression fixes by @nucleogenesis in https://github.com/learningequality/kolibri/pull/12354 - EQM: Side panel back / close icon UX improvements by @nucleogenesis in https://github.com/learningequality/kolibri/pull/12311 - Link to new quiz creation properly. by @rtibbles in https://github.com/learningequality/kolibri/pull/12352 - Display question titles with displayQuestionTitle by @LianaHarris360 in https://github.com/learningequality/kolibri/pull/12369 - EQM: Bookmarks not linking anywhere in resource selection by @nucleogenesis in https://github.com/learningequality/kolibri/pull/12360 - Prevents errors on section deletion by @rtibbles in https://github.com/learningequality/kolibri/pull/12363 - EQM: Difficult questions reports fix by @nucleogenesis in https://github.com/learningequality/kolibri/pull/12372 - Fix mis-match condition in replacement question array by @marcellamaki in https://github.com/learningequality/kolibri/pull/12353 - Wrap section deletion modal in focus trap by @LianaHarris360 in https://github.com/learningequality/kolibri/pull/12373 - Use useNow composable in ElapsedTime component by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/12377 - Load channel content on remove filter by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/12379 - Fix question listing and navigation in quiz reports by @rtibbles in https://github.com/learningequality/kolibri/pull/12359 - Allow quiz level learners see fixed order to be edited after a quiz is opened. by @rtibbles in https://github.com/learningequality/kolibri/pull/12307 - make sure the question count v-model uses .number by @marcellamaki in https://github.com/learningequality/kolibri/pull/12407 - Update folder selection logic to handle deep folders. by @rtibbles in https://github.com/learningequality/kolibri/pull/12381 - Add in submit quiz button for non-large screen sizes. by @rtibbles in https://github.com/learningequality/kolibri/pull/12412 - Exam models date_created updates by @nucleogenesis in https://github.com/learningequality/kolibri/pull/12413 - EQM: Sections for quiz detail page by @nucleogenesis in https://github.com/learningequality/kolibri/pull/12384 - EQM: What happens when I refresh? by @nucleogenesis in https://github.com/learningequality/kolibri/pull/12393 - Count descendants not ancestors by @rtibbles in https://github.com/learningequality/kolibri/pull/12394 - What a drag by @marcellamaki in https://github.com/learningequality/kolibri/pull/12396 - Coach questions preview: Fix background and selection colors + resolve linter errors by @MisRob in https://github.com/learningequality/kolibri/pull/12427 - Fix ordering of quizzes on plan page. by @rtibbles in https://github.com/learningequality/kolibri/pull/12426 - EQM: Fix unlinted files by @nucleogenesis in https://github.com/learningequality/kolibri/pull/12428 - Hide Difficult questions tab if the quiz is still a draft by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/12437 - Fix quiz preview by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/12436 - EQM: Post-bash quickfixes by @nucleogenesis in https://github.com/learningequality/kolibri/pull/12293 - EQM: Side panel bottom nav by @nucleogenesis in https://github.com/learningequality/kolibri/pull/12391 - Card fixes by @marcellamaki in https://github.com/learningequality/kolibri/pull/12374 - Adds modal before delete section by @akolson in https://github.com/learningequality/kolibri/pull/12101 - Update exam.question_count calculation by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/12196 - Remove resource pool from exam serializer, don't send in API call by @nucleogenesis in https://github.com/learningequality/kolibri/pull/12200 - fixes quizzes not showing "File size for download" value properly by @AllanOXDi in https://github.com/learningequality/kolibri/pull/12202 - Allow delete all questions by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/12216 - EQM: Notify not enough resources to replace questions by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/12219 - Fix replacements order by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/12218 - Remove browser search cancel button by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/12329 - Fix white space on top of tabs dividing line by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/12380 - EQM: Only show save success message when saving by @nucleogenesis in https://github.com/learningequality/kolibri/pull/12389 - Exam Page: Move smaller screen timer to top by @nucleogenesis in https://github.com/learningequality/kolibri/pull/12485Github integrations, actions, dev workflow updates
In 0.17, we have also improved many automated workflows to support the dev team, including increased use of dependabot, Slack integrations, and expanded use of Github actions for continuous integration and deployment.
List of supporting PRs
- Notify our slack on contributors' issue comments by @vkWeb in https://github.com/learningequality/kolibri/pull/11564 - Use the official GH action for Slack by @vkWeb in https://github.com/learningequality/kolibri/pull/11623 - Authors are pilots of kolibri by @vkWeb in https://github.com/learningequality/kolibri/pull/11805 - Fixes the broken slack contributor notification gh action by @vkWeb in https://github.com/learningequality/kolibri/pull/11922 - Introduce flake8-print as pre-commit hook with migration of print to logger by @thesujai in https://github.com/learningequality/kolibri/pull/11994 - Try to fix Slack notifications actions failing when " character is in the issue title by @MisRob in https://github.com/learningequality/kolibri/pull/11902 - Remove buildkite status check label from readme by @bjester in https://github.com/learningequality/kolibri/pull/11924 - Install KDS patch and configure dependabot to run on Wednesday by @MisRob in https://github.com/learningequality/kolibri/pull/11918 - Attempt to fix GH notification action by @MisRob in https://github.com/learningequality/kolibri/pull/11928 - Add missing quotes to the notification GH action by @MisRob in https://github.com/learningequality/kolibri/pull/11935 - Feature: GitHub Actions Workflow for Scheduled Morango Integration Tests by @GarvitSinghal47 in https://github.com/learningequality/kolibri/pull/11931 - Increase number of dependabot PRs by @rtibbles in https://github.com/learningequality/kolibri/pull/11943 - Add pre-commit-ci-lite action to automate PR lint fixes by @thesujai in https://github.com/learningequality/kolibri/pull/12034Additional features and improvements
Additional updates include the ability to create a new facility on an existing Kolibri, and updating the tab title to include a realtime percentage of tasks. To help ensure robustness and reliability, we have expanded the range and coverage of our unit tests.
List of supporting PRs
- added functionality to create new facility on existing kolibri by @Jaspreet-singh-1032 in https://github.com/learningequality/kolibri/pull/11197 - added test cases for create new facility feature by @Jaspreet-singh-1032 in https://github.com/learningequality/kolibri/pull/11303 - Issue 10255 improve coach tabs accessibility by @muditchoudhary in https://github.com/learningequality/kolibri/pull/11501 - Realtime percentage of tasks in the tab title by @GarvitSinghal47 in https://github.com/learningequality/kolibri/pull/11696 - tests: Complete the test suite for `TriesOverview` Component by @EshaanAgg in https://github.com/learningequality/kolibri/pull/11906 - Add regression testing for channel update deletion behaviour by @thesujai in https://github.com/learningequality/kolibri/pull/11896 - tests: Add tests for some components by @EshaanAgg in https://github.com/learningequality/kolibri/pull/11910 - test: Add complete test suite for `InteractionItem` by @EshaanAgg in https://github.com/learningequality/kolibri/pull/11920 - tests: add initial test suite for `CoreMenu` by @EshaanAgg in https://github.com/learningequality/kolibri/pull/11934 - tests: add test suites for `SelectSourceModal` and `ConfirmationRegisterModal` by @EshaanAgg in https://github.com/learningequality/kolibri/pull/12060 - tests: add tests for some files in `ContentRenderer` by @EshaanAgg in https://github.com/learningequality/kolibri/pull/12056 - Add write to disk options for build command by @thesujai in https://github.com/learningequality/kolibri/pull/12006 - Added code for deletion of csv files in line #397 by @oge1ata in https://github.com/learningequality/kolibri/pull/12020 - Update useUser mocks for updated API. by @rtibbles in https://github.com/learningequality/kolibri/pull/12051 - tests: add tests for some components by @EshaanAgg in https://github.com/learningequality/kolibri/pull/12108 - Add notification for downloaded content completion by @LianaHarris360 in https://github.com/learningequality/kolibri/pull/12295 - Update LOD description in FullOrLearnOnlyDeviceForm component by @LianaHarris360 in https://github.com/learningequality/kolibri/pull/12285 - Added another condition for TOPICS_TOPIC_SEARCH redirection by @Wck-iipi in https://github.com/learningequality/kolibri/pull/12019 - Added neeeded values for BaseValuesViewset by @jredrejo in https://github.com/learningequality/kolibri/pull/12346 - Add string prompt to log in with existing username or create an account by @LianaHarris360 in https://github.com/learningequality/kolibri/pull/12310Breaking Changes
Support for Python 2.7, deprecated in 0.16, has been dropped. Support for Internet Explorer 11, deprecated in 0.16, has been dropped.
Changed
Dependencies and support
Important technical changes include adding Python 3.12 support, upgrading Django to version 3.2, upgrading KDS to v4.4.0, and upgrading the Perseus exercise library to a recently released version, and changes to our linting tools to simplify and improve our developer experience. Support for Python 2.7, deprecated in 0.16, has been dropped. Support for Internet Explorer 11, deprecated in 0.16, has been dropped.
List of supporting PRs
- Remove Python 2.7 support by @rtibbles in https://github.com/learningequality/kolibri/pull/11654 - Remove Python 2.7 deprecation warning. by @rtibbles in https://github.com/learningequality/kolibri/pull/11713 - With 2.7 dropped, use shutil disk_usage function universally. by @rtibbles in https://github.com/learningequality/kolibri/pull/12041 - Update Django to version 3.2 by @rtibbles in https://github.com/learningequality/kolibri/pull/11974 - Reduce the size of the wheel file by @rtibbles in https://github.com/learningequality/kolibri/pull/12361 - Consolidate browser compatibility data, drop IE11 support by @rtibbles in https://github.com/learningequality/kolibri/pull/11685 - Upgrade to KDS v3.0.0 and reference npm package by @MisRob in https://github.com/learningequality/kolibri/pull/11873 - Upgrade perseus to npm published version. by @rtibbles in (#9759, #12362) - Upgrade morango. by @rtibbles in https://github.com/learningequality/kolibri/pull/12408 - Linting updates by @rtibbles in https://github.com/learningequality/kolibri/pull/9698 - Upgrade the mac app. by @rtibbles in https://github.com/learningequality/kolibri/pull/12416 - Introduce Vue Testing Library by @EshaanAgg in https://github.com/learningequality/kolibri/pull/11833 - Create and use a standard utility library for handling zip files in the frontend by @rtibbles in https://github.com/learningequality/kolibri/pull/11539 - updated use of entry_points according to importlib version >3.6.0 by @im-NL in https://github.com/learningequality/kolibri/pull/11417Updates to string processes (developer-facing)
This release is the first time that Kolibri will be using “feature file” strings, where all new strings for a feature are introduced into one files. This reduces the overhead for both dev work and translation work.
List of supporting PRs
- Add enhanced quiz management strings - first draft for dev work by @marcellamaki in https://github.com/learningequality/kolibri/pull/11189 - Composable translators by @rtibbles in https://github.com/learningequality/kolibri/pull/10960 - Move jump to question string into enhanced quiz management strings. by @rtibbles in https://github.com/learningequality/kolibri/pull/12323 - Additional strings by @marcellamaki in https://github.com/learningequality/kolibri/pull/12336 - Correct strings that were manually edited on Crowdin by @radinamatic in https://github.com/learningequality/kolibri/pull/12347 - Fix coreStrings import in AttemptLogList by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/12429 - First pass string updates following UX writing and ditto review by @marcellamaki in https://github.com/learningequality/kolibri/pull/12312 - Add strings for post-setup onboarding guide component by @LianaHarris360 in https://github.com/learningequality/kolibri/pull/12113Refactors
Key refactors include replacing KResponsiveWindow with useKResponsiveWindow across Kolibri, work toward improving the router handler architecture in Coach, and continue work towards introducing more composables.
List of supporting PRs
- Replace KResponseWindow with useKResponseWindow (#11349, #11355, #11427, #11358, #11366, #11474, #11369, #11346, #11414, #11529, #11997) - Changed KContentRenderer to ContentRenderer. by @ShivangRawat30 in https://github.com/learningequality/kolibri/pull/11289 - Replaced isEmbeddedWebView with isAppContext by @AllanOXDi in https://github.com/learningequality/kolibri/pull/11715 - Improved router handlers architecture in Coach - part 1 by @ShivangRawat30 in (#11570, #11675, #11900) - Update condition to display new label for content imports by @LianaHarris360 in https://github.com/learningequality/kolibri/pull/11695 - Use consistent KDS imports across the whole Kolibri by @PR4NJ41 in https://github.com/learningequality/kolibri/pull/11742 - Standardize ContentCardList Component and Introduce ViewMoreButtonStates by @GarvitSinghal47 in https://github.com/learningequality/kolibri/pull/11865 - useUser can now get all states and getters by @Wck-iipi in https://github.com/learningequality/kolibri/pull/12027 - Replace `TextTruncatorCss` with `KTextTruncator` by @jasonmokk in https://github.com/learningequality/kolibri/pull/12215 - Refactor default_theme paths/structure by @marcellamaki in https://github.com/learningequality/kolibri/pull/12207 - App navigation refactor by @rtibbles in https://github.com/learningequality/kolibri/pull/12084 - Refactored HomePage route handler to fetch initClassInfo and getFacil… by @shubh1007 in https://github.com/learningequality/kolibri/pull/12358Fixed
Fixes include accessibility updates, bug fixes, code cleanup, and UI improvements.
List of supporting PRs
- Maintain the zoom settings for the PDF viewer by @nikkuAg in https://github.com/learningequality/kolibri/pull/11165 - Hide the table when data is loading by @muditchoudhary in https://github.com/learningequality/kolibri/pull/11238 - Catch and redirect 401 errors when browsing remotely by @vkWeb in https://github.com/learningequality/kolibri/pull/11119 - Adds connection error exception to handle redis connection failure by @akolson in https://github.com/learningequality/kolibri/pull/11296 - Ensure Enter key works as continue button click on Setup Wizard by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/11537 - Fix topic header tests by @nucleogenesis in https://github.com/learningequality/kolibri/pull/11535 - fix the position of the sidepanelmodal by @iskipu in https://github.com/learningequality/kolibri/pull/11607 - Truncate long lesson title by @nikkuAg in https://github.com/learningequality/kolibri/pull/11874 - Issue 10254: Improve coach tabs accessibility of Reports Lesson Tab by @muditchoudhary in https://github.com/learningequality/kolibri/pull/11606 - Unnecessary kolibri store in tests by @nick2432 in https://github.com/learningequality/kolibri/pull/11852 - Fix failing csv report generation api test in different timezones by @thesujai in https://github.com/learningequality/kolibri/pull/11933 - Remove AssessmentMetadataState mapper and update to direct API access… by @AymanHammadi in https://github.com/learningequality/kolibri/pull/11940 - Remove Banner for INSUFFICIENT_STORAGE while in device plugin by @iskipu in https://github.com/learningequality/kolibri/pull/11809 - ENFORCE CSRF verification in API to be accessed by a browser strictly by @thesujai in https://github.com/learningequality/kolibri/pull/11978 - fix: content_id access from wrong object by @himanshuc3 in https://github.com/learningequality/kolibri/pull/11993 - Overrides prop default flipping behaviour by @kafukoM in https://github.com/learningequality/kolibri/pull/12015 - Fix #9067: Redirect signed-out users to resource URL without lessonId or classId by @GSAprod in https://github.com/learningequality/kolibri/pull/12039 - Properly redirect on authentication failure by @rtibbles in https://github.com/learningequality/kolibri/pull/12414 - Fixing typo in useUser composable getter by @nathanaelg16 in https://github.com/learningequality/kolibri/pull/12231 - Fix Vue Tesing Library routes bug by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/12105 - Fix language switcher responsiveness by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/11977 - Fixing typo in useUser composable getter (again) by @nathanaelg16 in https://github.com/learningequality/kolibri/pull/12235 - App script cleanup by @rtibbles in https://github.com/learningequality/kolibri/pull/12155 - trying to fix integrity errors before migrating tables by @jredrejo in https://github.com/learningequality/kolibri/pull/12279 - Fix pdf css import by @AlexVelezLl in https://github.com/learningequality/kolibri/pull/12348 - Fix hitherto unnoticed regression in channel upgrade by @rtibbles in https://github.com/learningequality/kolibri/pull/12251 - Don't put csrf protection on endpoint that we use to set csrf cookie. by @rtibbles in https://github.com/learningequality/kolibri/pull/12371 - Ensure skip to main content logic is working by @marcellamaki in https://github.com/learningequality/kolibri/pull/12439 - Update automatic download setting default to False if running in a remote content context. by @rtibbles in https://github.com/learningequality/kolibri/pull/123950.16.0
Features
Robust syncing of user data and resources
Support for quick learner setup and independent learners
Kolibri has a new onboarding experience which allows joining a facility, and streamlines getting started as an independent learner with a rapid “on my own setup” option
Independent learners can transfer their existing data and learning progress to a facility. ##### Resource discovery
Assigned lesson and quiz resources are now automatically transferred to learner devices, allowing coaches to dynamically manage learner content, rather than an administrator needing to import all content devices before distribution.
Administrators and independent learners are now able to view other Kolibri Libraries on their local network and browse their resources, without having to import content. If they are connected to the internet, they will be able to browse resources on the Kolibri Content Library (hosted on Kolibri Studio).
Administrators can allow learners to download resources from other Kolibri Libraries to their device to view within Kolibri, even when they are no longer on the same network. ##### Support for administrators
Administrators have a new option to add a PIN on learner-only devices, which allows an administrator easy access to the Device page while preventing learners from inadvertently making changes.
Administrators are now able to schedule syncing of facility data on a recurring basis at custom intervals.
When exporting log files, administrators are able to select the date range for the logs. ##### Practice quizzes
This release supports practice quizzes, which are resources in the format of quizzes that learners can take in preparation for an assessment. They are able to see their score, and retry as many times as they would like, independently. Practice quiz resources are available through the Library, or can be assigned as part of a lesson. The same questions can also be assigned as a coach assigned quiz as a standardized assessment.
Changes
Dev documentation/dev updates
Updated node version to 18
Getting started documentation updated
Updated to Webpack 5
Created Github actions for build pipeline
Created Github action to add assets to PRs
Task API changes have been finalized after initial work in 0.15. Documentation is now updated to describe how to interact with the API and define tasks in plugins.
Architectural changes
There is a new page architecture that is used across all Kolibri plugins, and the component has been removed. (Selected relevant high level issues and PRs: #9102, #9128, 9134.)
The Kolibri Process Bus has been updated to support easier composability for custom deployment architectures.
Conditional promises have been removed.
To support the new onboarding process for Kolibri, Kolibri apps can now access a capability to provide access controls based on the currently active operating system user.
API Breaking Changes
Tasks API has now been finalized, previous methods for interacting with tasks that do not use the pluggable Tasks API have been removed.
The drive info endpoint has been moved the into the device app but functionality remains the same
The API for coordinating learner only device synchronization within a local area network has been updated to ensure robust and reliable syncing. Any users wishing to use learner only device synchronization must update all Kolibri devices to this newer version
API Additions (non-breaking changes)
REST API for enabling and disabling plugins
Add API endpoint and hook driven capability for UI initiated device restart
Public signup viewset
Public content metadata endpoints to support granular resource import
Accessibility improvements
Landmarks have been added and refined across the Library page and its related subpages, for better accessibility. This is a first step in support of more robust accessibility support, particularly in terms of page navigation for screen reader users.
Deprecations
Support for Python 2.7 will be dropped in the upcoming version, 0.17. Upgrade your Python version to Python 3.6+ to continue working with Kolibri. More recent versions of Python 3 are recommended.
Support for this Internet Explorer 11 will be dropped in the upcoming version, 0.17. We recommend installing other browsers, such as Mozilla Firefox or Google Chrome, in order to continue working with Kolibri.
Kolibry Design System upgrades
Kolibri is now using kolibri-design-system v2.0.0 (a major version upgrade!). Please see the KDS release’s Github page for documentation and full details about breaking changes and new features.
0.15.12
Added
Added localization support for Haitian Creole
Added annotation layer to PDF viewer
Changed
Updated PID file when the zipcontent server starts
Fixed
Ensure
startremotecontentimportandstartdiskcontentimportpass through thefail_on_erroroption to the importcontent command
0.15.11
Fixed
Fixed progress tracking edge case where float rounding issues prevent progress reaching 100%
0.15.10
Added
Add PDF accessibility support for screen readers
Add support for captions for audio
Fixed
Fixed overflowing title alignment on content cards
Improved visible focus outline
Fixed positioning of transcript layout when language is set to a right-to-left language
Fixed calculation for number of users displayed on the User Tables
Changed
Only display the completion modal on the finish event when the resource is also complete
0.15.9
Added
Specified pre-commit hook python version to 3.10
Added Python3.11 to supported python versions ### Fixed
Fixed PDF completion issues
Fixed learner-facing metadata display of content duration
Fixed “Mark as complete” functionality to allow learners to mark resources as complete when allowed by the resource
Disable forward/back buttons on EPUB renderer until locations are properly loaded
Fix issue that causes learners to skip every other question in an exercise
Fix searchbox outline
Fix title spacing in app bar
Fix bookmark data loading issues that caused inaccurate bookmark display ### Changed
Changed __init__.py from 5 tuple to 3
Set a max width on Library main content grid to display properly on extra large monitors
Remove “All options” from filters in Learn search/filtering side panel
Switch display of the completion modal to require both completed progress and the resource to be finished
Add tests to assert totalattempts behaviour
Display completion modals only on first completion, and allow user to reopen the modal if needed
Update category search for each level to be searchable
Update KDS to 1.4.1
0.15.8
Added
Adds job storage sanity check to ensure that Kolibri will not fail to start if the asynchronous job storage is malformed
Changed
Logging: remove unused simple formatter, add asctime to color formatter
Order resume content display by last interaction
Upgrade morango and lower default sync chunk size through CLI
Make learners only appear once in reports when assigned from both groups and individually to lessons and quizzes.
Persist collection tokens when switching between individual and bulk import workflows for channels
Fixed
CSV Endpoint permissions and error handling
Adds fix for multiple worker processes duplicating jobs.
Adds translated string for user kind in the user table
Check for an array’s length to avoid breaking errors
Fixes Version logic not handling non-tripartite version strings
Filters out empty nodes, add safety to breaking code
Prevent controls for the PDF renderer from overlapping content
Fix quiz completion regression which caused the notification to contain the incorrect score
height = width in import cards on thumbnail, fix misaligned text
Update levels to display translated strings, not constant ids
0.15.7
Added
Integration test gherkin story for automatic device provisioning in https://github.com/learningequality/kolibri/pull/9587
Fixed
Add content check guard to library page in https://github.com/learningequality/kolibri/pull/9635
Resolve issues with running morango integration tests on postgres in https://github.com/learningequality/kolibri/pull/9571
Fix headers in content summary logs by forcing unicode literals in https://github.com/learningequality/kolibri/pull/9602
Changed
Improve the
importcontent--fail-on-erroroption in https://github.com/learningequality/kolibri/pull/9591
0.15.6
Added
Check node being available on filtered queryset to prevent index error. by @rtibbles in https://github.com/learningequality/kolibri/pull/9539
Force translations in bulk export/import of user data by @jredrejo in https://github.com/learningequality/kolibri/pull/9557
Ensure peer import and sync tasks for data and content work with servers using a prefix path by @rtibbles in https://github.com/learningequality/kolibri/pull/9533
Changed
Changes in 0.15.x to use kolibri with external plugins by @jredrejo in https://github.com/learningequality/kolibri/pull/9543
Don’t use multiprocessing for downloads. by @rtibbles in https://github.com/learningequality/kolibri/pull/9560
Fixed
Update morango and stop locking sync when db backend is postgres by @bjester in https://github.com/learningequality/kolibri/pull/9556
Improve facility sync status reporting to users by @MisRob in https://github.com/learningequality/kolibri/pull/9541
Fix show more of top level resources by @marcellamaki in https://github.com/learningequality/kolibri/pull/9555
Clean up theme regressions by @rtibbles in https://github.com/learningequality/kolibri/pull/9558
Move CACHES import into function scope to prevent side effects. by @rtibbles in https://github.com/learningequality/kolibri/pull/9561
0.15.5
Overview
This release fixes a regression with quiz display for non-admins.
Fixed
Clean up state management for user management page in https://github.com/learningequality/kolibri/pull/9535
Fix quiz display for non-admins in https://github.com/learningequality/kolibri/pull/9545
0.15.4
Overview
This release of Kolibri includes security fixes to reduce the vulnerability of online Kolibri instances to discovery of user credentials and to sanitize exported CSV files.
Additional changes include small improvements to coach workflows in quiz and lesson workflows and fixing a regression with searching for users during class assignment.
Added
Restrict exclude coach for to assigned coaches only in https://github.com/learningequality/kolibri/pull/9453
Content dir argument in https://github.com/learningequality/kolibri/pull/9463
Changed
Enable “continue” in quiz creation only once exercises selected in https://github.com/learningequality/kolibri/pull/9515
Update bottom bar text in lesson resources to say save on changes in https://github.com/learningequality/kolibri/pull/9516
Fixed
add .trim to v-model for username in https://github.com/learningequality/kolibri/pull/9514
API and CSV fixes in https://github.com/learningequality/kolibri/pull/9523
Fix missing search results in coach quiz creation in https://github.com/learningequality/kolibri/pull/9522
Fixed regression: search functionality for assigning coaches and enrolling learners in https://github.com/learningequality/kolibri/pull/#9525
0.15.3
Overview of new features
The goal of this release was to make improvements to the accessibility of Kolibri and to content display. Fixes include improvements to the focus outline that appears for keyboard navigation and fixes to notifications used in screen readers, as well as small improvements to content layout.
Additions and Fixes: Accessibility
Update firefox bookmarks cards focus outline https://github.com/learningequality/kolibri/pull/9409
Update side panel focus trapping https://github.com/learningequality/kolibri/pull/9408
Adds aria labels to immersive toolbar buttons for back and close https://github.com/learningequality/kolibri/pull/9411
Adds aria-live=polite to the global snackbar component https://github.com/learningequality/kolibri/pull/9410
Adjust padding for visible focus outline on bottom bar buttons in https://github.com/learningequality/kolibri/pull/9478
Additions and Fixes: Content Display
Fix pagination issues for facility user page https://github.com/learningequality/kolibri/pull/9422
Push PDF pages rendering below full screen bar https://github.com/learningequality/kolibri/pull/9439
Fix X-Axis display for perseus graphs https://github.com/learningequality/kolibri/pull/9446
Remove shrink ray from TopicsPage content side panel https://github.com/learningequality/kolibri/pull/9449
Improve icon size in Cagetgory selection modal https://github.com/learningequality/kolibri/pull/8938
Fix pagination user tables https://github.com/learningequality/kolibri/pull/9450
Restrict exclude coach for to assigned coaches only https://github.com/learningequality/kolibri/pull/453
Changes
Ensure all file handlers use utf-8 encoding https://github.com/learningequality/kolibri/pull/9401
Upgrade morango to v0.6.13 https://github.com/learningequality/kolibri/pull/9445
0.14 into 0.15 https://github.com/learningequality/kolibri/pull/9447
Upgrade KDS to v1.3.1-beta0 https://github.com/learningequality/kolibri/pull/9459
0.15.2
Internationalization and localization
New language support for: Ukrainian
Added
Additional gherkin scenarios https://github.com/learningequality/kolibri/pull/9130
Changed
Bump morango to v0.6.10 https://github.com/learningequality/kolibri/pull/9168
Pin windows installer to 1.5.0 https://github.com/learningequality/kolibri/pull/9200
Pin django js asset https://github.com/learningequality/kolibri/pull/9163
Compress HTML files for serving https://github.com/learningequality/kolibri/pull/9197
Disable mac app pipeline by @rtibbles in https://github.com/learningequality/kolibri/pull/9257
SECURE_CONTENT_TYPE_NOSNIFFset toTruehttps://github.com/learningequality/kolibri/pull/9195
Fixed
Content import, deletion, and
remote_contentsettings fixes (#9242, #9337, #9246, #8506)Add check for
notificationto avoid il8n error inCoreBasehttps://github.com/learningequality/kolibri/pull/9138Redirect for Bookmarks when user is not logged in https://github.com/learningequality/kolibri/pull/9142
Delete any annotated channelmetadata many to many fields to avoid integrity errors https://github.com/learningequality/kolibri/pull/9141
Ensure deprovisioning management command deletes DMC https://github.com/learningequality/kolibri/pull/9208
Fix Python requires to prevent install on incompatible Python versions https://github.com/learningequality/kolibri/pull/9296
0.15.1
Overview of new features
The goals of this release were to fix a bug preventing proper syncing of an individual user’s data across multiple devices and to made some small frontend improvements
Added
Deprecation warnings for Python 3.4 and 3.5
Added auto-alignment property for text display in cards, based on the language
Allow untranslated headers in csv imports and correct serialization into json
Changed
Updated morango to v0.6.8 to support syncing fixes
Bump zeroconf for fix to properly trigger service update events
Bump KDS version to v1.3.0
Updated translations to support minor translation fixes
Updated gherkin scenarios for new features
Content API: Change default ordering to combination of “lft” and “id”
Fixed
Keyboard accessibility/tab navigation focusing for searching and filtering
Allow for scrolling in side panel, and have side panel always take up full height of page even with 0 results
Small UI improvements including focus ring spacing, button alignment
Hide hints column in Perseus renderer when it could not be displayed to improve display on smaller screens
Handle no xAPI statements existing when calculating H5P and HTML5 progress
Don’t package core node_modules dir
Refactor card components for consistency and comprehensibility
Address tech debt around KDS theming colors
Fixed several front end console errors
Ensure that we filter by subset_of_users_device on network location API
0.15.0
Internationalization and localization
New language support for: Hausa, Georgian, Indonesian, Mozambican Portuguese, and Greek
Overview of major new features
This release includes a new Learn experience featuring:
An updated Home page with new layout and interactions
A new library page featuring a better content browsing, filtering, and search experience
An update page for browsing individual channels, with new layout and browse/search interactions
A new bookmarks page and ability to bookmark content within the content renderer
Sync capabilities for Subset of Users Devices (SoUDs)
Selected high-level technical updates:
Adding API for SoUD devices, allowing them to request syncing
Updates to Zeroconf to support SoUD syncing
Updates to progress tracking
Consolidation of exam logging
Fix dataset mismatch between exams and lessons, to allow for syncing
Adding content metadata search, API, and fields
Fixed
#8442 Segments SQLite databases to allow concurrent writes to SyncQueue and NetworkLocation models
#8446 Forces Learner only device sync request retries when server responds with 500+ status code
#8438 Fixes failure to sync FacilityUser updates when a login has occurred on a Learner only device prior to syncing
#8438 Fixes failure to sync all updated records when multiple learner only devices have been setup for a single FacilityUser
#8069 Fix backdrop not being shown while searching resources on mobile
#8000 Ensure progress_fraction is propagated through resource API
#7983 Validate usernames during sign-in flow, fix bug in facility settings page
#7981 Correct the component namespace in the JSON files
#7953 Fix non-localized numerals
#7951 Tasks queue cleared on server start
#7932 Fix DemoBanner focus
#8174 Fix errors from ContentNodeResource changes
#8162 Fix dynamic file discovering and serving on Windows
(#8159, #8132) Fix IE11 compatibility
#8199 Don’t modify lessons when content is deleted
#8133 Prevent iterable changes size during iteration
#8121 Error properly on startup
#8103 Update values viewset implementation and pagination
#8102 Fix KLabeledIcon UI
#8101 Stop TextTruncator flash of full text before truncation
Changed
#8220 Update reference to most recent Kolibri Design System
#8194 Update data flow docs for accuracy
#8088 Update DeviceSettingsPage layout. Add labels, tests
#7936 Change template for personal facility name to “Home facility for {name}”
#7928 Update memberships, roles, and permissions handling and validation
#8195 Use a double tap strategy to ensure against zombies
#8184 Bump morango version to 0.5.6
#8168 Use consistent “not started” icon and background color in AnswerHistory and AttemptLogList
#8143 Increase scrolling room for question lists in MultiPanelLayout
#8130 Replace migration applied check
#8123 Don’t use KResponsiveElementMixin in all ContentCards
#8592 Fix quiz log syncing
Added
(#8185, #8595) Add setup wizard for SoUD configuration
#8229 Add SoUD setup via command line
(#8202 , #8247 , #8329) Add UI for sync status reporting with notifications for coaches and learners
(#8192, #8205) Create user sync status tracking, add add permissions to model
(#8333, #8342, #8345, #8349, #8262) Create queue for SoUD syncing
#8223 Add notification generation during cleanup stage of sync
#8222 Add device info versioning
#8219 Assignment handling within single-user syncing
#8126 Create API for a subset of user devices to request permission to sync
#8122 Zeroconf broadcast of SoUD status
#8165 Initiate auto-syncing from zeroconf
#8228 Sidechannel loading of assignments
(#8212, #8215) Create channel-based quizzes, and corresponding gherkin scenarios
#8095 Add Bookmarks API
#8084 Allow Kolibri themes to provide a “Photo credit” for the Sign-In page background image
#8043 Add explicit include_coach_content filter instead of role filter
(#7989, #8214) Frontend only H5P Rendering and xAPI progress tracking integration
#7947 Open CSV file with utf-8 encoding in Py3
#7921 Add content tags to ContentNodeViewset
#7939 Add endpoint to check for duplicate username and use it to check for existing username while creating an account
(#8150, #8151) Add learning activity bar component, constants, and icon components
(#8190, #8180 ) Add support for multiple learning activities icon, and create related constants
#8186 Create API endpoint for Tasks backend
#8177 Return learning_activities and duration from contentnode endpoints
#8142 Add task decorators and task APIs for functions registered via decorators
#8138 Add Tree viewset for retrieving nested, paginated views of topic trees
#8136 Add new card design to AllClassesPage and ClassAssignmentPage and add base card elements
#8134) Update navigateTo for non-custom HTML5 Apps
(#8118, #8146) Add @vue-composition-api plugin, and expose through apiSpec, so it is available to all SPAs
#8117 Add vacuum for morango tables in Postgresql databases
#8367 Ensure the user will see the welcome modal after login
#8370 Restart zeroconf after setup
#8383 filter SoUD devices when scanning the network to import new facilities
#8385 Do not create accounts in Subset of users devices
#8411 Upgrade zeroconf
#8412 Reduce default sync retry interval
#8413 Reuse kolibriLogin to begin user sessions in the setup wizard
#8596 Add new icons
#8742 Allow facility forking and recreation
0.14.7
Internationalization and localization
Updated localizations
Fixed
#7766 Content imported by administrators was not immediately available for learners to use
#7869 Unlisted channels would not appear in list in channel import-workflow after providing token
#7810 Learners’ new passwords were not being validated on the Sign-In page
#7764 Users’ progress on resources was not being properly logged, making it difficult to complete them
#8003, #8004, #8010 Sign-ins could cause the server to crash if database was locked
#8003, #7947 Issues downloading CSV files on Windows
Changed
#7735 Filtering on lists of users returns ranked and approximate matches
#7733 Resetting a facility’s settings respects the preset (e.g. formal, informal, nonformal) chosen for it during setup
#7823 Improved performance on coach pages for facilities with large numbers of classrooms and groups
0.14.6
Fixed
#7725 On Firefox, text in Khmer, Hindi, Marathi, and other languages did not render properly.
#7722, #7488 After viewing a restricted page, then signing in, users were not redirected back to the restricted page.
#7597, #7612 Quiz creation workflow did not properly validate the number of questions
0.14.5
(Note: 0.14.4 contained a critical issue and was superseded by 0.14.5)
Changed
File downloads now run concurrently, taking better advantage of a device’s bandwidth and reducing the time needed to import resources from Kolibri Studio or other content sources
When setting up a new device using the Setup Wizard’s “Quick Start” option, the “Allow learners to create accounts” setting is enabled by default.
The
provisiondevicemanagement command no longer converts the user-provided facility name to all lower-caseMarkdown descriptions for resources now preserve line breaks from the original source
Fixed
Multiple bugs when creating, editing, and copying quizzes/lessons
Multiple bugs when navigating throughout the Coach page
Multiple bugs specific to Kolibri servers using PostgreSQL
On Safari, sections of the Facility > Data page would disappear unexpectedly after syncing a facility
On IE11, it was not possible to setup a new device by importing a facility
Missing thumbnails on resource cards when searching/browsing in channels
Numerous visual and accessibility issues
Facilities could not be renamed if the only changes were to the casing of the name (e.g. changing “Facility” to “FACILITY”)
0.14.3
(Note: 0.14.0-2 contained regressions and were superseded by 0.14.3)
Fixed
Some links were opening in new browser windows
0.14.2
Fixed
Prevent SQL checksum related too many variables errors
0.14.1
Changed
Responsive layout for channel cards of Learn Page changed to use horizontal space more efficiently
Fixed
Resources could not be removed from lessons
Inaccurate information on Device > Info page when using Debian installer
0.14.0
Internationalization and localization
Added German
Added Khmer
CSV data files have localized headers and filenames
Added
In the Setup Wizard, users can import an existing facility from peer Kolibri devices on the network
Facility admins can sync facility data with peer Kolibri devices on the network or Kolibri Data Portal
Facility admins can import and export user accounts to and from a CSV file
Channels can display a learner-facing “tagline” on Learn channel list
Device and facility names can now be edited by admins
Super admins can delete facilities from a device
Quizzes and lessons can be assigned to individual learners in addition to whole groups or classes
Super admins can view the Facility and Coach pages for all facilities
Pingbacks to the telemetry server can now be disabled
Changed
New card layout for channels on Learn Page is more efficient and displays new taglines
Simplified setup process when using Kolibri for personal use
Improved sign-in flow, especially for devices with multiple facilities
The experience for upgrading channels has been improved with resource highlighting, improved statistics, and more efficient navigation
Improved icons for facilities, classrooms, quizzes, and other items
More consistent wording of notifications in the application
Quizzes and lessons with missing resources are more gracefully handled
Shut-down times are faster and more consistent
Fixed
Many visual and user experience issues
Language filter not working when viewing channels for import/export
A variety of mobile responsiveness issues have been addressed
0.13.3
Changed or fixed
Fixed: Infinite-loop bug when logging into Kolibri through Internet In A Box (IIAB)
Fixed: Performance issues and timeouts when viewing large lists of users on the Facility page
Fixed: Startup errors when Kolibri is installed via
pipon non-debian-based Linux distributions
Internationalization and localization
Added Simplified Chinese
0.13.2
Changed or fixed
Fixed: In the Device Page, multiple bugs related to managing channels.
Fixed: Problems viewing African Storybook content on iPads running iOS 9.
Internationalization and localization
Added Italian
0.13.1
Added
Python version is shown on the ‘Device > Info’ page in the ‘Advanced’ section
Improved help information when running
kolibri --helpon the command line
Changed or fixed
Various layout and UX issues, especially some specific to IE11 and Firefox
‘Device > Info’ page not accessible when logged in as a superuser
Channels unintentionally reordered on ‘Device > Channels’ when new content is imported
Video captions flashing in different languages when first opening a video
Changes to channels updated and republished in Studio not being immediately reflected in Kolibri
Occasional database blocking errors when importing large collections of content from external drives
Occasional database corruption due to connections not being closed after operations
Automatic data restoration for corrupted databases
Recreate cache.db files when starting the Kolibri server to remove database locks that may not have been cleanly removed in case of an abrupt shut-down.
0.13.0
Added
Improved content management
Queues and task manager
Granular deletion
Improved channel updating
Disk usage reporting improvements
Auto-discovery of local Kolibri peers
Demographics collection and reporting
MacOS app
High-performance Kolibri Server package for Debian
Pre-built Raspberry Pi Kolibri image
Video transcripts
Downloadable and printable coach reports
New device settings
“Skip to content” keyboard link
Changed or fixed
Preserve ‘unlisted’ status on channels imported from token
Allow duplicate channel resources to be maintained independently
Auto-refresh learner assignemnt view
Unclean shutdowns on very large databases, due to prolonged database cleanup
Facility admin performance improvements
Jittering modal scrollbars
Updated side-bar styling
Improved form validation behavior
Improved learner quiz view
Improved keyboard accessibility
0.12.9
Added
Improved error reporting in Windows
Changed or fixed
Database vacuum now works correctly
Fixes related to network detection
Improve performance of classroom API endpoint to prevent request timeouts
Internationalization and localization
Added Korean
0.12.8
Changed or fixed
Fixed: users creating accounts for themselves not being placed in their selected facility
Fixed: images in Khan Academy exercises not appearing on occasion
Fixed: “Usage and Privacy” modal not closing when clicking the “Close” button
0.12.7
(Note: 0.12.6 contained a regression and was superseded by 0.12.7)
Changed or fixed
Facility user table is now paginated to improve performance for facilities with large numbers of users.
Various usability and visual improvements, including improved layout when using a RTL language
On Windows,
kolibri.exeis automatically added to the path in the command promptImproved system clean-up when uninstalling on Windows
Internationalization and localization
Added Latin American Spanish (ES-419)
0.12.5
Upgraded Morango to 0.4.6, fixing startup errors for some users.
0.12.4
Added
Device Settings Page - The default language can now be changed under Device > Settings. This is the language that will be used on browsers that have never opened Kolibri before (but can be changed after opening Kolibri using the language selector).
Coach Reports - Users can preview quizzes and lessons and edit their details from their associated report, without having to go to the “Plan” sub-page.
Added a
kolibri manage deleteusercommand to remove a user from a server, as well as all other servers synchronized with it.Added a new theming system for customizing various colors that appear in Kolibri.
Changed or fixed
EPUB documents with large tables are displayed in a single-column, scrollable format to improve their readability.
EPUB viewer now saves font and theme settings between sessions.
Quiz creation workflow only places unique questions in a quiz, removing duplicates that may appear in a topic tree.
Title and name headers are consistently accompanied by icons in Kolibri symbol system to help orient the user.
0.12.3
Changed or fixed
Improved handling of partially-download or otherwise corrupted content databases
Fixed regression where users could not change their passwords in the Profile page
Improved PostgreSQL support
Added fixes related to coach tools
0.12.2
Added
Coaches can edit lessons from the Coach > Reports page
Coaches can preview and edit quiz details from the Coach > Reports and Plan pages
Changed or fixed
Coaches can edit quiz and lesson details and statuses in the same user interface
0.12.2
Added
Dynamic selection for CherryPy thread count based on available server memory
Changed or fixed
Alignment of coach report icons when viewed in right-to-left languages corrected
Fixes to loading of some HTML5 apps
Lessons are now correctly scoped to their classes for learners
Internationalization and localization
Added Gujarati
Fixed missing translations in coach group management
0.12.1
Added
Initial support for uwsgi serving mode.
Changed or fixed
Fixed 0.12.0 regression in HTML5 rendering that affected African Storybooks and some other HTML5 content.
Fixed 0.12.0 regression that prevented some pages from loading properly on older versions of Safari/iOS.
Internationalization and localization
Added Burmese
0.12.0
Added
Coach Dashboard - added regularly updating notifications and new information architecture for the coach interface, to provide actionable feedback for coaches about learner progress
New capability for sandboxed HTML5 app content to utilize sessionStorage, localStorage and cookies, with the latter two restored between user sessions
Support for enrolling learners in multiple groups in a class
Management command to reorder channels to provide more customized display in learn
Changed or fixed
Exams are now known as Quizzes
Quizzes with content from deleted channels will now show an error message when a learner or coach is viewing the problems in the quiz or quiz report
Lessons with content from deleted channels will have those contents automatically removed. If you have created lessons with deleted content prior to 0.12, learner playlists and coach reports for those lessons will be broken. To fix the lesson, simply view it as a coach under Coach > Plan, and it will be fixed and updated automatically
Changes the sub-navigation to a Material Design tabs-like experience
Make facility log exporting a background process for a better user experience when downloading large logs
Allow appbar to move off screen when scrolling on mobile, to increase screen real estate
Kolibri now supports for iOS Safari 9.3+
Validation is now done in the ‘provisiondevice’ command for the username of the super admin user being created
Disable import and export buttons while a channel is being downloaded to prevent accidental clicks
Prevent quizzes and lessons in the same class from being created with the same name
Update quiz and lesson progress for learners without refreshing the page
Improved focus rings for keyboard navigation
Coach content no longer appears in recommendations for non-coach users
The Kolibri loading animation is now beautiful, and much quicker to load
Icons and tables are now more standardized across Kolibri, to give a more consistent user experience
Enable two high contrast themes for EPUB rendering for better accessibility
Supports accessing Kolibri through uwsgi
Internationalization and localization
Languages: English, Arabic, Bengali, Bulgarian, Chinyanja, Farsi, French, Fulfulde Mbororoore, Hindi, Marathi, Portuguese (Brazilian), Spanish, Swahili, Telugu, Urdu, Vietnamese, and Yoruba
0.11.1
Added
Support for RTL EPubs
Support for Python 3.7
Changed or fixed
Fullscreen renderer mode now works in Chrome 71
Account sign up now works when guest access is disabled
Navigating in and out of exercise detail views is fixed
Misleading exam submission modal text is now more accurate
Browsing content tree in exam creation is now faster
Unavailable content in coach reports is now viewable
Content import errors are handled better
Added command to restore availability of content after bad upgrade
Internationalization and localization
Added Fufulde Mboroore
0.11.0
Added
Support for EPUB-format electronic books
Upgrades to exam and lesson creation, including search functionality and auto-save
New error handling and reporting functionality
Channel import from custom network locations
Setting for enabling or disabling guest access
Basic commands to help with GDPR compliance
Privacy information to help users and admins understand how their data is stored
Changed or fixed
Improvements to rendering of some pages on smaller screens
Improvements to search behavior in filtering and handling of large result sets
Improvements to the setup wizard based on user feedback and testing
Improvements to user management, particularly for admins and super admins
Fix: Allow usernames in non-latin alphabets
Fix: Drive listing and space availability reporting
Auto-refresh in coach reports
Added more validation to help with log-in
Security: upgraded Python cryptography and pyopenssl libraries for CVE-2018-10903
Internationalization and localization
Languages: English, Arabic, Bengali, Bulgarian, Chinyanja, Farsi, French, Hindi, Marathi, Portuguese (Brazilian), Spanish, Swahili, Telugu, Urdu, Vietnamese, and Yoruba
Improved consistency of language across the application, and renamed “Superuser” to “Super admin”
Many fixes to translation and localization
Consistent font rendering across all languages
0.10.3
Internationalization and localization
Added Mexican Spanish (es_MX) and Bulgarian (bg)
Fixed
Upgrade issue upon username conflict between device owner and facility user
Channel import listing of USB devices when non-US locale
Counts for coach-specific content would in some cases be wrongly displayed
0.10.2
Performance improvements and bug fixes for content import
Exam creation optimizations
0.10.1
Bug fix release
Several smaller UI fixes
Fixes for SSL issues on low-spec devices / unstable connectivity
Compatibility fixes for older system libraries
0.10.0
Support for coach-specific content
Content import/export is more reliable and easier to use
Search has improved results and handles duplicate items
Display of answer history in learner exercises is improved
Login page is more responsive
Windows-specific improvements and bug fixes
New Kolibri configuration file
Overall improved performance
Auto-play videos
Various improvements to PDF renderer
Command to migrate content directory location
Languages: English, Arabic, Bengali, Chinyanja, Farsi, French, Hindi, Kannada, Marathi, Burmese, Portuguese (Brazilian), Spanish, Swahili, Tamil, Telugu, Urdu, Yoruba, and Zulu
0.9.3
Compressed database upload
Various bug fixes
0.9.2
Various bug fixes
Languages: English, Arabic, Bengali, Chinyanja, Farsi, French, Hindi, Marathi, Portuguese (Brazilian), Spanish, Swahili, Tamil, Telugu, Urdu, Yoruba, and Zulu
0.9.1
Fixed regression that caused very slow imports of large channels
Adds new ‘import users’ command to the command-line
Various consistency and layout updates
Exercises with an error no longer count as ‘correct’
Fixed issue with password-less sign-on
Fixed issue with editing lessons
Various other fixes
Languages: English, Arabic, Chinyanja, Farsi, French, Hindi, Marathi, Portuguese (Brazilian), Spanish, Swahili, Tamil, Telugu, and Urdu
0.9.0
Consistent usage of ‘coach’ terminology
Added class-scoped coaches
Support for multi-facility selection on login
Cross-channel exams
Show correct and submitted answers in exam reports
Added learner exam reports
Various bug fixes in exam creation and reports
Various bug fixes in coach reports
Fixed logging on Windows
Added ability for coaches to make copies of exams
Added icon next to language-switching functionality
Languages: English, Arabic, Farsi, French, Hindi, Spanish, Swahili, and Urdu
0.8.0
Added support for assigning content using ‘Lessons’
Updated default landing pages in Learn and Coach
Added ‘change password’ functionality to ‘Profile’ page
Updates to text consistency
Languages: English, Spanish, Arabic, Farsi, Urdu, French, Haitian Creole, and Burmese
Various bug fixes
0.7.2
Fix issue with importing large channels on Windows
Fix issue that prevented importing topic thumbnail files
0.7.1
Improvements and fixes to installers including Windows & Debian
Updated documentation
0.7.0
Completed RTL language support
Languages: English, Spanish, Arabic, Farsi, Swahili, Urdu, and French
Support for Python 3.6
Split user and developer documentation
Improved lost-connection and session timeout handling
Added ‘device info’ administrator page
Content search integration with Studio
Granular content import and export
0.6.2
Consistent ordering of channels in learner views
0.6.1
Many mobile-friendly updates across the app
Update French, Portuguese, and Swahili translations
Upgraded Windows installer
0.6.0
Cross-channel searching and browsing
Improved device onboarding experience
Improved device permissions experience (deprecated ‘device owner’, added ‘superuser’ flag and import permission)
Various channel import/export experience and stability improvements
Responsive login page
Dynamic language switching
Work on integrated living style guide
Added beta support for right-to-left languages
Improved handling of locale codes
Added support for frontend translation outside of Vue components
Added an open-source ‘code of conduct’ for contributors
By default run PEX file in foreground on MacOS
Crypto optimizations from C extensions
Deprecated support for HTML in translation strings
Hide thumbnails from content ‘download’ button
Automatic database backup during upgrades. #2365
… and many other updates and fixes
0.5.3
Release timeout bug fix from 0.4.8
0.5.2
Release bug fix from 0.4.7
0.5.1
Python dependencies: Only bundle, do not install dependencies in system env #2299
Beta Android support
Fix ‘importchannel’ command #2082
Small translation improvements for Spanish, French, Hindi, and Swahili
0.5.0
Update all user logging related timestamps to a custom datetime field that includes timezone info
Added daemon mode (system service) to run
kolibri startin background (default!) #1548Implemented
kolibri stopandkolibri status#1548Newly imported channels are given a ‘last_updated’ timestamp
Add progress annotation for topics, lazily loaded to increase page load performance
Add API endpoint for getting number and total size of files in a channel
Migrate all JS linting to prettier rather than eslint
Merge audio_mp3_render and video_mp4_render plugins into one single media_player plugin
KOLIBRI_LISTEN_PORT environment variable for specifying a default for the –port option #1724
0.4.9
User experience improvements for session timeout
0.4.8
Prevent session timeout if user is still active
Fix exam completion timestamp bug
Prevent exercise attempt logging crosstalk bug
Update Hindi translations
0.4.7
Fix bug that made updating existing Django models from the frontend impossible
0.4.6
Fix various exam and progress tracking issues
Add automatic sign-out when browser is closed
Fix search issue
Learner UI updates
Updated Hindi translations
0.4.5
Frontend and backend changes to increase performance of the Kolibri application under heavy load
Fix bug in frontend simplified login code
0.4.4
Fix for Python 3 compatibility in Whl, Windows and Pex builds #1797
Adds Mexican Spanish as an interface language
Upgrades django-q for bug fixes
0.4.3
Speed improvements for content recommendation #1798
0.4.2
Fixes for morango database migrations
0.4.1
Makes usernames for login case insensitive #1733
Fixes various issues with exercise rendering #1757
Removes wrong CLI usage instructions #1742
0.4.0
Class and group management
Learner reports #1464
Performance optimizations #1499
Anonymous exercises fixed #1466
Integrated Morango, to prep for data syncing (will require fresh database)
Adds Simplified Login support as a configurable facility flag
0.3.3
Turns video captions on by default
0.3.2
Updated translations for Portuguese and Kiswahili in exercises.
Updated Spanish translations
0.3.1
Portuguese and Kaswihili updates
Windows fixes (mimetypes and modified time)
VF sidebar translations
0.3.0
Add support for nested URL structures in API Resource layer
Add Spanish and Swahili translations
Improve pipeline for translating plugins
Add search back in
Content Renderers use explicit new API rather than event-based loading
0.2.0
Add authentication for tasks API
Temporarily remove ‘search’ functionality
Rename ‘Learn/Explore’ to ‘Recommended/Topics’
Add JS-based ‘responsive mixin’ as alternative to media queries
Replace jeet grids with pure.css grids
Begin using some keen-ui components
Update primary layout and navigation
New log-in page
User sign-up and profile-editing functionality
Versioning based on git tags
Client heartbeat for usage tracking
Allow plugins to override core components
Wrap all user-facing strings for I18N
Log filtering based on users and collections
Improved docs
Pin dependencies with Yarn
ES2015 transpilation now Bublé instead of Babel
Webpack build process compatible with plugins outside the kolibri directory
Vue2 refactor
HTML5 app renderer
0.1.1
SVG inlining
Exercise completion visualization
Perseus exercise renderer
Coach reports
0.1.0 - MVP
Improved documentation
Conditional (cancelable) JS promises
Asset bundling performance improvements
Endpoint indexing into zip files
Case-insensitive usernames
Make plugins more self-contained
Client-side router bug fixes
Resource layer smart cache busting
Loading ‘spinner’
Make modals accessible
Fuzzy searching
Usage data export
Drive enumeration
Content interaction logging
I18N string extraction
Channel switching bug fixes
Modal popups
A11Y updates
Tab focus highlights
Learn app styling changes
User management UI
Task management
Content import/export
Session state and login widget
Channel switching
Setup wizard plugin
Documentation updates
Content downloading
0.0.1 - MMVP
Page titles
Javascript logging module
Responsiveness updates
A11Y updates
Cherrypy server
Vuex integration
Stylus/Jeet-based grids
Support for multiple content DBs
API resource retrieval and caching
Content recommendation endpoints
Client-side routing
Content search
Video, Document, and MP3 content renderers
Initial VueIntl integration
User management API
Vue.js integration
Learn app and content browsing
Content endpoints
Automatic inclusion of requirements in a static build
Django JS Reverse with urls representation in kolibriGlobal object
Python plugin API with hooks
Webpack build pipeline, including linting
Authentication, authorization, permissions
Users, Collections, and Roles