What's changed
Features (8)
-
⚠️ pagination: add API pagination size configuration constants (#6689)
This PR introduces
DEFAULT_API_PAGE_SIZEandMAX_API_PAGE_SIZE
constants to standardize pagination behavior across API endpointsThis PR adds two configuration constants to control API pagination
behavior.DEFAULT_API_PAGE_SIZEsets the default page size when no
limit is specified in API requests, whileMAX_API_PAGE_SIZEenforces a
maximum limit to prevent oversized responses that could impact system
performance. The constants are designed with future-proof naming to
support expansion beyond the current submission list endpoints to other
API endpoints as needed. -
analysis: introduce optional clear button (#6445)
Modern implementations of radio components don't allow de-selection.
After updating the select one question type in the qualitative analysis
section to mantine, we lost this functionality. To ensure the ability to
de-select select one questions, they will appear with a "clear" button
next to the "delete" button -
billing: switch asset usage endpoint to limit offset pagination (#6234)
Removes custom asset usage page-size pagination, thereby using KPI's
default limit-offset pagination, and adjusts drf_spectacular code for
the endpoint to improve API docs/frontend helpers. -
exports: only allow one anonymous export at a time (#6514)
Only create one export at a time for anonymous users.
If an anonymous user creates an export and another anonymous user
attempts to create a new export before the other one is finished, they
will receive a 503 error with a message to try again. -
gallery: paginated modal for images (#6521)
Project → Data → Gallery images now open images in a modal with
prev/next pagination. -
messages: add user details to in-app messages (#6569)
Replace selected 'template tags' with user details on in-app messages.
-
submission: expose meta/rootUuid in UI (#6557)
Display
meta/rootUuidin Data Table, Single Submission modal, and
Project Downloads. Also make it possible to include it in exported data. -
usage: add LLM requests usage card under feature flag (#6510)
Bug Fixes (8)
-
asset: prevent translation errors after adding hints to a form (#6587)
Allow users to add hints to forms which have translations before
deploying the form. -
assets: add unit test for assets' numeric-only search queries (#6565)
Add unit test to ensure asset search does not crash when numeric-only or
float searches are used.Part of: #6563
-
data: update
/api/v2/data/limits (#6472)Change maximum number of results that
/api/v2/data/can return to 100
by default and 1000 maximum. -
mfa: change MFA modal copywriting (#6536)
Update copywriting in MFA modal
-
migrations: kpi migration script failure on fresh installs (#6485)
-
nlp: don't crash when translating a transcript (#6532)
KPI won't crash anymore when clicking "begin" button to add a
translation in the NLP view. -
project: history buttons overlap (#6501)
-
projectViews: searchbox missing in Org View (#6500)
Display search in top navigation for organization projects.
Documentation (2)
Continous Integration (5)
- automation: push new image tag for main branch to devops/instance-kfmain for deployment INFRA-325 (#6533)
- release: don't run workflow twice on creation (#6556)
- releases: changelog job should handle all cases (#6546)
- releases: pin git-cliff version due breaking changes (#6568)
- zulip: convert stream name to input for zulip workflow (#6564)
Build & Dependencies (1)
- dev: add convenience script to run frontend/backend branches separately (#6490)
Security (7)
- deps: bump node-forge from 1.3.1 to 1.3.2 in the minor-and-patch group across 1 directory (#6508)
- deps: bump aws-actions/configure-aws-credentials from 5.1.0 to 5.1.1 in the actions-deps group (#6531)
- deps: bump actions/cache from 4 to 5 in the actions-deps group (#6552)
- deps: bump actions/create-github-app-token from 1 to 2 in the actions-deps group (#6570)
- deps: bump qs from 6.13.0 to 6.14.1 in the minor-and-patch group across 1 directory (#6577)
- deps: bump dependabot/fetch-metadata from 2.4.0 to 2.5.0 in the actions-deps group (#6600)
- deps-dev: bump js-yaml from 3.14.1 to 3.14.2 (#6482)
Refactor (2)
- analysis: migrate select one form to mantine (#6462)
- rename retention environment variable to be clearer and more consistent (#6527)
Improve clarity and consistency of the retention setting name, making it
easier for superusers in Constance and for future development.This refactor updates the name of the retention-related environment
variable to a more explicit and consistent form. The clearer naming
helps superusers quickly understand its purpose in Constance and reduces
ambiguity for developers working with retention logic. No behavioral
changes are introduced—only improved readability and maintainability.
Chores (4)
- deps: bump the actions-deps group across 1 directory with 2 updates (#6496)
- deps: bump the minor-and-patch group across 1 directory with 2 updates (#6518)
- deps: bump the minor-and-patch group across 1 directory with 2 updates (#6597)
- submissions: update anonymous submissions help link (#6517)
Update the help link for allowing anonymous submissions
Other (1)
- Fix uv in pip-compile.sh (#6562)
Revise pip-compile.sh to add the --output <OUT_FILE>
option (requirements.txt)
- pip-compile requirements.in
- uv pip compile requirements.in --output-file requirements.txt
For more info, see
#6562.
Without --output-file, uv won't infer requirements.txt
from requirements.in automatically like pip-tools would.
So you'd get a result equivalent to:
--update Use latest version of all packages
(instead of what's in requirements.txt)
--dry-run Print to stdout only
(instead of updating requirements.txt
Full Changelog: https://github.com/kobotoolbox/kpi/compare/2.025.47g..2.026.03