Update docs and screenshots
CI / backend (pull_request) Canceled after 0s
CI / shell (pull_request) Canceled after 0s
CI / frontend (pull_request) Canceled after 0s
CI / arm64-smoke (pull_request) Canceled after 0s
CI / backend (push) Canceled after 0s
CI / shell (push) Canceled after 0s
CI / frontend (push) Canceled after 0s
CI / arm64-smoke (push) Canceled after 0s

This commit is contained in:
2026-07-25 10:26:29 +02:00
parent d6cda77aaf
commit 1f110866f5
170 changed files with 24657 additions and 3 deletions
+124
View File
@@ -0,0 +1,124 @@
# MIDI Bridge
## Formål
TuxDMX kan modtage normaliserede MIDI-events fra en ekstern Windows- eller Linux-maskine via en separat Python-bro i `tools/tuxdmx-midi-bridge/`.
Bridgen læser kun MIDI og sender events videre til TuxDMX. Den genererer aldrig DMX direkte.
## Eksisterende arkitektur før ændringen
- Sceneaktivering fandtes allerede via `POST /api/v1/scenes/{scene_slug}/activate`
- Scenerelease fandtes allerede via `POST /api/v1/scenes/{scene_slug}/release`
- Blackout fandtes allerede via `POST /api/v1/dmx/blackout` og `POST /api/v1/dmx/release-blackout`
- Effektstart/-stop fandtes allerede via `POST /api/v1/effects/{effect_slug}/trigger` og `POST /api/v1/effects/{effect_slug}/stop`
- Live status blev sendt ud via WebSocket på `/ws/live`
- Session/CSRF og API-tokenmodeller fandtes i backend, men MIDI-broen havde ingen eksisterende transport eller mappingmodel
## Nye backend-endpoints
### Admin / WebUI
- `GET /api/v1/integrations/midi/bridges`
- `GET /api/v1/integrations/midi/mappings`
- `POST /api/v1/integrations/midi/mappings`
- `PUT /api/v1/integrations/midi/mappings/{mapping_id}`
- `DELETE /api/v1/integrations/midi/mappings/{mapping_id}`
- `POST /api/v1/integrations/midi/mappings/{mapping_id}/test`
- `GET /api/v1/integrations/midi/tokens`
- `POST /api/v1/integrations/midi/tokens`
- `DELETE /api/v1/integrations/midi/tokens/{token_id}`
- `GET /api/v1/integrations/midi/learn`
- `POST /api/v1/integrations/midi/learn/start`
- `POST /api/v1/integrations/midi/learn/cancel`
### Bridge transport
- `POST /api/v1/integrations/midi/bridge/heartbeat`
- `POST /api/v1/integrations/midi/bridge/events`
Bridge-endpoints kræver `Authorization: Bearer <token>`.
## Datamodel
### `midi_bridges`
- `bridge_id`
- `device_name`
- `ip_address`
- `protocol_version`
- `online`
- `last_heartbeat_at`
- `last_event_at`
- `last_error`
- `last_event`
### `midi_bridge_tokens`
- `label`
- `token_hash`
- `bridge_id` valgfri låsning til ét bridge-id
- `scopes`
- `last_used_at`
- `revoked_at`
### `midi_mappings`
- `name`
- `enabled`
- `bridge_id`
- `device_name`
- `message_type`
- `channel`
- `number`
- `action`
- `target_type`
- `target_id`
- `mode`
- `minimum_value`
- `maximum_value`
## Understøttede actions
- `activate_scene`
- `deactivate_scene`
- `toggle_scene`
- `flash_scene`
- `blackout_on`
- `blackout_off`
- `blackout_toggle`
- `set_master_dimmer`
- `set_scene_intensity`
- `start_effect`
- `stop_effect`
## Modes
- `trigger`
- `toggle`
- `hold`
- `flash`
- `continuous`
## Sikkerhed
- Tokens returneres kun i klartekst ved oprettelse
- Efter lagring vises kun `token_preview`
- Bridge-token logges ikke
- Protokolversion skal være `1`
- Bridge kan låses til specifikt `bridge_id`
- Ugyldige eller tilbagekaldte tokens afvises med `401`
## Bridge-installation
Se den fulde bridgepakke i:
- `tools/tuxdmx-midi-bridge/README.md`
- `tools/tuxdmx-midi-bridge/config.example.yaml`
- `tools/tuxdmx-midi-bridge/tuxdmx-midi-bridge.service.example`
## Kendte begrænsninger
- Fysisk MIDI-hardware er ikke testet i denne workspace-session
- Bridge bruger HTTP, ikke indgående WebSocket, selv om UI stadig bruger WebSocket til live status
- `set_effect_speed` er ikke implementeret, fordi effektmotoren endnu ikke har et stabilt genanvendeligt speed-interface
+39 -1
View File
@@ -13,10 +13,29 @@ Denne manual beskriver den nuvaerende WebUI og de vigtigste arbejdsgange.
## Vigtigt
- Screenshots i denne mappe er genereret lokalt i `mock`-tilstand den 23. juli 2026.
- Screenshots i denne mappe er genereret lokalt i `mock`-tilstand den 25. juli 2026.
- De afspejler UI og flows, men er ikke bevis for fysisk hardwareafvikling.
- Fysisk hardwaretest skal stadig vurderes separat paa target-maskinen.
## Navigation
WebUI bruger nu en kompakt sidebar med grupperede undermenuer:
- `Overblik`
Dashboard og Live Desk
- `Live-kontrol`
Scener, Effekter og BPM
- `Lysopsaetning`
Fixtures, DMX Patch og Placering
- `Integrationer`
MixItUp og MIDI
- `Overvaagning`
DMX monitor og Telemetry
- `System`
Backup og Indstillinger
Kun den aktive sektion staar aaben ad gangen, saa UI ikke fylder unodigt meget i venstre side.
## Arkitektur kort fortalt
- `Universe 1`
@@ -186,6 +205,19 @@ ALSA-input skal vaelges i `Settings`, og derefter bruges BPM-siden til selve dri
Herfra kan du teste triggerflow og senere knytte stream-events til scener eller effekter.
## MIDI
`MIDI` samler den separate MIDI-bridge og dens mappings.
Herfra kan du:
- se aktive bridges
- oprette og tilbagekalde bridge-tokens
- bruge `MIDI Learn`
- mappe knapper og faders til scener, effekter, blackout og master
MIDI sender ikke DMX direkte. Den kalder backendens eksisterende scene-, effekt- og systemhandlinger.
## DMX monitor
`DMX monitor` viser DMX-aktivitet.
@@ -269,6 +301,12 @@ Fra denne workspace:
powershell -ExecutionPolicy Bypass -File .\scripts\sync-windows-deploy.ps1
```
Hvis du vil pushe dokumentation, screenshots og kode videre til TuxiNet Git:
```powershell
powershell -ExecutionPolicy Bypass -File .\scripts\push-git-tuxinet.ps1 -InitIfNeeded -SetOrigin -StageAll -Commit -CommitMessage "Update docs and screenshots" -Push
```
### Linux target-host
```bash
+2 -1
View File
@@ -13,8 +13,9 @@ Indhold:
Vigtigt:
- Screenshots i denne mappe er genereret den 23. juli 2026 fra den lokale WebUI i `mock=1` mode.
- Screenshots i denne mappe er genereret den 25. juli 2026 fra den lokale WebUI i `mock=1` mode.
- De viser den aktuelle UI-struktur og sideopbygning.
- De afspejler den kompakte, grupperede navigation med undermenuer.
- De er ikke dokumentation for fysisk Raspberry Pi-, OLA-, USB-DMX- eller lys-hardwaretest.
- Hardwareafgraensninger og manuel hardwarevalidering hoerer stadig hjemme i [HARDWARE-VALIDATION.md](../HARDWARE-VALIDATION.md).
+6 -1
View File
@@ -1,6 +1,6 @@
# Screenshots
Dette er et samlet screenshotsaet af TuxDMX WebUI genereret den 23. juli 2026.
Dette er et samlet screenshotsaet af TuxDMX WebUI genereret den 25. juli 2026.
Kilde:
@@ -10,6 +10,7 @@ Kilde:
Formaal:
- vise sideopbygning
- vise den kompakte navigation med grupperede undermenuer
- understoette manualen
- give et hurtigt visuelt overblik over systemet
@@ -51,6 +52,10 @@ Formaal:
![MixItUp](./screenshots/mixitup.png)
### MIDI
![MIDI](./screenshots/midi.png)
### DMX monitor
![DMX monitor](./screenshots/dmx-monitor.png)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 116 KiB

After

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

After

Width:  |  Height:  |  Size: 59 KiB