Classica e adattamento V3 — 12 settembre 2026¶
Compila presenta il selettore V3 / Classica sopra il documento. La scelta agisce solo sulla presentazione degli stessi componenti: nessun cambio di endpoint, nuova istanza documento o ricaricamento. Il nodo del campo in modifica, la sezione e le foto restano in memoria. La preferenza è locale al browser e all'origine; non viene registrata sul profilo del tecnico. Il parametro facoltativo ?vista=classic oppure ?vista=v3 prevale sulla preferenza all'apertura.
Classica riprende dal pack legacy larghezza di 1320px, proporzioni della colonna sezioni, schede arrotondate, numerazione e palette. Non è una copia pixel per pixel del legacy: comandi, editor, finestre e funzioni restano quelli V3. Il link Apri legacy conserva l'accesso al compilatore storico, distinto dalla nuova presentazione. La preferenza tema chiaro/scuro/automatico resta separata dalla vista.
Correzioni responsive¶
- Contenitore limitato alla larghezza disponibile, senza traslazione rispetto al viewport.
- Altezza della barra sticky misurata con ResizeObserver, così i titoli delle sezioni non finiscono sotto la barra quando va a capo.
- Azioni espandibili con Comandi sotto 1181px o con altezza massima 700px. Menu e ritorno rimangono accessibili.
- Barra non sticky su telefoni o schermi poco alti; sezioni comprimibili a tutta larghezza, filtri separati dal titolo e finestre limitate al viewport.
- Griglia dei dati tecnici del libretto adattabile senza sette colonne minime obbligatorie.
- Ripristino dell'icona Salva dopo il salvataggio: la funzione precedente conservava solo il testo vuoto del bottone SVG e lasciava “Salvo…” nel pulsante. Ora conserva il markup originale del controllo.
Verifiche¶
- 94 test Python Compila/runtime/mobile/trasporto passati.
- 13 suite JavaScript passate; suite editor ripetuta dopo la correzione del bottone.
- Chromium reale, template e script reali, API simulate su dati sintetici: V3 e Classica a 1920×1080, 1366×768, 1024×768, 820×650, 768×1024, 390×844 e 320×568. Nessun elemento visibile oltre la larghezza del viewport nei casi verificati.
- Verificati campo modificato durante cambio vista, identità del nodo conservata, salvataggio successivo, icona ripristinata, preferenza dopo reload, rispetto sola lettura, libretto su schermi piccoli, tema scuro e assenza di errori JavaScript.
- Test ripetibile in
tests/browser/compila_layout_smoke.py; Playwright installato solo in/tmp/compila-browser, senza modificare le dipendenze applicative. Screenshot in/tmp/compila-layout-screenshots. - Il test sintetico non dimostra l'identità grafica 1:1 con il legacy né copre tutte le combinazioni di schede, allegati e contenuti reali.
- Rilasciato tramite riavvio
safeops-web.service. Dopo il riavvio: pagine Cassioli 633 e Orano 825 HTTP 200 con selettore e versione corretta; i quattro asset aggiornati rispondono 200 e coincidono con i file verificati; login anonimo 200. Controlli di produzione esclusivamente GET, senza salvataggi di risposte o modifiche agli incarichi.
Helper e governance¶
Guida contestuale nel Menu → Vista e aggiornamento del manuale tecnico. Nessuna migrazione dati.
change_summary: selettore V3/Classica, presentazione Classica, correzioni responsive e ripristino icona Salva
user_impact: cambio vista immediato e comandi adattati a schermi piccoli
roles_impacted: tecnici e profili gia autorizzati a Compila
surfaces_impacted: Compila V3 e anteprima Easy Builder
behavior_change: preferenza grafica locale; azioni espandibili; campi mantenuti durante il cambio
permission_change: nessuna
operator_action_required: scegliere facoltativamente la vista; aprire Comandi su schermi piccoli
helper_impact: helper_update_required
helper_content_type: context_helper
release_severity: L2
helper_ready_for_release: true
block_release: false
block_reason: nessuno; guida contestuale e manuale aggiornati
Review: impatto helper e severity coerenti, nessun aggiornamento helper mancante. Backup dei file preesistenti in /home/safeops/tmp/compila_classic_20260912/; la working tree contiene anche altri lavori, quindi evitare ripristini globali.