Version : 88
Released : 2026-06-21
Changes in this Release
Issue |
Type |
Module(s) |
Description |
|---|---|---|---|
4818 |
Bug |
The standards explanations API (/api/v2/draft/<id>/standards_explanations/) was making more queries than necessary. This was corrected. |
|
4808 |
Feature |
There is a new view showing background tasks for TrialGrid admins. |
|
4809 |
Feature |
There is a new view for TrialGrid admins to monitor background task performance. |
|
4812 |
Feature |
TrialGrid administrators can now search Task records by type, user, date range, and description on the admin Tasks page. |
|
4879 |
Bug |
Corrected an error when uploading a spreadsheet to create Object Definitions. |
|
4779 |
System |
The Help agent and development Test agent have been migrated to the new orchestrator framework. |
|
4841 |
Bug |
The Test Case Creator agent was incorrectly requiring a field to be chosen for the AddForm check action. This has been corrected. |
|
4844 |
Feature |
The Test Case creator agent now supports selection of one or more folders. |
|
4815 |
Feature |
Automated Tests support Rave EDC 2026.2.0 |
|
4823 |
Feature |
The Test Case generator has a new option to repeat all scenarios across a range of folders. |
|
4824 |
Feature |
The Test Case generator has a new option to repeat all scenarios for record positions 1 and 2. |
|
4825 |
Feature |
The Test Case generator has a new option to create additional scenarios testing blank values. |
|
4826 |
Feature |
The Test Case generator has a new option to create additional scenarios testing that queries are closed after being opened. |
|
4840 |
Bug |
AI generation of Test Cases could fail for edit checks with a custom function action and many check steps. This has been corrected. |
|
4843 |
Bug |
Veeva Test Case generation was failing for a rule with no bindings. The identifier defined in the Rule will be used. |
|
4845 |
Bug |
The Veeva Test Case generator was not handling all @PreviousEvent identifiers correctly. |
|
4847 |
Bug |
The Veeva Test Case generator showed the coded value instead of the entry label when checking the value of a codelist field. It now uses the label. |
|
4848 |
Feature |
The Veeva Test Case generator now supports the GetAllMatches function. |
|
4849 |
Feature |
The Veeva Test Case generator now supports the Middle and Substitute functions. |
|
4850 |
Bug |
Veeva Test Case generation failed to parse rules referencing OID names that start with a digit or hyphen (e.g. 9HPIN, 6MWT, 9-HPT). These names are now accepted. |
|
4851 |
Bug |
The Veeva Test Case generator did not resolve unknown date/time components for MinDate/MaxDate/MinDateTime/MaxDateTime when a Site timezone argument was supplied. This is now handled correctly. |
|
4852 |
Bug |
The Veeva Test Case generator now supports the SiteDateTime(date, time) form that combines a Date item and a Time item. |
|
4864 |
Feature |
Long test case runs can now periodically recycle the browser (quit and relaunch, resuming the run) to release accumulated memory. |
|
4869 |
Bug |
A Veeva "I should not see the following query" step now correctly passes when the only matching open query differs from the expected text by whitespace or case and the organization does not allow whitespace or case differences in test results. Previously the step incorrectly failed in this situation. |
|
4870 |
Feature |
A Veeva "I should not see form" step now captures a screenshot of the form's parent event in review mode, providing evidence of the event's form list when the form is correctly absent. |
|
4871 |
Feature |
Veeva event visibility steps now capture a screenshot of the subject in review mode whenever there is no specific event to show — when "I should not see event(s)" passes, and when "I should see event(s)" fails because an expected event is absent — providing evidence of the subject's event schedule. |
|
4872 |
Bug |
The Veeva data entry step helper now offers a value dropdown of "true" and "false" for boolean (checkbox) items. The Form column also no longer shows a solitary "." for an incomplete datapoint reference, which previously blocked the column's dropdown search. |
|
4873 |
Feature |
When a Veeva test step finds that an Event or Event/Form combination does not exist for the subject, subsequent steps that rely on the same Event/Form now fail immediately ("not found in an earlier step") instead of being re-attempted. A passing step clears this state. This matches the existing Rave behaviour. |
|
4874 |
Feature |
Veeva organizations have a new setting "Allow all events to be added" (on by default). When it is off, adding an event that is not Unscheduled in a Veeva test case is a validation error instead of a warning. |
|
4875 |
Bug |
Veeva value-check steps (for example "has value") read the value from the API, which does not report visibility. When the item is hidden by form dynamics the field does not appear in the screenshot, so the result text now adds "Item {name} is present but not visible." after checking the loaded form in the browser. |
|
4878 |
Feature |
You can now register new Rave EDC (2026.2.0+) URLs for Automated Testing; the same Rave URL can be registered by more than one organization. |
|
4897 |
Bug |
Rave EDC 2026.1.0 test cases were failing. This has been corrected. |
|
4837 |
Feature |
On a text Custom Property's value management page, you can now delete a value, which clears it (sets it to empty) on all records that use it. |
|
4885 |
Bug |
A custom object whose name contains a line break no longer loses its library compliance match when opened and saved. The standards-match identifier is no longer stored as a corrupted copy of the identifier when the edit form strips the line break, so compliance correctly falls back to the identifier. |
|
4880 |
Bug |
Boolean settings on the "Fields should have a SAS Format specified" and "Data Dictionary commas and semicolons" diagnostics are now respected. Previously these toggles had no effect, so the SAS Format diagnostic always checked Text, Integer and Float fields even when those options were disabled (the default). After this fix the SAS Format diagnostic checks only the field types you have enabled, which for most projects reduces the number of findings to Date/Time fields only. |
|
4810 |
System |
An optimization was made to the background job which queues Test Case Runs. |
|
4820 |
Bug |
During brief outages of an internal service, the system reported a misleading error that hid the real problem. This was corrected. |
|
4822 |
Bug |
The Linked Objects count on library drafts now loads much faster and the count is cached for 5 minutes to avoid constant recalculation. |
|
4827 |
Bug |
Performance of saving a standards-library object (form, check, folder, dictionary, etc.) is improved. The compliance recalculation for consuming drafts now runs in the background while those objects show as recalculating. |
|
4846 |
Feature |
Large grids and property sheets now render only the rows in view, keeping TrialGrid fast and responsive even with thousands of rows. |
|
4865 |
System |
Reduced database load from the page-updates poll: the logged-in-users badge is now cached per organization and the running-test-cases setting is read from cache instead of querying on every poll. |
|
4866 |
Bug |
The Standards Approvals lists now load on demand with server-side filtering and a row cap, so very large approval sets display faster and do not cause web server errors. |
|
4800 |
Feature |
The Project Owner concept has been replaced by Project Roles. When creating a Project you can now optionally assign a user to a Project Role directly from the Add Project page. As with the pre-existing Project Owner workflow, the creator can assign the Role to themselves or to any other URL user this does not require the creator to hold a separate "Manage Users" permission on the URL. All existing Project Owner users have been switched to a new or existing Project Owner Role within that Project. Project Roles that grant the "Assign Users" permission can now add and remove members from the Project Team page. This replaces the Project Owner shortcut that previously allowed owners to manage their team without an explicit URL-level permission. |
|
4831 |
Bug |
File and test-data uploads now require the appropriate manage permission, and test data can no longer be uploaded to a locked draft. |
|
4838 |
Bug |
The HTML cell editor in property sheet spreadsheet views now reuses a single editor instead of stacking duplicate editors when editing multiple cells in succession. |
|
4839 |
Bug |
Copying rows between grids now always pastes the most recently copied data (no longer a stale earlier copy), and selecting cells with the mouse auto-scrolls the grid when you drag past its edge. |
|
4833 |
Bug |
Changing a user's password now resets its expiry date, so a newly set password is no longer immediately reported as expired. |
|
4831 |
Bug |
File and test-data uploads now require the appropriate manage permission, and test data can no longer be uploaded to a locked draft. |
|
4834 |
Feature |
Organization super-users can now see the identifiers of API tokens held by users in their organization and revoke them from a new API Tokens page on the organization home page. Note that the tokens themselves are only shown at creation time and only a hash of the token value is stored, not the token itself. Super users cannot see the actual API tokens and they are also encrypted to TrialGrid Ltd staff. |
|
4827 |
Bug |
Performance of saving a standards-library object (form, check, folder, dictionary, etc.) is improved. The compliance recalculation for consuming drafts now runs in the background while those objects show as recalculating. |
|
4832 |
Bug |
Copying a data dictionary or unit dictionary into a library now recalculates standards compliance for consuming drafts, so their displayed compliance no longer goes stale. Copying many objects into a library at once now recalculates all of their consumers in a single background task rather than one task per object. |
|
4866 |
Bug |
The Standards Approvals lists now load on demand with server-side filtering and a row cap, so very large approval sets display faster and do not cause web server errors. |
|
4885 |
Bug |
A custom object whose name contains a line break no longer loses its library compliance match when opened and saved. The standards-match identifier is no longer stored as a corrupted copy of the identifier when the edit form strips the line break, so compliance correctly falls back to the identifier. |
|
4828 |
Bug |
Excel files that had been repackaged by a security "content disarm and reconstruction" tool were rejected during upload because the rewritten file was no longer recognised as an Excel workbook. Such files are now detected by their internal structure and import correctly. |
|
4821 |
Feature |
TrialGrid Ltd can now create custom icon definitions from a script. This is a admin feature hidden to users. |
|
4836 |
Feature |
Object lists can now be filtered to show only Unassigned objects, and a new Assigned to dropdown lets you filter by one or more specific users or roles. |
|
4839 |
Bug |
Copying rows between grids now always pastes the most recently copied data (no longer a stale earlier copy), and selecting cells with the mouse auto-scrolls the grid when you drag past its edge. |
|
4846 |
Feature |
Large grids and property sheets now render only the rows in view, keeping TrialGrid fast and responsive even with thousands of rows. |
|
4843 |
Bug |
Veeva Test Case generation was failing for a rule with no bindings. The identifier defined in the Rule will be used. |
|
4845 |
Bug |
The Veeva Test Case generator was not handling all @PreviousEvent identifiers correctly. |
|
4847 |
Bug |
The Veeva Test Case generator showed the coded value instead of the entry label when checking the value of a codelist field. It now uses the label. |
|
4848 |
Feature |
The Veeva Test Case generator now supports the GetAllMatches function. |
|
4849 |
Feature |
The Veeva Test Case generator now supports the Middle and Substitute functions. |
|
4850 |
Bug |
Veeva Test Case generation failed to parse rules referencing OID names that start with a digit or hyphen (e.g. 9HPIN, 6MWT, 9-HPT). These names are now accepted. |
|
4851 |
Bug |
The Veeva Test Case generator did not resolve unknown date/time components for MinDate/MaxDate/MinDateTime/MaxDateTime when a Site timezone argument was supplied. This is now handled correctly. |
|
4852 |
Bug |
The Veeva Test Case generator now supports the SiteDateTime(date, time) form that combines a Date item and a Time item. |
|
4869 |
Bug |
A Veeva "I should not see the following query" step now correctly passes when the only matching open query differs from the expected text by whitespace or case and the organization does not allow whitespace or case differences in test results. Previously the step incorrectly failed in this situation. |
|
4870 |
Feature |
A Veeva "I should not see form" step now captures a screenshot of the form's parent event in review mode, providing evidence of the event's form list when the form is correctly absent. |
|
4871 |
Feature |
Veeva event visibility steps now capture a screenshot of the subject in review mode whenever there is no specific event to show — when "I should not see event(s)" passes, and when "I should see event(s)" fails because an expected event is absent — providing evidence of the subject's event schedule. |
|
4872 |
Bug |
The Veeva data entry step helper now offers a value dropdown of "true" and "false" for boolean (checkbox) items. The Form column also no longer shows a solitary "." for an incomplete datapoint reference, which previously blocked the column's dropdown search. |
|
4873 |
Feature |
When a Veeva test step finds that an Event or Event/Form combination does not exist for the subject, subsequent steps that rely on the same Event/Form now fail immediately ("not found in an earlier step") instead of being re-attempted. A passing step clears this state. This matches the existing Rave behaviour. |
|
4874 |
Feature |
Veeva organizations have a new setting "Allow all events to be added" (on by default). When it is off, adding an event that is not Unscheduled in a Veeva test case is a validation error instead of a warning. |
|
4875 |
Bug |
Veeva value-check steps (for example "has value") read the value from the API, which does not report visibility. When the item is hidden by form dynamics the field does not appear in the screenshot, so the result text now adds "Item {name} is present but not visible." after checking the loaded form in the browser. |