v0.15.0
nucleogenesis
released this
20 Dec 18:20
·
759 commits
to release-v0.15.x
since this release
What's Changed
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
Details: Complete list of PRs and link to full changelog
Complete list of PRs
- Release v0.14.x -> Develop by @indirectlylit in #7057
- Removed OIDC provider plugin by @jredrejo in #7083
- Contact name change on the Code of Conduct page by @radinamatic in #7177
- into -> in to by @indirectlylit in #7170
- Develop <- v0.14.x by @DXCanas in #7184
- make staticdeps run on systems where python is 3, and 2.7 is availabl… by @cyberorg in #7193
- remove unused strings in develop by @indirectlylit in #7116
- Merging release-v0.14.x to develop by @DXCanas in #7351
- 0.14 -> develop by @indirectlylit in #7418
- Corrected docker pull image by @arky in #7423
- Merge
v0.14.0
tag intodevelop
branch by @jonboiser in #7450 - 0.14 -> develop by @indirectlylit in #7471
- pr/7283 setting doesn't get disabled in valid state by @mdctleo in #7446
- 0.14 -> develop by @indirectlylit in #7485
- pr/7456 In
LearnerClassEnrollmentPage
andCoachClassAssignmentPage
, place "Confirm" button in fixed bottom bar by @mdctleo in #7476 - Show full device ID under advanced by @Ali-Kazmi in #7490
- print -> logger.info by @indirectlylit in #7484
- pr/7473 Login flow looks like it accepts any username despite the error validation by @mdctleo in #7489
- Clean up c extension code and add pip cache for it by @lyw07 in #7316
- Remove ContentNode filters with no implementation by @jonboiser in #7509
- Fix user menu & side nav escape button closing by @alexMet in #7527
- Add 404 page to the dev docs by @radinamatic in #7519
- Remove i18n tech debt from 0.14 by @jonboiser in #7550
- Informal facilities get 'Create an Account' button visible by default by @AdamStasiw in #7553
- Build System Docs by @DXCanas in #7544
- merge 0.14.4-weekly5 to develop by @jonboiser in #7614
- Merge
0.14.4-weekly6
intodevelop
by @jonboiser in #7655 - Fixing issue #6892: collect and report aggregate stats about client browsers through telemetry by @paulbusse in #7658
- Update AUTHORS.md by @paulbusse in #7668
- 0.14.4 weekly7 into develop by @jonboiser in #7674
- Merge GH action config updates to
develop
+ fix undefined ref inAuthBase.vue
by @jonboiser in #7677 - Fixing 6916: Copies of lessons don't reflect recent deletions or reordering of resources by @paulbusse in #7679
- Fixing #6560: In postgres, importing changing channel content moves channel to top of list by @paulbusse in #7688
- Merge 0.14.5-alpha0 to develop by @jonboiser in #7699
- Serve zipcontent and hashi from a different origin to avoid null origin shenanigans by @rtibbles in #7254
- i18n -> kolibri-tools for cross product i18n by @nucleogenesis in #7671
- Merge 0.14.5 into develop by @jonboiser in #7713
- 0.14.6 alpha3 to develop by @jonboiser in #7729
- Add Python 3.9 support to analytics and automated testing matrix by @rtibbles in #7707
- Fix issue with "in progress" icon being displayed in guest mode and update icon display logic in ProgressIcon.vue by @alvinhsu-gal220 in #7747
- Merge 0.14.6 to develop by @jonboiser in #7770
- Use
whitenoise
to pre-compress static files by @rtibbles in #7797 - Merge 0.14.7a2 to develop by @jonboiser in #7818
- fix: profile header display in navbar of profile screen by @shivangtripathi in #7846
- Fix typo in developer documentation by @KushalBeniwal in #7843
- Extract NewPasswordPage from SignInPage, and make new route by @jonboiser in #7826
- Move the 'manage migrate' command in the 'Getting started' doc by @radinamatic in #7844
- Fix closing animation on
sideNav
by @kmrinal19 in #7847 - Require default values for all optional Vue props by @apurva-modi in #7811
- Remove
_blank
in favor ofopenInNewTab
in KExternalLink. by @YashJipkate in #7848 - Customize
ContentUnavailablePage
for different roles and change its URL by @kmrinal19 in #7850 - Added validation for question_id UUID in QuestionSourceSerializer by @apurva-modi in #7866
- Fix for routing issue while exiting search in quiz creation by @udithprabhu in #7882
- Clear failed facility import tasks when restarting Setup Wizard by @jonboiser in #7893
- Fix #7386: Make reusable NewBadge component. by @YashJipkate in #7865
- Enforce server-consistent settings by @ashmeet13 in #7856
- Show resource count at channel level cards while managing lesson resources by @kmrinal19 in #7894
- Fix alignment of CoreTable headers on IE11 by @blackboxo in #7898
- Infer dataset change by @udithprabhu in #7887
- Add step to import Kolibri QA channel to the 'Getting Started' doc by @radinamatic in #7892
- Add Boolean field
is_leaf
to serializers to replace common "leaf or branch" checks in frontend by @kmrinal19 in #7883 - Display relevant text message when user selects a single resource while managing a channel by @kmrinal19 in #7909
- fix typo in docs by @indirectlylit in #7918
- Static files and zip content cleanup by @rtibbles in #7920
- When managing lesson resources, do not show "Saving..." notification unless the resources were changed by @jonboiser in #7903
- Set null=True and blank=True for UserSessionLog device info by @rtibbles in #7781
- Release v0.14.x into develop by @rtibbles in #7927
- Do not delete
?next
query param when redirected from AuthMessage to SignInPage by @apurva-modi in #7912 - Add
/api/tasks/restarttask
endpoint by @ashmeet13 in #7905 - Add content serving on alternate origin. by @rtibbles in #7931
- Do not use
--skip-update
when running Kolibri in development mode by @jonboiser in #7938 - fix(docs): deprecate runserver, instead use python-devserver by @vkWeb in #7940
- Ensure mp3 type is audio/mpeg in media player by @bjester in #7937
- Attempt to restore the build by @rtibbles in #7943
- fix(tasks): tasks queue is cleared on server start by @vkWeb in #7951
- fix(restarttask): client side reappearance of task upon restart by @vkWeb in #7950
- Add endpoint to check for duplicate username and use it to check for existing username while creating an account by @kmrinal19 in #7939
- ContentNodeViewset: Add content tags by @manuq in #7941
- Fix non localized numerals by @Kalovelo in #7953
- Add unit tests for SCORM hashi interface by @rtibbles in #7948
- Remove svg-icon-inline-loader from dependencies, removes large dep by @nucleogenesis in #7904
- Change template for personal facility name to "Home facility for {name}" by @jonboiser in #7936
- Add windows and macos python 3.6 unit test runners; make filesystem operations safer on Windows by @rtibbles in #7899
- When toggling Demo Banner, do not send focus to a new location outside of the sign-in page forms by @apurva-modi in #7932
- Switch to babel. by @rtibbles in #7987
- Add a placeholder 0.15 upgrade notification; add reminders about the upgrade notification in release process docs by @jonboiser in #7984
- Upgrade dependencies for building docs by @radinamatic in #8002
- Validate usernames during sign-in flow + fix bug in facility settings page by @jonboiser in #7983
- fix link to beginner-friendly issues by @indirectlylit in #8006
- Make
window.kolibri
object available to Hashi iframe context by @marcellamaki in #7942 - Add test and fix for byte encoded unicode text as a value for info. by @rtibbles in #7991
- Prevent too many variables error by @rtibbles in #8008
- Push copyright year to 2021 by @sophianyberg in #8016
- fix(scheduler): scheduled tasks does not persist on server restart by @vkWeb in #7959
- Merge 0.14.7 to develop by @jonboiser in #8022
- Add more verbose logging for request errors. by @rtibbles in #8031
- Update zip_content options to better reflect deployment needs. by @rtibbles in #7924
- First pass at MVP single-user syncing backend by @jamalex in #7985
- Updates to memberships, roles, and permissions handling and validation by @rtibbles in #7928
- Run iceqube tests on postgres. by @rtibbles in #7975
- After deleting all resources of a topic, allow the topic to be re-importable by @kmrinal19 in #8034
- Update AUTHORS.md by @jonboiser in #8036
- Custom channels renderer and context param by @marcellamaki in #8032
- tests: ensure jobs persist on server restart by @vkWeb in #8030
- Upgrade custom nav by @rtibbles in #8039
- Add KOLIBRI_ENABLE_CUSTOM_CHANNEL_NAV - default True to options.py by @nucleogenesis in #8025
- Consolidate WSGI configuration by @rtibbles in #8023
- Ensure progress_fraction is propagated through resource api by @nucleogenesis in #8000
- Fix regression in retrieve_list endpoint. Add regression smoketest. by @rtibbles in #8042
- Add explicit include_coach_content filter instead of role filter. by @rtibbles in #8043
- Clean up ContentNodeProgressViewset. by @rtibbles in #8046
- Remove cherrypy dependency by @rtibbles in #8026
- Add ContentModal to display resources within the context of a Custom Channel Renderer by @jonboiser in #8040
- Remove mptt from collections. by @rtibbles in #8049
- Fix bug blocking transfer of context from Crowdin by @nucleogenesis in #8048
- Add seperate label for facility-import tasks in task manager by @jonboiser in #8045
- Options cleanup by @rtibbles in #8050
- Properly filter classrooms by role. by @rtibbles in #8054
- Lock used ports to prevent their being picked up by the port cache. by @rtibbles in #8057
- Update testing badges by @bjester in #8062
- Fix unclean shutdown issue and signal handling issue by @rtibbles in #8064
- Add kolibri.searchContent method to hashi; add error handling to CustomContentRenderer by @jonboiser in #8059
- Add integrity checking for sqlite3 databases by @vkWeb in #8063
- Pin attrs for Py34 compatibility. by @rtibbles in #8072
- Add developer documentation for creating side nav items. by @rtibbles in #8041
- Python API by @rtibbles in #8052
- Catch ValueError to catch errant JSONDecodeErrors. by @rtibbles in #8076
- Custom channels fullscreen modal by @marcellamaki in #8071
- On hover, add light-grey background to ItemProgressDisplay by @jonboiser in #8051
- Cache user between requests as well as on requests. by @rtibbles in #8044
- Revert SharingPool usage by @rtibbles in #8081
- Kolibri stop for Windows by @rtibbles in #8075
- Create mock for
kolibri.resources
that automocks every exported Resource class by @jonboiser in #8082 - Allow kolibri themes to provide a "Photo credit" for the Sign-In page background image by @jonboiser in #8084
- Update layout of DeviceSettingsPage; add labels to sections; add tests by @jonboiser in #8088
- Fix backdrop not being shown while searching resources on mobile by @Priyaraj17 in #8069
- Updates all content renderers with time-based progress calculation and pages visited/total available by @sairina in #8037
- In Facility task cards, only quote the facility name and not the ID fragment by @jonboiser in #8093
- Update language about delete tasks by @marcellamaki in #8065
- Let the taskrunner use multiprocessing. by @rtibbles in #7276
- Don't error if there's a duplicate username in generate user data. by @rtibbles in #8097
- On crowdin server
$formatRelative
(and other APIs) should use the interpolated locale (and not 'ach-ug') by @jonboiser in #8100 - Try to 'properly' skip required checks by @rtibbles in #8099
- Remote content serving by @rtibbles in #8005
- First updates to hashi documentation by @marcellamaki in #8086
- Stop TextTruncator from briefly showing full text before shave.js truncates it by @jonboiser in #8101
- Update values viewset implementation and pagination by @rtibbles in #8103
- 7921 klabeledicon related UI fixes by @nucleogenesis in #8102
- Error properly on startup by @rtibbles in #8121
- Zeroconf broadcast of SoUD status by @rtibbles in #8122
- Don't use KResponsiveElementMixin in all ContentCards by @MisRob in #8123
- Replace migration applied check which seems to be able to fail with try except. by @rtibbles in #8130
- Add utility to enable user migration by @rtibbles in #8090
- Add Bookmarks API by @nucleogenesis in #8095
- Update AllClassesPage and ClassAssignmentPage with new card design (+ add base card elements) by @jonboiser in #8136
- Prevent iterable changing size during iteration. by @rtibbles in #8133
- Add '@vue/composition-api' plugin; refactor SelectAddressForm with
setup()
; implement #7345 by @jonboiser in #8118 - Expose vue composition api through apiSpec (
kolibri.lib.vueCompositionApi
), so it is available to all SPAs by @jonboiser in #8146 - Increasing scrolling room for question lists in
MultiPaneLayout
by @sairina in #8143 - Use kds 0.2.x branch by @jonboiser in #8152
- Add ZIM documents to filePresetStrings by @dylanmccall in #8145
- Update navigateTo for non-custom HTML5 apps by @marcellamaki in #8134
- Restore IE11 compatibility by @rtibbles in #8132
- Add learning activities constants and learning activity icon component by @MisRob in #8150
- Remove double negation in query by @jredrejo in #8156
- Create API for a subset of users device to request permission to sync by @jredrejo in #8126
- IE11 compatibility fixes by @rtibbles in #8159
- Fixes dynamic file discovery and serving on windows. by @rtibbles in #8162
- Add learning activity bar component by @MisRob in #8151
- Tree viewset for retrieving nested, paginated views of topic trees by @rtibbles in #8138
- Add vacuum for morango tables in Postgresql databases by @jredrejo in #8117
- Initiate auto-syncing from zeroconf by @jredrejo in #8165
- Add task decorators and task APIs for functions registered via decorators by @vkWeb in #8142
- Use consistent "not started" icon and background color in AnswerHistory and AttemptLogList by @jonboiser in #8168
- Update style-loader. by @rtibbles in #8173
- Cleanup errors from ContentNodeResource changes by @rtibbles in #8174
- Tweaks to custom navigation by @rtibbles in #8167
- Return learning_activities and duration from contentnode endpoints. by @rtibbles in #8177
- Learning activities constants naming by @MisRob in #8180
- Bump morango version to 0.5.6 by @jamalex in #8184
- Create user sync status tracking. by @rtibbles in #8192
- point develop at most recent KDS by @indirectlylit in #8193
- Use a double tap strategy to ensure against zombies by @rtibbles in #8195
- Add support for multiple learning activities icon by @MisRob in #8190
- Add topological sorting of models to ensure import order. by @rtibbles in #8154
- Fix Windows installer to correctly detect running Kolibri by @micahscopes in #8083
- Frontend only H5P Rendering and xAPI progress tracking integration by @rtibbles in #7989
- fix: remove group to preserve compatibility by @vkWeb in #8204
- Add env var to disable file based logging by @rtibbles in #8196
- Postgresql database import speedup by @rtibbles in #6115
- Add test to confirm that rotation handler is working as intended. by @rtibbles in #8197
- Deprecated options by @rtibbles in #8208
- Don't try to initialize H5P when it is does not exist. by @rtibbles in #8214
- Add basic batch processing of notifications with tests. by @rtibbles in #8207
- Channel based quizzes by @sairina in #8212
- Don't modify lessons when content is deleted. by @rtibbles in #8199
- Create API endpoint for Tasks backend by @vkWeb in #8186
- Device info versioning by @rtibbles in #8222
- Notification generation during cleanup stage of sync by @bjester in #8223
- Assignment handling within single-user syncing by @jamalex in #8219
- Channel quiz gherkin by @sairina in #8215
- Small code quality cleanup by @rtibbles in #8206
- Update data flow docs to be accurate, even if not complete. by @rtibbles in #8194
- Fix deprovision cache issue by @rtibbles in #8213
- Release v0.14.x into develop by @rtibbles in #8226
- Add permissions to SyncStatus model. by @rtibbles in #8205
- Point develop at most recent KDS by @MisRob in #8220
- UX for learner and coach/admin single user syncing by @marcellamaki in #8202
- Single user setup via command line by @rtibbles in #8229
- Develop into release-v0.15.x by @rtibbles in #8230
- Further updates to sidechannel loading of assignments by @jamalex in #8228
- Fix check_device_info by @jredrejo in #8232
- Several new features for the 0.15 release by @pcenov in #8233
- Add python test by @marcellamaki in #8240
- I18n tools by @rtibbles in #8224
- Make sure adhoc groups have a name. by @rtibbles in #8242
- Use a different task name for automatic single user syncs. by @rtibbles in #8241
- Catch Database locked errors during dynamic location registration by @rtibbles in #8243
- Credential handling for password-less learner certificate generation by @bjester in #8239
- Add method to detect if network has changed and reinitialize zeroconf by @jamalex in #8231
- Cascade merge by @rtibbles in #8248
- Simplify file URL generation. by @rtibbles in #8252
- Sync notifications updates by @rtibbles in #8247
- Simplify i18n download paths by @rtibbles in #8253
- Add a thumbnail component for new hybrid learning features by @MisRob in #8225
- Cascade merge release-v0.15.x into develop by @rtibbles in #8259
- Always include --CONTEXT-- placeholder in all extracted messages by @rtibbles in #8258
- Add conditional polling interval for learner sync status by @marcellamaki in #8260
- Add a resource completion modal by @MisRob in #8267
- Prevent KeyErrors when pickling jobs by @rtibbles in #8278
- Fix soud intervals by @jredrejo in #8262
- Remove assert statement from non-test files by @deepsource-autofix in #8281
- Bump morango to fix removal of assert statements by @bjester in #8280
- Use literal syntax instead of function calls to create data structure by @deepsource-autofix in #8288
- Replace
assertEquals
withassertEqual
by @deepsource-autofix in #8293 - Fix dangerous default argument by @deepsource-autofix in #8282
- Remove unnecessary generator by @deepsource-autofix in #8283
- Refactor unnecessary
else
/elif
whenif
block has areturn
statement by @deepsource-autofix in #8284 - Delete unreachable statements by @deepsource-autofix in #8289
- Iterate dictionary directly by @deepsource-autofix in #8290
- Remove
return
from__init__()
method by @deepsource-autofix in #8285 - Remove reimported module by @deepsource-autofix in #8286
- Remove unnecessary comprehension by @deepsource-autofix in #8292
- Release v0.15.x into develop by @rtibbles in #8297
- fix bad order of the parameters to check role permissions by @jredrejo in #8298
- Additional Gherkin scenarios for syncing and importing of facility after Wi-Fi network change by @pcenov in #8300
- Wizard state machine to implement single user syncing flow by @jredrejo in #8185
- Merge release-v0.15.x into develop by @rtibbles in #8310
- Single worker pool for tasks by @vkWeb in #8299
- Remove spreadsheet generation by @rtibbles in #8318
- Swap order of build commands to allow passing arguments to build proc… by @rtibbles in #8322
- Add defensive guard for ref. by @rtibbles in #8317
- 0.15 strings ES translations from Crowdin by @radinamatic in #8319
- Add setup cli command. by @rtibbles in #8321
- Fix syncing when password-less flow is enabled by @jredrejo in #8331
- Don't stop polling until admin actually initiates the session by @jredrejo in #8328
- Update sync status reporting by @rtibbles in #8329
- CLI Fixes by @rtibbles in #8334
- Server sync queue by @rtibbles in #8333
- SoUD Status Indicator & Learn-only Notification & Block Facility/Coach by @nucleogenesis in #8277
- Mark resource as finished modal by @nucleogenesis in #8324
- Setup wizard redirect fix by @rtibbles in #8341
- New feature files for the bookmarking functionality by @pcenov in #8343
- Pin mac installer version to 0.15 compatible. by @rtibbles in #8337
- Sync queue updates by @rtibbles in #8342
- Tweak sync queue active sessions by @rtibbles in #8345
- Update zip file url generation for custom nav rendering. by @rtibbles in #8347
- 0.15.x into develop by @rtibbles in #8348
- Implement automatic provisioning for new devices. by @rtibbles in #8198
- Validate sync credentials before task enqueue by @bjester in #8349
- Add Hausa locale and latest Spanish translations by @radinamatic in #8352
- Add Hausa locale by @radinamatic in #8335
- Tweaks to server reconnect behaviour for automated syncing by @rtibbles in #8353
- Preseed the sqlite database by @rtibbles in #8351
- Epub: when relocating to the last page, ensure we put the slider at 100 by @nucleogenesis in #8327
- First pass implementation of new paginated/inlined topic rendering. by @rtibbles in #8302
- Vendor perseus plugin by @rtibbles in #8254
- Add yarn license list checking to ensure no GPL only packages in our dependencies by @rtibbles in #8355
- Temporarily disable quiz syncing. by @rtibbles in #8357
- Fix URL prefixing for static urls by @rtibbles in #8366
- update release process docs by @indirectlylit in #8346
- Add PROJECT option to track specific projects. by @rtibbles in #8200
- Test modifications to verify exam related logs are synced by @bjester in #8261
- Add an upgrade function to remove the static directory to clean up unused files by @rtibbles in #8323
- Return 404s for invalid zipfile names. by @rtibbles in #8368
- Implementation of new LearnImmersiveLayout parent component for Content Renderer by @marcellamaki in #8314
- Add learning activities strings by @MisRob in #8375
- Ensure the user will see the welcome modal after login by @jredrejo in #8367
- Fix invocations of read_channel_metadata_from_db_file to expect a dict by @rtibbles in #8369
- User strings corrections and improvements by @radinamatic in #8374
- Make setup.cfg optional for kolibri-tools JS. by @rtibbles in #8382
- filter SoUD devices when scanning the network to import new facilities by @jredrejo in #8383
- update content renderer dev docs link by @indirectlylit in #8387
- Fix debug logging by @rtibbles in #8372
- Give a better error from RemoteViewset when Kolibri is offline by @rtibbles in #8373
- Restart zeroconf after setup by @jredrejo in #8370
- fix: make strings py2 compatible by @vkWeb in #8396
- Zeroconf updates by @rtibbles in #8397
- Do not create accounts in Subset of users devices by @jredrejo in #8385
- Handle redirect URLs that do not exist by @rtibbles in #8398
- Don't use SIGKILL on windows as it doesn't exist. by @rtibbles in #8386
- Release v0.15.x into develop by @rtibbles in #8399
- Fix dangerous default argument by @deepsource-autofix in #8404
- Remove use of python ua-parser from the backend. by @rtibbles in #8401
- Remove unnecessary comprehension by @deepsource-autofix in #8405
- Update .deepsource.toml by @deepsource-autofix in #8406
- Upgrade zeroconf to catch import error on Android by @rtibbles in #8411
- Reduce the default sync retry interval. by @rtibbles in #8412
- Reuse kolibriLogin to begin user sessions in the setup wizard by @jredrejo in #8413
- Prevent too many variables error by @jredrejo in #8418
- Unsupported browser theme by @rtibbles in #8371
- Bookmarks feature by @Evgeni998 in #8272
- Properly ignore that which should be ignored from linting. by @rtibbles in #8428
- Enforce linux-style end of line characters in prettier. by @rtibbles in #8429
- Remove older backups by @AtKristijan in #8402
- Backports fix for export breakage from develop by @rtibbles in #8425
- Remove all user strings with instances of 'active/inactive' by @radinamatic in #8421
- Add Georgian and Indonesian locale by @radinamatic in #8408
- Second batch of string corrections by @radinamatic in #8407
- 8110/mark resource as finished modal part deux by @nucleogenesis in #8403
- Hybrid learning home page MVP - for string freeze by @MisRob in #8430
- Add suggested time component with strings by @nucleogenesis in #8423
- a way to handle pop-up blocker in mozilla by @Evgeni998 in #8419
- Initial bookmark implementation and strings by @rtibbles in #8426
- String tweaks for user CSV export. by @rtibbles in #8431
- WIP: Strings with some feature dev for Channel browse and search by @marcellamaki in #8424
- (WIP) Hybrid learning side panel by @marcellamaki in #8160
- 0.15.x into develop by @rtibbles in #8434
- Properly test that we do not prematurely initialize our OPTIONS by @rtibbles in #8415
- Additional strings by @marcellamaki in #8433
- Additional string reference fixes by @marcellamaki in #8437
- Revert "Handle special case when viewing Kolibri on translation server" by @rtibbles in #8436
- Create separate SQLite databases for independent data to increase write concurrency by @rtibbles in #8442
- Update v0.13.x Morango dependency to latest version by @bjester in #8444
- Don't require
label
andicon
prop inCoreMenuOption
by @MisRob in #8432 - First pass at regression test and fix for SoUD FacilityUser sync conflict by @jamalex in #8438
- Merge 0.13.x into 0.14.x to upgrade morango by @rtibbles in #8445
- 0.14 into 0.15 by @rtibbles in #8448
- Handle 500+ status codes when requesting a SoUD sync by @rtibbles in #8446
- Change immersive toolbar by @Evgeni998 in #8450
- Upgrade to Morango 0.6.6a0, with a test, and test refactoring by @jamalex in #8449
- Defers content schema initialization until needed. by @rtibbles in #8456
- Remove precaching of Django static files. by @rtibbles in #8457
- Use JSON serialization for Job into ORMJob by @EliKlein in #8447
- First batch translated languages for 0.15 by @radinamatic in #8460
- Cascade merge release 0.15.x into develop by @rtibbles in #8463
- Fix Perseus messages by @rtibbles in #8462
- Upgrades KDS and dependencies by @indirectlylit in #8459
- Steal a string, update translations by @rtibbles in #8467
- Hybrid learning progress bar by @MisRob in #8452
- remove a variable that hasn't been used by @Evgeni998 in #8471
- Preseed all the databases by @rtibbles in #8468
- Use calculate_max_sqlite_variables to avoid errors in merge_users by @jamalex in #8473
- Initial constants integration. by @rtibbles in #8478
- Renderer immersive styling updates by @nucleogenesis in #8458
- Do not show password if not needed by @jredrejo in #8470
- Experiment with pure CSS alternative to
TextTruncator
for simpler use cases by @MisRob in #8464 - split user plugin by @indirectlylit in #8443
- 0.15.x into develop by @rtibbles in #8495
- The forbidden merge by @rtibbles in #8496
- Content metadata fields, API, and Search by @rtibbles in #8488
- Wrong resource deletion by @AtKristijan in #8441
- Update Content Renderer to use Props by @marcellamaki in #8501
- Only run upgrade task for network locations on SQLite. by @rtibbles in #8505
- Side Panels Implementation by @nucleogenesis in #8466
- Process bus consolidation by @rtibbles in #8301
- Faster null import by @rtibbles in #8410
- Sync resumption for SoUD syncs and cleanup handling by @bjester in #8183
- Handle mismatching datasets for exams and lessons to prevent syncing issues by @bjester in #8513
- Add utility to migrate from ExamLog and ExamAttemptLog to consolidated logging. by @rtibbles in #8502
- Build Parallelization Mods + BCK Build Requirements by @DXCanas in #8531
- Integrated progress tracking API by @rtibbles in #8525
- Side Panel Metadata by @nucleogenesis in #8545
- The hybrid learning home page by @MisRob in #8504
- update KDS to v1.1.0, introducing new icons by @indirectlylit in #8552
- Content metadata optimizations by @rtibbles in #8492
- Pin docs build test to Python 3.9. by @rtibbles in #8562
- Catch connection errors when validating tokens with KDP. by @rtibbles in #8559
- Many hybrid learning things by @marcellamaki in #8548
- Add sync operation support to Kolibri plugins with migration for exam logs by @bjester in #8527
- Do not use the default queue when requesting sync in the wizard by @jredrejo in #8569
- Home page follow-up fixes by @MisRob in #8574
- Search updates by @rtibbles in #8570
- Escape " in JSON generation. by @rtibbles in #8579
- Examattemptlog migration in case where no examlog has been changed by @rtibbles in #8567
- KIconButton in top bar was oblong and now it's a circle again by @nucleogenesis in #8581
- sidepanel was hidden by mistake on channels, fixed some errors in BrowseResourceMetadata by @nucleogenesis in #8580
- Do simple diff tracking of extra_fields to prevent unnecessary updates. by @rtibbles in #8576
- Revert unneccessary change that breaks question detail rendering. by @rtibbles in #8585
- Resolve missing kind preventing successful sync of quiz logs and quieter sync logging by @bjester in #8592
- Fixes Perseus rendering for exercises that rely upon the KAS parser function by @rtibbles in #8582
- Fix topic filtering for channel quiz creation. by @rtibbles in #8591
- Update Topics Page for pagination and more by @rtibbles in #8590
- Add version truncation utility to avoid QA headaches by @bjester in #8597
- Setting right device permissions in the setup wizard by @jredrejo in #8595
- Fix back button in LearnImmersiveLayout by @marcellamaki in #8588
- Update icons by @marcellamaki in #8596
- Design alignment updates by @marcellamaki in #8598
- Fixes issue where perseus files were not reloading when the source file changed. by @rtibbles in #8602
- Progress fetching simplification and updates by @rtibbles in #8599
- User profile updates by @rtibbles in #8575
- i18n fixes and updates – includes Mozambican Portuguese by @indirectlylit in #8633
- Refactors hybrid learning cards to use content object, not passed props by @marcellamaki in #8638
- Always use from_db_value migrating attempt log fields by @bjester in #8642
- Filter search results by coach content when relevant. by @rtibbles in #8641
- Add SoUD hash to facility stats by @bjester in #8644
- Properly fetch more progress for tree data. by @rtibbles in #8646
- Properly store answer state after initial attempt for exercises by @rtibbles in #8647
- Zip content origin fix for beta2 by @DXCanas in #8653
- Consolidate Learn data loading by @rtibbles in #8650
- SidePanel to show on BookmarksPage by @nucleogenesis in #8652
- Focus and keyboard updates by @marcellamaki in #8648
- Fix some issues in search by @rtibbles in #8657
- Side Panel freezing fix by @nucleogenesis in #8664
- Allow fast SQLite imports for version 4 schema by @rtibbles in #8658
- Store all currently displayed locations, not just the start location for EPUB progress by @rtibbles in #8659
- Add safeguards against too many fds through http server by @bjester in #8661
- Fix rtl alignment issues by @marcellamaki in #8655
- Properly mark as complete. by @rtibbles in #8665
- Back navigation by @marcellamaki in #8660
- Fake labels for testing by @rtibbles in #8671
- Design updates by @marcellamaki in #8637
- Also in this sidepanel by @nucleogenesis in #8651
- Fixes translation of All categories in search chips. by @rtibbles in #8673
- Toggle mark learner complete based on content metadata. by @rtibbles in #8672
- Always pass through facility during syncing cert authentication by @bjester in #8601
- Update
pre-commit
config python version to 3.6 by @sairina in #8656 - Update nonconforming strings map by @marcellamaki in #8702
- Reduce debounce on Exam page from 5000ms to 500ms by @marcellamaki in #8704
- Always provide port to zeroconf by @jredrejo in #8705
- Coach view: hide dropdown when there are no practice quizzes by @sairina in #8684
- Make sure to preload facility config on the user profile page. by @rtibbles in #8691
- Prevent file downloads if the disk would be full by @rtibbles in #8683
- Do not show user sync tasks in the Channels tasks by @jredrejo in #8710
- Hide Folders tab when no topics available on channel page by @nucleogenesis in #8713
- Updates "View learner devices" link to appear in all reports pages by @sairina in #8715
- Sort data to prevent flaky postgres tests. by @rtibbles in #8711
- Fix undefined string. Add tooltip and aria label for button. by @rtibbles in #8717
- Fix no password learner logging in after passwords activated by @rtibbles in #8699
- AlsoInThis side panel follow-up by @nucleogenesis in #8674
- KA Burmese description overflowing in import fix (no more horizontal scroll) by @nucleogenesis in #8712
- Update Category Search Modal keyboard accessibility by @marcellamaki in #8703
- Don't show home page for guest users. by @rtibbles in #8726
- Check that a channel exists locally before trying to import content by @rtibbles in #8679
- Removes hard coded Studio URL from frontend. by @rtibbles in #8680
- Handle duplicate resources by @rtibbles in #8716
- Bookmark updates by @rtibbles in #8708
- Add back context for navigating back to search pages. by @rtibbles in #8706
- upgrade caniuse-lite by @indirectlylit in #8731
- fixed view-as-grid and as-list button active state by @akash5100 in #8719
- Bump tmpl from 1.0.4 to 1.0.5 by @dependabot in #8734
- Bump ws from 5.2.2 to 5.2.3 by @dependabot in #8736
- Bump path-parse from 1.0.6 to 1.0.7 by @dependabot in #8735
- Bump url-parse from 1.4.7 to 1.5.3 by @dependabot in #8738
- 'basic link' button and inline with number in Coach by @abhimnc in #8720
- Add undocumented metadata key to H5P content data. by @rtibbles in #8743
- Do permanent redirect from /user to /auth. by @rtibbles in #8748
- Learning activity bar truncation and alignment fixes by @MisRob in #8747
- Use, when possible, an ENV var to get the installation type by @jredrejo in #8500
- Update sync/register interface by @marcellamaki in #8753
- Home page fixes by @rtibbles in #8744
- Number of coach contents fixes by @MisRob in #8766
- IE is not a modern browser by @indirectlylit in #8768
- Restore Show resources header. by @rtibbles in #8769
- Use TextTruncatorCss for cards on library page and truncate resource titles to five lines by @MisRob in #8770
- Do not redefine variable by @jredrejo in #8773
- Allow going back before importing the first user by @jredrejo in #8696
- Misc Perseus renderer style fixes by @nucleogenesis in #8714
- API changes to extend custom presentation by @danigm in #8476
- Prevent unnecessary fetches on the library page. by @rtibbles in #8763
- Fixes and tests for metadata labels by @rtibbles in #8765
- API: Fix random content query by @danigm in #8784
- Defer and parallelize loading of data for the also in this panel by @rtibbles in #8754
- Tweak Resource search drop down UX by @rtibbles in #8764
- Lesson completion modal by @rtibbles in #8774
- update to language modal by @indirectlylit in #8775
- Ensure nodes are ordered by bookmark creation by @bjester in #8779
- When running the Python devserver, watch the plugins.json and options.ini to autorestart when plugins are updated by @abhimnc in #8782
- redirect using 'replace: true' by @indirectlylit in #8788
- upgrade to KDS v1.2.1 with textbox shifting update by @indirectlylit in #8790
- Remove text transformation on category search strings by @marcellamaki in #8791
- Use a more expansive path check match. by @rtibbles in #8789
- Responsivity improvements of the mastery bar on an exercise page by @MisRob in #8783
- Update bookmarks handler to reference lessonId by @marcellamaki in #8792
- updates to fonts by @indirectlylit in #8756
- Map H5P kind to explore learning activity by @rtibbles in #8794
- Fixed text-align: right for rtl languages by @akash5100 in #8793
- Add the final Gujarati and Korean translations by @radinamatic in #8804
- Expand media player to use more of viewport in ImmersiveLayout by @bjester in #8780
- Do not show the bookmark button if the user is not logged in by @jredrejo in #8803
- Fix learning activity label style on bookmarks cards by @MisRob in #8795
- Reinstate BaseLogFilter for collection based filtering of logs. by @rtibbles in #8814
- CustomContent: Add withinDescendant parameter to API by @danigm in #8796
- Don't generate notifications on single user devices by @rtibbles in #8812
- theme and branding code cleanup by @indirectlylit in #8805
- update font tooling dependency instructions and requirements file by @indirectlylit in #8799
- Android and UI responsive updates by @marcellamaki in #8802
- Update the content cache key after annotating by @rtibbles in #8741
- Adjust search-chip spacing to enforce 8px minimum separation. by @rtibbles in #8820
- Hide search panel in mobile when search is selected by @rtibbles in #8821
- Update coach bookmarks by @marcellamaki in #8815
- Fix upgrade startup errors by @rtibbles in #8818
- Design fixes by @marcellamaki in #8806
- Allow facility forking and recreation by @rtibbles in #8742
- Pass props as strings to avoid validation errors. by @rtibbles in #8819
- update numCols to null, rather than 1, so page renders correctly by @marcellamaki in #8858
- Remove unnecessary cruft from Bookmark.infer_dataset by @jamalex in #8859
- If leaving LessonPlaylistPage for non-content, unset lesson in vuex by @nucleogenesis in #8861
- Include backRoute & context in content link on BrowseResourceMetadata by @nucleogenesis in #8863
- Make KSelect label prop optional to match KeenUI Select. by @rtibbles in #8864
- Conditionally display 'over x results' when more to show. by @rtibbles in #8857
- Update || to && for conditions for toggling card styles by @marcellamaki in #8873
- Removes search box from top navbar when user is in library by @sairina in #8862
- Fixes #8852: avoid constant zeroconf re-enumeration by @jamalex in #8865
- Update results displayed to be 3 per row by @sairina in #8881
- Fix height on content cards with folders by @sairina in #8856
- Reset searchbox input value when search term is cleared by @jredrejo in #8876
- Do an extra check to stop an unclean shutdown from breaking kolibri. by @rtibbles in #8883
- Assign an h5p learning activity kind by @jredrejo in #8885
- Assign headers properly to prevent 500 when database is locked by @rtibbles in #8886
- Bug/soud cannot edit profile by @nucleogenesis in #8880
- Perseus in Coach full width - some coach alignment fixes by @nucleogenesis in #8884
- Breadcrumbs and title clean up by @rtibbles in #8887
- Add support for topics to
ResourceCard
by @MisRob in #8891 - html5_viewer: Allow fullscreen in iframe by @danigm in #8892
- Fix side panel alignment by @nucleogenesis in #8909
- Encapsulate progress tracking logic in a composable to prevent content pages crossing their streams by @rtibbles in #8898
- Sidepanel title as folder title by @marcellamaki in #8914
- Create message JSON files for 'en' by @rtibbles in #8912
- Logging issues by @rtibbles in #8917
- Update Topics page header navigation by @marcellamaki in #8894
- Make non-kolibri servers unavailable to be imported by @jredrejo in #8906
- Reinstate ids on attempt log viewset. by @rtibbles in #8895
- Ignore duplicate attempts at questions when counting. by @rtibbles in #8925
- Bump zeroconf and remove separate plugin tracking of addresses by @bjester in #8924
- Learning activities labels and duration improvements by @MisRob in #8920
- PDF renderer completion fixes by @sairina in #8937
- Topics page fixes by @marcellamaki in #8928
- Use latest mac installer version by @rtibbles in #8935
- API: Add query context to the pagination object by @danigm in #8933
- Add copies link on hybrid learning content cards by @marcellamaki in #8936
- Filter bookmarks by available nodes. by @rtibbles in #8926
- Update how we prevent orderer widget overflow. by @rtibbles in #8929
- fix crowdin capitalization by @indirectlylit in #8940
- Add the Greek locale and translated strings by @radinamatic in #8939
- Add fixed header to FullScreenSidePanel by @nucleogenesis in #8930
- Show that a facility is registered immediately upon registering. by @rtibbles in #8942
- Make display of attempts parallel between mobile and non-mobile display by @rtibbles in #8890
- Completion labels by @rtibbles in #8941
- Progress update fix by @rtibbles in #8950
- Update button on library page to also read 'filter' by @marcellamaki in #8951
- Sticky side navigation improvements by @MisRob in #8947
- card refactor - part A by @indirectlylit in #8952
- Bookmark font size by @sairina in #8879
- Finalize H5P Integration by @rtibbles in #8931
- Schnittstellenfehler - Visual bugs in German by @nucleogenesis in #8946
- Update windows installer version to 1.5.0 by @rtibbles in #8953
- Android responsive overflow issues by @marcellamaki in #8949
- Card heights by @rtibbles in #8945
- Last minute bug fixes by @rtibbles in #8959
- Fix upgrade issue by @rtibbles in #8954
- Use leutils version that makes pycountry optional to reduce dist size by @rtibbles in #8956
- Bump to 0.15.0 final by @nucleogenesis in #8962
New Contributors
- @cyberorg made their first contribution in #7193
- @mdctleo made their first contribution in #7446
- @Ali-Kazmi made their first contribution in #7490
- @AdamStasiw made their first contribution in #7553
- @paulbusse made their first contribution in #7658
- @alvinhsu-gal220 made their first contribution in #7747
- @shivangtripathi made their first contribution in #7846
- @KushalBeniwal made their first contribution in #7843
- @kmrinal19 made their first contribution in #7847
- @YashJipkate made their first contribution in #7848
- @udithprabhu made their first contribution in #7882
- @ashmeet13 made their first contribution in #7856
- @blackboxo made their first contribution in #7898
- @manuq made their first contribution in #7941
- @sophianyberg made their first contribution in #8016
- @Priyaraj17 made their first contribution in #8069
- @deepsource-autofix made their first contribution in #8281
- @Evgeni998 made their first contribution in #8272
- @AtKristijan made their first contribution in #8402
- @EliKlein made their first contribution in #8447
- @akash5100 made their first contribution in #8719
- @abhimnc made their first contribution in #8720
- @danigm made their first contribution in #8476
Full Changelog: v0.14.7...v.0.15.0