Enketo Express for KoboToolbox is running! Please access Enketo forms from your KoboToolbox installation.
version: 7.5.1
All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning.
bl tag because it doesn't exist_ as markdown italics if separated by whitespaceexcludeNonRelevant (#971)BREAKING CHANGE: widgets for integers and decimal inputs have been made into Enketo Core widgets. If you specify widgets in your config.json, you MUST add integer and decimal.
survey.media is available in view mode (#484)Fixed a duplicate record name issue in offline-capable views if more than 1 form with the same title exist in the local database, closes (#417)
Breaking change: once users visit a form in offline-capable mode, the offline form cache IndexedDB schema will be upgraded, which is irreversible.
Add max processes config value (#415)
Breaking change: the previous default was to fork one process for every logical CPU core on the host, the new default is limited to 16 processes by default.
Fix: missing media healing offline (#419)
Show a less cryptic error message when form loading fails with missing external instances (#421, #400)
Allow client csrf cookie name to be configurable (#420)
Don't disable the upload button so much (#410)
Add configurable security headers (#402)
Fix: depend on transformer and core releases in lockfile (#413)
Optionally exclude non-relevant values in calculations (enketo-core#870)
Fix map with hidden geo-inputs when "hide-input" class is active (enketo-core#889)
Optionally recompute the evaluation cascade asynchronously (enketo-core#881)
Improve form initialization performance by calculating repeats only once (enketo-core#887)
Fixed mangling of markdown-produced HTML next to top-level text nodes when a mediamap is provided (enketo-transformer#150)
Improve test isolation (enketo-core#885)
grunt only when building image; remove config and commit logic from start-up script; update to node 14grunt expects missing esbuild dev dependencydecimal-date() function (as it was an accident and is not in the spec).decimal-time() with a node-set parameter fails.uuid() with a node-set parameter fails.node() mid-axis, causes an exception.ends-with() with a node parameter causes an exception.not() with an empty node-set parameter returns false.uuid() with a node parameter fails.exp(), exp10(), log(), log10(), sqrt() with node-set parameters returns incorrect results.randomize() with a non-nodeset parameter does not throw an error.form query parameter) fail to load.setvalue element has no value attribute and no textContent, it does not work to reset a value.create_config.py script stored encryption key in the wrong placeviewBox attribute is overwritten.<circle> element with id attribute is not working in the image-map widget.<circle> element with a parent <g> element with an id attribute is not working in the image-map widget.form query parameter show a submit button instead of a validate button.WARNING: IT IS HIGHLY RECOMMENDED TO DEPLOY THIS VERSION BEFORE CHROME 83 IS RELEASED SOME TIME IN APRIL 2020 AND PREFERABLY AFTER VERSION 1.86.x HAS BEEN DEPLOYED. READ MORE HERE.
form queryparameter are broken.WARNING: IT IS HIGHLY RECOMMENDED TO DEPLOY ONE OF THE 1.86.x VERSIONS BEFORE MARCH 31ST, 2020. READ MORE HERE.
jr:count does not work if number is provided instead of /path/to/count.odk:generated-by attribute check on the primary instance (introduced in 1.83.0), was changed to a check for odk:xforms-version on the model node.grunt build-ie11 task does not build minified javascript files, causing everything to fail in production mode.grunt build-ie11).preview_iframe_url property.validateContinuously is set to true.odk:generated-by attribute on the primary instance child, will always have absolute repeat node references evaluated correctly (e.g. for forms generated by pyxform 1.0.0 onwards).current() without a path, and current()/path/to/node without a step down do not work.current() calls, the expression is not evaluated correctly (noticeable inside repeats for multiple-choice questions with complex choice filters).decimal-time() and decimal-date-time() now use maximum precision instead of rounding to 3 decimals."compact" -> "select-media" and "horizontal-choices" -> "columns").true.jr:choice-name() function not working with autocomplete questions.position(..)) are not always re-calculated.validateContinuously: true).valuechange.enketo event but should not.Dockerfile specifies NodeJS 6.validateContinously is set to false.form query parameter with a URL value that contains ":" in the path, get stuck in an infinite loop (!).HEAD request to the form URL responds with the correct X-Openrosa-Accept-Content-Length header.<sup> and <sub> (superscript and subscript).decimal-time() support.distance() support.decimal-date-time() not spec-compliant at all.randomize() support to shuffle nodesets (no support for itemsets with itext labels).min() and max() ignore non-last arguments/nodes with value 0.data-checked attribute is not updated.<g> of <path>s.style attribute with fill and stroke the 'selected' state is not shown.Accept-Language header contains a dialect such as sv-SE.ref attribute is not revealed when relevant becomes true.true.false, block page navigation for some milliseconds if required to ensure that user sees new error message.true.false.