Release Notes — WUIC Framework v1.7.0
Datum: 11. August 2026 Zuvor veröffentlichte Version: 1.5.0 (21. Juli 2026) Backend: .NET 10 + IIS / Linux nginx Frontend: Angular 21
Pakete am 15. August 2026 ersetzt. Die zunächst veröffentlichten Archive enthielten eine
appsettings.jsonmitautoGeneratedQueryTimeoutauf1: Mit diesem Wert endet jede Abfrage, die länger als eine Sekunde dauert, mit einem Serverfehler. Ebenso waren einige Kopfzeilen-Einstellungen (Logo, Menüausrichtung, Themenauswahl, Benachrichtigungen) aus einer Testsitzung zurückgeblieben. Die Archive wurden neu erstellt und ihre Prüfsummen aktualisiert.Wenn Sie vor dem 15. August heruntergeladen haben: Laden Sie das Paket erneut herunter, oder öffnen Sie
appsettings.jsonund setzen SieautoGeneratedQueryTimeoutzurück auf30; entfernen Sie dabei die Schlüsselheader-logo,header-logo-position,header-menu-orientation,header-show-theme-selector,header-menu-multicolumn-submenuundheader-show-notifications, sofern Sie sie nicht selbst gesetzt haben. Keine der beiden Einstellungen berührt Ihre Daten: Datei anpassen und neu starten genügt.
Drei Wochen Arbeit an zwei Fronten. Die erste ist das Erscheinungsbild: Der neue Theme Builder ist eine Seite, auf der sich eigene Designs zusammenstellen lassen — Farben, Typografie, Hintergrund, Dichte, Darstellung der Tabelle —, die für alle Benutzer der Installation gelten; die Kopfzeile der Anwendung wurde neu gestaltet und konfigurierbar gemacht. Die zweite ist Integration und Beobachtbarkeit: Der neue Webhook Hub empfängt und sendet Ereignisse mit Signatur und Wiederholungen, und der Performance Inspector misst Fetch- und Renderzeiten pro Route. Der Chatbot lernt, auf drei weiteren Oberflächen der Anwendung zu handeln und das Datenbankschema abzufragen.
🎨 Theme Builder
Eine neue Seite unter Administration erlaubt es, eigene Designs ohne Codeänderung zusammenzustellen. Jedes gespeicherte Design erscheint im Design-Auswahlfeld aller Benutzer der Installation, neben den mitgelieferten.
Was sich einstellen lässt:
- Hauptfarbe, aus der die vollständige Skala mit 11 Abstufungen erzeugt wird: Die Skala bleibt anklickbar, und die Wahl eines dunkleren Farbtons macht diesen zur Hauptfarbe. Ein Etikett zeigt das erreichte WCAG-Kontrastverhältnis an (AAA / AA / AA-large / fail).
- Helle und dunkle Oberflächen, Eckenradius und Dichte (komfortabel oder kompakt).
- Typografie: Schriftfamilie aus einem Katalog von Systemschriften oder freier Stack, dazu eine Basisgröße, die die gesamte Oberfläche skaliert.
- Seitenhintergrund: einfarbig, Verlauf oder Bild. Der Verlauf kann eine optionale langsame Bewegung haben, die seine Neigung mit der Zeit schwenkt; das Bild wird über Anpassung, Wiederholung, Position und einen dunklen Schleier konfiguriert, damit der Text lesbar bleibt.
- Tabelle: Wechselnde Zeilen und die ausgewählte Zeile sind keine festen Farben mehr, sondern Mischungen aus Oberfläche und einem Akzent, gesteuert über zwei Intensitätsregler und wahlweise mit einem vom Hauptton abweichenden Akzent.
- Hell-/Dunkelmodus frei wählbar oder vom Design vorgegeben.
Die Vorschau ist live und wendet das Design beim Zusammenstellen auf die ganze Seite an, ohne die Einstellungen des Benutzers zu verändern: Beim Verlassen, Neuladen oder Schließen des Browsers kehrt das eigene Design zurück.
Der Excel-Export folgt dem Design: Eine mit aktivem eigenem Design exportierte Datei erhält dessen Farben — Kopfzeile, wechselnde Zeilen, Rahmen — statt der allgemeinen Grautöne. Für jede Preset-Familie wurden Ersatzstile ergänzt, sodass auch ein noch nicht erfasstes Design das Aussehen seiner Familie erbt.
Der Katalog der mitgelieferten Designs erhält neue Varianten, und das aktive Design wird bereits im ersten Bild nach einem Neuladen angewandt, ohne dass das vorherige aufblitzt.
🖥️ Neu gestaltete, konfigurierbare Kopfzeile
Die Kopfzeile der Anwendung ist jetzt eine Komponente des Frameworks: Installationen erben sie, statt eine Kopie zu pflegen. Der Block rechts oben wurde verdichtet — Design-Auswahl, Hell/Dunkel, Sprache, Benachrichtigungen und Benutzerbereich liegen in einer Karte, die sich beim Überfahren mit der Maus ausklappt —, und der Benutzerbereich zeigt Name, Rolle, Lizenz und Abmeldung.
Ein neuer Abschnitt Header & Menu in den Einstellungen erlaubt die Wahl der Menüausrichtung (waagerecht oben oder unten, senkrecht links oder rechts), das Hochladen und Positionieren eines Logos sowie das Ein- und Ausschalten von Sprachauswahl, Design-Auswahl und Benachrichtigungen. Ebenso lässt sich die automatische mehrspaltige Anordnung der Untermenüeinträge abschalten: Lange Untermenüs werden dann scrollbar, statt abgeschnitten zu werden.
🔗 Webhook Hub
Ein neues System zur Anbindung der Anwendung an externe Dienste, in beide Richtungen.
Ausgehend: Ereignisse werden in eine Warteschlange gestellt und asynchron zugestellt, mit HMAC-Signatur des Payloads, Wiederholungen in festem oder exponentiellem Abstand, einer Dead-Letter-Warteschlange für endgültig fehlgeschlagene Zustellungen und der Möglichkeit, eine Zustellung erneut abzuspielen. Jeder Versuch wird in den Logs festgehalten.
Eingehend: Der Endpoint POST /api/webhooks/inbound nimmt externe Aufrufe entgegen und leitet sie anhand einer Metadatenkonfiguration weiter — SQL-Ausführung, HTTP-Aufruf oder Methodenaufruf — mit Anti-Replay-Schutz.
Enthalten sind außerdem Benachrichtigungsregeln mit konfigurierbarer Ruhezeit, eine administrative API zur Verwaltung der Endpoints und ein Scheduler-Job, der die Warteschlange abarbeitet. Die gesamte Konfiguration — Endpoints, Ereignisse, Abonnements, Eingangsregeln — liegt in Metadatentabellen: Eine neue Integration erfordert weder eigenen Code noch ein neues Deployment. Die Seite „Webhook Hub" der In-App-Dokumentation beschreibt das Vorgehen vollständig in 5 Sprachen.
📈 Performance Inspector
Das Framework kann Fetch- und Render-Metriken für jede Route erfassen, aggregieren und in einem administrativen Dashboard anzeigen: Mittelwert, p95, Maximum und Anzahl, mit einer Aufbewahrung von 7 Tagen und routenweiser Erfassung.
Die Funktion ist standardmäßig ausgeschaltet und wird über AppSettings:enablePerformanceInspector im Hot-Reload aktiviert. Neben den Metriken steht ein Inspektor für die Datenqualität bereit, der pro Route über den Props Bag aktiviert wird (extraProps.qualityInspector).
🤖 Chatbot: neue Aktionen und Lesen des Schemas
Der RAG-Chatbot erhält zehn neue Aktionstypen und die Fähigkeit, die Struktur des Projekts abzufragen.
- Drei neue kontextbezogene Oberflächen: Pivot Builder, Einstellungs-Editor und Report Designer. Der Chatbot schlägt Aktionen auf der Seite vor, auf der man sich befindet. Im Einstellungs-Editor werden Änderungen nur vorbereitet: Das Speichern bleibt eine ausdrückliche Handlung des Benutzers. Im an das Modell gesendeten Dump sind schützenswerte Werte — Verbindungszeichenfolgen, Passwörter, Schlüssel, Lizenz — maskiert, und eine Ausschlussliste verhindert deren Überschreiben. Im Report Designer wird stets eine neue Datei mit Zeitstempel erzeugt, ohne den geöffneten Bericht anzutasten.
- Metadaten-Operationen: Anlegen einer Tabelle, Scaffolding von Tabellen, Sichten und Spalten, Verschieben von Menüeinträgen. Die beiden nicht umkehrbaren Operationen — Löschen einer Spalte und Löschen eines Menüeintrags — verlangen eine ausdrückliche Bestätigung, die auch serverseitig geprüft wird und damit selbst dann greift, wenn die Anfrage von einem Client ohne Oberfläche kommt.
- Introspektion: Der Chatbot kann Verbindungen (nur die Namen, nie die Verbindungszeichenfolgen), Datenbanken, Tabellen, Spalten und den Menübaum auflisten. Ohne diese Lesezugriffe konnte er die tatsächlichen Bezeichner nicht kennen, auf denen er arbeiten soll.
Eine neue Dokumentationsseite listet die unterstützten Prompts auf, abgeglichen mit den automatisierten Tests.
📊 Spreadsheet: Spaltensichtbarkeit an die Tabelle angeglichen
Das Spreadsheet berücksichtigt jetzt dieselben Sichtbarkeitsflags wie die List Grid: mc_hide_in_list, mc_hide_in_edit und mc_show_in_filters. Eine in der Liste ausgeblendete Spalte erscheint nicht mehr im Blatt, und eine beim Bearbeiten ausgeblendete Spalte ist in den Zellen nicht mehr änderbar.
🛡️ Sicherheit
Best-effort Hardening beim Erzeugen von Berichten: Der angeforderte Dateiname wird nun validiert, indem absolute Pfade und unzulässige Zeichen abgelehnt werden — mit einer Prüfung, die sich unter Windows und unter Linux gleich verhält. Zuvor stützte sie sich auf eine Normalisierung, die auf beiden Systemen unterschiedlich filterte. Der zurückgegebene Fehler unterscheidet eine ungültige Konfiguration von einem Fehlschlag der Erzeugung, sodass Integratoren das Problem nicht an der falschen Stelle suchen.
🐛 Bemerkenswerte Fehlerbehebungen
- Kalender, erstes Laden: Die Ansicht zeigte Daten, die nicht auf den dargestellten Zeitraum gefiltert waren — typischerweise keine Termine im aktuellen Monat, obwohl welche vorhanden waren. Das erste Laden lief, bevor die für den Archetyp konfigurierten Start- und Endfelder verfügbar waren, und keine spätere Anfrage korrigierte das. Die Felder werden jetzt aufgelöst, bevor der Filter zusammengesetzt wird; treffen sie später ein, werden die Daten genau einmal erneut angefordert.
- 3D-Szenen mit professional-Lizenz: Die Seiten von Designer und 3D-Viewer leiteten auf die Seite «Zugriff verweigert» um, weil die Funktion in keinem Lizenzprofil enthalten war. Sie gehört nun zum Profil professional.
- Berichte unter Linux: Das Erzeugen eines Berichts schlug fehl, weil Schriften über eine nur unter Windows verfügbare Grafikbibliothek behandelt wurden.
- Performance Inspector, Aggregation: Zwei überlappende Läufe des Aggregations-Jobs — das Dashboard stößt ihn beim eigenen Neuladen an, er lässt sich zusätzlich manuell starten — endeten mit einem Fehler wegen doppelten Schlüssels. Zudem war das Fenster der Rohdaten nicht an der Grenze des Tages-Buckets ausgerichtet, sodass der älteste Bucket aus einer Teilmenge der Ereignisse neu aufgebaut wurde.
- Linux hinter einem Reverse Proxy: Vom Backend erzeugte absolute URLs verloren den Port und verwendeten das falsche Schema, wenn die Installation auf einem nicht standardmäßigen Port oder nur über HTTP ausgeliefert wird.
- Oracle, Speichern von 3D-Szenen: Das Speichern schlug wegen eines reservierten Parameternamens und der Umwandlung numerischer Werte fehl. Beides behoben, zusammen mit der Behandlung von in Anführungszeichen gesetzten kleingeschriebenen Spaltennamen.
- Oracle, OData-Bereitstellung: Spalten wurden in Großbuchstaben erzwungen, statt den in den Metadaten deklarierten physischen Namen zu verwenden, wodurch Entitäten mit gemischter Schreibweise unerreichbar waren.
- PostgreSQL und Oracle, Lookups in Diagrammen und Gruppierungen: Das beschreibende Feld eines Lookups wurde nicht vom logischen auf den physischen Namen aufgelöst, und die Gruppierung zeigte leere oder falsche Werte.
- Chatbot, fehlende Bestätigungen: An vier Stellen erschien die Rückfrage wegen eines fehlerhaften Aufrufs nie; an zweien davon erfolgte das Löschen (Chatverlauf und Sitzungen), ohne irgendetwas zu fragen. Jede Bestätigung läuft nun über denselben Pfad, und im Fehlerfall lautet die Antwort „abbrechen".
- Metadaten-Import: Routen, deren Datenbankfeld leer ist — also jene, die die Standarddatenbank der Anwendung verwenden —, konnten nicht importiert werden, und die Fehlermeldung ließ ein Rechteproblem oder die falsche Datenbank vermuten.
- 3D-Viewer: Die Szene nahm einen waagerechten Streifen ein statt der vollen Seitenhöhe.
- Oberfläche, Tabelle vor gestaltetem Hintergrund: Der Bereich unter der letzten Zeile ließ den Seitenhintergrund durchscheinen, sodass die Tabelle löchrig wirkte. Die Oberfläche der Tabelle folgt nun dem Design, hell wie dunkel.
🔧 Empfohlene Schritte beim Aktualisieren
appsettings.jsonprüfen nach der Aktualisierung: Die neuen Schlüssel haben zurückhaltende Standardwerte und erfordern kein Eingreifen, aber es ist ein guter Zeitpunkt, sie durchzugehen.- Performance Inspector:
AppSettings:enablePerformanceInspectorauftruesetzen, um ihn zu aktivieren; ohne den Schlüssel bleibt er aus. - Webhook Hub: Es ist kein Eingriff nötig, um ihn erreichbar zu machen. Tabellen, administrative Routen und Menüeinträge — gebündelt in einem Untermenü „Webhook Hub" unter Administration — werden beim ersten Laden des Menüs angelegt, sowohl bei einer Neuinstallation als auch beim Aktualisieren einer früheren Version. Zu konfigurieren bleibt die Integration: ausgehend drei Zeilen (der Endpoint mit Ziel-URL, gemeinsamem Geheimnis, Timeout und Wiederholungsregel; das Ereignis; das verbindende Abonnement), eingehend ein Endpoint mit Richtung
inboundund eine Weiterleitungsregel. Die Signatur reist im HeaderX-Wuic-Signature; das vollständige Vorgehen steht auf der Seite „Webhook Hub" der In-App-Dokumentation. - Theme Builder: Die Designtabelle wird beim ersten Speichern angelegt. Bei Verwendung eigener Designs den Excel-Export einer Tabelle prüfen, um die erwarteten Farben zu bestätigen.
- Chatbot: Die neuen Aktionen stehen nach einem Neustart der RAG-Engine zur Verfügung; nicht umkehrbare Operationen verlangen eine Bestätigung und lassen sich ohne diese nicht anwenden.
- Linux hinter einem Reverse Proxy: Antwortet die Installation auf einem nicht standardmäßigen Port oder nur über HTTP, die nginx-Konfiguration neu erzeugen oder den bestehenden vhost von Hand auf
proxy_set_header Host $http_host;undproxy_set_header X-Forwarded-Proto $scheme;angleichen. Aktualisierungen überschreiben einen vorhandenen vhost nicht.