Hello everyone!
We are happy to announce a new release of KoboToolbox! 2.025.10 has been deployed to our Global and EU servers at 19:30 UTC on Tuesday, 20 May 2025.
This release consists of:
- KPI version 2.025.10
- Pyxform version 3.0.0
- Enketo version 7.5.1
Organizations member management and invitations
Organization owners and admins can now directly invite and manage their team members. This large feature comprised many pull requests, which you may view below if interested.
List of PRs for organizations member management
kpi#5538
kpi#5531
kpi#5535
kpi#5522
kpi#5509
kpi#5521
kpi#5519
kpi#5513
kpi#5505
kpi#5504
kpi#5479
kpi#5493
kpi#5494
kpi#5503
kpi#5496
kpi#5495
kpi#5480
kpi#5477
kpi#5492
kpi#5458
kpi#5460
kpi#5462
kpi#5457
kpi#5459
kpi#5441
kpi#5424
kpi#5432
kpi#5409
kpi#5395
kpi#5425
kpi#5414
kpi#5422
Other new features
PR | Description |
---|---|
kpi#5433 kpi#5430 |
Project history logs exports Allow users to export the project history logs for their projects |
kpi#5449 kpi#5556 |
One time add-ons Make one time add-ons available to users |
Bug fixes and improvements
PR | Description |
---|---|
kpi#5585 | only import Stripe products when stripe is enabled |
kpi#5555 | remove indent of last item in nlp add-ons dropdown |
kpi#5545 | display invite accepted banner for users who join another organization |
kpi#5546 | use toast instead of alertify |
kpi#5128 | regenerate snapshots when downloading XForm XML |
kpi#5528 | improve paddings on Project Landing Page |
kpi#5536 | display banner immediately upon accepting invitation |
kpi#5527 | use trimmed in all blocktrans blocks |
kpi#5523 | add background-geopoint question type to display in data table |
kpi#5532 | hide invitation accepted banner for users who are no longer members of organization |
kpi#5490 | remove quantity from backend for nlp add-ons |
kpi#5464 | remove quantity dropdown from frontend for nlp add-ons |
kpi#5516 | unauthenticated users are now properly redirected to login screen when accessing parts of the app that requires auth |
kpi#5512 | modal width on large screens |
kpi#5501 | fix some formatting |
kpi#5491 | return 404 when retrieving or updating submission extras if submission does not exist. |
kpi#5486 | fix the router to render the correct error message when error code is neither 401 nor 403. |
kpi#5482 | add padding to the ‘Log Out of All Devices’ button on the Security page |
kpi#5481 | remove indent of last item in nlp add-ons dropdown |
kpi#5478 | do not allow SSO users to register with a different email then the one provided to the server. |
kpi#5436 | fix occasional problem where tasks end up showing as ‘Processing’ forever. |
kpi#5456 | correct addon modal usage calculations on usage page |
kpi#5450 | update subject line for project history log export email |
kpi#5439 | avoid adding XML declaration when rewriting submission XML and creating asset snapshot |
kpi#5443 | remove option for API calls to retrieve user-based service/asset usage. |
kpi#5440 | fix a bug that was causing the plans page to always redirect current user to account settings page. |
kpi#5431 | do not try to create logs after 404s and return correct error message when page isn’t found. |
kpi#5437 | add Academy link and update text of existing links |
kpi#5428 | handle modified-submission audit action properly in Project → Settings → Activity table UI. Hide add-submission audit action from the UI for now. |
kpi#5539 | add a new endpoint to delete all the permissions for a user by deleting any one of the user permissions |
kpi#5517 | add submission root uuids to project history logs. |
kpi#5529 | handle modify-qa-data action in UI |
kpi#5489 | record project history logs when users update the translations, transcripts, or QA answers of a submission. |
kpi#5562 | query for users reaching their maximum storage limit |
kpi#5544 | create new models for mass email |
Of interest to developers
PR | Description |
---|---|
kpi#5568 | organize imports with Biome |
kpi#5466 | bump tough-cookie and @cypress/request in /cypress |
kpi#5470 | bump webpack from 5.92.1 to 5.97.1 |
kpi#4319 | Bump minimist from 1.2.5 to 1.2.8 in /cypress |
kpi#4187 | Bump qs from 6.5.2 to 6.5.3 in /cypress |
kpi#4146 | Bump minimatch from 3.0.4 to 3.1.2 in /cypress |
kpi#5560 | remove unused file that is 10 years old |
kpi#5461 | remove obsolete report Users count by organization from superuser stats. |
kpi#5542 | add a simple unit test to snapshot regeneration |
kpi#5438 | remove some deprecated endpoints of v1 not called anymore by KPI |
kpi#5510 | update t() docstring |
kpi#5530 | run jobs on release branch |
kpi#5282 | remove unused import to pass flake8 on main |
kpi#5518 | skip test_plan_canceled_last_month |
kpi#5508 | lint utils.ts to stop tests failing |
kpi#5498 | format with Biome and enforce in CI |
kpi#5485 | add Biome formatter |
kpi#5488 | update CODEOWNERS file |
kpi#5487 | use pinned, active and current node version |
kpi#5484 | have failed Github Actions notify Zulip |
kpi#5483 | remove merged JS files that were rewritten in TS |
kpi#5463 | rename .es6 to .js |
kpi#5453 | migrate Rest Services code to TypeScript |
kpi#3944 | Bump jquery-ui from 1.12.1 to 1.13.2 |
kpi#5454 | move landing, summary and map files into separate directories |
kpi#5426 | migrate project download files to TypeScript |