# Placeful 2.5.0

## In evidenza

- **Riconciliazione documenti fornitori** — scansiona bolle e fatture dal telefono o da upload, estrazione dati assistita da AI (sessioni multi-pagina, XML FatturaPA) e coda di abbinamento a tre vie che lega ogni fattura fornitore alla bolla e al movimento bancario. I feed bancari PSD2 via GoCardless/Enable Banking tengono i movimenti sincronizzati.
- **Vendita e riscatto voucher** — vendi voucher a saldo su codici promo, traccia gli acquisti e lascia che gli ospiti li riscattino al checkout con incasso del residuo. I codici legacy vengono ri-generati nello spazio a 12 caratteri al salvataggio successivo.
- **Assistente ovunque** — l'assistente AI guadagna 23 strumenti di lettura e 20 strumenti di scrittura confermata che coprono ordini, personale, coda in sala, marketing e riconciliazione; ogni scrittura mostra un'anteprima e va confermata prima dell'esecuzione.

## Sicurezza

- **Audit di sicurezza completo** — ogni superficie staff e ospite è stata ri-verificata: le letture cross-tenant sono vincolate all'azienda montata, i prop Livewire lato server sono bloccati contro manomissioni e le azioni privilegiate ri-autorizzano a ogni richiesta.
- **Igiene di credenziali e token** — i token API hanno abilità limitate e scadono con TTL configurabile; i link di claim dei widget si legano al browser che li ha avviati; l'accesso social passa la verifica a due fattori; gli URL di reset password sono esclusi in robots.txt così un link trapelato non viene mai scansionato.
- **Protezione dei dati più profonda** — le richieste di cancellazione e accesso richiedono una mailbox verificata prima dell'esecuzione, le persona demo non possono creare sessioni o token API, e gli export finiscono su un disco privato con retention di 7 giorni invece di URL pubblici.
- **Integrazioni più sicure** — i webhook in uscita firmano i payload e ri-validano gli endpoint contro SSRF a ogni consegna, e il teardown di Google Calendar salta le eliminazioni remote quando la connessione è già assente invece di generare errori per ogni mirror.

## Operazioni

- **Piattaforma webhook** — webhook in uscita firmati con verifica HMAC, rotazione per segreto, replay e registro consegne; gli endpoint sono validati anti-SSRF in registrazione e ri-verificati a ogni consegna.
- **Stampa cucina** — ESC/POS tramite bridge locale o browser, instradamento per stazione, lease dei job con reaper autonomo e retention dei job di stampa.

## WhatsApp e messaggistica

- **WhatsApp in uscita** — invii con template approvati Meta per conferme prenotazione, promemoria e link di riconferma, gamba campagne con stato di consegna per destinatario e inbox che raggruppa i thread per controparte con risposte staff sicure per il consenso (STOP vince sempre).
- **Ricevute di consenso** — ogni concessione/revoca di canale scrive una ricevuta append-only; START riapre solo il canale — il marketing richiede un opt-in esplicito (toggle nella scheda ospite o casella nel form di prenotazione). Body e payload dei messaggi vengono ripuliti oltre l'orizzonte di retention.

## Widget ed embed

- **Builder di embed unificato** — un'unica schermata nelle impostazioni genera embed script, pulsante e iframe per ogni widget: calendario prenotazioni, voucher regalo, richieste di eventi privati e raccolta email. Stile e filtri per singolo widget restano, ora dietro un unico selettore.
- **Tutti i widget sulla pipeline sicura** — gli embed di richiesta e raccolta ora generano la stessa sessione a breve durata vincolata all'origine del calendario e si aprono dentro `/embed`, con lingua, attribuzione UTM e controlli kill-switch a ogni render.
- **Interruttori per singola superficie** — disattiva una superficie widget dalle impostazioni e ogni embed, snippet, URL diretto e pagina pubblica la rifiuta all'istante, senza toccare le altre.
- **Moduli diretti vincolati all'allowlist** — `/capture/{company}` e `/inquiry/{company}` restano raggiungibili pubblicamente, ma una volta configurati i domini consentiti possono essere incorporati solo da quei siti (frame-ancestors), chiudendo il varco di clickjacking su moduli contatti e iscrizioni. Anche l'iframe `/embed` è ora vincolato all'host validato, e l'URL stabile `/w/{key}` mostra una pagina "Widget non disponibile" leggibile invece di JSON grezzo quando piano, dominio o interruttore lo rifiutano.
- **Isolamento widget tra aziende** — un utente loggato a un'altra azienda vede il widget pubblico come un normale visitatore (nessun potere staff, il contesto azienda non cambia mai); l'origine embed validata viene riverificata contro un marcatore con timestamp fresco per sei ore di inattività mentre il token iframe scade sempre dopo 15 minuti; e `php artisan widget:allowlist-audit` elenca le integrazioni attive con funzionalità widget e lista domini vuota prima del rollout.

## Privacy e dati

- **Copertura export e cancellazione** — ordini aggregatori in entrata, righe documenti fornitore e righe stampa cucina entrano nell'archivio export aziendale e nei grafi di anonimizzazione.
- **Audit rafforzato** — mutazioni di conti bancari e stati di abbinamento, oltre alle decisioni di riscatto promo, ora sono auditate con l'attore registrato.


---
> Source: https://placeful-app.com/changelog/2.5.0
