[AI Agents] Added configurable prompt cache key per AI connection string with provider-specific defaults
[AI Agents] Added Google Gemini provider support for AI agent conversations
[AI Agents] Added remote attachment support for GenAI ETL tasks with deferred download and caching
[AI Agents] Fixed concurrent read of blittable objects using a shared context in test GenAI script functionality which could result in AVE
[AI Agents] Fixed race condition in GenAI process stop where _longRunningWork could be null, causing incorrect IsRunning state
[Backup/Restore] Fixed TimeSeriesDeletedRanges not being marked as processed during snapshot backup and restore
[Bulk Insert] Fixed race condition when writing attachments to the request stream during bulk insert
[Bulk Insert] Fixed compression stream disposal during bulk insert to ensure final footer bytes are written
[Certificates] Added ability to disable client certificates while preserving them for later re-enabling
[Certificates] Fixed authentication to trust the server's own certificate before checking expiration
[Certificates] Fixed certificate disposal and PKCS12 handling on macOS in SecretProtection and CertificateUtils
[Certificates] Fixed MAC verification failure during PKCS12 import on macOS
[Cluster] Fixed _hasMoreTombstones flag not being reset between cleanup iterations in ClusterObserver
[Corax] Fixed faceted queries with WHERE clause to use indexed path via HashSet intersection and term materialization
[Corax] Fixed incorrect highlighting terms when using range filters in Corax query builder
[Databases] Fixed double deletion of database state when removing a node from a database group
[Debug] Added per-thread IO statistics (IOPS and throughput) to the Threads Runtime debug view on Linux
[Debug] Added download capability for stack traces from the admin debug endpoint, named with node tag and timestamp
[Debug] Fixed Raven.Debug path resolution in development environments using hardcoded relative path probing
[Debug] Fixed IO stats aggregation on the threads view by computing totals client-side from cumulative server counters
[ETL] Fixed ETL processing failure when encountering unsupported incremental time series by skipping them and alerting on that
[ETL] Fixed tombstone filtering for artificial documents from OutputReduceToCollection to ensure correct ETL replication
[ETL] Fixed Raven ETL document ID generation with an empty DocumentIdPostfix to avoid duplicate path separators
[Indexing] Fixed boolean operators and added implicit bool conversion for DynamicNullObject in static indexes
[Indexing] Fixed aliasing removal for spatial.distance and corrected dynamic OrderByDistance query generation
[Indexing] Reduced GC pressure in map-reduce indexing by replacing a redundant HashSet with a bool flag in MapReduceResultsStore and releasing stale transaction references in MapReduceIndexingContext.Dispose
[Indexing] Added Indexing.Querying.Corax.NullFirst sort option for ORDER BY queries handled by Corax search engine
[Indexing] Reduced managed memory retention by releasing stale LowLevelTransaction references held by Lucene's per-thread segment reader cache and bloom filters after indexing batches
[Licensing] Fixed license activation failure on an existing bootstrapped instance
[Monitoring] Added alert when machine core count significantly exceeds the licensed core limit, indicating potential GC thread contention
[Monitoring] Fixed IO stats reporting on Linux when the data path contains multi-level symlinks by using realpath() instead of readlink()
[Patching] Added ability to copy attachments in JavaScript patch scripts
[Querying] Added now() and today() built-in RQL time functions
[Querying] Added WHEN conditional expression support in RQL queries
[Querying] Fixed experimental Lucene caching query feature which resulted in returning invalid query results
[Performance] Optimized query quest handler by reducing unnecessary async state machine allocations
[Replication] Fixed TCP connection options resource leak in ShardedIncomingReplicationHandler
[Revisions] Added support for resuming revision operations from a specified etag
[Setup] Fixed documentation links in readme files
[Setup] Improved license key validation, error handling, and Skip license support in Setup Wizard
[Traffic Watch] Added filtering by request/response size in Traffic Watch view
[Traffic Watch] Added WithTag query customization and enhanced URL handling in Traffic Watch view
[Vector Search] Added filtered vector search support in Corax, enabling HNSW approximate and exact similarity searches constrained to a query filter predicate
[Vector Search] Added meaningful exception when performing vector search with a disabled embeddings generation task
[Vector Search] Added order by score() support for vector search queries in sharded databases
[Vector Search] Fixed disposal of nodesIdsToScan allocations in exact vector search
[AI Agents] Fixed Handle overload selection for async handlers by changing the existing Handle Task overload to accept Task<TResult> instead of Task<object>. This is a breaking change, but the previous API was effectively wrong (it caused Task<T> handlers to bind to the object overload and treat the Task itself as the response)
[AI Agents] Stored action responses by toolId (dictionary) and threw on duplicates to enforce one response per tool invocation (prevents accidental AddActionResponse inside Handle / double replies)