diff --git a/.changeset/breezy-sheep-play.md b/.changeset/breezy-sheep-play.md deleted file mode 100644 index 8298e7521..000000000 --- a/.changeset/breezy-sheep-play.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@getodk/xforms-engine': patch ---- - -Fix: reactive aggregation of validation violations from selects diff --git a/.changeset/brown-cars-grow.md b/.changeset/brown-cars-grow.md deleted file mode 100644 index eafae6ce1..000000000 --- a/.changeset/brown-cars-grow.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@getodk/xforms-engine': minor -'@getodk/scenario': minor -'@getodk/ui-solid': minor -'@getodk/web-forms': patch ---- - -Add engine support for 'note' nodes diff --git a/.changeset/itchy-icons-notice.md b/.changeset/itchy-icons-notice.md deleted file mode 100644 index 6b3481efc..000000000 --- a/.changeset/itchy-icons-notice.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -"@getodk/scenario": minor -"@getodk/xforms-engine": minor ---- - -- Support tracking `current()` references in computations -- Support tracking references in computations where path references include predicates -- Improve support for repeat-based itemsets -- Improve relative path resolution across the board, fixing many computation update edge cases where expressions include complex path expressions -- Support relative `ref`/`nodeset` body attributes, as well as those with a `current()/` prefix -- Improve function call analysis in XPath expressions, particularly identification of functions called with no arguments -- Lay more mature foundation for general syntax analysis of XPath expressions diff --git a/.changeset/popular-jobs-brush.md b/.changeset/popular-jobs-brush.md deleted file mode 100644 index a81875008..000000000 --- a/.changeset/popular-jobs-brush.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@getodk/web-forms": patch ---- - -Added "Powered by ODK" caption at the bottom of the Form diff --git a/.changeset/pretty-walls-relate.md b/.changeset/pretty-walls-relate.md deleted file mode 100644 index f69712434..000000000 --- a/.changeset/pretty-walls-relate.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@getodk/xforms-engine": patch ---- - -Fix: reactivity of aggregated validation violations on deep descendants diff --git a/.changeset/proud-elephants-remain.md b/.changeset/proud-elephants-remain.md deleted file mode 100644 index 91219ec5f..000000000 --- a/.changeset/proud-elephants-remain.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@getodk/ui-solid": patch -"@getodk/web-forms": minor ---- - -- Show message when required or other constrainst are not satisfied. -- Show error message banner at the top of the Form when "Send" button is pressed and the Form is invalid -- Various design/UI tweaks to beautify the Form diff --git a/.changeset/quiet-donkeys-tie.md b/.changeset/quiet-donkeys-tie.md deleted file mode 100644 index cbc39211b..000000000 --- a/.changeset/quiet-donkeys-tie.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@getodk/xforms-engine': patch -'@getodk/web-forms': patch -'@getodk/scenario': patch -'@getodk/ui-solid': patch ---- - -Fix: evaluate `jr:count` in context of affected repeat diff --git a/.changeset/rotten-turtles-tease.md b/.changeset/rotten-turtles-tease.md deleted file mode 100644 index d6b8256dc..000000000 --- a/.changeset/rotten-turtles-tease.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@getodk/scenario': minor -'@getodk/xpath': minor ---- - -Support for `indexed-repeat` XPath function diff --git a/.changeset/silent-meals-sin.md b/.changeset/silent-meals-sin.md deleted file mode 100644 index 7d2743145..000000000 --- a/.changeset/silent-meals-sin.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -'@getodk/xforms-engine': minor -'@getodk/web-forms': minor -'@getodk/scenario': minor -'@getodk/ui-solid': minor -'@getodk/common': minor ---- - -Add support for count-controlled (`jr:count`) and fixed (`jr:noAddRemove`) repeat ranges. diff --git a/.changeset/tasty-hornets-fix.md b/.changeset/tasty-hornets-fix.md deleted file mode 100644 index 1039a0c11..000000000 --- a/.changeset/tasty-hornets-fix.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@getodk/common": minor -"@getodk/scenario": minor -"@getodk/web-forms": minor -"@getodk/xforms-engine": minor ---- - -Engine support for `constraint`, `required` validation diff --git a/.changeset/tough-fans-cross.md b/.changeset/tough-fans-cross.md deleted file mode 100644 index 7eda8e716..000000000 --- a/.changeset/tough-fans-cross.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@getodk/ui-solid": patch -"@getodk/web-forms": patch ---- - -- Display Notes fields on the UI -- Show hint for the fields if defined in the Form diff --git a/.changeset/wise-colts-thank.md b/.changeset/wise-colts-thank.md deleted file mode 100644 index 7402ff6f9..000000000 --- a/.changeset/wise-colts-thank.md +++ /dev/null @@ -1,5 +0,0 @@ ---- - ---- - -Add PR template diff --git a/.changeset/young-balloons-fly.md b/.changeset/young-balloons-fly.md deleted file mode 100644 index 386b9b14e..000000000 --- a/.changeset/young-balloons-fly.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@getodk/tree-sitter-xpath': patch ---- - -Fix: parse `child` and other axis names as (abbreviated) child name test diff --git a/README.md b/README.md index 4686049ad..1d868ba9f 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ Here is the feature matrix and the progress we have made so far:
- ${\mathtt{Question \space \space types \space \space (basic \space \space functionality)\color{transparent}==== \color{green}███\color{LightGray}█████████████████ \space \color{initial} 15\%}}$ + ${\mathtt{Question \space \space types \space \space (basic \space \space functionality)\color{transparent}==== \color{green}███\color{LightGray}█████████████████ \space \color{initial} 18\%}}$
@@ -48,7 +48,7 @@ Here is the feature matrix and the progress we have made so far: | text | ✅ | | integer | | | decimal | | -| note | 🚧 | +| note | ✅ | | select_one | ✅ | | select_multiple | ✅ | | repeat | ✅ | @@ -153,7 +153,7 @@ Here is the feature matrix and the progress we have made so far:
- ${\mathtt{Form \space \space Logic\color{transparent}============================== \color{green}██████████\color{LightGray}██████████ \space \color{initial} 50\%}}$ + ${\mathtt{Form \space \space Logic\color{transparent}============================== \color{green}████████████████\color{LightGray}████ \space \color{initial} 83\%}}$
@@ -162,27 +162,27 @@ Here is the feature matrix and the progress we have made so far: | calculate | ✅ | | relevant | ✅ | | required | ✅ | -| required message | 🚧 | -| custom constraint | 🚧 | -| constraint message | 🚧 | +| required message | ✅ | +| custom constraint | ✅ | +| constraint message | ✅ | | read only | ✅ | | trigger | | | choice filter | ✅ | | default | ✅ | | query parameter | | -| repeat_count | | +| repeat_count | ✅ |
- ${\mathtt{Descriptions \space \space and \space \space Annotations\color{transparent}============ \color{green}██\color{LightGray}██████████████████ \space \color{initial} 13\%}}$ + ${\mathtt{Descriptions \space \space and \space \space Annotations\color{transparent}============ \color{green}████\color{LightGray}████████████████ \space \color{initial} 20\%}}$
| Feature | Progress | | ---------------------------------------------- | :------: | | label | ✅ | -| hint | | +| hint | ✅ | | guidance hint | | | Translations | ✅ | | Translations with field/question value | | @@ -236,7 +236,7 @@ Here is the feature matrix and the progress we have made so far:
- ${\mathtt{XPath\color{transparent}=================================== \color{green}██████████████████\color{LightGray}██ \space \color{initial} 94\%}}$ + ${\mathtt{XPath\color{transparent}=================================== \color{green}███████████████████\color{LightGray}█ \space \color{initial} 95\%}}$
@@ -311,7 +311,7 @@ Here is the feature matrix and the progress we have made so far: | count-selected(node node) | ✅ | | jr:choice-name(node node, string value) | | | jr:itext(string id) | ✅ | -| indexed-repeat(node-set arg, node-set re
peat1, number index1, [node-set repeatN,
number indexN]{0,2}) | | +| indexed-repeat(node-set arg, node-set re
peat1, number index1, [node-set repeatN,
number indexN]{0,2}) | ✅ | | area(node-set ns\|geoshape gs) | ✅ | | distance(node-set ns\|geoshape gs\|geotr
ace gt\|(geopoint\|string) arg\*) | ✅ | | base64-decode(base64Binary input) | | diff --git a/feature-matrix.json b/feature-matrix.json index 26c65322a..88aff306e 100644 --- a/feature-matrix.json +++ b/feature-matrix.json @@ -3,7 +3,7 @@ "text": "✅", "integer": "", "decimal": "", - "note": "🚧", + "note": "✅", "select_one": "✅", "select_multiple": "✅", "repeat": "✅", @@ -93,19 +93,19 @@ "calculate": "✅", "relevant": "✅", "required": "✅", - "required message": "🚧", - "custom constraint": "🚧", - "constraint message": "🚧", + "required message": "✅", + "custom constraint": "✅", + "constraint message": "✅", "read only": "✅", "trigger": "", "choice filter": "✅", "default": "✅", "query parameter": "", - "repeat_count": "" + "repeat_count": "✅" }, "Descriptions and Annotations": { "label": "✅", - "hint": "", + "hint": "✅", "guidance hint": "", "Translations": "✅", "Translations with field/question value": "", @@ -210,7 +210,7 @@ "count-selected(node node)": "✅", "jr:choice-name(node node, string value)": "", "jr:itext(string id)": "✅", - "indexed-repeat(node-set arg, node-set repeat1, number index1, [node-set repeatN, number indexN]{0,2})": " ", + "indexed-repeat(node-set arg, node-set repeat1, number index1, [node-set repeatN, number indexN]{0,2})": "✅", "area(node-set ns|geoshape gs)": "✅", "distance(node-set ns|geoshape gs|geotrace gt|(geopoint|string) arg*)": "✅", "base64-decode(base64Binary input)": "" diff --git a/package.json b/package.json index eb3b6e9c7..6ee28da00 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,7 @@ "types": "turbo run types", "bump": "changeset add", "format": "prettier -w \"**/*\" --ignore-unknown --cache", + "format:readme-only": "prettier -w README.md", "format:checkonly": "prettier -c \"**/*\" --ignore-unknown", "lint": "eslint . --report-unused-disable-directives", "feature-matrix": "node scripts/feature-matrix/render.js" diff --git a/packages/common/CHANGELOG.md b/packages/common/CHANGELOG.md index 9235e57e8..514f45576 100644 --- a/packages/common/CHANGELOG.md +++ b/packages/common/CHANGELOG.md @@ -1,5 +1,12 @@ # @getodk/common +## 0.3.0 + +### Minor Changes + +- 7b63159: Add support for count-controlled (`jr:count`) and fixed (`jr:noAddRemove`) repeat ranges. +- 573b06b: Engine support for `constraint`, `required` validation + ## 0.2.0 ### Minor Changes diff --git a/packages/common/package.json b/packages/common/package.json index 3b0b404bc..11f5a2bab 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -1,7 +1,7 @@ { "name": "@getodk/common", "private": true, - "version": "0.2.0", + "version": "0.3.0", "description": "@getodk/common", "type": "module", "author": "getodk", diff --git a/packages/scenario/CHANGELOG.md b/packages/scenario/CHANGELOG.md index 74e9490b4..6e6d7a211 100644 --- a/packages/scenario/CHANGELOG.md +++ b/packages/scenario/CHANGELOG.md @@ -1,5 +1,25 @@ # @getodk/scenario +## 0.3.0 + +### Minor Changes + +- 596c1fe: Add engine support for 'note' nodes +- 0c1534d: - Support tracking `current()` references in computations + - Support tracking references in computations where path references include predicates + - Improve support for repeat-based itemsets + - Improve relative path resolution across the board, fixing many computation update edge cases where expressions include complex path expressions + - Support relative `ref`/`nodeset` body attributes, as well as those with a `current()/` prefix + - Improve function call analysis in XPath expressions, particularly identification of functions called with no arguments + - Lay more mature foundation for general syntax analysis of XPath expressions +- 746aa8a: Support for `indexed-repeat` XPath function +- 7b63159: Add support for count-controlled (`jr:count`) and fixed (`jr:noAddRemove`) repeat ranges. +- 573b06b: Engine support for `constraint`, `required` validation + +### Patch Changes + +- aa3a84a: Fix: evaluate `jr:count` in context of affected repeat + ## 0.2.0 ### Minor Changes diff --git a/packages/scenario/package.json b/packages/scenario/package.json index 2e4060a3a..3aa84f080 100644 --- a/packages/scenario/package.json +++ b/packages/scenario/package.json @@ -1,7 +1,7 @@ { "name": "@getodk/scenario", "private": true, - "version": "0.2.0", + "version": "0.3.0", "description": "@getodk/scenario", "type": "module", "author": "getodk", @@ -48,7 +48,7 @@ }, "devDependencies": { "@js-joda/core": "^5.6.3", - "@getodk/xforms-engine": "0.2.0", + "@getodk/xforms-engine": "0.3.0", "@vitest/browser": "^2.0.2", "jsdom": "^24.1.0", "solid-js": "^1.8.18", diff --git a/packages/tree-sitter-xpath/CHANGELOG.md b/packages/tree-sitter-xpath/CHANGELOG.md index 4acc1d329..94eb3deeb 100644 --- a/packages/tree-sitter-xpath/CHANGELOG.md +++ b/packages/tree-sitter-xpath/CHANGELOG.md @@ -1,5 +1,11 @@ # @getodk/tree-sitter-xpath +## 0.1.2 + +### Patch Changes + +- 03305c1: Fix: parse `child` and other axis names as (abbreviated) child name test + ## 0.1.1 ### Patch Changes diff --git a/packages/tree-sitter-xpath/package.json b/packages/tree-sitter-xpath/package.json index 2db710978..dd59aec6a 100644 --- a/packages/tree-sitter-xpath/package.json +++ b/packages/tree-sitter-xpath/package.json @@ -1,6 +1,6 @@ { "name": "@getodk/tree-sitter-xpath", - "version": "0.1.1", + "version": "0.1.2", "license": "Apache-2.0", "description": "XPath grammar for tree-sitter", "type": "commonjs", diff --git a/packages/ui-solid/CHANGELOG.md b/packages/ui-solid/CHANGELOG.md index 9c30309b9..fe3b13196 100644 --- a/packages/ui-solid/CHANGELOG.md +++ b/packages/ui-solid/CHANGELOG.md @@ -1,5 +1,30 @@ # @getodk/ui-solid +## 0.2.0 + +### Minor Changes + +- 596c1fe: Add engine support for 'note' nodes +- 7b63159: Add support for count-controlled (`jr:count`) and fixed (`jr:noAddRemove`) repeat ranges. + +### Patch Changes + +- 82d35d0: - Show message when required or other constrainst are not satisfied. + - Show error message banner at the top of the Form when "Send" button is pressed and the Form is invalid + - Various design/UI tweaks to beautify the Form +- aa3a84a: Fix: evaluate `jr:count` in context of affected repeat +- 5aa7ebc: - Display Notes fields on the UI + - Show hint for the fields if defined in the Form +- Updated dependencies [e81aa43] +- Updated dependencies [596c1fe] +- Updated dependencies [0c1534d] +- Updated dependencies [1e72854] +- Updated dependencies [aa3a84a] +- Updated dependencies [7b63159] +- Updated dependencies [573b06b] + - @getodk/xforms-engine@0.3.0 + - @getodk/common@0.3.0 + ## 0.1.2 ### Patch Changes diff --git a/packages/ui-solid/package.json b/packages/ui-solid/package.json index 94d598812..d8cc501c0 100644 --- a/packages/ui-solid/package.json +++ b/packages/ui-solid/package.json @@ -1,6 +1,6 @@ { "name": "@getodk/ui-solid", - "version": "0.1.2", + "version": "0.2.0", "license": "Apache-2.0", "description": "Solid UI client for ODK Web Forms", "type": "module", @@ -46,8 +46,8 @@ }, "dependencies": { "@fontsource/roboto": "^5.0.13", - "@getodk/common": "0.2.0", - "@getodk/xforms-engine": "0.2.0", + "@getodk/common": "0.3.0", + "@getodk/xforms-engine": "0.3.0", "@solidjs/router": "^0.14.1", "@suid/icons-material": "^0.7.0", "@suid/material": "^0.16.0", diff --git a/packages/web-forms/CHANGELOG.md b/packages/web-forms/CHANGELOG.md index a0395e64e..2c88ef20a 100644 --- a/packages/web-forms/CHANGELOG.md +++ b/packages/web-forms/CHANGELOG.md @@ -1,5 +1,25 @@ # @getodk/web-forms +## 0.3.0 + +### Minor Changes + +- 82d35d0: Validation of `required` and `constraint` + - Show message when `required` or `constraint` are not satisfied. + - Show error message banner at the top of the Form when "Send" button is pressed and the Form is invalid + - Various design/UI tweaks to beautify the Form +- 7b63159: Add support for count-controlled (`jr:count`) and fixed (`jr:noAddRemove`) repeat ranges. +- 573b06b: Engine support for `constraint`, `required` validation +- 5aa7ebc: Support for notes + - Display Notes fields on the UI + - Show hint for the fields if defined in the Form + +### Patch Changes + +- 596c1fe: Add engine support for 'note' nodes +- 53d5f02: Added "Powered by ODK" caption at the bottom of the Form +- aa3a84a: Fix: evaluate `jr:count` in context of affected repeat + ## 0.2.0 ### Minor Changes diff --git a/packages/web-forms/package.json b/packages/web-forms/package.json index ee07d346a..11528e432 100644 --- a/packages/web-forms/package.json +++ b/packages/web-forms/package.json @@ -1,6 +1,6 @@ { "name": "@getodk/web-forms", - "version": "0.2.0", + "version": "0.3.0", "license": "Apache-2.0", "description": "ODK Web Forms", "author": "getodk", @@ -50,7 +50,7 @@ "devDependencies": { "@faker-js/faker": "^8.4.1", "@fontsource/roboto": "^5.0.13", - "@getodk/xforms-engine": "0.2.0", + "@getodk/xforms-engine": "0.3.0", "@playwright/test": "^1.45.1", "@types/ramda": "^0.30.1", "@vitejs/plugin-vue": "^5.0.5", diff --git a/packages/xforms-engine/CHANGELOG.md b/packages/xforms-engine/CHANGELOG.md index d6dc6014d..05a4a83be 100644 --- a/packages/xforms-engine/CHANGELOG.md +++ b/packages/xforms-engine/CHANGELOG.md @@ -1,5 +1,27 @@ # @getodk/xforms-engine +## 0.3.0 + +### Minor Changes + +- 596c1fe: Add engine support for 'note' nodes +- 0c1534d: Improve path resolution and updating computations + - Support tracking `current()` references in computations + - Support tracking references in computations where path references include predicates + - Improve support for repeat-based itemsets + - Improve relative path resolution across the board, fixing many computation update edge cases where expressions include complex path expressions + - Support relative `ref`/`nodeset` body attributes, as well as those with a `current()/` prefix + - Improve function call analysis in XPath expressions, particularly identification of functions called with no arguments + - Lay more mature foundation for general syntax analysis of XPath expressions +- 7b63159: Add support for count-controlled (`jr:count`) and fixed (`jr:noAddRemove`) repeat ranges. +- 573b06b: Engine support for `constraint`, `required` validation + +### Patch Changes + +- e81aa43: Fix: reactive aggregation of validation violations from selects +- 1e72854: Fix: reactivity of aggregated validation violations on deep descendants +- aa3a84a: Fix: evaluate `jr:count` in context of affected repeat + ## 0.2.0 ### Minor Changes diff --git a/packages/xforms-engine/package.json b/packages/xforms-engine/package.json index dbd239758..82238746e 100644 --- a/packages/xforms-engine/package.json +++ b/packages/xforms-engine/package.json @@ -1,6 +1,6 @@ { "name": "@getodk/xforms-engine", - "version": "0.2.0", + "version": "0.3.0", "license": "Apache-2.0", "description": "XForms engine for ODK Web Forms", "type": "module", @@ -58,8 +58,8 @@ }, "devDependencies": { "@babel/core": "^7.24.8", - "@getodk/tree-sitter-xpath": "0.1.1", - "@getodk/xpath": "0.1.2", + "@getodk/tree-sitter-xpath": "0.1.2", + "@getodk/xpath": "0.2.0", "@playwright/test": "^1.45.1", "@vitest/browser": "^2.0.2", "babel-plugin-transform-jsbi-to-bigint": "^1.4.0", diff --git a/packages/xpath/CHANGELOG.md b/packages/xpath/CHANGELOG.md index c47a9c534..664bd4cff 100644 --- a/packages/xpath/CHANGELOG.md +++ b/packages/xpath/CHANGELOG.md @@ -1,5 +1,17 @@ # @getodk/xpath +## 0.2.0 + +### Minor Changes + +- 746aa8a: Support for `indexed-repeat` XPath function + +### Patch Changes + +- Updated dependencies [7b63159] +- Updated dependencies [573b06b] + - @getodk/common@0.3.0 + ## 0.1.2 ### Patch Changes diff --git a/packages/xpath/README.md b/packages/xpath/README.md index f924ea1a1..aa10d051a 100644 --- a/packages/xpath/README.md +++ b/packages/xpath/README.md @@ -149,7 +149,6 @@ Both evaluator classes provide the following convenience methods: We intend to support the full ODK XForms function library, but support is currently incomplete. The following functions are not yet supported (the `jr:` prefix is used by convention to refer to the JavaRosa namespace): -- `indexed-repeat` - `pulldata` - `jr:choice-name` diff --git a/packages/xpath/package.json b/packages/xpath/package.json index 1d903596b..5d229bda0 100644 --- a/packages/xpath/package.json +++ b/packages/xpath/package.json @@ -1,6 +1,6 @@ { "name": "@getodk/xpath", - "version": "0.1.2", + "version": "0.2.0", "license": "Apache-2.0", "description": "XPath implementation for ODK Web Forms", "type": "module", @@ -53,13 +53,13 @@ }, "dependencies": { "@js-temporal/polyfill": "^0.4.4", - "@getodk/common": "0.2.0", + "@getodk/common": "0.3.0", "crypto-js": "^4.2.0", "itertools-ts": "^1.27.1" }, "devDependencies": { "@babel/core": "^7.24.8", - "@getodk/tree-sitter-xpath": "0.1.1", + "@getodk/tree-sitter-xpath": "0.1.2", "@playwright/test": "^1.45.1", "@types/crypto-js": "^4.2.2", "@vitest/browser": "^2.0.2", diff --git a/scripts/feature-matrix/render.js b/scripts/feature-matrix/render.js index 46f8b2a38..30c733ee3 100644 --- a/scripts/feature-matrix/render.js +++ b/scripts/feature-matrix/render.js @@ -2,7 +2,9 @@ // @ts-nocheck import Mustache from 'mustache'; +import { spawnSync } from 'node:child_process'; import fs from 'node:fs/promises'; +import { fileURLToPath } from 'node:url'; const rootUrl = new URL('../..', import.meta.url); const featureMatrix = JSON.parse( @@ -73,3 +75,7 @@ const regex = new RegExp(`(${autogenOpen})[\\s\\S]*?(${autogenClose})`, 'm'); const updatedReadme = readmeFile.replace(regex, `$1\n${featureMatrixMd}\n$2`); await fs.writeFile(new URL('./README.md', rootUrl), updatedReadme, { encoding: 'utf-8' }); + +const rootDir = fileURLToPath(rootUrl); + +spawnSync('yarn', ['format:readme-only'], { cwd: rootDir });