We are pleased to announce a new release of KoboToolbox comprising the following components:
- KPI version 2.023.21
- KoBoCAT version 2.023.21
- Pyxform version 1.9.0, unchanged from the previous release
- Enketo Express:
6.1.0[Enketo has been rolled back to the previous release; see posts below]
Deployments:
- kobo.humanitarianresponse.info is complete as of 04:15 UTC on 17 July 2023
- kf.kobotoolbox.org is complete as of 20:15 UTC on 25 July 2023
This is primarily a maintenance release with few user-facing changes:
PR | Description |
---|---|
kpi#4419 | Add Amharic as a UI translation and change German language code Add a UI Translation for Amharic and change the UI language code for German |
kpi#4321 | Fix the mandatory asterisk not updating properly Previously mandatory asterisk in Form Builder (next to row name) was only updated on initial opening of the form. Now it also updates whenever it is being changed in the row settings. |
kpi#4442 | Update radio and checkbox styles Simplified and more modern styles for checkboxes and radio inputs |
kpi#4426 | TagsInput component cleanup Slightly update the styles for tags editing to better fit with new UI look. |
Other changes
Of interest to self hosters
PR | Description |
---|---|
kobocat#883 | Update Helm version, namespace, deployment name for beta staging environment |
kpi#4280 | Add NLP usage to Usersâ Statistics superuser report |
kpi#4285 | Create asset_usage endpointCreate asset_usage endpoint from the per_asset_usage field in the service_usage endpoint |
kpi#4418 | update django allauth version from 0.52.0 â 0.54.0 Updated django-allauth, fixing an issue where OpenID Connect social providers wouldnât pre-populate the email field at signup. |
kpi#4438 | Update default sign-up text |
Of interest to developers
PR | Description |
---|---|
kobocat#877 | Replace deprecated constants in GitLab CI |
kpi#4291 | Add endpoint for Stripe webhook Made dj-stripe webhook endpoint accessible to connect to Stripe for payments |
kpi#4305 | Switch to Stripe prices instead of plans Switch Stripe integration from (legacy) plans to prices model. |
kpi#4309 | Add Organization Ownerâs email to Organization model Add the Organization Ownerâs email to the Organization model to allow it to meet dj-stripe requirements |
kpi#4315 | Add documentation to Products endpoint |
kpi#4317 | Stripe Checkout link endpoints Adds two KPI endpoints, one that generates a Stripe checkout session and returns a payment link, and one that creates a Customer Portal link. |
kpi#4329 | Add tests for the Stripe checkout link and customer portal API endpoints. Also fixes some issues with the endpoints discovered while getting tests passing. |
kpi#4330 | Add subscription tiers |
kpi#4333 | Create a request callback method for dj-stripe Create a callback function for dj-stripe to use a custom subscriber model |
kpi#4335 | Stripe subscription management Changes the redirects after Stripe sessions to point to the proper URL. Add âManageâ button to the currently subscribed plan, which redirects to the Stripe customer portal. Moves the Your Plan display based on the logged-in userâs current plan. |
kpi#4371 | Endpoint to list purchased one-time add-ons <Adds a new internal endpoint at api/v2/stripe/addons that lists any one-time add-ons purchased by the logged-in userâs owned organization. Needed for the Your Active Add-ons section of the Plans page. |
kpi#4385 | Add the plans page for subscriptions with Stripe. Users are able to see current plan and upgrade through Stripe checkout to a different subscription plan. Also removes a too-narrow assertion in test_link_creation_api.py. |
kpi#4392 | Add success message after Stripe checkout Adds a success popup when a user returns from a successful transaction at Stripe. |
kpi#4398 | Remove [Button triggers] from frontend strings Move the [button triggers] outside of the string to be translated to avoid confusion as to whether or not it should be translated by volunteers |
kpi#4400 | Show correct UI on plans page when there are inactive/multiple plans Fixes an issue that caused the Plans page to falsely show the user as belonging to no plan when they had a subscription that wasnât active. |
kpi#4417 | Always recreate fonts when syncing npm dependencies in dev mode Fix error when /jsapp/fonts folder is missing while building the front-end assets in dev mode. |
kpi#4420 | Fix flashing plan banner Added the loading animation for when data is being fetched and when the data is updating. The plans and included banner wonât show until all data has completed loading especially after upgrading. |
kpi#4424 | Billing page multisite compatibility / Change subscription route Changes the ID field of Organizations to work with dj-stripe webhooks on multiple sites. Adds an API route to change existing Stripe subscriptions to a different price. |
kpi#4433 | Replace deprecated constants in GitLab CI Fixed an issue that was causing GitLab CI to fail during the build step. |
kpi#4437 | Show âyour planâ only on the correct annual/monthly setting When page redirects the banner now only shows on the monthly/annual plan you upgraded to when you toggle between the two filters. It will load the filter to show based on what you are subscribed to. If there is no plan subscribed then show annual community plan by default. When subscribed to the pro plan show on the opposite filter a âchange planâ button so the user has a call to action when their plan is not visible. |
kpi#4452 | Billing MVP live test fixes Fixed an issue where plans would show up in the wrong order. Fixed an issue that caused add-ons to show up in the plans section. Made multiple plans or cancelled plans properly reflected on the Billing page. |
kpi#4458 | Check for dj-stripe before attempting to migrate Subscriber foreign keys Fixes a migration for Organizations that was not working. |
kpi#4478 | Require authentication to check for existence of usernames via the user detail endpoint |
kpi#4479 | Remove asset list from user serializer |
kpi#4480 | Expunge remnants of Font Awesome |
kpi#4485 | Update helm version and namespace for beta staging environment |
kpi#4498 | Prevent Node.js 18 provided by Debian 12 from taking precedence over the Node.js 16 package provided by NodeSource The python:3.10 Docker base image has moved from Debian 11 to Debian 12, necessitating a workaround to continue using Node.js 16. |
Previously deployed as hotfix 2.023.12b
PR | Description |
---|---|
kpi#4451 | Display long-run warning for migration 0050 only where appropriate |
kpi#4449 | Add a status filter in Django Admin to filter objects in trashIt narrows down the list of objects matching the status filter. |
kpi#4448 | Fix an occasional error when a project is deleted Fix 'NoneType' object has no attribute 'annotate' error that happens when a project is deleted but its related KoBoCAT form has already been deleted. |
kpi#4447 | Clean up Celery autoscale settings |
kpi#4443 | Improve long-running trash-bin tasks duration Make deletion tasks run quickly and increase the amount of time they are allowed to run |
kobocat#879 | Autoscale Celery between 2 and 6 workers and allow configuration via environment variables |
kobocat#878 | Stop returning 500 for failed authentication to the media endpoint |