Breaking changes:
Removed the static entity; TrueShade now creates 0 AOs instead of 1.
Renamed input/output ThemeId to Theme (Text) for simpler configuration.
New Features:
TrueShade can now be initialized with an explicit AppName by calling TrueShade.Theme.Initialize(appName). When set, this name is used to generate both the localStorage key and the BroadcastChannel ID, allowing multiple front-ends under the same portal to share a common dark/light theme preference. If no parameter is provided, the previous behavior using the derived $OS_<module>$ key remains unchanged.
Compability:
The update is fully backward-compatible. Existing implementations using Initialize() without arguments will behave exactly as before, while new integrations can optionally specify an AppName to enable shared preferences.
Added validation for TrueShade availability
Implemented a safeguard to verify that window.TrueShade and window.TrueShade.Theme are defined before invoking public APIs.
Prevents runtime errors when the TrueShade library is not properly loaded.
Improves stability and ensures API calls are only made when the underlying objects are available.