Release 2.024.33

Hello everyone,

We are happy to announce a new release of KoboToolbox!

This release consists of:

New features

PR Description
kpi#4970 Improved support for RTL languages such as Arabic, Farsi, and Urdu
Any user-generated text (survey responses, qualitative analysis responses, etc.) will now correctly display RTL text. This is done regardless of the language selected in user settings, e.g., Arabic text in an English UI will be displayed as RTL).
kpi#5067
kpi#5065
kpi#5063
kpi#5071
kpi#5035
kpi#5066
Access Logs in API
KoboToolbox now includes logging for all authentication events per account. Currently, these authentication logs can be accessed through the /api/v2/access-logs/ endpoint. These logs will be accessible through the UI soon. The retention period for the logs is configurable at the server level. These logs can be accessed by superusers for audit purposes through the api/v2/audit-log endpoint as well.
kpi#5026 Yoruba
UI support for Yoruba was added thanks to our translator community.

Bug fixes and improvements

PR Description
kpi#5085 Add missing field ASR_MT_GOOGLE_REQUEST_TIMEOUT to the constance config
kpi#4996 Limit the amount of different button colors. Changes some cancel-like buttons to use the same red color.
kpi#5033 Update colour palette to improve accessibility and to prepare for upcoming changes
kpi#4993 Update red Buttons to use dark-red for accessibility
kpi#5017 Update Archive Project button color
kpi#5059 Fix a bug causing translations to fail with large audio files
kpi#5062 Update the handling of subscription cancellation
kpi#5060 Fix an error in the code where we were checking for ‘subscription_interval’ instead of ‘recurring_interval’ on a subscription.
kpi#5053 Front-end adjustments to work with updated service_usage API
kpi#5052 Fix the date handling of default plans so that a user who cancels a paid subscription will now have a billing cycle anchored to the end of their subscription
kpi#5058 Fix background audio not displaying in Submission Modal
kpi#5049 Update conditional row level permissions wording
kpi#5051 Add toast error message for invalid email addresses when changing email
kpi#5040 Fixes UI elements spacing for automatic transcription flow. And fixes sharing form bug - after submitting user permissions, the editor was not closing.
kpi#5030 Allow only owners to be able to delete a shared project.
kpi#5032 Fix an error where renaming a group or moving a question into a group prevented the data from being displayed in the data table
kpi#5024 Fix infinite spinner happening when switching projects using sidebar
kpi#5018 Improve transfer projects UI
kpi#5008 Fix a timeout that was occurring when trying to view the table for a project view that was set to look at all countries.
kpi#5013 Reject 2FA activation with API when option is disabled for that account
This PR includes a fix for the stripe module that made logins fail when Stripe is not enabled in the settings
kpi#5009 Fixes switching between submissions in Submission Modal in cases when previous/next submission was coming from previous/next page of Data Table results. Includes some internal code cleanup.
kpi#4999 Improve errors when a snapshot is not found instead of forcing login, so editing a submission will return a 404 instead of a 401 if the snapshot does not actually exist.
kpi#5003 Fix extra submission details so that they are copied over when a submission is duplicated
kpi#4991 Retrieve organization data only for logged-in users to prevent error messages
kpi#4990 Fixes Data Table styles after recent react-table update. Also slightly improves the looks of bulk checkbox button.
kpi#4933 Allow users to select between translated labels and XML names for displayed form questions in NLP UI
kpi#4994 Limits future usage of ASR and MT once user has reached their plan limit.
kpi#4980 Replace deprecated buttons with Button component with new ones
kpi#4989 Reject 2FA activation via API when option is disabled for that account
kpi#4947 Fix some bugs preventing async automated translations with Google.

Of interest to developers

PR Description
kpi#5064 Add created_by and last_modified_by fields to asset model
kpi#5076 Fix audit_log import formatting
kpi#5072 Fix broken One-time-authentication tests
kpi#5088 Apply --no-install-recommends to OpenJDK install
kpi#5012 Update Node version to 20.17.0 for release builds, and run the front-end tests in Node 20 and 22 in CI.
kpi#5001 Set up React Query to simplify state management on new features. Install additional linter plugins and tools related to React and React Query.
kpi#5048 Health-check /service_health/minimal/ now skips all middleware. This allows health checks to bypass ALLOWED_HOSTS.
kpi#5044 Get source from requests
Enable parsing the source (browser and OS) from a request.
kpi#4884 Supplement the existing …/enketo/edit/ and …/enketo/view/ endpoints, which return JSON responses that include Enketo URLs, with …/enketo/redirect/edit/ and …/enketo/redirect/view/ endpoints, which return HTTP 302 redirects to the Enketo URLs
kpi#5039 Refactor /api/v2/data endpoint
kpi#5031 Improve XML parsing with defusedxml
kpi#5020 Create an abstract model which provides date_created and date_modified fields
Refactor existing models to inherit from the abstract model, replacing the individual date_created and date_modified fields.
kpi#4899 Add pages to Django app HTML requests for server errors (500) and page not found (404).
kpi#4997 Remove remnants of legacy Context API usage that was causing React 18 to show deprecation warnings in the developer console.
Also removes the ‘prop-types’ library and converts the reactCreateBemElement function to TypeScript.
kpi#5016 Alphabetize paginators file
kpi#5000 Update ESLint config to accept separate type imports in TS again
kpi#4975 Add provision_server management command
Automates setup of social applications and constance configurations through running ./manage.py provision_server along with specified arguments.
kpi#5004 Use env.bool instead of brittle string matching for the SKIP_CELERY environment variable
kpi#4992 Upgrade to React 18 and related packages.
kpi#4988 Refactor constance setting assignments in tests to use override_config
kpi#4985 Update linters for VS Code, move files from kobo-common into kpi
2 Likes

A new patch release 2.024.33a is available:

Improvements

PR Description
kpi#5190 Backport changes to the “access-log” API route (URL) only.
2 Likes

A new patch release 2.024.33b is available and has been deployed to our production servers at 13:15 UTC on Thursday, 31 October 2024:

Improvements

PR Description
kpi#5214 Fix Help menu display bug
kpi#5205 Fix SSRFProtect validation options to properly handle Constance settings
kpi#5206 Fix geo-points not displaying in map
kpi#5207 Reduce likelihood of 504 errors when deleting projects
2 Likes

A new patch release 2.024.33c is available:

Bug fixes and improvements

PR Description
kpi#5243 Allow re-requests for project transfers with expired invites

Of interest to developers

PR Description
kpi#5242 Use DEFAULT_FROM_EMAIL environment variable as default from email address
1 Like

A new patch release 2.024.33d is available and has been deployed to our production servers at 21:00 UTC on Wednesday, 27 November 2024:

Bug fixes and improvements

PR Description
kpi#5308 Fixed an issue where the usage storage for the new owner was not updated correctly during project ownership transfers.

Of interest to developers

PR Description
kpi#5307 Added an option to the update_attachment_storage_bytes management command to prevent user submission suspension. Updated logic to handle the submissions_suspended flag conditionally.

Of interest to self-hosters

Use ./manage.py update_attachment_storage_bytes --sync to update stale storage counters.

1 Like

A new patch release 2.024.33e is now deployed as of 04 December 2024 at 17:52 UTC. This release ensures that projects owned by inactive users no longer receive submissions, even if those projects are shared with other users or allow anonymous submissions. More details are available at https://github.com/kobotoolbox/kpi/pull/5321.

Thanks for using KoboToolbox.

2 Likes

A new patch release 2.024.33f is now deployed as of 17 December 2024 at 23:30 UTC. This release fixed an issue where OpenRosa media files were not synced during project ownership transfers causing a 404 error in Collect when opening a project due to missing media files… More details are available at https://github.com/kobotoolbox/kpi/pull/5365.

Thanks for using KoboToolbox.

1 Like

A new patch release 2.024.33g is available and has been deployed to our production servers at 15:30 UTC on Thursday, 19 December 2024:

Bug fixes and improvements

PR Description
kpi#5385 ensure the path of OpenRosa media files is correct for transferred projects
kpi#5386 Correct crontab syntax (and typo) for Celery Beat scheduler
kpi#5379 introduce long-running migration system using Celery
kobo-docker#353 correct Celery Beat entrypoint path
1 Like