A Sunday night coding stream? Why not! Got my first test passing this morning, so let's write more tests and see what breaks.
https://github.com/JasonBock/Transpire/issues/44
#dotnet #csharp
A Sunday night coding stream? Why not! Got my first test passing this morning, so let's write more tests and see what breaks.
https://github.com/JasonBock/Transpire/issues/44
#dotnet #csharp
Windows 11 has a full-fledged dark theme, and it works well for the most part, but it doesn’t really apply to legacy pop-ups, such as the Properties tab. Windows Latest has learned that Microsoft is preparing to roll out a dark-themed Properties tab, and now a senior executive has confirmed the plans.
In a response to developer Albacore and Microsoft watcher Zac, Marcus Ash, who leads Design and Research for Windows and Devices, confirmed that a major dark mode upgrade is in progress.
According to Marcus Ash, Microsoft is building tools to bring dark mode to more areas of Windows 11 and plans to keep improving consistency. The company won’t make commitments just yet, but there are also plans to cover legacy tools like the Registry Editor.
“We are pushing to get our tools/techniques to the point where we can get dark theme into more areas across Windows. No timelines to commit to yet for Regedit. As we make progress in various legacy system panels/dialogs, we will keep improving consistency,” Marcus Ash wrote in a X post.
However, Microsoft may be able to roll out dark mode across all system-level dialogs and pages in Windows, but it can’t force third-party apps to use dark mode, as that might end up breaking the interface.
This means third-party tabs that haven’t adopted dark theme will continue to appear in light mode, but that doesn’t mean Microsoft has no plans to encourage more third-party developers to better support Windows 11 theming.
“Third-party tabs that haven’t adopted dark theme support will render in light. We’re focused on improving platform support to make dark mode easier for developers to adopt across their tabs,” Microsoft’s executive noted in another X post.
Microsoft won’t tell us when major dark mode improvements will roll out, but it’s definitely coming later this year.
Right now, if you use Windows 11 in dark mode and go to different areas of the operating system, such as the Properties tab in File Explorer, you’ll see a light background.

You might argue how difficult it is to paint every corner of File Explorer with a dark background when File Explorer itself runs in dark mode. Well, it’s not as easy as you might think, and it’s largely because of how Windows is built.
Windows does not draw every interface element from the same shared theme pipeline, so dark mode does not automatically apply consistently across all components.
As a result, most legacy features in Windows still do not support dark mode. If you open Bluetooth & devices settings, then click on Send and receive files, Windows will open a legacy dialog that still uses a light background.

Or if you go to Device Manager and try to update one of the drivers, you’re only going to come across light-themed pop-ups.

I am only sharing a few examples, but there are hundreds of pop-ups in Windows still using a light background, or even design controls from Windows 3.1.

In December 2025, the Patch Tuesday update rolled out dark mode across most operations dialogs, including the dialog that shows up when you try to delete a large folder or copy-paste duplicate files or folders.
Operations dialogs dark mode update also includes error dialogs, which appear when you try to delete folders that you shouldn’t, such as the Windows folder.

Likewise, Microsoft also rolled out dark mode to the progress window, which appears when you try to move large files or folders from one location to another.
This change is available on all PCs running Windows 11 25H2/24H2 with recent cumulative updates, and if you haven’t tested it thoroughly yet, I can confirm dark mode shows up across these pop-ups:
Other dialogs with dark mode support include zip pop-ups and security warnings. It’s only going to get better from here, as the company has confirmed the big upgrade and is already testing dark mode for Windows Run (legacy).
The post Microsoft confirms Windows 11 dark mode upgrade, with plans for third-party apps and Registry Editor appeared first on Windows Latest

As anybody knows who follows the Critter Stack on our Discord server, I’m uncomfortable with the rapid pace of releases that we’ve sustained in the past couple quarters and I think I would like the release cadence to slow down. However, open issues and pull requests feel like money burning a hole in my pocket, and I don’t letting things linger very long. Our rapid cadence is somewhat driven by JasperFx Software client requests, some by our community being quite aggressive in contributing changes, and our users finding new issues that need to be addressed. While I’ve been known to be very unhappy with feedback saying that our frequent release cadence must be a sign of poor quality, I think our community seems to mostly appreciate that we move relatively fast. I believe that we are definitely innovating much faster and more aggressively than any of the other asynchronous messaging tools in the .NET space, so there’s that. Anyway, enough of that, here’s a rundown of the new releases today.
It’s been a busy week across the Critter Stack! We shipped coordinated releases today across all five projects: Marten 8.27, Wolverine 5.25, Polecat 1.5, Weasel 8.11.1, and JasperFx 1.21.1. Here’s a rundown of what’s new.
For teams operating at extreme scale — we’re talking hundreds of billions of events — Marten now supports a sharded multi-tenancy model that distributes tenants across a pool of databases. Each tenant gets its own native PostgreSQL LIST partition within a shard database, giving you the isolation benefits of per-tenant databases with the operational simplicity of a managed pool.
Configuration is straightforward:
opts.MultiTenantedWithShardedDatabases(x => { // Connection to the master database that holds the pool registry x.ConnectionString = masterConnectionString; // Schema for the registry tables in the master database x.SchemaName = "tenants"; // Seed the database pool on startup x.AddDatabase("shard_01", shard1ConnectionString); x.AddDatabase("shard_02", shard2ConnectionString); x.AddDatabase("shard_03", shard3ConnectionString); x.AddDatabase("shard_04", shard4ConnectionString); // Choose a tenant assignment strategy (see below) x.UseHashAssignment(); // this is the default });
Calling MultiTenantedWithShardedDatabases() automatically enables conjoined tenancy for both documents and events, with native PG list partitions created per tenant.
Three tenant assignment strategies are built-in:
IDatabaseSizingStrategy for balancing by row count, disk usage, or any other metric.The admin API lets you manage the pool at runtime: AddTenantToShardAsync, AddDatabaseToPoolAsync, MarkDatabaseFullAsync — all with advisory-locked concurrent safety.
See the multi-tenancy documentation for the full details.
For data migrations, test fixture setup, load testing, or importing events from external systems, Marten now supports a bulk COPY-based event append that uses PostgreSQL’s COPY ... FROM STDIN BINARY for maximum throughput:
// Build up a list of stream actions with events var streams = new List<StreamAction>(); for (int i = 0; i < 1000; i++) { var streamId = Guid.NewGuid(); var events = new object[] { new OrderPlaced(streamId, "Widget", 5), new OrderShipped(streamId, $"TRACK-{i}"), new OrderDelivered(streamId, DateTimeOffset.UtcNow) }; streams.Add(StreamAction.Start(store.Events, streamId, events)); } // Bulk insert all events using PostgreSQL COPY for maximum throughput await store.BulkInsertEventsAsync(streams);
This supports all combinations of Guid/string identity, single/conjoined tenancy, archived stream partitioning, and metadata columns. When using conjoined tenancy, a tenant-specific overload is available:
await store.BulkInsertEventsAsync("tenant-abc", streams);
See the event appending documentation for more.
UseIdentityMapForAggregatesIsOneOf with array parameters now generate correct SQLOwnsOne().ToJson() support (via Weasel 8.11.1) — schema diffing now correctly handles JSON column mapping when Marten and EF Core share a databaseThis is a big release with 12 PRs merged — a mix of bug fixes, new features, and community contributions.
Previously, MassTransit and NServiceBus interoperability was only available on Azure Service Bus queues. With 5.25, you can now interoperate on ASB topics and subscriptions too — making it much easier to migrate incrementally or coexist with other .NET messaging frameworks:
// Publish to a topic with NServiceBus interop opts.PublishAllMessages().ToAzureServiceBusTopic("nsb-topic") .UseNServiceBusInterop(); // Listen on a subscription with MassTransit interop opts.ListenToAzureServiceBusSubscription("wolverine-sub") .FromTopic("wolverine-topic") .UseMassTransitInterop(mt => { }) .DefaultIncomingMessage<ResponseMessage>().UseForReplies();
Both UseMassTransitInterop() and UseNServiceBusInterop() are available on AzureServiceBusTopic (for publishing) and AzureServiceBusSubscription (for listening). This is ideal for brownfield scenarios where you’re migrating services one at a time and need different messaging frameworks to talk to each other through shared ASB topics.
NamingSource.FromHandlerType names listener queues after the handler type instead of the message type, useful for modular monolith scenarios with multiple handlers per messageFromHeader, FromClaim, and FromMethod value sources for binding handler parameters to HTTP headers, claims, or static method return valuesInvokeTracingMode.Full emits the same structured log messages as transport-received messages, with zero overhead in the default pathTenantedSender now correctly acknowledges messages after successful sendPublishAsync[AsParameters] type are no longer silently skipped--start flag for legacy hosting patternsnvarchar identity columns (thanks @kakins!)Polecat — the Critter Stack’s newer, lighter-weight event store option — had a big jump from 1.2 to 1.5:
SingleStreamProjection<TDoc, TId> with strongly-typed ID supportFetchForWritingFetchForWriting with UseIdentityMapForAggregates and strongly typed IDsOwnsOne().ToJson() support — Weasel’s schema diffing now correctly handles EF Core’s JSON column mapping, preventing spurious migration diffs when Marten and EF Core share a databaseAutoStartHost is true — fixes an issue where unrecognized CLI flags would cause errors during host auto-startIEventSlicer testsAll packages are available on NuGet now. The Marten and Wolverine releases are fully coordinated — if you’re using the Critter Stack together, upgrade both at the same time for the best experience.
As always, please report any issues on the respective GitHub repositories and join us on the Critter Stack Discord if you have questions!
Learn multi-model support in GitHub Copilot SDK: configure GPT-5 and Claude in C#, compare capabilities, build model-agnostic .NET apps.