Neos 3.1 highlights

Key insights

Welcome to the 3.1 release of Neos. There are many updates in this version that we hope you'll like, some of the key highlights include:

Indexable computed columns

Neos 3.1 makes it easier to optimize queries generated by the framework by relying on computed columns that can be indexed.

The important idea is that the framework keeps generating business-oriented queries from the client side, but the database can now rely on precomputed values instead of recalculating the same transformations during every query.

Two common cases are especially useful:

  • extract one language from a LocalizableString into a dedicated computed column so filtering and sorting on that language stay efficient,
  • store a normalized form of a string in a computed column so framework-generated prefix searches, especially in lookups, can remain performant.

For the practical modeling patterns and examples, see Indexing with computed columns.

Observability architecture around OpenTelemetry

Neos 3.1 introduces a unified observability architecture for backend .NET processes. Telemetry (traces, metrics, logs) is now routed through a single internal OpenTelemetry Collector, replacing the previous fragmented approach where each observability backend required its own configuration path.

A new observability section in the Helm chart centralizes all collector and OTLP settings:

  • observability.collector.mode controls collector deployment: auto (default — deploys the collector when a legacy backend is enabled), enabled, or disabled (direct OTLP mode).
  • observability.otlp exposes endpoint, protocol, per-signal overrides, and pass-through SDK/Serilog arguments injected into all backend pods.
  • The internal collector previously named neos-dapr-otel-collector has been replaced by the unified neos-otel-collector, which handles both Dapr inter-cluster traces (Zipkin receiver) and backend OTLP telemetry.
  • When OTLP is active, the Application Insights .NET SDK is automatically disabled to prevent duplicate telemetry emission.

For full routing rules, signal flags, configuration examples, and the upgrade checklist, see OpenTelemetry collector configuration.

Observability breaking changes
instrumentationKeySecret removed from Application Insights configuration

The interClusterCommunication.appInsights.instrumentationKeySecret property has been removed. It was deprecated since Neos 2.2. Replace it with connectionStringSecret:

# Before
interClusterCommunication:
  appInsights:
    enabled: true
    instrumentationKeySecret: my-secret   # removed

# After
interClusterCommunication:
  appInsights:
    enabled: true
    connectionStringSecret: my-secret

The secret must expose the APPINSIGHTS_CONNECTION_STRING environment variable.

Internal OpenTelemetry Collector renamed

The Kubernetes deployment and service previously named neos-dapr-otel-collector have been replaced by neos-otel-collector. Any hardcoded references to the old name must be updated:

Old value New value
http://neos-dapr-otel-collector:4317 http://neos-otel-collector:4317
http://neos-dapr-otel-collector:9411 http://neos-otel-collector:9411
neos-dapr-otel-collector-configmap neos-otel-collector-configmap

This only affects deployments that referenced these names explicitly — for example, in custom appsettings.json overrides or external Dapr configuration. Standard Helm-managed deployments are updated automatically.

Support Center

Neos 3.1 introduces the Support Center, a new independent cluster dedicated to application support.

It provides an end-user error reporting feature automatically used by the framework error modal, along with a back-office to review reported errors and configure email alerts.

This cluster is primarily intended for production environments and gives support teams a centralized place to investigate incidents. Its scope may expand over time with additional support-related features.

For more information, see Support Center.

C# tooling cleanup around .slnx

Neos 3.1 completes the cleanup that started with the move to .slnx solution files. Beyond the format change itself, the framework now removes several legacy solution-generation patterns that used to coexist with the new model.

In practice, this means teams should update scripts and pipelines that still expect .sln or .slnf files, stop relying on GeneratedProjects.slnx, and no longer expect per-module generated solutions inside businessAssembly folders.

For generated solution structure examples, see Generated solution structure.

Neos Studio

Smarter module node interaction in the main tree-view

Navigating large modules in the Neos Studio main tree-view is now more predictable. Clicking on a module node simply expands or collapses it, instead of opening the module — a behavior that often got in the way when browsing for a specific item.

Opening a module is now handled by a dedicated Open button that appears when hovering the node, making the two interactions explicit and conflict-free.

Preview reports with reusable generation settings

Neos Studio now lets you keep a dedicated Preview and export configuration directly next to a report. The designer can auto-pick the most relevant configuration for the current datasource and tenant, then reuse it for preview and portability exports.

A configuration can cap the number of retrieved rows, apply an OData filter, and pass entity view parameters without modifying the report template itself. This makes large-report preview much safer and removes a lot of repetitive setup when you need realistic sample data.

For more information, see Configure preview and export in the report designer.

Better build diagnostics and source-file navigation

Neos Studio now surfaces server compilation issues directly in build results with file, line, and column details, which shortens the feedback loop when a generation or compilation step fails.

It also improves the handoff to the editor: source files can now be opened directly from the Build Result Viewer, and business class files are opened through the VS Code extension.

Dynamic report templates

Neos 3.1 introduces a dynamic report template management system through the NeosReportCustomization module. It allows cluster developers to register standard report templates and advanced end users to create customized copies, enable or disable templates, and upload their own .mrt files — all without any code deployment.

At development time, cluster developers can:

  • declare classes of reports via the ReportFamily enumeration,
  • register standard templates by calling AddStandardReportTemplate in their module's Startup.cs
  • and use the SelectReportTemplateAsync shared UI method as the entry point to open a report

At runtime, the framework resolves which template to use based on the available enabled templates for a given ReportFamily:

  • If a single template is available, it opens directly.
  • If multiple templates are available, a selection UI lets the user choose.
  • If none is available, a warning is displayed.

For more information, see Dynamic report templates.

More performant lookups

Neos 3.1 improves lookup suggestions in three concrete ways:

  • the total count is no longer requested by default, which avoids an extra cost on every typed value,
  • StartsWith lookup searches can now be optimized properly by relying on indexed computed columns,
  • and a lookup can now search on a property different from the displayed one.

This last point is especially useful when you want efficient StartsWith behavior on a dedicated search field while keeping the displayed value user-friendly. It also keeps the least bad possible behavior for Contains searches, with support for word-by-word matching regardless of word order.

In short, lookups keep the same user experience, but developers now have much better control over what is displayed, what is searched, and how to keep suggestions efficient on larger datasets.

If you want the practical modeling patterns and examples, see Lookup performance and Indexing with computed columns.

Tenant resolution caching

Neos 3.1 significantly strengthens tenant-resolution caching for multitenant environments. The rebuild model is now more complete, with clearer monitoring, explicit recovery flows, and self-heal behavior when the distributed cache or the usual rebuild path is not available.

For operational details, see Tenant resolution caching.

AI model refresh

Neos 3.1 refreshes the framework AI model baseline by moving framework clusters to GPT 5.4 and GPT 5.4 Mini, while also removing a set of older or unused model definitions.

User Permissions

New "Use Enter as Tab" user setting

Neos 3.1 introduces a built-in Use Enter as Tab preference in the user settings UI of the UserPermissions module.

When enabled, pressing Enter moves the focus to the next field, similarly to Tab. This is intended for keyboard-driven data-entry workflows where users move rapidly through forms and want to keep their hands on the main typing keys.

The setting is disabled by default and can be exposed to end users through the UserSettingsUI. For more information, see User Settings.

Standard components

Persistent splitter layouts with size-model

Until now, resizing a splitter panel was a one-shot deal — the layout snapped back to its default the moment the user navigated away. Neos 3.1 fixes that with the new size-model attribute, which turns any panel into a fully reactive, two-way bound layout element. Every time the user finishes dragging, the new size flows back through a computed setter (or a field), giving the UI view complete control over where to store it — local storage, a user-preference service, or anything else. The layout the user crafted is the layout they come back to.

For usage patterns and examples, see Splitter panel — Two-way binding the panel size.

Neos CLI

Metadata check formatting

Neos 3.1 improves neos check-metadata so it can compare and optionally rewrite formatted metadata values inside YAML files, including embedded C# snippets and XML UI templates.

Use --format to detect formatting drift without rewriting files, or combine it with --fix to normalize metadata in place. Three modes are available:

  • all reformats both XML templates and embedded C# code
  • template-values targets XML templates only
  • csharp-values targets embedded C# code only

The same capability can also be enabled in Neos Studio through the cluster YAML configuration so metadata is auto-formatted when it is saved from the graphical editor:

YamlPersistence:
  TemplateValueAutoFormatting: true
  CSharpValueAutoFormatting: true

Enable one or both settings depending on whether you want automatic normalization for XML templates, embedded C# code, or both. This makes metadata cleanup safer during large refactors and reduces noisy diffs caused by inconsistent formatting, including edits made directly in Neos Studio.

For more information, see Metadata check.

Native UI views

Neos 3.1 introduces native UI views, a new authoring mode that lets you build a UI view as a plain Vue component instead of the XML template editor.
This mode is ideal for complex, highly interactive views that would be difficult to implement in XML, or for teams that prefer working directly with Vue. It provides full access to Vue's capabilities while still integrating with the Neos framework.

For more information, see Native UI view.

Background processing workflows

Neos 3.1 adds a BackgroundService-based execution mode for background server methods when Dapr Workflow is disabled.

This gives the framework a local execution path inside the task runner, with dedicated configuration to switch between BackgroundService execution and Dapr Workflow support depending on the runtime setup.

For more information, see BackgroundService execution mode.

Run-once tenant migration interceptors

Neos 3.1 introduces IRunOnceTenantDatabaseMigrationInterceptor, a dedicated interface for tenant post-migration logic that must be applied only once per tenant instead of after every successful migration.

This is especially useful for one-shot data corrections or initialization steps that should be tracked explicitly across tenant migrations. Neos persists one execution marker per tenant and per interceptor name, so the same logic is skipped on subsequent migrations once it has already completed successfully.

Because the execution marker is stored after the interceptor succeeds, implementations must still be idempotent and retry-safe if the business logic succeeds but marker persistence fails afterwards.

For implementation details, storage format, and maintenance guidance, see Executing a tenant database migration interceptor only once per tenant and Tenant migration.

NeosDataExchange module

Neos 3.1 expands the NeosDataExchange module beyond export customization by introducing a complete CSV import workflow based on templates, staging, validation, and integration.

The module now provides:

  • interactive configuration for server data export,
  • an import workspace with template management and column mapping,
  • staging-based execution with row-level validation summaries,
  • integration options with background execution support.

For implementation and usage details, see Data exchange.

What's new in documentation

This release includes significant documentation improvements:

New articles
  • Large-volume import and data adjustment workflows - Explains how to implement high-throughput import workflows using batch processing, scope recycling, and the new SaveOptions to fine-tune the save pipeline for performance-sensitive scenarios.

  • Query transformation - Documents the GetTransformedListAsync method, which enables arbitrary LINQ projections — groupings, aggregations, distinct selections, and custom projections — directly against the data source, with multiple overloads and practical examples.

  • Manager - Comprehensive documentation for the Manager development dashboard: service monitoring, state indicators, REST API call inspection, Swagger access, real-time statistics charts, distributed tracing integration with Jaeger, and server log viewing.

  • Customize the local collector, Jaeger and Prometheus - Explains how to customize the local OpenTelemetry Collector, Jaeger, and Prometheus configuration files used by Neos development tooling, with practical examples for span enrichment, noise reduction, and local trace investigation.

  • Data import how-to - Added a practical guide describing how to configure and run data imports with templates, mapping, validation, and integration workflows.

  • Data import pipeline and runtime - Added a detailed technical walkthrough of the NeosDataExchange import architecture, including runtime stages, staging model, validation/integration behavior, and operational guidance.

Updated documentation
  • Best practices for data importing - Added a new "Save options for bulk imports" section documenting how to use SaveOptions to configure validation rules, event rules, and query logging for high-volume import workflows, including post-migration data adjustment scenarios.

  • Unit of work pattern - Added a new "Save options" section documenting the new SaveOptions class (available since Neos 3.1), covering all available flags, usage with SaveMode, and convenience methods (SaveOrThrowAsync, TrySaveAsync).

  • Helm configuration - Added taskRunner resource configuration properties for the License Management service, and extended the reference resource sizing table to cover License Management, Task Scheduler, and Neos AI services.

  • Navigation - Added a new "Common patterns" section illustrating how to refresh a calling list after an add or edit UI closes, using navigation callbacks with partial and full reload strategies.

  • Data exchange - Expanded the module documentation to cover the full NeosDataExchange scope, including export configuration and the complete CSV import flow (templates, mapping, staging, validation, integration, and extension points).

v3.1.8

Published on Aug 31, 2026.

Features

  • Updated the .NET SDK to 10.0.400 and .NET runtime images to 10.0.11.
    • CVE-2026-62898 | .NET Information Disclosure Vulnerability
    • CVE-2026-62899 | .NET Security Feature Bypass Vulnerability
    • CVE-2026-62900 | .NET Information Disclosure Vulnerability
    • CVE-2026-62901 | .NET Denial of Service Vulnerability
    • CVE-2026-62886 | .NET Elevation of Privilege Vulnerability
    • CVE-2026-62871 | .NET Elevation of Privilege Vulnerability
    • CVE-2026-70354 | .NET Core Remote Code Execution Vulnerability
    • CVE-2026-62902 | .NET Information Disclosure Vulnerability
    • CVE-2026-62897 | .NET Remote Code Execution Vulnerability
    • CVE-2026-62909 | .NET Elevation of Privilege Vulnerability
      More details : 18451

Fixes

  • [Neos Data Exchange] Fixed exports after sorting localized text columns by targeting the current language value in OData ordering. (18456), closes 35849
  • [Neos Studio] Fixed a false-positive module-dependency warning (M0058) reported against a base UIView when an inheriting UIView overrides a child element (partial template, computed, field...) using a UI Component from its own module. (18373), closes 35748
  • [Neos Studio] Fixed entity and entity-view diagram links in the VS Code extension. (18417), closes 35413
  • Fixed background task dispatch so it no longer inherited a disposed HTTP context from the initiating request. (18530)
  • Fixed chat history conversion for parallel chatbot tool calls. (18364), closes 35623, 35747
  • Fixed CSV and XLSX exports to evaluate column display templates with the correct row context. (18394), closes 35633
  • Shared ASP.NET Core data protection keys through Redis between gateway and backend instances to improve compatibility during mixed-version deployments. (17972)

v3.1.7

Published on Aug 12, 2026.

Features

  • [Helm] Added configurable env and envFrom entries to business-cluster frontend pods. (18169)
  • [Neos Data Exchange] Reported fatal background import failures to users with error notifications. (18172)
  • [Neos Data Exchange] Added persistent fatal-error reporting and status visibility for failed intermediate imports. (18229)
  • [Neos Data Exchange] Added sample CSV upload and download support for import templates. (18220)
  • [Reporting] Added configuration capability for the Stimulsoft HTML5 Viewer backend cache mode: can be globally or selectively (on a report-by-report basis) switched from the default 'ObjectCache' to 'None'. Disabling the Viewer's backend cache is required when the reporting service runs with multiple replicas and reports allow viewer events (Save As, Print, etc.). (18227)
  • Updated documentation : Removal of the unencrypted connection string. (18255)

Fixes

  • [Documentation] Added notes clarifying the ambiguity regarding which Docker image versions to use for the frontend, backend, and taskrunner. See this article. (18166)
  • [Neos Data Exchange] Fixed access to data mapping until a mapping model is selected. (18237), closes 35464
  • [Neos Data Exchange] Fixed adding import column mappings from a file when an empty column is selected. (18232), closes 35461
  • [Neos Data Exchange] Fixed import batch selection failures on Oracle when batch sizes exceeded 1,000 rows. (18294)
  • [Neos Data Exchange] Preserved template column order in data import staging grids. (18244), closes 35458
  • [Security] Updated dependencies to fix CVE-2026-45646 (HIGH CVSS 7.5) (18295)
  • [Security] Updated dependencies to fix CVE-2026-50506 (HIGH CVSS 7.5) (18295), closes 35591
  • [Security] Updated dependencies to fix GHSA-28wg-ghj8-5hjv (HIGH CVSS 5.9) (18285)
  • [Security] Updated dependencies to fix GHSA-2v37-7h3g-55p8 (HIGH CVSS 5.9) (18285)
  • [Security] Updated dependencies to fix GHSA-2v8p-3f2j-5mp7 (MEDIUM) (18285)
  • [Security] Updated dependencies to fix GHSA-3rrr-jr9j-h3q3 (MEDIUM) (18285)
  • [Security] Updated dependencies to fix GHSA-55q2-fjhq-7xh7 (MEDIUM) (18285)
  • [Security] Updated dependencies to fix GHSA-6x64-9x62-f2gx (MEDIUM) (18285)
  • [Security] Updated dependencies to fix GHSA-c2j3-45gr-mqc4 (LOW) (18285)
  • [Security] Updated dependencies to fix GHSA-c4c3-pg64-4m4v (LOW) (18285), closes 35592, 35593, 35599, 35600
  • [Security] Updated dependencies to fix GHSA-fxqj-rqcc-2cmp (MEDIUM) (18285)
  • [Security] Updated dependencies to fix GHSA-r28c-9q8g-f849 (HIGH CVSS 7.5) (18285)
  • [Security] Updated dependencies to fix GHSA-rhh3-jpg6-66xh (MEDIUM) (18285)
  • [Task Scheduler Client] Fixed scheduling tasks without arguments by sending a null arguments payload. (18199), closes 35431
  • Fixed disabled non-inherited UI view event rules being generated and executed. (18286), closes 34111, 35234

v3.1.6

Published on Jul 23, 2026.

Breaking changes

  • [Security] The GetClusterVersions, GetTenantInfo, and GetTenantClusters methods of the tenant management API are isolated behind the gateway and, consequently, restricted to the internal network. (17971)

Features

  • [Neos Data Exchange] Redesigned data-import mapping and import settings workflows. (18131)

Fixes

  • [Security] Fixed forwarded-header handling so InternalUseOnly server methods are properly isolated behind the gateway. (17971), closes 33655
  • [Security] Updated dependencies to fix CVE-2026-41148 (MED CVSS 5.3) (18036)
  • [Security] Updated dependencies to fix CVE-2026-41907 (HIGH CVSS 8.1) (18036)
  • [Security] Updated dependencies to fix CVE-2026-46681 (HIGH CVSS 7.2) (18036)
  • [Security] Updated dependencies to fix CVE-2026-47759 (HIGH CVSS 8.7) (18036)
  • [Security] Updated dependencies to fix CVE-2026-47761 (HIGH CVSS 8.7) (18036)
  • [Security] Updated dependencies to fix CVE-2026-47762 (HIGH CVSS 8.7) (18036)
  • [Security] Updated dependencies to fix CVE-2026-48109 (HIGH CVSS 8.2) (18036)
  • [Security] Updated dependencies to fix CVE-2026-48502 (HIGH CVSS 8.2) (18036)
  • [Security] Updated dependencies to fix CVE-2026-48506 (HIGH CVSS 7.5) (18036)
  • [Security] Updated dependencies to fix CVE-2026-48779 (HIGH CVSS 7.5) (18036)
  • [Security] Updated dependencies to fix CVE-2026-49451 (HIGH CVSS 7.5) (18036)
  • [Security] Updated dependencies to fix GHSA-39q2-94rc-95cp (MED CVSS 5.3) (18036)
  • [Security] Updated dependencies to fix GHSA-7jvp-hj45-2f2m (HIGH) (18036)
  • Fixed datagrid row selection so right-clicking the current selected row no longer cleared other selected rows. (18063), closes 35007
  • Fixed the requirement for remote UI views opened from another remote UI view to be explicitly exposed as remote entries. (18104), closes 35029

v3.1.5

Published on Jul 03, 2026.

Features

  • [Neos Data Exchange] Added an option to automatically continue from validation to live integration when a validation pass completed without warnings or errors. Updated import completion notifications to reduce duplicate completion messages during chained execution. (17904)
  • [Neos Data Exchange] Added enum-type support to data imports and propagated enum metadata through mapping and validation. Updated the technical demo to include journal type import fields. (17751)
  • [Neos Data Exchange] Allowed import enum values to be resolved from multilingual captions in addition to canonical member names. Reported ambiguous caption matches more clearly. (17887)
  • Configured the Helm chart to use a default Kubernetes RollingUpdate strategy with maxSurge: 1 and maxUnavailable: 50%, and added configurable per-service deployment strategy overrides. See this article (17800)
  • Improved AI chatbot conversation continuity by persisting tool calls and tool results in thread history so follow-up prompts can reuse previous tool outputs. (17803)

Fixes

  • [Helm] Switched RabbitMQ from a Deployment to a StatefulSet to provide stable pod identity and safer volume handling during upgrades. (17811)
  • [Neos Data Exchange] Fixed import simulation/integration so unassociated save errors were appended to existing row validation messages instead of overwriting prior messages. (17840)
  • [Neos Studio] Fixed server code generation failing to compile when an entity view embedded as a collection references its parent through an alternate key: a call to RegisterBeforeSavingRules was generated on a repository for which the method was (correctly) not generated. (17776), closes 34542
  • Fixed "equal" and "not equal" filters on Date and invariant datetime properties returning no results because of the timezone. (17772), closes 34501, 34573
  • Fixed Date filters with a month or year selection (and "between" ranges) not covering the full period. (17772), closes 34501, 34573
  • Fixed multitenant development startup so a second cluster remained reachable when Tenant Management was already running. (17769), closes 34591
  • Fixed Remote Invoke not exposing the business message when the called cluster throws a business error. (17784), closes 34606
  • Fixed wrong tenant settings used for sequences and database exception converter in background server methods. (17874), closes 34734

v3.1.4

Published on Jun 23, 2026.

Fixes

  • Delayed unavailable-tenants warmup and refresh calls in the development server proxy until the Tenant Management backend had started, preventing premature getunavailabletenants failures during startup. (17641), closes 34121
  • Fixed a crash when opening an inherited UI view whose base event rule calls a UI view method: the method was not found at runtime because the base rule resolved its members one inheritance level too high. (17695), closes 29928, 34464, 34509
  • Fixed client generation failing for UI views with an inheritance chain of three or more levels. (17695), closes 29928, 34464, 34509
  • Fixed SignalR notifications sent through the Redis backplane to preserve invocation IDs, allowing client response flows to work correctly in production. (17681)

v3.1.3

Published on Jun 17, 2026.

Features

  • Added the ability to customise tenant selection screen according to each tenant status (disabled via tenant manager or currently unavailable, eg: migrating). See this article. (17605)

Fixes

  • [Helm] Required authenticationSecret in Helm chart values and rejected empty values. (17604), closes 34342
  • [Neos Studio] Fixed dependency analysis reporting UI view event rules with All accessibility instead of Frontend, which suppressed accessibility-narrowing suggestions for elements referenced only from those event rules. (17624)
  • [Neos Studio] Fixed report designer preview/export configuration sheets to persist tenant and generation-config selections more reliably, prompt before losing unsaved changes, and refresh stale cached selections more safely. (17517), closes 33687
  • [Neos Studio] Fixed the unused-elements search incorrectly reporting string resources and constants as unused when they were referenced only in UI view event rules. (17570), closes 34320
  • [Neos Studio] Partial generation now regenerates the child UIViews that inherit from a modified parent UIView, so editing an inherited action no longer requires a full generation. (17549)
  • Fixed a memory leak in Semantic Kernel dependency injection configuration. (17576)
  • Fixed backend monitoring rule notifications so concurrent executions were tracked safely and failures were still reported when a rule threw an exception. (17565), closes 33656
  • Fixed disabled tenants displaying in tenant selection screen. (17605), closes 34071
  • Fixed lookup create/edit write-back so saved reference values were applied to the original bound record even if the current record changed while the separate frame remained open. (17561), closes 34179

v3.1.2

Published on Jun 09, 2026.

Features

  • Added a load-more action to lookup dropdown. (17401)

Fixes

  • [Neos Studio] Fixed native UI views reopening on the Template section instead of the Header section. (17416), closes 34041
  • [Tenant Management] Fixed user synchronization during tenant creation and tenant migration state changes to prevent unintended cross-cluster sync events. (17417)
  • [User Permissions] Removed the automatic synchronized status update because this property could drift from the actual state depending on the cluster, making it unreliable. (17417), closes 34043
  • Fixed Search.IsMatch rewriting for captured subqueries so QuickSearch worked when retrieving rules reused a captured IQueryable subquery. (17420), closes 33460
  • Fixed calculable input-number input so replacing a fully selected value with a negative number no longer concatenated with the previous value. (17396), closes 34016
  • Fixed nested cross-cluster lookup filters so suggestions and results were displayed when total-count retrieval was disabled. (17471), closes 34099
  • Fixed Oracle stored procedure execution to bind parameters by name instead of declaration order. Added a Technical Demos example for executing a cross-database subtraction stored procedure. (17359)
  • Updated module federation plugin (microfrontends) to fix culture of date and number inputs. (17303), closes 33948
  • Updated module federation plugin (microfrontends) to fix lazy loading of remote entry scripts. (17303)

v3.1.1

Published on Jun 02, 2026.

Features

  • [Documentation] Added documentation for Redis including persistence, troubleshooting and Backup and restore sections. (17280)
  • Added transpilation support for LookupDefinition and the generated Lookups class, allowing UI code to reference lookup definitions through Lookups.*. (17291)

Fixes

  • Database migrations for the cluster have been moved to background processing. (17298), closes 33741
  • Fixed API validation for decimal properties when minimum or maximum values used a dot decimal separator. Prevented culture-dependent failures in decimal range constraints. (17347), closes 34014
  • Fixed filter bar so server filter chips are displayed in advanced mode. (17333), closes 33958
  • Fixed the error in the cache building process. (17298)

v3.1.0

Published on May 27, 2026.

Breaking changes

  • [Helm] instrumentationKeySecret removed from Application Insights configuration. See this article. (16456)
  • [Helm] Internal OpenTelemetry Collector renamed. See this article. (16456)
  • [Neos Studio] Removed the template editor assistant and end-to-end test creator assistant. (16904)
  • [NeosAICore] Removed unused and old AI models (AzureAIInferenceGpt5Mini, AzureGpt41Nano, AzureGpt5, AzureGpt5Mini, AzureGpt5Nano, Gemini25Flash, Gemini25Pro, MistralMedium, OllamaMistralSmall32). If one was used, recreate it in one of your modules. (16910)
  • [User Permissions] User information has been moved from the Context dictionary to the ClientOnlyContext dictionary in the on-authenticated API response. (16902)
  • Enum properties without an EnumTypeName now raise an error. (16838)
  • Migrated .sln and .slnf solution files to .slnx, a new and simpler format. Since the .sln and .slnf files have been deleted, you will need to review your pipelines and scripts to replace .sln and .slnf to .slnx. See this article for more information about the new format. (15659)
  • Removed --omnisharp (-o) option of the neos run command since IntelliSense without OmniSharp is stable. (15975)
  • Removed GeneratedProjects.slnx generated solution. (16350)
  • Removed the generation of solution files from the businessAssembly folder of each module. You can still create them manually if needed. Existing ones will not be deleted automatically. (15976)

Features

  • [C# Dependencies] Replaced the custom ModelContextProtocol.AspNetCore fork (0.5.0-neos.3) with the official 1.1.0 SDK in server projects to align MCP support with the upstream release. (16519)
  • [C# Dependencies] Updated the recommended .NET SDK to 10.0.201 and .NET runtime Docker base images to mcr.microsoft.com/dotnet/aspnet:10.0.5-alpine3.23. (16354)
  • [Chore] Updated System.CommandLine version to 2.0.3. (16107)
  • [Documentation] Added documentation about deployment, rollback, and tenant migration workflows. (17012)
  • [Helm] Added the clusters.dapr.workflow property to configure specific cluster sidecar workflow behavior (see this article). (14255)
  • [Helm] Added the ability to configure or disable the creation of Prometheus PodMonitor to expose Dapr sidecar metrics. See this article. (16021)
  • [License Management] Automatically added mandatory commercial solution modules to existing licenses and enabled existing license modules when they became mandatory. (17178)
  • [LicenseManagement] Added subscription lifecycle fields (Subscription Date, Expiration Date, Status, and Holding Period) to licenses. (16166)
  • [Neos Studio] Added server compilation issue surfacing in build results with file/line/column details, and enabled opening source files directly from the Build Result Viewer. (16506)
  • [Neos Studio] Enabled organizing server method implementation files in subfolders. (15764)
  • [Neos Studio] Added automatic scalar property generation on collection relations, aligning behavior with reference relations. (16445)
  • [Neos Studio] Added computed column support across Neos Studio, code generation, migrations, and runtime query translation. Improved lookup configuration with dedicated search properties, optional suggestion counts, and more resilient suggestion loading. (17070)
  • [Neos Studio] Added detailed metadata to save validation errors returned by generated entity view APIs, including entity view name, entity name, flattened key properties, and the failing item path for nested references and collections. (16757)
  • [Neos Studio] Added splitters between the main grids and the right-hand side panels in the following screens: DataTable, Entity, EntityView, UIView (Properties and StyleRules), DataObject, EntityAlternateKey, Interface, Module, ProgrammableObject, StringResourceList and UIComponent. (16100)
  • [Neos Studio] Added support for native Vue-based UIViews in Neos Studio, (16572)
  • [Neos Studio] Added VS Code extension-based opening for business class files instead of relying on backend launch. (16694)
  • [Neos Studio] Adds report-generation configuration support for Designer preview and Portable report exporting (OData filter, EntityView parameters, max-items behavior), plus related Designer UI/editor flows, configuration auto-selection according to a pertinence scoring heuristic, and client/server reporting plumbing. (16387)
  • [Neos Studio] Disabled the UI template Format Document command when template value auto-formatting was enabled for the edited cluster. (17164)
  • [Neos Studio] Exposed SourceBindingMode in the entity view properties options and prevented strictly read-only entity views from writing back TwoWay-bound scalar properties. (17202)
  • [Neos Studio] In the main tree-view, clicking on the module nodes expands instead of opening the items: the opening of the module is taken care of by a dedicated 'Open' button that shows when hovering the nodes. (15236)
  • [NeosAICore] Added AzureGpt54, AzureGpt54Mini AI models. (16910)
  • [NeosNotificationCenter] Added notification forwarding from the nested cluster’s notification center to the main cluster. (15922)
  • [NeosReportCustomization] Added a module for tenant-level management for standard and custom report templates, including copy creation, activation controls, and runtime selection when multiple templates are available. Provided capability to load customized .mrt templates from the database alongside the existing file-based standard reports of the application. (16843)
  • [NeosStudio] Added a complete Visual Studio solution including server-side and UI code. (16083)
  • [NeosStudio] Added display of the property name of an event UI rule in the metadata tree label. (16208)
  • [Observability] Added neos_tenant_cache_rebuild_requests_total metric (see this article). (17012)
  • [Observability] Unified observability architecture with Open Telemetry. See this article (16456)
  • [Tenant Management] Added new metric for tenant cache rebuild duration. See this article. (16405)
  • [Tenant Management] Added POST /api/v1/methods/resetalltenantcache endpoint to force rebuilding all tenant cache. See this article. (17012)
  • [Tenant Management] Added TenantsResolutionCacheFullRebuildUseTaskRunnerByDefault and TenantsResolutionCachePartialRebuildUseTaskRunnerByDefault to override tenant cache building dispatch mode (task-runner vs backend service). See this article. (17012)
  • [Tenant Management] Added an endpoint GET methods/tenantscacherebuildingstatus to check tenants state stores rebuilding status. See this article. (16403)
  • [Tenant Management] Added new metric for tenant cache rebuild state. See this article. (16366)
  • [Tenant Management] Improved migration error display in the migration summary by adding inline actions to copy and view full error details. (16319)
  • [User Permissions] Added a user preference allowing the Enter key to behave like the Tab key for changing focus. (16437)
  • [VSCode extension] Added the module that overrides a UI event rule in the VS Code extension explorer. (16250)
  • Added AddNew method to the IViewModelProperties interface to allow adding unbound UI view properties programmatically. (15665)
  • Added AddValidationMessage, RemoveValidationMessage, ClearValidationMessages, and ClearPropertyValidationMessages methods to the IUIView interface for manual control of validation messages. (15665)
  • Added FilterComponent property to IViewModelFilterableAttribute interface to set the default display mode of the filter component. (15564)
  • Added FilteringBehavior.ExecutionSide option to the ViewModel to enable client side filtering. (16015)
  • Added None reasoning effort level. (16910)
  • Added ReloadDataAsync method to IViewModel interface so specific records could be refreshed without reloading the entire list. (16610)
  • Added SaveOptions support to IUnitOfWork save operations to control save pipeline behavior (EnableValidationRules, EnableEventRules, EnableQueryLogging) with new overloads on SaveAsync, TrySaveAsync, and SaveOrThrowAsync. (15963)
  • Added SetValue method to the IUIView interface to set an item's property value by property name. (15665)
  • Added WithUrlParameter/WithUrlParameters on the NavigationOptions class. The frame parameters will show as being prefixed with an f_ in the URL to distinguish them from global parameters. They can be accessed via the UrlContext property of the view-model. (15702)
  • Added a BackgroundService-based execution mode for background server methods when Dapr Workflow was disabled. Added configuration to switch between local background execution and Dapr Workflow support. (17091)
  • Added a complete Technical Demos example for end-to-end background processing with real-time batch/task progress tracking, manual retry, and generated dashboard results. (16258)
  • Added a configuration option to disable line-break validation for single-line text fields. (15920)
  • Added a full workflow guide and idempotency guidance in the backend documentation. (16258)
  • Added a new filter component for lookup properties. (15612)
  • Added a propagation of current UIView id changes to the VSCode integration. (16763)
  • Added a TechnicalDemos example that aggregated multiple asynchronous report generations into a single merged PDF or ZIP with one final notification. Added documentation describing the batch report generation pattern. (16684)
  • Added AI support to read and apply the current screen configuration so chatbot interactions could update the active layout, filters, sorting, and style rules. (16568)
  • Added an option on AI agent to allow attachments. (16090)
  • Added backend entity validation to enforce MaxLength constraints on string and localizable string properties, with a configuration switch to disable enforcement. (15966)
  • Added configurable size support for filter-bar chips and enabled custom filter icons for filterable UI view properties and entity view parameters. (17051)
  • Added generation warnings (M0067/M0068) to detect multiline inconsistencies between metadata and UI templates. (15977)
  • Added new neos_unavailable_tenant metrics. See this article. (17162)
  • Added new lookup on TechnicalDemos (16911)
  • Added new metrics for tenants accessor. See this article. (15876)
  • Added quick search filter operator option (Contains, Starts with or Equal to) to entity view properties. (17008)
  • Added several display modes to the date filter component: Default (existing mode), CalendarDay (calendar with day view), CalendarMonth (calendar with month view), CalendarYear (calendar with year view). (15564)
  • Added SQL query in Jager traces. (15898)
  • Added support for executing multiple server-method subscribers for the same event in a deterministic order. (15699)
  • Added support for linked second values on entity view parameter range filters, including range chip rendering and synchronized updates for start/end date parameters. (17055)
  • Added support for report-generated interceptors to post-process generated reports before end-user notifications or server-side callbacks. (15561)
  • Added support for run-once tenant migration interceptors and surfaced executed/skipped interceptor statuses in tenant migration history. (17214)
  • Added support for targeting a specific filter-bar instance with an id and assigning filters to it through FilterBarId. Updated filter bar examples and template reference accordingly. (17054)
  • Added support for triggering background server methods via Pub/Sub subscriptions. (15699)
  • Added the calculable type to the input-number component to enable calculations to be performed directly in the input. (15593)
  • Added the input-number-type attribute to the datagrid component. (15593)
  • Added the size-model two-way bound attribute for the splitter-panel so resized panel sizes could be persisted after drag operations. (16546)
  • Added the type attribute to the input-number component. (15593)
  • Added UI component snippets to UI template completions. (16992)
  • Added VSCode-aware Ctrl+Shift+E navigation to open the Neos Studio UIView directly from the app. (16763)
  • Added warning logs when entity text validation checks are disabled and incoming values would otherwise violate multiline or max length constraints. (17202)
  • Added WithClientOnlyContextValue method on TenantResolvedResult to populate the client-only application context so UI-only data remains available in the client without being resent on subsequent API calls. (16902)
  • Added Yaml persistence event rule migration to a C# project. (15377)
  • Blocked gateway routing to unavailable or migrating tenants by returning HTTP 503 instead of forwarding requests. See this article. (17162)
  • Enabled automatic startup of the reporting server when proxy requests targeted nested cluster reporting endpoints. (16359)
  • Enabled extra client-side UI logs only when the ?debug URL parameter was present, reducing default console noise and improving load/save performance. (16966)
  • Implemented documentation-variable substitution from DocumentationVariables in generated frontend string resources and UIView.Documentation values. (16379)
  • Improved neos check-metadata with formatting modes for XML templates and embedded C# code, and added cluster YAML settings to enable the same auto-formatting behavior in Neos Studio when saving metadata from the graphical editor. (16943)
  • Improved neos setup by always forcing development certificate creation, making the --force-create-dev-cert option obsolete. (16945)
  • Improved neos setup to handle npm -v outputs more robustly when warnings are printed before the npm version. (16945)
  • Improved authentication in development mode: Neos Studio API requests for a cluster requiring authentication are no longer authenticated; only access to the cluster itself requires authentication. (16032)
  • Improved filter bar to use character casing, whitespace handling, and max length constraints from UI view string and localizable string properties. (16371)
  • Improved Windows neos setup reliability by forcing the winget source for Dapr CLI, Memurai, and .NET SDK installations. (16945)
  • Moved Neos version metadata in generated .gen files to a single header line to reduce merge conflicts while keeping legacy format parsing compatible. (16005)
  • Replaced the AI models used in Framework clusters with GPT 5.4 and GPT 5.4 Mini. Previously, GPT 5.2, GPT 4.1, GPT 4o and GPT 4o Mini were used. (16910)
  • Updated the radio-group styles to use the CheckedBackground color from the Checkbox component to color the radio input. (15683)

Fixes

  • [Deployment] Added missing environment configuration in Dockerfiles for backend and taskrunner. See this article. (16348), closes 32468
  • [Helm] Fixed Dapr sidecar metrics not scraped by Prometheus. (16021), closes 32035
  • [Helm] Fixed volume name too long error while deploying chart. (16261), closes 32383
  • [Helm] Fixed Zipkin pod OOM crashes in production by configuring JVM heap settings to automatically detect container memory allocations (16140), closes 32267
  • [Neos AI] Clarified the NeosTextTaskPerformer prompt so task-only requests explicitly generated new text when no source text was provided. Removed fixed punctuation after {{task}} to avoid misinterpreting task instructions. (17240), closes 32343
  • [Neos Studio - VsCode] Fixed VS Code navigation handling so UIView default open mode is applied before delegation, preventing popup navigations without an explicit target from being redirected to the extension. Initial route-based view openings were kept local to avoid unintended delegation loops. (16364), closes 32467
  • [Neos Studio] Fixed StringResource dependency detection so that string resources used as UI action panel group captions are correctly resolved. (15779), closes 30840, 30987
  • [Neos Studio] Excluded the current action from parent-action selectors when configuring ChildOf or RelativeTo action locations. (17210), closes 33769
  • [Neos Studio] Fixed C# editor completion help for entity view source expressions. (17222), closes 33469
  • [Neos Studio] Fixed data table columns datagrid virtualization. (16639), closes 32855
  • [Neos Studio] Fixed data table name validation to skip name format checks when the table was marked as excluded from migration. (16476), closes 32780
  • [Neos Studio] Fixed default Entity View MCP tools from being kept under the previous name after an entity view rename. (16071), closes 32111
  • [Neos Studio] Fixed Json reporting data export from the Report Designer. (15757), closes 30289
  • [Neos Studio] Fixed layout shift in the VS Code extension when opening modal dialogs. (16840), closes 33172
  • [Neos Studio] Fixed modification indicator badge in Report and ReportStyle designers. (16387), closes 30903, 32944, 32977
  • [Neos Studio] Fixed persistance of tenant selection across refreshes of the Datasource in Report and ReportStyle designers. (16387), closes 30903, 32944, 32977
  • [Neos Studio] Fixed status property validation to resolve the configured status property through base-entity inheritance, preventing false errors when the property is defined on an ancestor entity. (16501), closes 32604
  • [Neos Studio] Fixed tenant API path detection for tenant identifiers containing _ or -. (17220)
  • [Neos Studio] Fixed the DatagridWidth documentation for UI view properties. (17081), closes 32440
  • [Neos Studio] Fixed the definition of the tags for a menu item on the menu screen. (16612), closes 32836
  • [Neos Studio] Fixed the lookup free-value property selection to return UI view properties with their correct data types, including inherited entities. (16019), closes 31897
  • [Neos Studio] Fixed the multi-line control error when saving a function with authorization condition. (15950), closes 32020
  • [Neos Studio] Fixed UI Template editor IntelliSense so selecting a suggestion after partially typing a bound expression no longer dropped characters. (16388), closes 32572
  • [Neos Studio] Removed expensive client-side duplicate-name prevalidation checks in property and data column UIs, improving responsiveness on large embedded collections. (16984)
  • [NeosAI] Fixed an issue that caused answers to display incorrectly. (15994), closes 32088, 32093
  • [NeosStudio] Fixed an error when opening the YAML editor (Ctrl+Shift+Y) in the VS Code extension. (16069), closes 32118
  • [Security] Updated NuGet.* package references to 7.0.3 across the affected .NET projects to address GHSA-g4vj-cjjj-v7hg. (16793), closes 33222
  • [Studio] Fixed the layout of the "Menu entry" view in the right-hand side panel of the Menu editor: the code editor wasn't filling the available vertical space. (15702)
  • [Task Scheduler] Fixed tasks failing to start with Dapr version 1.16+. (16124), closes 32233
  • [Tenant Management] Added synchronous tenant-cache rebuilding for partial rebuilds (eg: during tenant migration). (17012)
  • [Tenant Management] Fixed cluster lookup filtering by aligning the cluster/version display label format. (16993), closes 33441
  • [Tenant Management] Fixed tenants cache not rebuilding correctly when firing multiple database migrations. (16403), closes 32470
  • [Tenant Management] Improved tenant cache rebuild reliability by clearing tenant cache completion markers before triggering a full rebuild, so tenant data can fall back to the database while caches are being reconstructed. (16877)
  • [Tenant Management] Improved unavailable-tenant cache recovery after Redis subscription failures. (17220), closes 33766
  • [Tenant Management] Optimized tenant-user state store rebuilds by batching tenant/cluster retrieval and processing normalized user logins once, reducing cache reconstruction overhead. (16423)
  • [Tenant Management] Renamed ExecutionTime property caption from "Temps d'exécution" to "Heure d'exécution" in french. (15939)
  • [UI Customization] Fixed auto-save custom view flow by skipping explicit default-view assignment authorization checks during the internal save process. (16419)
  • [UI Customization] Fixed auto-saved personal view updates so newly added UI view fields were persisted correctly when linked to an unbound entity view. (16522), closes 32808
  • [UI Customization] Fixed custom view ownership checks to compare user identifiers case-insensitively, so users can edit their own custom views even when casing differs. (16408)
  • [User Permissions] Fixed the "Default printer" field and "Report print settings" tab of the user settings UI, which are now hidden when not in the desktop application (tauri). (15755), closes 31792
  • [User Permissions] Handled distributed state store failures in permission cache writes so permission resolution can continue when the cache is unavailable. (17107), closes 33691
  • [User Permissions] Prevented automatic authentication-provider synchronization failures from blocking user saves and tenant creation. (16680), closes 33041
  • Added service account documentation. (16303)
  • Disabled sorting for grouped scalar lookup-backed properties to avoid OData errors. (16429)
  • Fixed horizontal-layout children using layout:width="fill" to keep consistent widths when multiple siblings were set to fill. (15972), closes 31052
  • Fixed input-localizable-string so the same value entered for multiple languages is correctly persisted on Firefox. (17114), closes 33667
  • Fixed neos check-metadata so it only considered YAML files located under module metadata directories. This prevented unrelated YAML files from being reported as missing or obsolete. (17024), closes 33588
  • Fixed AcceptEntityViewChanges in the XUnit test framework so manually assigned IDs are preserved instead of being overwritten during change acceptance. (16120), closes 32254
  • Fixed alternate key resolution for inherited entities so keys defined on base entities were correctly available in Designer views and generated facades. (16654), closes 32841, 32842
  • Fixed an issue in multilingual clusters where localized string fields (lookup and datagrid) displayed the neutral language (first configured language) instead of the user's current language. (15885), closes 31841
  • Fixed an issue in TPH metadata generation where the table name was incorrectly initialized for derived entities. (15823), closes 31644
  • Fixed an issue related to the generation of the MCP class of a server method. (16004), closes 32032
  • Fixed an issue that occurred when initializing foreign keys from composite alternative keys. (16767), closes 33195
  • Fixed an issue where a Vscode tab would not close after deleting an element from Neos Studio. (16763)
  • Fixed an issue where all UI views implicitly used by a UI view in micro-frontends had to be listed in the ExposedUIViews configuration. (16150)
  • Fixed an issue where editable reference properties without a sub-view were incorrectly stripped from data sent to the server, causing save errors. (15779), closes 30840, 30987
  • Fixed an issue where the folder of a dependent external module was incorrectly determined in clusters using symlink to reference modules. (16083), closes 31498
  • Fixed an issue where validation rules were not triggered when the validation rule name matched a property name. (15942), closes 32002
  • Fixed automatic vertical scrolling during datagrid row drag-and-drop when hovering near the top or bottom edges. (16384), closes 32561
  • Fixed background server method parameter deserialization to correctly populate getter-only collection properties from JSON payloads. (16213), closes 32336
  • Fixed bound entity view serialization by excluding the internal Entity property when using System.Text.Json. Added unit tests to validate consistent behavior with both System.Text.Json and Newtonsoft.Json. (16526), closes 32817
  • Fixed change tracking for reference assignments that keep the same scalar key. (16985), closes 33440
  • Fixed chatbot attachment handling to support non-image files (including PDFs). Users can now attach PDF files in chatbot conversations. (16536), closes 32820
  • Fixed chatbot message deserialization for follow-up questions. (16407), closes 32599
  • Fixed client library code backing the transpilation of a property's FilterDefaultOperator; it should be a string (Example usage: Properties.MyAmount.FilterDefaultOperator = FilterOperator.GreaterOrEqual.ToString();). (16387), closes 30903, 32944, 32977
  • Fixed client library code for transpiled DateTime constructor with optional milliseconds. (16597), closes 32892
  • Fixed client-side total summaries so watched getter-backed properties recalculated their aggregations when values changed. (16560), closes 32859
  • Fixed code generation when an embedded collection is not bound to an entity. (15892), closes 31452
  • Fixed contextual action handling so item-scoped actions no longer targeted the wrong selection after duplication or navigation. (17042), closes 33034, 33176
  • Fixed data loading using the configured page size when filters or sorting changed, while preserving the loaded item count for manual refresh in infinite scrolling scenarios. (16686), closes 33092
  • Fixed Datagrid infinite scrolling fallback to the view model setting when the infinite-scrolling prop is null. (16429)
  • Fixed Datagrid infinite scrolling so rows kept loading while scrolling inside expanded server-side groups. (16873), closes 33308
  • Fixed datagrid refresh when validation messages are applied. (16113), closes 32177
  • Fixed datagrid row detail height recalculation to follow asynchronous detail content changes and reload scenarios. Detail rows now resize more reliably without relying on a short timeout window. (16443), closes 32179
  • Fixed datagrid row validation indicator style. (15942)
  • Fixed decorator execution order by sorting business assemblies by module hierarchy. (15921), closes 31991
  • Fixed default value retrieving row count limited to 10 when querying the cluster version. (15946), closes 31969
  • Fixed double execution PropertyChanged event rule when property watcher is enabled (Properties.MyProperty.EnableWatcher()). (16254), closes 32301
  • Fixed EF Core translation of date time extension methods. (17037), closes 33480
  • Fixed end-to-end automation library GetComponent/FindComponent methods for elements located in partial templates embedded in UI Component slots. (16387), closes 30903, 32944, 32977
  • Fixed entity view expression rewriting so explicit casts preserved parent entity paths in generated select sources. (16836), closes 33212
  • Fixed entity view retrieval by key to correctly apply retrieving-rule filters (including entity-level filters). (15818), closes 31829
  • Fixed filter bar popovers issue where multiple could be open at the same time. (15970), closes 31985, 31993, 32014
  • Fixed foreign key initialization issue from the alternate key in the case of nested entity references. (16709), closes 33130
  • Fixed frame titles consistency across browser page refreshes by storing the relevant navigation information in the URL. (16690), closes 9336
  • Fixed generated business classes to resolve INeosLogger<T> using the implementation type instead of the interface type. (16773), closes 33161
  • Fixed images within UI views opened in micro-frontend mode. (16128), closes 32261
  • Fixed incorrect number of format parameters when generating alternative keys error message. (16778), closes 33203
  • Fixed IntelliSense for Getter/Setter expressions of UI view properties when Required is an expression. (16588), closes 32899
  • Fixed keyboard input in the lookup of an unbound UI property should not trigger the edit badge. (17159), closes 33757
  • Fixed lookup filter behavior so selected suggestions stayed synchronized when selections changed externally or during search. (16254)
  • Fixed metadata generation for inheritance by preventing derived TPT tables from being marked as multitenant. (15863), closes 30986
  • Fixed micro-frontends when the tenant identifier contains an underscore. (16805)
  • Fixed micro-frontends when the tenant identifier starts with the prefix of a nested cluster. (16805), closes 33166
  • Fixed migration history incorrectly displaying an error when creating a tenant. (15836), closes 31697
  • Fixed multi-tenant cluster access when the state store is unavailable by catching tenant cache completion check failures. (17143), closes 33696
  • Fixed multiple reloads on the first launch of the application after a neos run with the micro-frontends. (16150)
  • Fixed namespace generation for invalid alternate key message in entity view repository. (15762), closes 31691
  • Fixed navigation within UI views opened in micro-frontend mode. (16128)
  • Fixed neos migrate-metadata to fail fast with a clear error when module dependencies were missing (e.g., when neos restore had not been run). (15849), closes 31228
  • Fixed non-blocking errors in development when the proxy server tries to call Tenant Management while not in a multi-tenant mode. (16222), closes 32321
  • Fixed OpenAPI schema with RangeAttribute's default maximal value being now a valid decimal format. The previous format was causing NSwag to crash with JsonReaderException "Input string '7.922816251426434E+28' is not a valid decimal". Now, the maximum for a decimal in the swagger.json file is noted as 79228162514264337593543950335, which is the actual maximal value for a decimal. (16161), closes 32281
  • Fixed parallel loading of summaries alongside data requests and improved error handling by logging summary load failures without triggering blocking API error popups. (15999)
  • Fixed popup CSS class names to prevent style conflicts with the LockSelf browser extension. (16878), closes 33313
  • Fixed project file discovery to exclude bin and obj only at the project root, while still scanning nested folders with the same names. This resolved compilation issues when legitimate nested directories were named bin or obj. (16469), closes 32773
  • Fixed Pub/Sub processing so remote calls to Tenant Management GetClusterVersions now propagated the user. This prevented 403 permission errors when tenant cache was unavailable. (17213), closes 33858
  • Fixed reactivity initialization for remote UI views in micro-frontends. (17212), closes 33853
  • Fixed report generation toast download/print actions to use the application base URL instead of the reporting base URL, preventing invalid links when the NeosNotificationCenter module is not used. (16263), closes 32390
  • Fixed saving custom views when an active filter targeted a LocalizableString property. (16996), closes 33438
  • Fixed server method enum parameter default values by normalizing short enum member expressions to fully qualified values and comparing equivalent defaults consistently during synchronization. (15915), closes 31630
  • Fixed SignalR backward compatibility issue caused by tenant and user identifier casing normalization. (16731), closes 33026
  • Fixed SignalR notification serialization so dictionary argument keys kept their original casing instead of being converted to camelCase. (16743), closes 33157
  • Fixed special character ('"', '', '\r', '\n', '\t', '\f', '\b') escape in JSON values when data convertion. (15756), closes 31484
  • Fixed tab selection when opening a non-closeable frame. (16387), closes 30903, 32944, 32977
  • Fixed tenants cache rebuild triggering unnecessary subscriptions on business clusters. (16297)
  • Fixed the input-localizable-string modal closing immediately in merged datagrid cells when the first merged column used a lookup. (16880), closes 33315
  • Fixed the bad visual effect when saving a custom view. (15755)
  • Fixed the closure of the UI view of the view-container when closing the UI view that contains the view-container. (15755)
  • Fixed the issue of theme previews not displaying in the vsCode extension. (15843), closes 31800
  • Fixed the issue where the HTTP 200 code was being returned by the development proxy server instead of the 502 code when the backend was not responding. (16014), closes 31997
  • Fixed the Neos Studio MCP tool "get-information-about-neos" so that it does not return an excessive amount of information rejected by the latest versions of github copilot. (15897)
  • Fixed the NeosAI cluster Dapr app-id which was colliding with the identifier of the main application. (17200), closes 33805
  • Fixed the read-only lock icon display on filter condition chips in the filter bar. (16559), closes 32852
  • Fixed the test helper method AcceptEntityViewChanges() to properly call AcceptChanges() on entity views, ensuring that original values are correctly reset when changes are accepted. (15928), closes 31946
  • Fixed the width of the datagrid floating bar when actions have conditional visibility. (15815), closes 31884
  • Fixed transpilation of C# array declarations that used implicit array initializers without explicit array creation, such as string[] array = { "A", "B" }. (16593), closes 32864
  • Fixed TypeScript transpilation for nullable LocalizableString.DefaultTranslation accesses using the null-conditional operator. (17029), closes 33412
  • Fixed UI template IntelliSense by filtering snippet and attribute-value completions based on typed prefixes. (16255), closes 32375
  • Fixed UI views remaining non-idle when their initial data load failed, ensuring initialization completed consistently after errors. (16776), closes 33205
  • Fixed unbound Lookup required validation messaging when clearing input. (16429), closes 32672
  • Fixed unintended initialization of foreign keys from alternative keys when creating entities. (16798), closes 33219
  • Fixed user permissions cache invalidation on tenant update. (16125), closes 32015
  • Fixed ViewModel fields initialization after remote services initialization. (16272), closes 32400
  • Fixed visibility of actions on datagrid rows that were appearing behind frozen columns. (16281), closes 32403
  • Prevented default tenant lookups from triggering state store or database access in TenantsAccessor calls. (16297), closes 32402
  • Reduced the log severity of InternalBufferOverflowException events emitted by ProjectFileSearchCacheInvalidator watchers while preserving full cache invalidation on watcher errors. (16813), closes 33014
  • Removed the cast of OData quick search filter condition. (16947)
  • Removed the maximum length constraint of the Message property from the NeosUserNotification entity. (16868), closes 33297
  • Removed unnecessary using GroupeIsa.Neos.Application.Errors; directives from generated entity views to reduce compiler warnings. (15784), closes 31827
  • Restricted technical exception details in save error responses to development environments while keeping business-visible error details in API responses. (16757)
  • Stopped redirecting asset requests without a tenant to the tenant selection page and returned HTTP 400 instead. (17179), closes 33772
  • Update of the Dapr .NET SDKs to version 1.17.9. (17067)
  • Updated @module-federation/vite dependency to stabilize micro-frontends. (16558)
  • Updated quick search on LocalizableString properties to filter only on the current language. (16991)
  • Updated Stimulsoft library from version 2026.1.1 to version 2026.1.3 (fixes bugs with images). (15832), closes 31617

Previous releases

You can find the changelog of previous releases by clicking on the following links :