Hello everyone!
We are happy to announce a new release of KoboToolbox! It has been deployed to our production servers at 16:00 UTC on Tuesday, 7 January 2025.
This release consists of:
- KPI version 2.024.36
- Pyxform version 1.9.0, unchanged from the previous release
- Enketo version 7.3.1, unchanged from the previous release
New features
PR | Description |
---|---|
kpi#5097 kpi#5175 kpi#5157 kpi#5113 kpi#5109 kpi#5092 kpi#5081 kpi#5143 |
New Feature: Access Logs Introducing a UI to go along with the API endpoints that were released in 2.024.33. This release adds a UI component to visualize the access logs on the Account Settings > Security page. All successful authentications to a user’s account are logged. Submission events (if using username and password) are included as grouped entries based on the hour of submission. Access logs are deleted if they are older than a server-wide configured number of days (our current default is 60 days). We also improved the API documentation for the /audit-logs and /access-logs endpoints. |
Bug fixes and improvements
PR | Description |
---|---|
kpi#5041 | Retry REST services only based on specific error codes REST Services will only automatically retry after the following errors is returned: - HTTP 502 Bad Gateway - HTTP 503 Service Unavailable - HTTP 504 Gateway Timeout All other errors will need to be retried manually. Retries will now happen after approximately 60, 120, and 240 seconds. |
kpi#5187 | Fix UI crash in Data Table for projects with qualitative analysis questions |
kpi#5159 | Reset check boxes in Projects Table after loading fresh results |
kpi#5090 | Move Terms of Service and Privacy Policy links inside the darker area to provide better visibility. |
kpi#5101 | When using pulldata feature in a project with a remote URL, data is now refreshed automatically. |
kpi#5104 | The Delete Project button label now will be displayed as either “Delete Project” or “Delete Project and Data” to reflect whether the project has submissions to be deleted along with the project or not. |
kpi#5075 | Improve error message when XForm does not exist |
kpi#5122 | Notify on deleting submission(s) in the table view using check boxes. |
kpi#5096 | Fix misalignment of columns in data table after paginating to allow users to see the full height of frozen columns after paginating. |
kpi#5046 | Improve the accessibility of the button components and minimize the amount of button types in the UI |
kpi#5124 | Improve billing cycles across time zones |
kpi#5079 | Change the UI responsible for creating new reports, so it’s clearer how to add new custom report. |
kpi#4986 | Add django-import-export for organization users |
Of interest to developers
PR | Description |
---|---|
kpi#5192 | Apply Formatting and Linting to Python Codebase. The XForm class has been reformatted to adhere to the defined style standards. |
kpi#5176 | Implement feature flags functionality to protect users from some in development functionalities. |
kpi#5186 | Add feature flag-protected routes for new organization views. Adds routes for org settings and org members behind a feature flag. |
kpi#5146 | Initial implementation of the front end for the project history logs |
kpi#5160 | Remove tests for Python 3.8 and constraints to maintain compatibility with it. Python 3.8 has reached the end of its life; see this page. Most self-hosters will not notice any change, because all Docker images began using Python 3.10 in April of 2022. Highly technical self-hosters who do not use our Docker images may need to update their environments. |
kpi#5161 | Drop sizes.scss and replace all variables with px values |
kpi#5168 | Internal cleanup of Avatar component. Changed function that generates avatar background color from username to generate more consistent spread of colors. |
kpi#5036 | Refactor project deployment to simplify the way projects are deployed and how KPI interacts with KoboCAT. |
kpi#5156 | Linting Python code for project deployment back-end class refactoring |
kpi#5150 | Use main branch for CI badges |
kpi#5141 | DiffValue component for displaying value change |
kpi#5134 | Record a project history log every time a project is deployed, redeployed, archived, or unarchived. |
kpi#5120 | Create the base configuration and samples for adding unit tests with Jest |
kpi#5021 | Replace default values with (invalid) placeholders to make admins realize the settings are wrong right away. |
kpi#5127 | Clean-up pytz import removal |
kpi#5125 | Remove pytz imports and use ZoneInfo instead |
kpi#5091 | Replace qpath with XPath to no longer use a dash as a group delimiter to address edge cases with qualitative data processing routes |
kpi#5108 | Create UniversalTable (and PaginatedQueryUniversalTable ) components that will allow us to consistently display data in multiple upcoming features. |
kpi#5083 | Add Python linter to GitHub Actions |
kpi#5045 | Remove dependency on kobo-service-account package. Since there is no proxy between KPI and KoboCAT anymore, it is not needed anymore. |
kpi#5078 | Better error handling in new deployment back-end class |
kpi#5056 | Simplify MockDeploymentBackend |
kpi#5073 | Refactor of the ServiceUsageSerializer. The calculations and counts were moved to a utility class that can be reused on other places besides the serializer. |
kpi#5042 | Remove shadow models and KobocatDeploymentBackend class |
kpi#5038 | Create new deployment backend class |
kpi#5037 | Replace shadow models imports with their openrosa app counterparts |
kpi#5177 | Improve efficiency by allowing direct access to the owner of an organization, reducing database complexity and improving speed. |
kpi#5158 | Use @deprecated JSDoc tag for internal code documentation improvements. |
kpi#5144 | When using the Django management command ./manage.py createsuperuser a verified email address record is now created. This allows createsuperuser to create an immediately usable superuser account. |
kpi#5119 | Fix ignore list for flake8 |
kpi#5148 | Fix ModuleNotFoundError: No module named ‘tablib’ error that would occur when attempting to install Python dependencies for development. |
kpi#5123 | Update NLP README to include information on API calls to improve documentation |
kpi#5114 | Fix Python formatter error with owner discrepancy in the container |
kpi#5166 | Patch upstream AlertifyJS library to improve stability when confirmation dialogs are opening or closing. |
Of interest to self-hosters
- kobo-install 10.0.0. Support for Docker Compose
v1
has been dropped.