Tivoli Matrix Library U2.1
==========================

Requires:
- ESP32
- ProjectUNION 0.2.2
- NmraDcc
- FastLED

ProjectUNION now owns the reusable DCC layer:
- GPIO initialization
- NmraDcc process loop
- accessory packet parser
- CS2/WDP address correction (-4)
- packet counter and diagnostics
- common DCC status page

Tivoli Matrix owns:
- DCC address mapping
- matrix and LED strip effects
- project web pages
- brightness, orientation and sign text

Legacy migration
----------------
At first start, the sketch reads Tivoli Matrix U1.4 from:

  Preferences namespace: tivoli
  keys: ver, wifi, cfg

and copies the configuration into ProjectUNION.
The old configuration is not deleted.

First test:
Upload by USB and verify WiFi, addresses and LED settings before testing DCC.


Changes in U2.1
---------------
- Uses ProjectUNION 0.2.2.
- DCC callback linkage fixed in the library.
- Tivoli logic and migrated configuration are unchanged.


Changes in U2.2
--------------------------------
- Updated for ProjectUNION 0.2.2.
- Removed the hardcoded UNION Core version from UnionIdentity.
- The displayed Core version now comes directly from the installed library.
- Project functionality and stored configuration are unchanged.


Changes in U2.3 Modular
-----------------------
- Updated for the modular ProjectUNION architecture.
- Uses ProjectUNION Core 0.3.1.
- Uses ProjectUNION DCC 0.3.0.
- Does not include or depend on ProjectUNION MQTT or PubSubClient.
- Matrix, strip, DCC, web configuration and OTA functionality are unchanged.


Changes in U2.4 Language
------------------------
- Project-specific Tivoli, DCC-address and Status texts translated.
- Danish, English and German supported.
- No ProjectUNION libraries were changed.
- No functional changes.

Changes in U2.5 Brightness
--------------------------
- Tivoli main brightness is now adjusted with a slider (1-255).
- LED strips A, B and C each have their own brightness slider (0-255).
- Strip brightness is stored separately, so existing Tivoli configuration remains compatible.
- On first start after U2.4, each strip inherits the current Tivoli brightness.
- Matrix brightness and strip brightness are independent.
