On a side note, after plowing through most of OWLNext backlog of bugs, here is screenshot of Claude Code usage.
OwlExt::TBmpMenu does not use system colors properly
Fixed on the trunk in [r8996]. TBmpMenu::DrawItem now uses the colors that Windows uses for native menus: Menu bar: with flat menus enabled (SPI_GETFLATMENU, the default since XP), top-level items are drawn on COLOR_MENUBAR. A selected item is filled with COLOR_MENUHILIGHT and outlined with COLOR_HIGHLIGHT; this applies to pop-up items too. With flat menus disabled, Windows draws the bar with COLOR_MENU, so that case is unchanged. This is why the fix tests the flat menu setting instead of always...
TRACE_FUNCTION does not support multi-threading
Fixed in [r8995] on the trunk. The call nesting level used for indenting the TRACE_FUNCTION family of messages (TraceIndent in "checks.cpp") is now a thread_local variable instead of a global shared by all threads, so each thread's function trace messages are indented by that thread's own nesting level. Testing: A console test runs two threads that enter and leave three nested TRACE_FUNCTIONX scopes in lock-step, and checks the exact messages each thread emits. It failed before the fix (the second...
Diagnostics are unreliable during start-up and shut-down
Fixed in trunk in [r8994]. I confirmed the problem on trunk before fixing it. In a static-library build, the linker initializes the application's objects before the library's. So a user global that traced from its constructor saw a zero-initialized Def group, and the message was silently discarded. A trace from its destructor went to a group that had already been destroyed. That worked only by accident: the group had already been removed from the list of groups, and the behaviour was undefined. The...
Also note that TDatagramSocket has been moved to OwlExt.