WUIC ← Torna ai download

Release Notes — WUIC Framework v1.7.0

Data: 11 agosto 2026 Versione precedente pubblicata: 1.5.0 (21 luglio 2026) Backend: .NET 10 + IIS / Linux nginx Frontend: Angular 21


Pacchetti sostituiti il 15 agosto 2026. Gli archivi pubblicati inizialmente contenevano un appsettings.json con autoGeneratedQueryTimeout a 1: con quel valore ogni interrogazione che supera un secondo termina con un errore del server. Insieme erano rimaste alcune impostazioni dell'intestazione (logo, orientamento del menu, selettore dei temi, notifiche) lasciate da una sessione di test. Gli archivi sono stati ricostruiti e le somme di controllo aggiornate.

Se hai scaricato prima del 15 agosto: riscarica il pacchetto, oppure apri appsettings.json e riporta autoGeneratedQueryTimeout a 30, eliminando le chiavi header-logo, header-logo-position, header-menu-orientation, header-show-theme-selector, header-menu-multicolumn-submenu e header-show-notifications se non le hai impostate tu. Nessuna delle due impostazioni tocca i dati: l'installazione si corregge modificando il file e riavviando.


Tre settimane di lavoro concentrate su due fronti. Il primo è l'aspetto: arriva il Theme Builder, una pagina da cui comporre temi su misura — colori, tipografia, sfondo, densità, resa della griglia — che valgono per tutti gli utenti dell'installazione, e l'intestazione dell'applicazione è stata ridisegnata e resa configurabile. Il secondo è l'integrazione e l'osservabilità: il nuovo Webhook Hub per ricevere e inviare eventi con firma e ritentativi, e il Performance Inspector che misura fetch e render per route. Il chatbot impara ad agire su altre tre superfici dell'applicazione e a interrogare lo schema del database.


🎨 Theme Builder

Una nuova pagina sotto Amministrazione permette di comporre temi personalizzati senza toccare il codice. Ogni tema salvato compare nel selettore dei temi di tutti gli utenti dell'installazione, accanto a quelli predefiniti.

Cosa si può impostare:

L'anteprima è live e applica il tema a tutta la pagina mentre lo si compone, senza toccare le preferenze dell'utente: uscendo, ricaricando o chiudendo il browser il proprio tema torna quello di prima.

L'export Excel segue il tema: un file esportato con un tema personalizzato attivo esce con i colori di quel tema — intestazione, righe alternate, bordi — invece dei grigi generici. Per tutte le famiglie di preset sono stati aggiunti gli stili di ripiego, così anche un tema non ancora campionato eredita l'aspetto della propria famiglia.

Il catalogo dei temi predefiniti si allarga con nuove varianti, e il tema attivo viene applicato già al primo fotogramma dopo un ricaricamento, senza il lampeggio del tema precedente.

🖥️ Intestazione ridisegnata e configurabile

L'intestazione dell'applicazione è ora un componente del framework: le installazioni la ereditano invece di mantenerne una copia. Il blocco in alto a destra è stato compattato — selettore temi, chiaro/scuro, lingua, notifiche e area utente stanno in una card che si espande al passaggio del mouse — e l'area utente mostra nome, ruolo, licenza e uscita.

Una nuova sezione Header & Menu nelle impostazioni permette di scegliere l'orientamento del menu (orizzontale sopra o sotto, verticale a sinistra o a destra), di caricare un logo e posizionarlo, e di attivare o disattivare selettore lingua, selettore temi e notifiche. È inoltre possibile disattivare l'affiancamento automatico delle voci di sottomenu: in quel caso i sottomenu lunghi diventano scorrevoli invece di essere troncati.

🔗 Webhook Hub

Nuovo sistema per integrare l'applicazione con servizi esterni, in entrambe le direzioni.

In uscita: gli eventi vengono accodati e consegnati in modo asincrono, con firma HMAC del payload, ritentativi a intervallo fisso o esponenziale, coda di dead letter per le consegne definitivamente fallite e possibilità di rigiocare una consegna. Ogni tentativo è tracciato nei log.

In entrata: l'endpoint POST /api/webhooks/inbound accetta chiamate esterne e le instrada in base a una configurazione di metadati — esecuzione SQL, chiamata HTTP o invocazione di un metodo — con protezione anti-replay.

Sono incluse le politiche di notifica con periodo di silenzio configurabile, una API amministrativa per la gestione degli endpoint e un job dello scheduler per lo smaltimento della coda. Tutta la configurazione — endpoint, eventi, sottoscrizioni, regole di ingresso — vive su tabelle di metadati: aggiungere una integrazione non richiede né codice dedicato né un nuovo deploy. La pagina «Webhook Hub» della documentazione in-app riporta la procedura completa in 5 lingue.

📈 Performance Inspector

Il framework può raccogliere metriche di fetch e render per ogni route, aggregarle e mostrarle in una dashboard amministrativa: media, p95, massimo e conteggio, con ritenzione a 7 giorni e possibilità di attivare la raccolta route per route.

La funzione è disattivata per impostazione predefinita e si abilita con AppSettings:enablePerformanceInspector, in hot-reload. Accanto alle metriche è disponibile un ispettore della qualità del dato, attivabile per singola route dal props bag (extraProps.qualityInspector).

🤖 Chatbot: nuove azioni e lettura dello schema

Il chatbot RAG guadagna dieci nuovi tipi di azione e la capacità di interrogare la struttura del progetto.

Una nuova pagina di documentazione elenca i prompt supportati, verificata rispetto ai test automatici.

📊 Spreadsheet: visibilità delle colonne allineata alla griglia

Lo spreadsheet rispetta ora gli stessi flag di visibilità della list-grid: mc_hide_in_list, mc_hide_in_edit e mc_show_in_filters. Una colonna nascosta in elenco non compare più nel foglio, e una colonna nascosta in modifica non è più editabile nelle celle.

🛡️ Sicurezza

Hardening best-effort sulla creazione guidata dei report: il nome del file richiesto viene ora validato rifiutando percorsi assoluti e caratteri non ammessi, con un controllo che si comporta allo stesso modo su Windows e su Linux — in precedenza si appoggiava a una normalizzazione che sui due sistemi filtrava in modo diverso. L'errore restituito distingue una configurazione non valida da un fallimento della generazione, così chi integra il framework non cerca il problema nel posto sbagliato.

🐛 Bug fix degni di nota

🔧 Aggiornamenti operativi raccomandati per chi aggiorna

  1. Verificare appsettings.json dopo l'aggiornamento: le chiavi nuove hanno valori predefiniti prudenti e non richiedono intervento, ma è il momento giusto per rivederle.
  2. Performance Inspector: impostare AppSettings:enablePerformanceInspector a true per attivarlo; resta disattivo se la chiave è assente.
  3. Webhook Hub: non serve alcun intervento per renderlo raggiungibile. Tabelle, route amministrative e voci di menu — raccolte in un sottomenu «Webhook Hub» sotto Amministrazione — vengono create al primo caricamento del menu, sia su installazione nuova sia aggiornando da una versione precedente. Resta da configurare l'integrazione: in uscita servono tre righe (l'endpoint con URL di destinazione, segreto condiviso, timeout e politica di ritentativo; l'evento; la sottoscrizione che li collega), in entrata un endpoint con direzione inbound e una regola di instradamento. La firma viaggia nell'header X-Wuic-Signature; la procedura completa è nella pagina «Webhook Hub» della documentazione in-app.
  4. Theme Builder: la tabella dei temi viene creata al primo salvataggio. Se si usano temi personalizzati, verificare l'export Excel di una griglia per confermare che i colori siano quelli attesi.
  5. Chatbot: le nuove azioni sono disponibili dopo il riavvio del motore RAG; le operazioni non reversibili richiedono conferma e non possono essere applicate senza.
  6. Linux dietro reverse proxy: se l'installazione risponde su una porta non standard o solo in HTTP, rigenerare la configurazione nginx oppure allineare a mano il vhost esistente a proxy_set_header Host $http_host; e proxy_set_header X-Forwarded-Proto $scheme;. Gli aggiornamenti non riscrivono un vhost già presente.