Compatibility
Global Scope Scripts
Scripts used to be stored in the global scope. If a script existed called rainbow,
it could be called like this:
rainbow:start()This has the issue of polluting the global scope with every script name. That is why
they were moved into Scripts., the same code now looks like this:
Scripts.rainbow:start()Since this is a breaking change, multiple things exist to allow for compatibility.
builtin/compatibility/MakeScriptNamesGlobalScope Addon
Since removing scripts from the global scope, having a translation layer does not work, instead this addon sets a flag to revert almost all of the changes.
It makes scripts exists in the global scope again.
light_mixer/code/+ removal
The MQTT topics light_mixer/code/+ were removed and replaced
with multiple, more specific. The old system has all of these execute the published
code directly, however in practice light_mixer/code/run is the main one used.
light_mixer/code/run tries to translate
the code to support the move to Scripts.. The start
and stop topics exists as a bridge;
they support both Scripts. and Global Scope, and switch their behavior to match.