# update_setup – Installation & Update der Ulanzi-Deck-Software

Kompaktes Setup-Paket für die U-Studio Deck-Konfiguration auf einem oder
mehreren Rechnern. Enthält alles Nötige, um die GUI, den Daemon und die
Hilfsskripte frisch zu installieren oder auf den letzten Stand zu bringen.

## Inhalt

| Pfad                       | Bedeutung                                                        |
|----------------------------|------------------------------------------------------------------|
| `gui/U-Studio.gambas`      | Kompiliertes GUI-Binary (Gambas3-App)                            |
| `daemon/`                  | Python-Daemon `ulanzi-studio-niri` (Quelltext inkl. `pyproject.toml`, `uv.lock`, Tests) |
| `scripts/deckstart.sh`     | Startet Daemon + Button-Monitor (auto-detect des hidraw-Geräts)  |
| `scripts/deckmonitor.sh`   | Button-Monitor (wird von deckstart.sh benutzt)                   |
| `scripts/deckreader.sh`    | Zusätzliches HID-Lesehilfs-Skript                                |
| `scripts/sensors.sh`       | Liest GPU/CPU/Wasser-Kühler-Sensoren per jq-JSON                 |
| `scripts/fps.sh`           | FPS-Messung für Deck-Anzeige                                     |
| `scripts/ALLE_SENSOREN.sh` | Manueller Sensor-Selbsttest                                       |
| `ulanziread/ulanziread`    | Kompiliertes C-Binary zum Lesen von Tastendrücken per HID        |
| `ulanziread/ulanziread.c`  | Quelltext dazu                                                    |
| `udev/99-ulanzi-uaccess.rules` | hidraw-Zugriff ohne root (USB `2207:0019`)                    |
| `config.toml.example`      | Beispiel-`config.toml` (nur Kopie, falls noch keine existiert)   |
| `VERSION`                  | Gebauter Stand (GUI/Daemon/Datum)                                |

## Neuinstallation

```bash
./install.sh
```

Installiert (bei Bedarf mit sudo):
- Arch-Pakete `gambas3` (Gruppe, für die GUI-Runtime), `jq`, `lm_sensors`, `uv`
- udev-Regel `99-ulanzi-uaccess.rules` für hidraw ohne root
- Daemon `ulanzi-studio-niri` via `uv tool install ./daemon`
- GUI-Binary nach `~/.local/bin/U-Studio`
- Hilfsskripte nach `~/.config/ulanzi-niri/` (deckstart.sh + ulanziread)
  und nach `~/.local/bin/` sowie `sensors.sh`/`fps.sh` nach `$HOME`
- `config.toml` aus dem Beispiel, **falls** noch keiner existiert
- startet das Deck und testet, ob es gefunden wird

## Update

```bash
./update.sh
```

- stoppt GUI (`pkill -x U-Studio`), Daemon und Monitor
- aktualisiert den Daemon (`uv tool install --force ./daemon`)
- ersetzt alle Dateien (aber **nie** `~/.config/ulanzi-niri/config.toml`
  und **nie** `~/.config/gambas3/U-Studio.conf`)
- startet das Deck neu

## Wichtige Hinweise

- **GUI und Daemon immer zusammen aktualisieren.** Der Daemon verarbeitet
  Live-Updates aus `/tmp/ulanzi-update.json` (Partial-Button-Pushes, Opcode
  0x000D). Ein alter Daemon OHNE diesen Watcher ignoriert die Datei still und
  die Sensorbilder aktualisieren sich nicht mehr.
- config.toml: Seiten, Buttons, Icons und Kommandos bleiben beim Update
  erhalten. Wunsch ist eine Anpassung im Beispiel (`config.toml.example`),
  der erst bei der Neuinstallation (fehlendes config.toml) greift.
- U-Studio liest die Sensoren aus `$HOME/sensors.sh`; die GUI kopiert sich
  `sensors.sh`/`fps.sh` bei Bedarf auch selbstverständlich selbst.
- Logs: `/tmp/ulanzi-daemon.log` (Daemon) und `/tmp/ulanzi-debug.log`
  (Start/Monitor); GUI-Diagnose: `/tmp/ulanzi-gui.log`.

## Manuell / Troubleshooting

```bash
# Deck neu starten
~/.config/ulanzi-niri/deckstart.sh

# Daemon manuell (falls uv-Tool Update nötig ist)
uv tool install --force ./daemon

# Hilfe: Daemon-Log live
tail -f /tmp/ulanzi-daemon.log

# Sensoren prüfen
~/sensors.sh
```