All notable changes to the Noundry platform
The largest Noundry release to date — every library and CLI tool published to NuGet in a single coordinated release.
ConfigureAwait(false) across all async methods to prevent deadlocksInterlocked.CompareExchange across all providersGet<T> and GetAll<T> shared same cache, causing wrong rows after GetAll was calledConcurrentDictionary to prevent corruption under concurrent accessusing keyword in 4 locations to prevent resource leaksEXCLUDED.column syntax for MySQL; now uses VALUES(column)ConcurrentDictionary - no longer recomputed on every CRUD callList<T>.GetRange()Contains, StartsWith, EndsWith expressions with ESCAPE '\' clauseMemoryQueryCache with lock around HashSet mutationsTuxedoActivitySource, batch upsert in bulk operations, enhanced SQL identifier validation, and .NET 10 supportFind() expressions and Unit of Work transaction coordinationMemoryQueryCachehttps://api.noundry.ai as a BYOK (Bring Your Own Key) serviceX-API-KEY header; gateway relays to OpenAI/Anthropic/Google with no markupanthropic/claude-sonnet-4)Headers.Add() to Headers.Append() in streaming responsesEndOfStream with proper async pattern in all providersaigw.noundry.ai to api.noundry.aiToonExtensions class with ToToon() extension methods for DataTable, DataSet, and IEnumerable<T>