# Codex Worklog ## 2026-04-20 - Creative Surface kompakter und Preview-FPS-Pruefung - Geaenderte Dateien: - `web/v1/styles.css` - `web/v1/app.js` - `crates/infinity_host/src/runtime.rs` - `docs/architecture.md` - Fachliche Aenderungen: - Creative Surface kompakter aufgestellt, damit die 18 Preview-Panels im 6x3-Raster besser vollstaendig sichtbar bleiben. - Frontend-Preview-Drosselung von ca. 11 fps entfernt und auf eine ruhige `requestAnimationFrame`-basierte Taktung mit Host-orientiertem Ziel-FPS umgestellt. - Host-Preview-Schedule von 15 Hz auf 60 Hz angehoben, ohne neue Architektur einzuziehen. - Dokumentation des Preview-Ziels auf den aktuellen Stand gebracht. - Gelaufene Tests: - `cargo fmt --check` - `cargo test -q -p infinity_host` - `cargo test -q -p infinity_host_api --test contract` - lokaler API-Check gegen temporaeren Host auf `127.0.0.1:9002` mit bestaetigtem `engine.preview_hz = 60` - kein echter Browser-Handtest in dieser CLI-Umgebung moeglich - Bewusste Abweichungen zur Python-Version: - Kein Canvas-Preview-Rewrite in diesem Schritt; die bestehende DOM/CSS-Preview bleibt erhalten und wird nur verschlankt sowie render-seitig entdrosselt. ## 2026-04-20 - Diskretere Preview-Wirkung und weniger Preview-Clutter - Geaenderte Dateien: - `crates/infinity_host/src/scene.rs` - `crates/infinity_host_api/src/server.rs` - `web/v1/app.js` - `web/v1/index.html` - Fachliche Aenderungen: - Normale Pattern-Intensitaet vor Preview-Ausgabe auf 10%-Stufen quantisiert. - Normales Preview-Smoothing standardmaessig stark reduziert; nur `breathing` darf weiterhin ueber den bestehenden `fade`-Pfad weich bleiben. - Preview-Stream im WebSocket sendet Preview nur noch bei geaendertem Payload; der bestehende Snapshot-Heartbeat bleibt fuer den API-Vertrag erhalten. - Master Brightness in den Header verschoben; linke Brightness-Sektion zeigt nur noch pattern-spezifische Helligkeitsparameter. - Den sichtbaren `speed`-Slider aus der Creative Surface entfernt; BPM oben plus `tempo_multiplier` bleiben die Geschwindigkeitsbedienung. - Gelaufene Tests: - `cargo fmt --check` - `cargo test -q -p infinity_host` - `cargo test -q -p infinity_host_api --test contract` - Bewusste Abweichungen zur Python-Version: - Keine vollstaendige Python-Pattern-Engine-Portierung; stattdessen gezielte Diskretisierung und Stream-Beruhigung innerhalb der bestehenden Rust-Host-/Web-Architektur. - Kein echter Browser-Handtest in dieser CLI-Umgebung moeglich. ## 2026-04-20 - Creative Surface Redesign und Control-Fix (gezielt) - Geaenderte Dateien: - `web/v1/index.html` - `web/v1/app.js` - `web/v1/styles.css` - `crates/infinity_host/src/scene.rs` - Fachliche Aenderungen: - Redundante globale Brightness-Steuerung in der linken Spalte entfernt; Master Brightness bleibt oben im Header. - Sichtbaren `speed`-Slider in der Creative Surface entfernt; Bedienung ueber BPM oben plus `tempo_multiplier` in den Pattern-Parametern. - `palette`, `color_mode`, `direction`, `mirror` als feste Controls (keine freien Textfelder) in der Web-UI beibehalten/abgesichert. - Palette auf zwei feste Gruppen mit den vorgegebenen Namen und Hex-Werten umgestellt; Host-Palette-Mapping auf dieselben IDs umgestellt. - Layout gezielt entkapselt: weniger harte Rahmen, leichtere Rails, kompaktere Topbar, mehr zusammenhaengende Arbeitsflaeche. - Preview-Grid auf feste 6 Spalten gesetzt und Tiles quadratisch gemacht (`aspect-ratio: 1 / 1`) fuer ein klares 3x6-Raster. - Gelaufene Tests: - `cargo fmt --check` - `cargo test -q -p infinity_host` - `cargo test -q -p infinity_host_api --test contract` - Browser-Handtest: - Versuch via lokalem Headless-Firefox auf `127.0.0.1:9002` ist in dieser Umgebung fehlgeschlagen (`cannot open display: :0` / Firefox Headless-Crash). - Bewusste Abweichungen zur Python-Version: - Die neue, fest vorgegebene Palette-Liste ersetzt die alten Python-Palettenamen; das ist eine inhaltliche Vorgabe dieses Arbeitsschritts. ## 2026-04-20 - Palette ersetzen, linken Brightness-Slider entfernen, linke Rail entzerren - Geaenderte Dateien: - `web/v1/index.html` - `web/v1/app.js` - `web/v1/styles.css` - Fachliche Aenderungen: - Die Creative-Surface-Palette bleibt auf die kuratierte WS2812-Liste mit exakt vorgegebenen Namen und Hex-Werten beschraenkt. - Den unteren Brightness-Bereich in der linken Spalte vollstaendig entfernt; globale Helligkeit bleibt ausschliesslich im Header. - Den dynamisch aus Host-Parametern kommenden `brightness`-Control in der linken Rail ausgefiltert. - Die linke Rail moderat verbreitert und Parameterfelder so nachgezogen, dass Dropdowns, Labels und Farbwerte weniger gequetscht sind. - Gelaufene Tests: - `cargo fmt --check` - `cargo test -q -p infinity_host` - `cargo test -q -p infinity_host_api --test contract` - lokaler CLI-Smoke gegen temporaeren Host auf `127.0.0.1:9002` via `/api/v1/state` und `/api/v1/preview` - Bewusste Abweichungen zur Python-Version: - Keine; dieser Schritt korrigiert nur die Web-Darstellung und blendet den global redundanten Brightness-Slider links aus. ## 2026-04-20 - Technical Surface null-safe gegen fehlende recent_events - Geaenderte Dateien: - `web/v1/technical.js` - `crates/infinity_host_api/tests/contract.rs` - `docs/codex_worklog.md` - Fachliche Aenderungen: - Technical Surface gegen unvollstaendige oder startende Snapshot-Daten robuster gemacht. - `recent_events`, `system`, `technical`, `nodes` und `panels` werden in der UI jetzt ueber null-safe Helper mit Fallbacks gelesen. - Direkter Zugriff auf `snapshot.recent_events.map(...)` entfernt, damit `/technical` nicht mehr crasht, wenn das Feld fehlt. - Contract-/UI-Smoke-Test ergaenzt, der absichert, dass das ausgelieferte `technical.js` den Guard fuer fehlende `recent_events` enthaelt, waehrend `/api/v1/state` das Feld weiterhin weglassen darf. - Gelaufene Tests: - `cargo fmt --check` - `cargo test -q -p infinity_host_api --test contract` - lokaler Host-Smoke auf `127.0.0.1:9011` mit erfolgreichem Abruf von `/` und `/api/v1/state` - Bewusste Abweichungen zur Python-Version: - Keine; das ist ein reiner Stabilitaets-/Robustheitsfix in der bestehenden Web-Oberflaeche. ## 2026-04-20 - Browser-Smoke-Runner und Output-Disable-Fix - Geaenderte Dateien: - `web/v1/technical.js` - `crates/infinity_host_api/tests/contract.rs` - `scripts/codex_browser_smoke.sh` - `docs/codex_worklog.md` - Fachliche Aenderungen: - Technical-Output-Controls gegen Polling-/Apply-Rennen stabilisiert, indem waehrend `saveOutputSettings()` ein `outputSaving`-Zustand gesetzt wird. - Output-Controls werden waehrend des Speicherns kurz deaktiviert und der Draft wird in dieser Zeit nicht von Polling-Snapshots ueberschrieben. - Contract-Test ergaenzt, der absichert, dass `output_enabled` nach vorherigem Aktivieren wieder sauber auf `false` gesetzt werden kann. - Kleinen lokalen Browser-/Route-Smoke-Runner fuer Codex angelegt, der eine Kurzinstanz startet und `/`, `/technical` sowie `/technical.js` selbst prueft. - Gelaufene Tests: - `cargo test -q -p infinity_host_api --test contract` - `scripts/codex_browser_smoke.sh 9012` - Bewusste Abweichungen zur Python-Version: - Keine; der Schritt behebt einen Web-Workflow-Bug und verbessert nur den lokalen Debug-Pfad.