Version : 89

Released : 2026-07-26

Changes in this Release

Issue

Type

Module(s)

Description

4886

Feature

API

The drafts API list endpoint can now be filtered by assigned label name using the new label__in query parameter (a comma-separated list of label names returns drafts carrying any of them).

4929

Feature

Agents

The Custom Function AI assistant now recognises the action a function performs (merge/un-merge a matrix, add a form, derive a value, and more) and generates the correct action instead of always raising a query.

4867

System

Automated Testing

Test Case PDF screenshots are now embedded using indexed colour, producing significantly smaller PDF files and reducing the memory needed to generate large exports. Screenshots remain fully lossless and unchanged in appearance.

4854

Feature

Automated Testing

The Veeva Test Case generator now supports rules that use @Form.submit_counter__v, generating scenarios that submit a form enough times to exercise both first-submit and re-submit conditions. Generated scenarios cover submission counts up to 20; rules requiring a higher count report an error so they can be authored manually.

4855

Feature

Automated Testing

The Veeva Test Case generator now supports rules that reference an item's value via @Item.value__v, treating it as the item's own value. Using value__v on a Date item reports an error, since Veeva requires value_normalized__v there.

4856

Feature

Automated Testing

The Veeva Test Case generator now supports rules that reference an item's unit via @Item.unit__v, generating scenarios that set the item's unit from its Unit Codelist. Using unit__v on an item with no Unit Codelist reports an error.

4858

Feature

Automated Testing

The Veeva Test Case generator now supports rules that reference an item's prior value via @Item.previous_submit_value__v, generating scenarios that submit the form twice (the previous value, then the current value).

4876

Feature

Automated Testing

Test Case PDFs can now merge all selected Test Cases into a single file when the compact 'Results' layout is chosen.

4859

Feature

Automated Testing

The Veeva Test Case generator now supports the @Site system attributes name__v (Study Site Number), oid__v, status__v, principal_investigator__v and locked__v, in addition to the existing timezone__v. Because a site is chosen when the test is run, derivation rules that build a value from a site attribute (for example Concat(@Site.name__v, "-", Text(SUBJNO))) now embed the run-time site value, which is looked up from Veeva and substituted automatically. Rules that compare a site attribute to a fixed value (for example @Site.name__v = '100') generate a scenario with a note describing the site the test must run on.

4860

Feature

Automated Testing

The Veeva Test Case generator now supports the @StudyCountry system attributes name__v, country_abbreviation__v and country_code__v.

4861

Feature

Automated Testing

The Veeva Test Case generator now supports the @Casebook.subject_name__v and @Casebook.version__v system attributes.

4881

Feature

Automated Testing

Added a Veeva test step to re-open a submitted form for edit.

4862

Feature

Automated Testing

The Veeva Test Case generator now supports the @Form.change_reason__v and @Form.form_status__v system attributes; rules using them generate test cases.

4888

Feature

Automated Testing

The Test Case listing now provides the same user-assignment filter as other listings, letting you show only test cases assigned to you, to a role, or that are unassigned.

4890

Feature

Automated Testing

Veeva query verification screenshots now highlight the query text for both Datapoint and Event queries, making it easy to see which query was checked.

4891

Bug

Automated Testing

Item visibility on value steps is now read from the correct repeating itemgroup instance, fixing a spurious "present but not visible" note when the item is shown on the form.

4892

System

Automated Testing

TrialGrid now validates Veeva API responses against typed schemas at the boundary, failing fast with a clear error when a response is missing an expected field.

4893

Bug

Automated Testing

TrialGrid now navigates to Veeva forms reliably fixing missing screenshots for repeating forms.

4899

Bug

Automated Testing

The Veeva test step editor helpers now correctly split datapoint references that use Jinja template variables (e.g. {{eg}}) into the EG#, F# and IG# sequence columns.

4900

Bug

Automated Testing

The Veeva test case editor no longer adds a leading zero to date days that are already two digits; dates are normalised to DD-Mon-YYYY without over-padding.

4901

Feature

Automated Testing

The Veeva test case editor now warns when a step enters data into an item that is not visible by default, naming the controlling item and value that make it visible.

4905

Bug

Automated Testing

Rave Classic Automated Testing runs no longer fail intermittently with a 'changes cannot be saved because the form has been updated' (stale data) error when a custom function such as subject inactivation runs immediately after another; the runner now reloads the TG_UAT subject and retries the save.

4913

Feature

Automated Testing

The Veeva test case editor now provides a repeat input next to every repeating event group, form and item group, and reports an error when a sequence number is missing for a repeating part, supplied for a non-repeating part, or exceeds the allowed maximum.

4914

Feature

Automated Testing

The Veeva and Rave test case editor 'has value' helpers now suggest a field's codelist/dictionary values.

4916

Feature

Automated Testing

Running a test set directly (without opening the wizard) now uses the screenshot and 'continue on failure' settings remembered from your last wizard run, instead of falling back to the defaults.

4921

Bug

Automated Testing

The task to generate a combined Test Case PDF can now recover after a server restart.

4924

Bug

Automated Testing

Veeva Set Derived Value test cases now emit a 'has value' verification step for multi-line rule expressions, and year-hinted source items are populated with a realistic year.

4928

Feature

Automated Testing

Added a Veeva test step that marks a form as intentionally left blank.

4927

Feature

Automated Testing

Test Cases can now assert that an email is NOT received, with steps that match on subject alone, subject and exact body, or subject and partial body.

4931

Bug

Automated Testing

Fixed an error that could prevent a deleted draft from being fully removed during database cleanup when its automated test case runs had recorded subject data.

4933

Feature

Automated Testing

The TrialGrid draft home page can now show test coverage for Veeva Rules and Comparison Rules.

4935

Feature

Automated Testing

Automated tests can now link and unlink Veeva forms using the new "I link form ... to form ..." and "I unlink form ... from form ..." steps.

4938

Feature

Automated Testing

The Veeva Test Case Advisor now generates test cases for rules that use linked-form counts (TrialGrid emits the new link-form steps to set up the required form links).

4939

Feature

Automated Testing

The Veeva Test Case Advisor now generates test cases for rules that read data on linked forms (TrialGrid enters the linked form's data and links it to the rule's form using the new link-form steps).

4887

Feature

Custom Properties

Custom object identifiers are now always single-line: line breaks and other invisible characters in the contributing properties are replaced with spaces so identifiers stay readable and match consistently.

4912

Feature

Infrastructure / System

When deploying a new version of TrialGrid the database 'fingerprint functions' will be re-created without causing database locks which interfere with normal application usage.

4830

System

Rave Integration

Designer study attributes (version/sync provenance, requirement text, UUIDs) are stored as native fields on imported draft objects.

4882

Bug

Rave Integration

Per-project, per-draft and per-URL permission checks on the Rave and Veeva import/export/download, test-run and URL/Vault registration wizards are now enforced server-side.

4882

Bug

Security

Per-project, per-draft and per-URL permission checks on the Rave and Veeva import/export/download, test-run and URL/Vault registration wizards are now enforced server-side.

4930

Feature

Security

TrialGrid now includes an automated check that prevents use of the Bootstrap data-loading-text attribute, guarding against a known cross-site scripting vector (GHSA-vxmc-5x29-h64v).

4936

Bug

UX

Undo and redo of a field reorder now also refresh the form editor canvas so it stays in step with the property sheet, and an in-progress custom property edit is captured on the undo history even when the sheet re-renders mid-edit.

4930

Feature

Validation

TrialGrid now includes an automated check that prevents use of the Bootstrap data-loading-text attribute, guarding against a known cross-site scripting vector (GHSA-vxmc-5x29-h64v).

4854

Feature

Veeva

The Veeva Test Case generator now supports rules that use @Form.submit_counter__v, generating scenarios that submit a form enough times to exercise both first-submit and re-submit conditions. Generated scenarios cover submission counts up to 20; rules requiring a higher count report an error so they can be authored manually.

4855

Feature

Veeva

The Veeva Test Case generator now supports rules that reference an item's value via @Item.value__v, treating it as the item's own value. Using value__v on a Date item reports an error, since Veeva requires value_normalized__v there.

4856

Feature

Veeva

The Veeva Test Case generator now supports rules that reference an item's unit via @Item.unit__v, generating scenarios that set the item's unit from its Unit Codelist. Using unit__v on an item with no Unit Codelist reports an error.

4858

Feature

Veeva

The Veeva Test Case generator now supports rules that reference an item's prior value via @Item.previous_submit_value__v, generating scenarios that submit the form twice (the previous value, then the current value).

4859

Feature

Veeva

The Veeva Test Case generator now supports the @Site system attributes name__v (Study Site Number), oid__v, status__v, principal_investigator__v and locked__v, in addition to the existing timezone__v. Because a site is chosen when the test is run, derivation rules that build a value from a site attribute (for example Concat(@Site.name__v, "-", Text(SUBJNO))) now embed the run-time site value, which is looked up from Veeva and substituted automatically. Rules that compare a site attribute to a fixed value (for example @Site.name__v = '100') generate a scenario with a note describing the site the test must run on.

4860

Feature

Veeva

The Veeva Test Case generator now supports the @StudyCountry system attributes name__v, country_abbreviation__v and country_code__v.

4861

Feature

Veeva

The Veeva Test Case generator now supports the @Casebook.subject_name__v and @Casebook.version__v system attributes.

4881

Feature

Veeva

Added a Veeva test step to re-open a submitted form for edit.

4882

Bug

Veeva

Per-project, per-draft and per-URL permission checks on the Rave and Veeva import/export/download, test-run and URL/Vault registration wizards are now enforced server-side.

4862

Feature

Veeva

The Veeva Test Case generator now supports the @Form.change_reason__v and @Form.form_status__v system attributes; rules using them generate test cases.

4890

Feature

Veeva

Veeva query verification screenshots now highlight the query text for both Datapoint and Event queries, making it easy to see which query was checked.

4891

Bug

Veeva

Item visibility on value steps is now read from the correct repeating itemgroup instance, fixing a spurious "present but not visible" note when the item is shown on the form.

4892

System

Veeva

TrialGrid now validates Veeva API responses against typed schemas at the boundary, failing fast with a clear error when a response is missing an expected field.

4893

Bug

Veeva

TrialGrid now navigates to Veeva forms reliably fixing missing screenshots for repeating forms.

4915

Bug

Veeva

Veeva 'has value' step screenshot now highlights the value on the specified repeat instance instead of always the first repeat.

4924

Bug

Veeva

Veeva Set Derived Value test cases now emit a 'has value' verification step for multi-line rule expressions, and year-hinted source items are populated with a realistic year.

4928

Feature

Veeva

Added a Veeva test step that marks a form as intentionally left blank.

4932

Bug

Veeva

The Veeva Form Review now displays every item's value for Item Group default adds, not just the first item in each repeat.

4933

Feature

Veeva

The TrialGrid draft home page can now show test coverage for Veeva Rules and Comparison Rules.

4935

Feature

Veeva

Automated tests can now link and unlink Veeva forms using the new "I link form ... to form ..." and "I unlink form ... from form ..." steps.

4937

Feature

Veeva

Veeva browser locators and scripts are now stored in the database.

4938

Feature

Veeva

The Veeva Test Case Advisor now generates test cases for rules that use linked-form counts (TrialGrid emits the new link-form steps to set up the required form links).

4939

Feature

Veeva

The Veeva Test Case Advisor now generates test cases for rules that read data on linked forms (TrialGrid enters the linked form's data and links it to the rule's form using the new link-form steps).