Skip to main content
Version: 2.1

Version 2.1.5 Release Notes

Release date: September 21, 2026

Version 2.1.5 is a patch release for the .NET 10 and Orchard Core 3.0 line. It keeps the Orchard Core package range at >= 3.0.0 and < 3.1.0 and moves the CrestApps.Core package line from 1.2.0 to 1.2.1, which stays on the stable 1.2 line and changes no public API. This release fixes the Role Picker editors, which failed to render when the CrestApps Resources module was not enabled, and picks up the documentation search fixes in CrestApps.Core 1.2.1.

At a glance​

Area2.1.5 focus
Enhanced RolesThe feature now depends on CrestApps Resources, so the Role Picker editors always find the crestapps-bootstrap-select assets they ask for.
AI documentation searchCrestApps.Core 1.2.1 reads Docusaurus (Lunr) search indexes, logs why an index produced no results, and resolves rooted result locations the same way on Windows and Unix.
DependenciesMicrosoft.Data.SqlClient and SQLitePCLRaw.lib.e_sqlite3 move off deprecated versions.

Bug fixes​

The Role Picker editors failed to render without CrestApps Resources​

The RolePickerPart editor and its part settings editor request the crestapps-bootstrap-select stylesheet and script. Those resource names are declared by the resource manifest in the CrestApps Resources module, but the Enhanced Roles feature did not depend on that module. On a tenant where CrestApps Resources was not enabled, the resource manager had no manifest to resolve the names against and threw Could not find a resource of type 'script' named 'crestapps-bootstrap-select', so the editor failed instead of showing the picker. The problem was invisible on sites that happened to enable another CrestApps module that pulls Resources in, which is most of them.

Enhanced Roles now lists CrestApps.OrchardCore.Resources in its manifest dependencies, and the module references that project with PrivateAssets="none" so the assets ship alongside it. Enabling Enhanced Roles now enables CrestApps Resources, and the Role Picker renders its searchable dropdown on any tenant. No configuration change is required; if you worked around this by enabling CrestApps Resources by hand, that stays valid.

Documentation search fixes from CrestApps.Core 1.2.1​

Documentation search tool instances are backed by the search index source in CrestApps.Core, which this release updates to 1.2.1. Three defects in that source are fixed:

  • A search index that cannot be read now says why. Every failure path ended in an empty corpus, and an empty corpus reaches the model as No documentation results were found — the same answer a site with no matching page gives. An index URL that returns a 404, an index published in a shape the source does not understand, and a site that genuinely has no answer were indistinguishable from outside the process. Each dead end is now logged as a warning that names the index URL. Search behavior is unchanged, so a misconfigured instance still returns no results, but the reason is now in the log.
  • Docusaurus (Lunr) search indexes are understood. MkDocs publishes an object carrying a docs array, while Docusaurus and other Lunr-based sites publish an array of blocks carrying documents. Only the MkDocs shape was read, so a tool instance pointed at a Docusaurus site silently answered nothing. Both shapes are read now, and which one a site publishes is detected from the index itself, so there is nothing to configure and an instance that already worked keeps working. Lunr indexes carry no page body text, so those entries are ranked on titles and breadcrumbs alone.
  • Rooted result locations resolved differently per host. A location was treated as already absolute whenever it parsed as an absolute URI, and on Unix a rooted path such as /docs/ai/ parses as an absolute file: URI. The same index therefore produced working links on Windows and broken links on Unix. Only the scheme decides now: http and https locations are used as they are, and everything else is joined to the configured base URL.

Dependencies​

  • CrestApps.Core moves from 1.2.0 to 1.2.1. It is a drop-in replacement with no public API changes.
  • Microsoft.Data.SqlClient is pinned centrally to 6.1.7. The 6.1.0 version that arrived transitively is deprecated with a critical-bugs notice, and 6.1.7 is the newest release on the same line without a deprecation, so the pin moves off it without a major version change on a patch branch.
  • SQLitePCLRaw.lib.e_sqlite3 moves from 3.50.3 to 3.53.3, which is the nearest version that carries no legacy deprecation notice.
note

Polly.Extensions.Http 3.0.0 is also flagged as legacy, and it is left alone deliberately. It arrives transitively and has no non-legacy version to move to.