Die Host-Seite ist jetzt auf eine gemeinsame software-first API ausgerichtet. In [control.rs](</c:/Users/janni/Documents/RFP/Infinity_Vis _Rust/crates/infinity_host/src/control.rs>) steckt jetzt das stabile gemeinsame Modell für Snapshots, Commands, Pattern-Katalog, Presets, Gruppen, Parameter, Preview und Übergänge. Darauf sitzen die neue Szenen-/Pattern-Schicht in [scene.rs](</c:/Users/janni/Documents/RFP/Infinity_Vis _Rust/crates/infinity_host/src/scene.rs>) und der simulationsbasierte Host-Service in [simulation.rs](</c:/Users/janni/Documents/RFP/Infinity_Vis _Rust/crates/infinity_host/src/simulation.rs>).

Der neue Core kann jetzt softwareseitig schon:
- Pattern-Katalog mit `solid_color`, `gradient`, `chase`, `pulse`, `noise`, `walking_pixel`
- Preset-Recall, Gruppen-Targeting, Parameteränderungen und Übergänge
- simulierte Preview-Daten für alle 18 Outputs
- denselben API-Zugriff für CLI, Engineering-GUI und später Web-UI / grandMA-Adapter

Zusätzlich gibt es im Host-CLI jetzt `snapshot`, also eine direkte JSON-Sicht auf den gemeinsamen Host-State über [main.rs](</c:/Users/janni/Documents/RFP/Infinity_Vis _Rust/crates/infinity_host/src/main.rs>).

**Oberflächen**
Die technische lokale GUI bleibt bestehen und hängt jetzt auf der neuen gemeinsamen API. In [app.rs](</c:/Users/janni/Documents/RFP/Infinity_Vis _Rust/crates/infinity_host_ui/src/app.rs>) zeigt sie weiter Mapping/Status/Testmuster, ergänzt um Engine-/Szene-/Übergangsstatus. Sie bleibt bewusst Engineering-orientiert und ist nicht zur kreativen Hauptoberfläche aufgeblasen worden.

Die Beispielkonfiguration in [project.example.toml](</c:/Users/janni/Documents/RFP/Infinity_Vis _Rust/config/project.example.toml>) ist jetzt auch als Software-Spielwiese brauchbarer: mehr Gruppen, mehr kreative Presets und bessere Basis für Look-Entwicklung ohne echte Node-Aktivierung. Die neue API-Ausrichtung ist in [host_api.md](</c:/Users/janni/Documents/RFP/Infinity_Vis _Rust/docs/host_api.md>) und [architecture.md](</c:/Users/janni/Documents/RFP/Infinity_Vis _Rust/docs/architecture.md>) dokumentiert.

**Verifikation**
`cargo check` und `cargo test -q` laufen erfolgreich. Zusätzlich läuft `cargo run -p infinity_host -- snapshot --config config/project.example.toml` und liefert den gemeinsamen Host-Snapshot mit Katalog, aktiver Szene, Preview, Node- und Panelstatus.

Der nächste sinnvolle Schritt ist jetzt ein echter API-Adapter fuer die kommende Web-UI, also HTTP/WebSocket auf genau diesem Host-Core statt einer frontend-spezifischen Parallelarchitektur.
This commit is contained in:
2026-04-17 11:39:56 +02:00
parent dde35551be
commit 9457666fd6
15 changed files with 6371 additions and 384 deletions

View File

@@ -285,6 +285,30 @@ members = [
{ node_id = "node-06", panel_position = "top" },
]
[[topology.groups]]
group_id = "middle_panels"
tags = ["row_like", "hardware_safe"]
members = [
{ node_id = "node-01", panel_position = "middle" },
{ node_id = "node-02", panel_position = "middle" },
{ node_id = "node-03", panel_position = "middle" },
{ node_id = "node-04", panel_position = "middle" },
{ node_id = "node-05", panel_position = "middle" },
{ node_id = "node-06", panel_position = "middle" },
]
[[topology.groups]]
group_id = "bottom_panels"
tags = ["row_like", "hardware_safe"]
members = [
{ node_id = "node-01", panel_position = "bottom" },
{ node_id = "node-02", panel_position = "bottom" },
{ node_id = "node-03", panel_position = "bottom" },
{ node_id = "node-04", panel_position = "bottom" },
{ node_id = "node-05", panel_position = "bottom" },
{ node_id = "node-06", panel_position = "bottom" },
]
[[transport_profiles]]
profile_id = "scene_default"
mode = "distributed_scene"
@@ -335,3 +359,38 @@ speed = 1.0
intensity = 1.0
blackout = false
[[presets]]
preset_id = "ocean_gradient"
target_group = "all_panels"
transition_ms = 500
[presets.scene]
effect = "gradient"
seed = 1337
palette = ["#041F4A", "#0F8AA6", "#7FFFD4"]
speed = 0.35
intensity = 0.82
blackout = false
[[presets]]
preset_id = "amber_chase_top"
target_group = "top_panels"
transition_ms = 120
[presets.scene]
effect = "chase"
seed = 2026
palette = ["#FF7A00", "#FFD166"]
speed = 1.40
intensity = 1.0
blackout = false
[[presets]]
preset_id = "deep_pulse_bottom"
target_group = "bottom_panels"
transition_ms = 380
[presets.scene]
effect = "pulse"
seed = 404
palette = ["#240046", "#5A189A", "#9D4EDD"]
speed = 0.80
intensity = 0.88
blackout = false