TopBraid-Suite 9.3.0 - Feature: DEV-42: Added a "Vector Index" section to the Manage page with a step-by-step wizard for configuring Natural Language to SPARQL: pick the source ontology, select which classes and properties to index, and choose a search method (keyword, vector, or hybrid). The configuration can be cleared and rebuilt at any time from the same wizard. This section only appears for collections that have the AI Service enabled. - Feature: DEV-124: Git integration now supports GitHub App Authentication. - Feature: DEV-144: Product Configuration now includes styling options to customize the navigation header background color and logo. - Feature: DEV-332: Change History panel now has a toolbar button (visible for workflows) that creates a new workflow with the selected changes only. This allows partial commit of workflows. - Feature: DEV-429: Change History panel now has a button (in the details of a change) to create a "time travel workflow" that goes back to the state before the change. See also web service tbs:createTimeTravelWorkflow. - Feature: DEV-456: Added a status badge, shown in the Vector Index section and in the collection header, that indicates when ontology or collection vector indexing is in progress or has failed. Clicking it opens a dialog with per-task progress details. - Feature: DEV-483: Added a Modify action to the home asset of Ontologies that include SKOS shapes, to generate hierarchical spreadsheet exporters (Explore actions) for taxonomy concept schemes. - Feature: DEV-574: Added IO.parseYAML and IO.stringifyYAML to the ADS JavaScript API for parsing and serializing YAML. - Feature: DEV-584: Added SPARQL function tbs:checkSPARQL to validate a SPARQL query or update string, returning an error message if invalid. - Feature: DEV-585: Added SPARQL functions tbs:currentAssetCollection (returns the URI of the current asset collection) and tbs:assetCollectionIdOf (returns the ID of an asset collection from its URI). - Feature: DEV-591: Added virtual named graph tosh:filesGraph representing the union of all .ttl and .ttlx files in the workspace. - Feature: DEV-617: Remote-backed collections now show guidance in collection workspaces and the SPARQL Query panel explaining how to query the full remote source. - Feature: DEV-625: Inferences panel now supports inferring sh:shape/rdf:type based on sh:targetNode or sh:targetWhere. - Feature: DEV-626: Added multi-function tosh:whereContains to find all focus nodes delivered by a sh:targetWhere target. - Feature: DEV-801: Added support for OIDC RP-initiated logout, so signing out terminates the session at the identity provider. - Feature: DEV-808: Added a Chat Prompt button to constraint violations on forms (behind a feature flag and a new "Enable Chat Prompt buttons" setting) to open a chat agent such as Claude Desktop with a suggested prompt. Also available as general feature for ADS scripts, see DataViewers.createChatPromptHTML(). - Feature: DEV-809: Added function shnex:conformsToShape (similar to tosh:hasShape). - Feature: TBS-7930: Added Tabular Report "Concept Usage in Other Collections" for Taxonomies. - Feature: TBS-8385: Added the Ontology Diagram, a UML-style panel for editing classes, hierarchies, and properties on a canvas. - Feature: TBS-10182: "Make this a Subgraph" under Transform for redesigned collections; legacy Data Integrations entry omitted when global UI redesign is on. - Feature: TBS-10517: Added OAuth 2.0 Protected Resource Metadata endpoint (RFC 9728). Only works when the application is deployed at the root path, not with the /edg context prefix. - Feature: TBS-10723: Added batch action "Create Subgraph from these Assets...". - Feature: TBS-10724: Added context menu action "Add to Asset List (with ancestors)" for SKOS concepts. - Improvement: DEV-136: Restructured the user avatar dropdown menu into grouped sections (My work, Governance, System, Help) with a profile header; moved Files and Governance Model from the collection workspace left column into the menu. - Improvement: DEV-323: Collection managers can now remove owl:imports statements that cannot be resolved, directly from the Imports section. - Improvement: DEV-325: The Problems and Suggestions panel now has a setting to ignore sh:minCount constraints, allowing validation of resources without flagging missing required values. - Improvement: DEV-327: Added constraint to make sure that classes are not used as sh:path of a property shape (tosh:ClassesDisjointWithPropertiesShape). - Improvement: DEV-329: Taxonomy Concepts Panel now has a toolbar button to expand all visible tree nodes one level deeper. - Improvement: DEV-336: The Taxonomy Concepts Panel now supports rich tool tips that show a resource summary when hovering over a concept or concept scheme. This can be enabled via the panel settings. - Improvement: DEV-512: Clarified required updates after changing Git repository configurations. - Improvement: DEV-540: Change History panel: details of each change now display the workflow that the change came from. - Improvement: DEV-542: Form panel now has a button to open the Change History for the selected asset. When the Change History panel is visible and in Selected Asset mode, each property on the form has a similar button that only shows the changes related to the property. - Improvement: DEV-564: tosh:PasswordViewer now supports multi-line passwords, when sh:singleLine false. - Improvement: DEV-624: Newly created collections now declare additional default prefixes for dash, sh, shnex, sparql, tosh. - Improvement: DEV-660: Improved rendering of node expressions, also in diagram. - Improvement: DEV-667: The Tika import plugin now shows correct progress and import failures. - Improvement: DEV-676: Git repository caches are now automatically cleared when git configuration properties or passwords are updated, so changes take effect without a server restart. - Improvement: DEV-737: Edits on the form panel are now logged with more informative change history messages. - Improvement: DEV-741: Simple and Asset Diagrams now have a "Delete diagram" button, with an option to also delete backing assets. - Improvement: DEV-811: Updated DCTerms ontology that is bundled in the External/Common/terms.ttl file, also fixing its missing-superclasses warnings. - Improvement: DEV-845: Search panel now supports not-equals filter on inferred (sh:values) properties. - Improvement: DEV-850: Namespaces and Prefixes section (new UI) now also shows duplicates defined in included graphs. - Improvement: TBS-7472: The Form panel header now shows a button to copy the URI of the selected resource to the clipboard. - Improvement: TBS-7559: Subgraphs backed by a remote graph will now make sure all triples are downloaded from remote. - Improvement: TBS-8385: Simple and Asset Diagrams now have a "Fit diagram in view" button and auto-fit when opened. - Improvement: TBS-9254: Export Concept Overview Spreadsheet now includes columns for inverse properties at the end. - Improvement: TBS-9923: Git repository configurations now support GPG-signed commits. - Improvement: TBS-10513: Tabular Reports panel now displays a progress monitor when dash:showProgress is true. - Improvement: TBS-10514: Form panel now shows a button to open the Charts panel when the selected resource has a type with dash:chart definitions and a button to open the Tabular Reports panel if suitable reports exist. - Improvement: TBS-10616: When a dash service is called as POST with an empty value for an optional parameter that doesn't have xsd:string, the value is now treated as null (was creating malformed JS code). - Improvement: TBS-10725: "Make this a subgraph" now has a boolean parameter to also operate on imported/included graphs. - Improvement: TBS-10734: Simple and Asset Diagrams now support self-loops (edges from a node back to itself), limited to one per node. - Changed: DEV-50: Workflow transitions to the Committed state now validate any teamwork:tagShape constraints server-side before committing. The commit is blocked with an error message if violations are found. - Changed: DEV-71: Replaced vendored Monaco 0.31 static assets in teamwork with the npm package-managed editor, copied at build time. - Changed: DEV-101: It is no longer possible to remove teamworkconstraints as an include from the UI; this can only be changed via source customization. - Changed: DEV-388: Clean up and modernization of metadata.ttl, esp by dropping redundant rdf:Property declarations. - Changed: DEV-616: The Problems and Suggestions report now also includes violations of teamwork:tagShape in workflows. - Changed: DEV-680: SHACL sh:PrefixDeclaration substitution now follows latest spec, if no sh:prefixes triple exists. - Changed: DEV-738: Multi functions can now declare dash:literalNodesOnly to influence their execution results from ADS scripts. tbs.changeAddedTriples and tbs.changeDeletedTriples now use this flag and may return LiteralNodes instead of primitive JS values. - Changed: DEV-740: Newly created Ontology asset collections are now also declared as instances of sh:ShapesGraph. - Changed: DEV-748: For properties that have datatypes decimal or integer, the input widget now automatically selects the most suitable type. - Changed: DEV-832: Create asset dialogs no longer automatically update the ID/URI once it was edited manually. - Changed: TBS-10715: In GraphQL mutations, the diff object is now truncated to 100k subjects to avoid OOM errors. The object now has truncated and totalCount fields. - Removed: DEV-514: Removed the Panels Palette display option. The dropdown Panels button is now always used. - Removed: DEV-846: Removed the "ui:lib function is constant" system configuration parameter. - Bug fix: DEV-31: Fixed an unhandled error popup when opening the "Link to File on Git Repository" dialog. - Bug fix: DEV-34: Fixed Import RDF progress actions and response reporting. - Bug fix: DEV-415: Publish to Explorer failures no longer show a raw server error message. - Bug fix: DEV-423: Voting workflows with multiple governance roles per voting transition no longer show duplicate vote options (Approve/Abstain/Disapprove). - Bug fix: DEV-441: Projects with invalid .ui.* files are skipped; system projects fail startup. - Bug fix: DEV-445: The SPARQL Query panel and the Vector Index suggestion editor no longer log a spurious network error for collections that don't have the AI Service enabled. - Bug fix: DEV-449: Fixed 500 error when running tops:files with invalid arguments, such as a variable instead of a file path. - Bug fix: DEV-453: Failed RDF imports now show a readable error message in the import dialog instead of raw JSON/HTML. - Bug fix: DEV-454: The "Create Jira Issue" Explore action now opens the correct Jira issue-creation page. - Bug fix: DEV-477: Send Projects now reports a clear error for empty selections and invalid server URLs. - Bug fix: DEV-541: The Change History panel's "from:" workflow field could never be cleared. - Bug fix: DEV-563: Create resource dialogs sometimes asked for entry of minCount 1 properties with a complex path. - Bug fix: DEV-607: Tabular report scripts can now be edited in all collection types. - Bug fix: DEV-608: Source Code panel sometimes deleted all triples on Save when the source code was rejected by server. - Bug fix: DEV-623: ADS API generator sometimes created prefix constants that were conflicting with built-in constants, e.g. sparql. - Bug fix: DEV-627: AutoClassifier startup errors are now displayed and affected jobs are marked as failed. - Bug fix: DEV-640: Fixed various errors with sparql: functions in SHACL 1.2 node expressions. - Bug fix: DEV-641: Add Tags panel no longer shows a disabled Add Tag button when a default tag property is preselected. - Bug fix: DEV-693: Editing namespaces/prefixes now succeeds for collections with large numbers of prefix declarations. - Bug fix: DEV-738: Workflow Report panel sometimes swallowed up changes that were about numeric values only. - Bug fix: DEV-756: Fixed a Server Error shown right after creating a workflow. - Bug fix: DEV-766: Create asset dialogs sometimes chose read-only properties as label properties. - Bug fix: DEV-767: GraphQL schema now correctly generates union types for sh:class constraints that are RDF lists. - Bug fix: DEV-768: Recent Activity now displays user names and avatars correctly. - Bug fix: DEV-769: All users can now toggle homepage widgets, and viewers can update their own profile pictures. - Bug fix: DEV-770: Profile pictures now work for login names containing special characters. - Bug fix: DEV-774: GraphiQL now again shows the TopBraid Save Query and Export Query toolbar actions. - Bug fix: DEV-776: Fixed login error when OIDC IdP does not send claims for email or display name. - Bug fix: DEV-784: More static assets are now cached by the browser, reducing page load time and bandwidth on repeat visits. - Bug fix: DEV-793: Fixed a potential infinite loop in ADS script result serialization when a JavaScript object contains circular references. - Bug fix: DEV-806: Git integration now removes the owl:imports of the persistent inferences graph on write but preserves it on read. - Bug fix: DEV-823: Activity metrics graph was growing indefinitely, now purging older items. - Bug fix: DEV-836: Form panel's layout did not persist the unpinned state (after Open in new form). - Bug fix: DEV-837: Search panel did not remember the "Show N" setting on reload. - Bug fix: DEV-845: Search panel displayed a range input for 'not equals' filters. - Bug fix: DEV-847: Form Panel's edit button is now disabled while property groups are still loading. - Bug fix: DEV-849: Fixed a deadlock that could hang all write operations until a server restart. - Bug fix: DEV-851: Form Panel's problem displays were sometimes confusingly shown at the bottom of the form, when namespaces had multiple prefixes. - Bug fix: DEV-852: Applying a Form Panel's suggestion sometimes also appeared to apply another suggestion (UI problem only). - Bug fix: DEV-853: Defining custom icons for the class hierarchy did not work. To define a custom icon, add a sh:values rule that returns a string value for tosh:Class-classIcon. - Bug fix: DEV-866: Fixed a server hang when validation suggestions failed during a bulk edit or similar operation. - Bug fix: DEV-878: Vector Index and NL to SPARQL features are now hidden when the superFeatures license flag is disabled, instead of being shown and then failing with a backend error. - Bug fix: DEV-880: OWL to SHACL conversion no longer ignores the graphs selected to include axioms from. - Bug fix: DEV-880: OWL to SHACL conversion dialog again lists the OWL expressions that could not be converted. - Bug fix: DEV-909: Collection workspace no longer shows a spurious Server Error when the AI Service is not configured. - Bug fix: DEV-916: Fixed the select-all checkbox and screen reader labels in the Permission Requests table. - Bug fix: DEV-938: Some system ontologies were using inconsistent prefix dct instead of dcterms. - Bug fix: DEV-940: Fixed NPE when generating SHACL validation path labels. - Bug fix: DEV-955: Failed or aborted queries could leave a lock optimization active, risking a server hang. - Bug fix: TBS-10403: Form for property shapes was showing redundant properties like sh:path as Undeclared Properties. - Bug fix: TBS-10510: Tree panels such as the class tree sometimes did not globally select the asset when the node was already selected. - Bug fix: TBS-10631: Properties widget on forms sometimes showed spinner forever. - Bug fix: TBS-10707: Creating a node in an Asset Diagram was generating two change history entries instead of one. - Bug fix: TBS-10708: Drag and drop from tabular panels to Asset Diagrams was not working. - Bug fix: TBS-10791: Improved handling of large ZIP files in ADS scripts to avoid out-of-memory errors. - Bug fix: TBS-10815: dash:ScriptBatchActions are now also added to Search results panel. - Updated: DEV-248: Upgraded Monaco code editor to 0.52.2. - Updated: TBS-10453: Upgraded to GraphQL-java 26.0. - Security: DEV-452: Cached corpus documents of unsafe types are now downloaded, not rendered, preventing stored XSS. - Security: DEV-673: To prevent SSRF / local file read, sml:ConvertXMLByXSLT no longer allows references to external files. - Security: DEV-674: Hardened XML parsing to prevent XXE in SWP snippets and ui:parse control element. - Security: DEV-675: The remote backup endpoint now validates the target server URL against the URL whitelist, blocking requests to internal network addresses and non-HTTP schemes. - Security: DEV-689: Addressed CVE-2026-50010 (improper TLS certificate verification in Netty). - Security: DEV-690: Addressed CVE-2026-40988 and CVE-2026-41003 (denial of service and cross-site scripting in Spring Security SAML2 support). - Security: DEV-705: Do not show server-side stack traces in error responses from the external script endpoint. - Security: DEV-722: The send projects endpoint now validates the target server URL against the URL whitelist, blocking requests to internal network addresses and non-HTTP schemes. - Security: DEV-730: Fixed HTML attribute injection in the Server Information admin page by escaping user-controlled values. - Security: DEV-733: Backup restore now validates zip entry paths to prevent Zip Slip path traversal attacks; a malicious backup zip can no longer write files outside the workspace directory. - Security: DEV-985: Addressed CVE-2026-45112 (denial of service via unbounded varint decoding in Apache Thrift). - Security: DEV-995: Addressed CVE-2026-14682, CVE-2026-13506, and CVE-2026-58059 (denial of service in Bouncy Castle).