Gives a standalone window the OPAL chat — the Light backing for the OpalChatHost feature that NodeWindow composes too (§SAL-2.2, P2, §ACW-2 slice 5). More...
| Header: | #include <StandaloneOpalController> |
| Inherits: | QObject |
The LLM stack the overlay needs comes **from the opalContext facility**, never by inlining an LLMRegistry / LLMManager standup at the call site (D8, retiring the ad-hoc standup construct's toggleOpalChat grew). Where no backing is registered yet, the controller builds the node-free StandaloneOpalContext once — keyed off the app's base dir (§SAB) — and publishes it as the opalContext facility, so the standup happens in one place and every consumer (button badge, overlay banner) shares the same OpalStatusContext readiness state.
Until 2026-10-08 this class also built, wired and toggled the overlay itself, a second copy of NodeWindow::toggleChatOverlay(). That job is OpalChatHost's now, in libopal, and both windows compose it. This class keeps what is standalone: where the backing comes from. The union also brought the two 2026-06-11 fixes here — the OPAL button now follows a chat-driven run and a permission request in standalone apps too.