# Dynamischer Modus

Die Anwendung aktiviert den Loader vor dem Aufbau der Oberfläche:

```cpp
aura::ui::Loader::global().enableFromEnvironment(); // AURA_DIR
```

Mit `AURA_DIR` wählst du die Quelldateien. Ohne Wert verwendet die Anwendung ihre kompilierte UI:

```bash
AURA_DIR=$PWD/ui ./my-app
AURA_DIR= ./my-app
```

- **Einlesen:** Vor jedem Aufbau prüft der Loader die Änderungszeiten aller `*.aura` im Verzeichnis und seinen Unterordnern und liest bei Änderungen alle neu ein. Eine Änderung erscheint, sobald der Dialog das nächste Mal öffnet.
- **Gleiches Verhalten:** Der Interpreter (`libs/aura-ui/src/builder/`) folgt Schritt für Schritt den Regeln des Generators: Reihenfolge der Properties, aufgeschobene Properties, `pressed`-Gruppen, Bindungen, Neuaufbau mit Anker und Guards.
- **Fehlerfall:** Fehlt der Dialog im Verzeichnis oder enthält eine Datei einen Fehler, kommt eine Warnung ins Log (`W [aura]`) und die kompilierte Fassung erscheint. Teilweise gebaute Nodes werden vorher entfernt. Weil das still geschieht, gehört beim Arbeiten ein Blick ins Log dazu.
- **Versionen:** Passen Datei und kompilierte App nicht zusammen (z. B. ein neues Argument), meldet der Loader „no value for the argument“ und nimmt die kompilierte Fassung.
- **Verfügbarkeit:** nur in Devel-Builds.
- **Einschalten:** `aura::ui::Loader::global().enableFromEnvironment("AURA_DIR")` (Standardname `AURA_DIR`): Verzeichnis aus der Umgebung, Fehler und Hinweise ins Log.
- **Ohne Programm:** `tools/aura-view` zeigt Dialoge und Screens ohne den Ablauf des Programms an, auch live beim Tippen in VS Code ([aura-view.md](aura-view.md)). Für Dialog-Argumente setzt es Platzhalter ein (`"test-<name>"`, `0`, `false`; Listen von Datensätzen mit einem Eintrag).
