GoodScroll tratta i dati necessari per creare e proteggere l'account, gestire l'accesso e far funzionare il servizio. Reazioni, note, Eco e messaggi di contatto si generano invece soltanto quando scegli di usare quelle funzioni. Non vendiamo questi dati, non li usiamo per pubblicità o marketing e non costruiamo un profilo per prevedere quali contenuti mostrarti.
Ma siccome la legge ci chiede di dirti alcune cose specifiche, te le diciamo nel nostro stile: chiaro e diretto.
GoodScroll è un progetto personale fatto con passione, non c'è nessuna mega corporazione alle spalle.
Titolare del trattamento
Stefano Strazzera, ideatore di GoodScroll
hello@goodscroll.it
(Sì, siamo quelli che ti mandano il Magic Link per l'accesso)
Dati necessari o generati dal funzionamento del servizio:
Dati che crei soltanto con una tua azione:
Lumi non aggiunge dati al profilo sul server: la domanda è locale e facoltativa. La risposta non viene classificata, ricordata o inviata al server. Reazioni, note, echi e aperture non modificano Lumi e non producono eventi comportamentali dedicati.
Mind Hashrate: è un'impronta simbolica calcolata nel browser, non un identificatore o un punteggio. Per prepararla, una funzione dedicata seleziona soltanto i contenuti per i quali hai una reazione e restituisce, per ciascuno, un campione deterministico di non più di 128 caratteri Unicode. Per un testo breve il campione può coincidere con il testo normalizzato; per un testo oltre la soglia restituisce quattro segmenti distribuiti, non il testo completo. Storie, note ed Eco sono esclusi. Il browser calcola SHA-256 sul materiale canonico e mostra i primi 16 caratteri esadecimali. L'impronta non viene persistita nello storage del browser, scritta nel database o inviata a GoodScroll. Un errore viene indicato come indisponibilità e non come assenza di dati.
Approvazione manuale: limita realmente l'accesso al corpus, alle storie, alla community e alla sintesi vocale; non è una decisione automatizzata. Serve a mantenere circoscritto e protetto questo spazio sperimentale. La valutazione non usa reazioni, note o comportamento nell'app — dati che, prima dell'approvazione, non possono essere prodotti — e non ha un tempo garantito. Oggi non esiste un sistema di punteggio o una graduatoria: il titolare può considerare soltanto la capacità operativa del progetto e segnali evidenti di abuso. Puoi controllare lo stato, uscire o cancellare richiesta e account anche mentre sei in attesa.
Email: Sì, senza email non possiamo mandarti il Magic Link.
È come voler ricevere una lettera senza dare l'indirizzo.
Nickname: No, totalmente opzionale. Puoi rimanere "Utente Misterioso"
se preferisci.
Dati di account e funzionamento: Email, profilo tecnico,
stato di approvazione, giorno di pausa, sessione, confine del percorso e
dati tecnici di sicurezza vengono creati o trattati quando richiedi
l'accesso e usi il servizio; non dipendono da una reazione o da una nota.
Funzioni volontarie: Reazioni, letture salvate, note, Eco
e messaggi a hello@goodscroll.it si generano solo quando compi la relativa
azione. La domanda di Lumi può sempre essere saltata senza penalità, streak
o modifiche di Lumi. Il browser registra soltanto che è già stata proposta,
per non ripeterla nello stesso giorno.
Hai notato la piccola piuma 🪶 che appare dopo una reazione? Sono i tuoi "Margini di Crescita" - note private che puoi scrivere su ogni contenuto che ti colpisce.
Cifratura sul dispositivo: al primo uso della piuma, oppure dalla voce “Vault note private” nel menu, scegli tu una frase segreta. La frase viene inserita nella pagina GoodScroll e usata soltanto nella memoria del browser per derivare la chiave: il codice dell'app non la persiste e non la invia al backend, a Supabase o agli altri fornitori. Dal menu puoi anche vedere se il vault è bloccato o sbloccato e bloccarlo subito. Il browser deriva una chiave AES-256-GCM non estraibile con PBKDF2-HMAC-SHA256, un sale casuale per account e 600.000 iterazioni. La chiave resta soltanto in memoria e viene rimossa dopo 15 minuti senza uso, al logout e quando lasci la pagina. Ogni nota usa un IV casuale ed è legata crittograficamente al tuo account e al contenuto o alla storia cui appartiene.
Se scegli di conservare la frase in un gestore di password o nel sistema di compilazione automatica, quella copia è gestita dal browser, dal sistema operativo o dal provider di sincronizzazione che hai scelto: non è un archivio di GoodScroll. GoodScroll non può inventariare ciò che il gestore conserva e neppure l'osservatore tecnico può verificarlo. Quando la compilazione automatica inserisce la frase nella pagina, l'app la tratta in memoria come una frase digitata manualmente.
Per riaprire il vault su più dispositivi, il database conserva soltanto metadati non segreti: versione crittografica, algoritmo e numero di iterazioni, sale casuale, verificatore cifrato e relativo IV. La frase segreta e la chiave derivata non vengono conservate sul server.
Le note create con il sistema precedente vengono lette con la vecchia chiave derivata dall'email e ricifrate automaticamente nel vault senza sovrascrivere modifiche concorrenti. Finché una vecchia nota non è stata migrata, conserva la protezione più debole della versione precedente.
Limiti dichiarati: il vault protegge soprattutto da una lettura del database, dei backup o da accessi amministrativi casuali. Non può proteggere una frase debole da tentativi offline, né una nota mentre il vault è sbloccato in un browser compromesso, con un'estensione malevola, una vulnerabilità XSS o codice frontend alterato. Non chiamiamo quindi questa protezione “zero knowledge” o sicurezza assoluta.
La stessa frase consente di leggere le note su un altro dispositivo. Se la dimentichi non possiamo recuperarla: dal menu puoi scegliere “Frase dimenticata / elimina note” e azzerare il vault, ma l'operazione elimina irreversibilmente tutte le note private e lascia intatti reazioni, storie ed echi. Nell'export le note restano cifrate per impostazione predefinita; includerle in chiaro richiede una scelta esplicita.
Oltre ai "Margini di Crescita" privati, puoi lasciare degli "Eco" sui contenuti che ti colpiscono. Attenzione: gli eco sono visibili agli utenti autenticati e approvati di GoodScroll, fuori dal loro giorno di pausa. Non vengono pubblicati nelle pagine aperte del sito né indicizzati dai motori di ricerca. Per ogni contenuto o storia il server restituisce al massimo i 200 eco più recenti, ordinati dal più nuovo al più vecchio. GoodScroll non espone un conteggio aggregato: ogni scheda mostra lo stesso accesso agli eco, senza anticipare se o quanti siano presenti, e richiede l'elenco soltanto quando scegli di aprirlo.
Cosa è visibile negli eco:
“Anonimo” descrive soltanto come l'Eco appare agli altri membri. Nel database resta collegato al tuo account per permetterti di modificarlo o cancellarlo ed è quindi associabile a te dal titolare e dai fornitori tecnici autorizzati. Agli altri utenti il server non invia il tuo UUID: restituisce solo i campi elencati sopra e l'indicazione necessaria al tuo browser per riconoscere il tuo Eco.
Controllo: fuori dal Philosophical Bath puoi modificare o eliminare direttamente i tuoi Eco tramite le funzioni della community. Durante il Bath la community è chiusa e queste modifiche dirette non sono disponibili. Puoi però ritirare dalla Raccolta la reazione già attiva: dopo una conferma esplicita vengono eliminati insieme la reazione, l'eventuale nota privata e l'eventuale Eco associati. Al termine del Bath torna disponibile il controllo diretto dell'Eco. Dopo la cancellazione il server non restituisce più l'eco alle richieste successive; una schermata già aperta da un altro membro può continuare a mostrarlo finché non viene aggiornata o riaperta. Se elimini il tuo account, tutti i tuoi eco vengono cancellati automaticamente.
Account, email, nickname, giorno di pausa, stato di approvazione ed eventuale abilitazione di sviluppo: Finché hai un account attivo o finché sono necessari per gestire una richiesta di accesso. L'abilitazione di sviluppo resta finché l'account è usato a questo scopo o viene revocata amministrativamente. Non è attiva una scadenza automatica delle richieste pendenti: puoi cancellarle in autonomia o scrivere al titolare.
Confine del percorso corrente: Esiste una sola riga per account e non una cronologia. Gli identificativi assegnati restano finché quel percorso è corrente; dopo una pausa scaduta vengono sovrascritti alla prima richiesta di un nuovo percorso. Se non torni, la riga corrente può restare fino alla cancellazione dell'account. Il reset delle reazioni non la elimina, perché altrimenti permetterebbe di aggirare il limite; l'export la include.
Reazioni, letture, note ed eco: Finché mantieni l'account o finché non li elimini tramite le funzioni disponibili.
Metadati del vault: Fino al reset del vault o alla cancellazione dell'account.
Lumi: nessuna risposta o classificazione emotiva è conservata sul server. Le due date funzionali salvate nel browser restano fino a quando vengono sovrascritte da un uso successivo o cancellate con i dati del sito o con l'account.
Corrispondenza con hello@goodscroll.it: La casella è gestita tramite Aruba. Conserviamo messaggi, eventuali allegati e metadati della corrispondenza per il tempo necessario a rispondere e gestire il seguito della richiesta; possono essere mantenuti più a lungo soltanto quando necessario per obblighi di legge o per accertare, esercitare o difendere un diritto. Non dichiariamo una durata fissa che non sia stata configurata e verificata.
Email transazionali: Resend documenta 30 giorni di conservazione ordinaria dei dati email e backup fino a 30 giorni. Un indirizzo associato a bounce permanente o reclamo può restare nella suppression list fino alla rimozione. Alla cessazione del servizio il DPA Resend prevede la cancellazione dei dati del cliente entro 90 giorni, salvo obblighi di legge.
Cronologia vocale del fornitore: l'API ElevenLabs standard oggi utilizzata conserva la generazione nella cronologia del fornitore. Il contratto self-service non ci consente di promettere un termine massimo; non presentiamo quindi la nostra cache locale come se cancellasse anche la copia del fornitore.
Cache audio e file di rate limit sul backend: Sono soggetti alle pulizie tecniche best-effort descritte sotto; i tempi indicati sono obiettivi operativi, non termini massimi garantiti.
Diagnostica locale della reattività: metodo, dati esclusi e limite sono visibili a tutti; nell'interfaccia soltanto un account di sviluppo autorizzato dal server può avviare un campione. Il browser lo mantiene in memoria per non più di dieci minuti; soltanto lo scenario Avvio conserva in sessionStorage scenario e scadenza per attraversare il singolo riavvio richiesto. La capacità tecnica del backend scade dopo dodici minuti; copia, esportazione, annullamento o scadenza eliminano lo stato del campione dall'app. L'eventuale testo copiato o file scaricato resta invece sul tuo dispositivo finché non lo elimini. GoodScroll non riceve né conserva il rapporto.
Log di hosting: Aruba può conservare log tecnici e delle operazioni secondo il contratto e la legge. Non dichiariamo un termine massimo che il fornitore non documenta pubblicamente.
Non vendiamo dati e non li comunichiamo a inserzionisti o data broker. Per far funzionare il servizio ricorriamo però a responsabili tecnici, ciascuno con un compito circoscritto: Aruba, Supabase, Resend ed ElevenLabs. Possono avvalersi dei propri sub-responsabili; chiamare tutto questo semplicemente "nessuna condivisione" sarebbe impreciso.
Aruba S.p.A.: ospita le pagine del sito e il backend PHP che applica i controlli di accesso, il rate limit e la cache vocale privata, e gestisce la casella hello@goodscroll.it. Per erogazione e sicurezza dell'hosting può trattare indirizzo IP, data e ora, risorsa richiesta, esito e dati tecnici del browser o della connessione; per la posta può trattare mittente, destinatario, oggetto, contenuto, allegati e metadati tecnici di consegna. Aruba dichiara che il servizio di hosting è gestito nei propri data center italiani. GoodScroll non combina questi log o messaggi con reazioni o letture per profilazione o pubblicità.
Supabase Inc.: ospita database e autenticazione nella regione scelta dal progetto. Opera come responsabile del trattamento ai sensi dell'articolo 28 GDPR e il suo DPA disciplina istruzioni, sicurezza, sub-responsabili e trasferimenti.
Resend (Plus Five Five, Inc.): recapita le sole email transazionali di autenticazione generate da Supabase. Riceve l'indirizzo email, mittente, destinatario, oggetto, data e ora, il contenuto HTML o testuale — compreso il collegamento temporaneo di autenticazione — e stati, errori e log tecnici di consegna. Il flusso applicativo GoodScroll non gli invia nickname, note, reazioni, Eco o contenuti editoriali. GoodScroll non usa Resend per marketing e il codice dell'app non raccoglie eventi di apertura o click. Le relative impostazioni del dashboard del fornitore devono comunque essere verificate separatamente: questa informativa non finge che il codice locale possa provarle.
ElevenLabs: soltanto quando chiedi di ascoltare un contenuto,
il server invia il testo editoriale selezionato, identificativo del
modello e della voce e impostazioni vocali. Non vengono inviati email,
UUID, nickname, reazioni, note o Eco; ElevenLabs vede l'indirizzo IP e
i metadati tecnici del server Aruba, non quelli della chiamata diretta
dal browser. La modalità standard utilizzata conserva testo, audio e
metadati nella cronologia ElevenLabs e può trattarli per erogazione,
sicurezza, moderazione e assistenza. Non dichiariamo la modalità
“Zero Retention”, riservata a configurazioni Enterprise, né un opt-out
dall'uso per il miglioramento dei modelli finché la relativa
impostazione del dashboard non è stata verificata.
Prima di usare o servire la cache il server verifica ogni volta sessione,
approvazione e giorno di pausa. L'audio può essere conservato in una cache
tecnica privata nella directory App_Data/goodscroll, che
sull'hosting Aruba Windows è negata all'accesso web da IIS, per evitare
di ripetere la stessa sintesi; la chiave della cache dipende anche dal testo e dalla configurazione
vocale, non dall'identità dell'utente. I file con data di modifica più
vecchia di 30 giorni non vengono più serviti e, se richiesti, vengono
cancellati. Sono inoltre candidati alla cancellazione durante scansioni
occasionali e limitate: questa pulizia è best-effort e un file non più
richiesto può restare più a lungo se non viene raggiunto da una scansione.
Per limitare abusi dell'autenticazione e della sintesi vocale, il backend deriva temporaneamente un identificativo HMAC dall'indirizzo IP e conserva i soli timestamp recenti delle richieste. L'IP in chiaro non viene scritto nei file di rate limit. La finestra è di un minuto per la voce e di dieci minuti per le operazioni di autenticazione; i timestamp fuori finestra vengono scartati quando il bucket è usato. I file TTS inattivi da oltre dieci minuti e quelli di autenticazione inattivi da oltre venti minuti diventano candidati alla rimozione nelle scansioni successive. Le scansioni sono limitate e non esaustive: questi tempi sono obiettivi di pulizia, non durate massime garantite. Finalità: sicurezza e contenimento dei costi del servizio.
Condivisione e collegamenti esterni scelti da te: il pulsante WhatsApp si attiva soltanto quando decidi di condividere e apre il servizio esterno con il testo editoriale selezionato; GoodScroll non vi aggiunge email, UUID, reazioni, note o Eco. Anche i collegamenti a Instagram, X e Facebook vengono contattati soltanto dopo un tuo clic: da quel momento il servizio scelto può ricevere i normali dati di connessione e applica la propria informativa. GoodScroll non incorpora nelle pagine SDK o pixel di questi social.
Le pagine del sito, il backend PHP, i file privati di rate limit e la cache audio sono ospitati da Aruba in Italia. I dati dell'account e dell'app sono conservati nel database Supabase, nella regione eu-north-1 (Stoccolma, Svezia) su infrastruttura Amazon Web Services (AWS), gestita da Supabase Inc. Le email transazionali e la sintesi vocale standard comportano inoltre trattamenti negli Stati Uniti da parte, rispettivamente, di Resend ed ElevenLabs.
Il 18 febbraio 2026 il titolare ha sottoscritto con Supabase il DPA (Data Processing Addendum) nella versione del 5 agosto 2025. L'originale sottoscritto è conservato nell'archivio legale privato, fuori dalle cartelle servite dal sito, perché contiene firma e dati identificativi non necessari alla verifica pubblica. Qui pubblichiamo invece la copia generica ufficiale, non firmata, corrispondente alla medesima versione contrattuale.
La regione principale del database è in Svezia e l'hosting applicativo è in Italia, ma questo non significa che ogni trattamento resti nell'Unione europea.
Resend e la modalità standard ElevenLabs trattano dati negli Stati Uniti. Anche Supabase e i sub-responsabili dei fornitori possono trattare metadati o dati tecnici fuori dallo SEE nei limiti descritti dai rispettivi contratti.
Quali garanzie proteggono i tuoi dati in questi trasferimenti?
I responsabili diretti scelti da GoodScroll e il loro ruolo sono:
Ogni fornitore può avvalersi di sub-responsabili secondo il proprio contratto. Gli elenchi possono cambiare e non implicano che ogni soggetto riceva ogni dato. Le fonti ufficiali sono il DPA Supabase applicabile, il DPA Resend e la sua lista di sub-responsabili, il DPA ElevenLabs e le condizioni Hosting Aruba.
Tutto quello di cui abbiamo parlato fin qui è nero su bianco in documenti che puoi scaricare, leggere e far verificare dal tuo avvocato. Noi non abbiamo nulla da nascondere.
DPA sottoscritto: 18 febbraio 2026 • Versione contrattuale: 5 agosto 2025 • TIA: 14 marzo 2025
La copia pubblica è priva della firma. Puoi confrontarla con la
fonte ufficiale Supabase.
SHA-256 copia pubblica:
0b2df33aaaf407a72bcd53d2eb8509fcd44f18af9ff9657481822335dc1ff763.
SHA-256 originale sottoscritto conservato privatamente:
df8f683f45b18fc97b19671bafe14a0f2fe6da8f7fe02bc9bbc2da0dbba65dac.
La versione breve: nell'uso ordinario GoodScroll non imposta cookie. Non usa cookie pubblicitari, analitici, di profilazione o marketing. L'unica eccezione applicativa è il cookie tecnico temporaneo descritto sotto, creato soltanto quando un account di sviluppo autorizzato avvia volontariamente la diagnostica.
Cookie tecnico della diagnostica di sviluppo: soltanto
quando dall'interfaccia viene richiesto l'avvio e il preflight server
riconosce un account approvato e abilitato allo sviluppo, il backend
imposta un cookie first-party firmato, sicuro,
HttpOnly e SameSite=Strict, limitato al proxy
API. Non contiene email, UUID o token in chiaro e il JavaScript non può
leggerlo. È vincolato crittograficamente alla sessione corrente e scade
dopo dodici minuti, due minuti oltre la durata massima del campione per
consentire un singolo riavvio. Le normali richieste dell'app non lo
emettono e non ne fanno scorrere la scadenza; una capacità ancora valida
non viene riemessa a ogni richiesta. Viene cancellato quando una verifica
restituisce un account non abilitato. Al logout l'app avvia la richiesta
di cancellazione prima di lasciare la pagina e la consegna in modalità
keepalive, ma la rete o la chiusura del processo possono
impedirne il completamento. Un'eventuale copia residua resta inutilizzabile
senza la sessione cui è vincolata e scade comunque entro dodici minuti.
Senza una nuova interrogazione al database per ogni richiesta, una revoca
amministrativa può quindi impiegare al massimo quei dodici minuti a
invalidare una capacità già emessa; il cambio o rinnovo del token la
rende comunque inutilizzabile perché cambia la sessione a cui è legata.
localStorage (Web Storage): utilizziamo
questo archivio del browser, che non è un cookie, per mantenere la
sessione e alcune informazioni funzionali:
Gli archivi web sono separati per origine e profilo browser, non automaticamente per account GoodScroll. Al logout o al cambio d'identità il codice rimuove la sessione, la chiave del vault e gli stati locali legati all'account: riferimento alla storia da riprendere, data dell'ultima storia, date funzionali di Lumi, diagnostica di avvio e un eventuale verificatore PKCE residuo. Restano gli asset e gli indicatori generici dell'app, come versione, presa visione privacy e chiusura delle istruzioni PWA.
Altri archivi lato browser: GoodScroll usa
Cache Storage per gli asset statici della PWA e,
soltanto durante lo scenario diagnostico “Avvio”,
sessionStorage per lo stato temporaneo del campione.
Il codice corrente non usa IndexedDB. La chiave attiva
del vault, la frase durante la derivazione e le note aperte restano
in memoria volatile; in JavaScript la rimozione elimina i riferimenti,
ma non permette di garantire l'azzeramento fisico immediato della
memoria gestita dal browser.
Cache Storage della PWA: il service worker conserva una
copia dell'app shell e degli asset statici necessari al funzionamento
offline. Non inserisce in questa cache richieste API, risposte Supabase,
sintesi vocale, Magic Link, il ponte statico
auth-handler.html verso il callback protetto
auth-handler.php o il controllo
periodico version.json, né documenti PDF. Le chiavi sono
canoniche, quindi
parametri casuali non producono una cronologia crescente. Quando si
attiva una nuova release, le cache GoodScroll delle release precedenti
vengono eliminate; il browser può inoltre rimuoverle secondo le proprie
politiche o quando cancelli i dati del sito.
Il percorso e la pausa di 30 minuti non sono conservati nello storage locale: l'autorità è una sola riga sul server, condivisa tra i dispositivi. Il browser riceve l'ora del server e la scadenza e mantiene soltanto in memoria lo stato necessario ad aggiornare la pagina finale, che mostra l'orario statico della soglia. Alla scadenza non parte nulla automaticamente: un nuovo percorso viene richiesto soltanto con un gesto esplicito. Cambiare l'orologio, cancellare i dati del sito o ricaricare la pagina non assegna nuovi contenuti.
Diagnostica locale della reattività: il metodo e il suo
limite sono visibili nel menu a tutti gli account; la normale
interfaccia consente l'esecuzione soltanto agli account di sviluppo
abilitati amministrativamente.
Il flag non è leggibile né modificabile dalle normali API del profilo.
Prima di creare il campione l'app ripete una verifica sul server: questa
richiesta non entra nella misura. Se autorizzata, il backend rinnova la
capacità temporanea HttpOnly descritta sopra. Per un massimo
di dieci minuti il browser misura durata ed esito di richieste tecniche.
Quando è attiva, l'app aggiunge soltanto alle richieste API ammesse dalla
lista chiusa un'intestazione tecnica dal valore fisso. L'intestazione da
sola non abilita nulla: il backend restituisce le durate soltanto se
verifica anche la capacità firmata e il suo legame con la sessione
corrente. Non riceve lo scenario scelto, i campioni o il rapporto. In
risposta restituisce soltanto durate aggregate delle fasi Aruba e
Supabase. Alla voce non
viene aggiunta l'intestazione e il backend non restituisce tempi
interni: il campione HTTP misura il tempo dalla partenza della richiesta
audio già autorizzata fino alla ricezione dell'ultimo byte; l'esito del
gesto viene dichiarato riuscito soltanto dopo che il browser ha accettato
l'avvio della riproduzione. Non viene misurata la durata di ascolto.
Un eventuale
rinnovo della sessione può contribuire alla durata complessiva percepita
del gesto, ma nello scenario Voce non viene attribuito né campionato
separatamente come richiesta di autenticazione.
Come ogni dato già misurabile dal browser, le durate client possono
essere osservate o strumentate manualmente da chi controlla il proprio
dispositivo; la garanzia server riguarda le durate interne aggiuntive,
che restano inaccessibili senza la capacità firmata.
Gli scenari non sono semplici etichette applicate a una registrazione
continua. Avvio termina quando la prima superficie
primaria corrente — contenuti, Bath o messaggio di confine — è stata
realmente inserita nell'interfaccia; non attende il silenzio della rete
e non usa il solo evento di caricamento della pagina. Reazione,
Raccolta e Voce restano armati fino al
primo gesto corrispondente e accettano soltanto le richieste a cui il
codice passa lo stesso token causale creato da quel gesto. Le richieste
contemporanee del menu, di Lumi, del vault o di altri aggiornamenti non
correlati restano escluse. Dopo il completamento, annullamento o errore
del gesto il rapporto viene congelato: richieste, risorse ed eventi
successivi non possono modificarlo. Uso generale è
l'unico scenario a finestra libera e termina con il comando manuale.
Il rapporto indica
scenario scelto, versione dell'app, uso da browser o PWA e, in gruppi
aggregati, etichetta tecnica dell'operazione, metodo, esito client,
codice HTTP, conteggi delle richieste e statistiche dei tempi.
Soltanto per l'avvio include anche il tipo di navigazione e, per una
lista chiusa di risorse statiche dell'app, durate e byte aggregati.
Anche le operazioni API
misurabili appartengono a una lista chiusa: cancellazione dell'account,
reset di attività o vault e salvataggio di note o Eco ne sono esclusi.
Non include URL o query,
contenuti, identificativi, account, token, indirizzo IP, user agent,
timestamp assoluti o request ID. I campioni restano in
memoria; soltanto Avvio scrive in sessionStorage lo
scenario e la scadenza, necessari per misurare il singolo
riavvio. Nei gesti che aprono un dialogo nativo il rapporto sottrae dalla
durata dell'azione il tempo trascorso in attesa della risposta umana e
dichiara separatamente la durata esclusa. Il rapporto nasce sul
dispositivo e viene copiato o scaricato
soltanto con un tuo gesto: non esiste un endpoint di upload, un beacon
o un servizio analytics che lo riceva. Puoi annullare in ogni momento;
copia, esportazione, annullamento e scadenza cancellano il campione
dalla memoria dell'app. La copia negli appunti o il file che hai
scelto di creare restano sotto il tuo controllo sul dispositivo.
Prova autenticata locale: è uno strumento distinto
dalla diagnostica di reattività, dal Privacy Browser Observer e dal
GoodScroll Authenticated Android Storage Observer 1.3.1. Lo strumento
in-app non usa ADB e non controlla il sistema operativo. Il metodo è visibile nel menu,
ma l'avvio richiede un account di sviluppo controllato, approvato e
abilitato dal server; le operazioni previste usano input sintetici.
L'avvio è bloccato durante il Philosophical Bath e parte
soltanto se lo stato server lascia più di trentuno minuti
prima della transizione successiva. Il ciclo reversibile
riguarda un contenuto che il server conferma privo anche di una riga
attività preesistente. Le mutazioni sulle storie restano bloccate
durante l'intera prova, per non cancellarne accidentalmente lo stato
di lettura.
L'avvio ripete una verifica sul server. Questa
verifica non emette da sola il cookie tecnico della diagnostica; quel
cookie viene usato soltanto se, nella relativa fase, avvii davvero un
campione prestazionale. Per un massimo di trenta minuti la prova guida
una fase alla volta e conserva il proprio stato soltanto nella memoria
della pagina: una ricarica o chiusura lo perde. Non usa un nuovo
localStorage, sessionStorage o
IndexedDB e non dispone di endpoint di upload.
Gli snapshot registrano soltanto supporto, conteggi e presenza per
categorie chiuse di Web Storage, IndexedDB, Cache Storage e Service
Worker. La prova non legge document.cookie: nel rapporto
compare soltanto il marker not_read_by_design, senza nomi,
valori o conteggi di cookie. Non serializza valori dello storage,
email, UUID, token, URL,
richieste, testi di note o Eco, risposte a Lumi, frase segreta,
chiave, testo cifrato o IV. Gli identificativi necessari a correlare
salvataggio e rimozione dello stesso elemento restano transitoriamente
in memoria e non entrano nel rapporto. Il JSON viene creato e
scaricato soltanto sul dispositivo con un gesto esplicito e include
un SHA-256 canonico, utile a rilevare modifiche del file ma non a
rendere indipendente l'auto-osservazione. Una fase mancante, una
scadenza, un'autorizzazione persa o uno stato sintetico non ripulito
producono un esito inconcludente. La prova va eseguita senza un'altra
sessione attiva dello stesso account, perché letture di controllo e
scritture non formano una singola transazione atomica. Se la pagina
viene chiusa forzatamente
durante una scrittura, non viene prodotto alcun rapporto e gli input
sintetici eventualmente rimasti vanno rimossi manualmente. Cookie
HttpOnly, cache HTTP, BFCache, server, RLS, ACL, stato
interno di Android, log, backup e fornitori restano fuori dal suo campo
di osservazione. È un'auto-osservazione prodotta dalla stessa app, non
un audit GDPR, una certificazione o un parere legale.
Non salviamo localmente la risposta data a Lumi. Il frontend non carica librerie da jsDelivr o da altri CDN di terze parti. Il provider di hosting e Supabase possono comunque produrre log tecnici di sicurezza e funzionamento, come descritto nelle sezioni sui responsabili del trattamento.
Il giorno settimanale del Philosophical Bath non è più una preferenza locale: è assegnato casualmente dal server, resta stabile tra dispositivi e non è esposto ad alcuna funzione di modifica dell'utente. Il controllo usa il fuso Europe/Rome ed è applicato anche dal database e dalla sintesi vocale, non soltanto dalla schermata dell'app. Durante la pausa non vengono assegnati un nuovo feed o una Storia del Giorno non già salvata; community e Lumi sono sospesi. La voce accetta soltanto una richiesta esplicita relativa a un contenuto o a una storia che abbia ancora una tua reazione attiva nella Raccolta.
La Raccolta dell'interfaccia resta consultabile nelle sue tre librerie per reazione, limitatamente ai contenuti e alle storie che vi erano già presenti. Rileggere una storia salvata durante il Bath non registra un nuovo completamento. È una modalità di consultazione, non di nuova scrittura: non puoi aggiungere o cambiare reazioni, creare o modificare note, pubblicare o modificare Eco. Se una nota cifrata esiste già, puoi leggerla dopo avere sbloccato il Vault, ma non modificarla. Puoi soltanto ritirare la reazione già attiva; dopo conferma questa cancellazione rimuove anche l'eventuale nota ed Eco associati. La sintesi vocale non si avvia automaticamente e viene autorizzata sul server prima di leggere la cache privata o contattare ElevenLabs; dopo il ritiro della reazione non può più recuperare l'audio. Semina resta disponibile perché consegna il contenuto all'app esterna scelta da te e non scrive un nuovo dato nel database GoodScroll. Restano disponibili anche i controlli di account e privacy, compresi export e cancellazione dei dati.
Oltre ai cookie, c'è un'altra tecnologia che vogliamo spiegarti con la stessa trasparenza: l'intelligenza artificiale.
Utilizziamo modelli generativi, incluso Claude di Anthropic in parte del processo, per produrre in batch alcuni contenuti di GoodScroll. Il modello non ha accesso agli account degli utenti, alle reazioni, alle note o agli eco.
Non c'è generazione personalizzata in tempo reale. L'app indica l'origine disponibile del contenuto come AI o umana. Essendo un progetto personale, non possiamo promettere che ogni testo AI sia stato revisionato individualmente: possono esistere errori, semplificazioni o ripetizioni e restiamo responsabili di correggerli quando vengono individuati.
I contenuti vengono scelti casualmente dal corpus disponibile. Quando il corpus lo consente, il server dà priorità ai contenuti per i quali non hai salvato una reazione, una nota o un Eco ed evita di riproporre immediatamente la coda del percorso precedente. Questa regola non attribuisce un punteggio alla persona e non prevede i tuoi interessi: non esiste un modello di raccomandazione che ottimizzi il tempo trascorso nell'app.
Il Regolamento (UE) 2024/1689 prevede all'articolo 50 obblighi di trasparenza applicabili dal 2 agosto 2026. GoodScroll non usa questa pagina come autocertificazione giuridica: descrive invece le scelte tecniche verificabili del progetto.
Questa descrizione verrà aggiornata quando cambiano il codice, i fornitori o le regole applicabili. Una valutazione giuridica completa richiede più di una dichiarazione pubblica e non viene sostituita da questa pagina.
Come esercitare questi diritti:
Scrivi a hello@goodscroll.it
Ti risponderemo senza ingiustificato ritardo e, nei casi previsti dal
GDPR, entro un mese. Se una richiesta è complessa o numerosa, il termine
può essere prorogato di due mesi informandoti entro il primo mese.
Potremo chiedere soltanto le informazioni ulteriori necessarie a
verificare che l'account o i dati siano davvero tuoi.
L'export autonomo non limita il diritto di accesso o portabilità. Per richiedere anche dati non disponibili nell'app, compresi quelli per i quali può essere necessario coordinarsi con un fornitore, scrivi allo stesso indirizzo indicando con precisione l'ambito della richiesta.
GoodScroll non prende decisioni unicamente automatizzate con effetti giuridici o analogamente significativi ai sensi dell'articolo 22 GDPR. L'approvazione dell'accesso resta manuale; non esistono punteggio, graduatoria o profilazione comportamentale per decidere chi entra.
Diritto di reclamo: Se non sei soddisfatto di come trattiamo i tuoi dati (saremmo delusi!), puoi presentare reclamo al Garante per la Protezione dei Dati Personali: www.garanteprivacy.it
Questa policy cambia quando cambia il software. Se introducessimo nuovi dati, finalità o fornitori, li descriveremmo prima di considerarli parte ordinaria del servizio. Le versioni precedenti non sono una promessa che il progetto resterà tecnicamente immobile.
Le modifiche materiali saranno comunicate con un avviso nell'app e, quando incidono significativamente sul trattamento, anche tramite email.
La pagina Metodo pubblico e stato delle prove distingue controlli applicativi interni, test pubblici dello strumento, esecuzioni osservazionali e verifiche manuali del backend. Non hanno la stessa forza e non vengono presentati come equivalenti.
Nell'agosto 2025 GoodScroll 1.0.7 è stato sottoposto a un test osservazionale con la versione 3.0 di uno script scritto in Python, progettato per rilevare cookie, alcune chiavi dello storage del browser, richieste di rete e corrispondenze con una lista di tracker noti.
Il report storico dichiarava di non aver osservato cookie di tracking o servizi analytics durante quel percorso. Una revisione del 27 luglio 2026 ha però accertato che lo strumento poteva produrre un punteggio positivo anche con fasi non completate o raccolta di evidenze insufficiente. Quel risultato non dimostra quindi la conformità GDPR e non costituisce prova della versione attuale. Non è un audit GDPR completo.
In particolare, il test storico non verificava policy RLS e autorizzazioni del database, cancellazione ed export completi, gestione delle chiavi, tempi di conservazione, log dei fornitori o tutti gli storage del browser. Il report conteneva inoltre un'anteprima tecnica della sessione che non è opportuno distribuire. Report, script, database di rilevazione e archivio originale sono conservati byte per byte in un archivio storico privato, fuori dal sito, e non vengono più presentati come strumento corrente.
Provenienza del reperto storico: test del 1° agosto
2025, GoodScroll 1.0.7, report PDF di 10 pagine; SHA-256
279f3a2a3ae6ad84917c2c14abc4205135eb03282b78f2f41c6f94f565d41e2e.
L'originale è stato ritirato dalla pubblicazione e archiviato senza
modificarlo il 27 luglio 2026. Il ritiro non può cancellare eventuali
copie già scaricate da terzi; l'hash permette di riconoscere il file
storico senza ripubblicarlo. Stiamo sostituendo quel metodo con una
verifica riproducibile che distingue “osservato”, “non osservato”,
“non verificato” e “inconcludente”, senza punteggi di conformità.
Metodo corrente: il GoodScroll Privacy Browser Observer 4.0.1 usa un profilo browser nuovo e osserva esclusivamente la pagina pubblica senza login o interazioni. Registra evidenze redatte su rete, cookie, Web Storage, IndexedDB, Cache Storage, Service Worker e versioni dell'ambiente. I file di evidenza non serializzano, conservano o pubblicano valori di cookie o Web Storage, token, email, UUID, header o body. Le API di automazione possono rendere alcuni di questi dati transitoriamente disponibili nella memoria del processo: il collector ne estrae soltanto i metadati dichiarati e scarta il resto prima di creare qualsiasi output. Se una delle nove fasi obbligatorie manca, non è disponibile o fallisce, termina con errore e crea soltanto una diagnostica inconcludente: non lascia né il rapporto HTML né quello PDF.
Le osservazioni pubbliche prodotte con la versione 4.0.1 non
osservano l'app dopo l'accesso e non vengono usate
per provare sessione autenticata, vault, reazioni, Echi, Lumi,
diagnostica di sviluppo o dati lato server. Queste parti richiedono
verifiche distinte di codice, test applicativi e backend. Il
2 agosto 2026 la prova autenticata locale ha completato 9/9 fasi
sulla PWA di produzione 1.10.41, con pulizia riletta dal server e
stato finale supported. È stata un'esecuzione assistita
e supervisionata: un controllore ADB/CDP esterno ha inviato un solo
evento UI alla volta e il titolare ha mantenuto il controllo della
frase segreta e della riapertura della PWA. Lo strumento in-app non
ha ricevuto dati da ADB; ha prodotto il proprio rapporto limitato a
ciò che la pagina poteva osservare. Il primo tentativo TTS è terminato
come fallimento classificato e non è stato ripetuto nella run.
Rapporto, campione prestazionale e SHA-256 sono pubblicati nella
pagina Metodo e prove.
L'helper esterno è stato corretto durante l'esecuzione per gestire il
check-in giornaliero di Lumi e il rapporto non ne incorpora l'hash:
la catena del controllore non è quindi un'attestazione crittografica.
Questa auto-osservazione non trasforma le precedenti run senza login
né prova server, RLS, ACL, log, backup o conformità legale.
Il codice e il metodo sono
scaricabili
in un archivio pubblico; SHA-256
c7a91a1556efdd3fc61e253e2e467492589810f781e6fe6095628bce77116d08.
L'hash deterministico del codice eseguito e delle risorse
metodologiche è
6d38276a627b0cd2c01433ae0593ff019f2bc8982d994cc7e75483f7c7f121fd.
L'archivio contiene una propria cartella tests/:
i suoi 33 test unitari offline verificano esclusivamente il
funzionamento del Privacy Observer con componenti fittizi, senza
browser o rete. Non coincidono con i 64 file presenti
nell'inventario applicativo interno di GoodScroll (47 nella
linea di base 1.10.31 e 17 test-obiettivo successivi) e non
verificano app, backend, Supabase o RLS. Il conteggio dei
file interni non equivale al loro esito. I 33 test dello
strumento risultano superati il 27 luglio 2026.
Pubblichiamo anche il
rapporto tecnico di
pre-rilascio in PDF, generato dallo stesso test a partire dalla
medesima osservazione strutturata usata per JSON e HTML; SHA-256
c6b473380c21a7d07c88696bba8ab99221575e67714a59bb76710c324ee71c4c.
La run del 27 luglio 2026 ha completato tutte le nove fasi sulla
preview locale 127.0.0.1:4188, senza login né
interazioni, ed è stata poi controllata visivamente. Il documento
dichiara in prima pagina che è una preview locale: non verifica il
dominio pubblico o l'hosting Aruba. Non contiene grafici, punteggi o
giudizi di conformità. È un'osservazione tecnica limitata, non un
audit GDPR, una certificazione o un parere legale. Nella webroot
pubblichiamo una copia autonoma del PDF, non
observation.json, report.html o il
manifest.json della run: il PDF non viene presentato
come pacchetto probatorio completo.
Osservazione del dominio di produzione: il
29 luglio 2026 alle 21:19:52 UTC il Privacy Browser Observer
4.0.1 ha aperto https://goodscroll.it/, che ha
reindirizzato a https://www.goodscroll.it/, in un
profilo browser nuovo, senza login o interazioni. Tutte le nove
fasi obbligatorie sono state registrate. In quella singola
esecuzione sono state osservate dieci richieste entro il confine
del dominio, la chiave goodscroll_current_version
senza il relativo valore, la cache
goodscroll-1.10.24 e il Service Worker
/sw.js. Cookie, Session Storage e IndexedDB non
sono stati osservati. “Non osservato” non significa assente in
altri momenti, stati, account, browser o dispositivi.
Il
pacchetto completo della run di produzione contiene
observation.json, report.html,
report.pdf e manifest.json; SHA-256
b4b8d32583b49e779afc2587717d24e73a0bc5538eb7e8a213ae7710491ba438.
Il
PDF consultabile
separatamente è byte-identico alla copia nell'archivio;
SHA-256
134c796ccb62d89a0db3f921ed7b640a877797161f4ada4d12fbc5ce52798e51.
È un'osservazione tecnica non autenticata, non un audit GDPR,
una certificazione o un parere legale.
L'osservatore ha registrato il nome della cache 1.10.24, ma
non ricalcola gli hash degli asset applicativi pubblicati.
Il campo config_sha256 presente nei suoi output
identifica la configurazione metodologica del Privacy Observer,
non il file backend api/config.php. Quest'ultimo,
lo ZIP Aruba, token, credenziali, log grezzi e dati personali
non fanno parte del pacchetto pubblico.
Verifica HTTP distinta: il 30 luglio 2026
un secondo strumento ha letto version.json
all'inizio e alla fine, confrontato 35 asset statici pubblici
con una baseline prodotta dall'operatore e controllato, senza
conservarne il corpo, 15 percorsi protetti e tre endpoint
pubblici. I risultati macchina, la baseline e i relativi
SHA-256 sono
descritti e collegati
nella pagina del metodo. Il rapporto conserva soltanto
una allowlist di header di sicurezza; non conserva cookie,
Set-Cookie, body API, token, query o IP.
L'esito supported_with_findings significa che
i 35/35 asset osservati coincidevano e la versione è rimasta
1.10.24 durante il run, ma sono emerse anche mancanze reali:
anti-clickjacking HTTP e HSTS assenti, canonical non allineato
all'host finale e hardening secondario incompleto. Non significa
“deployment sicuro”, “intero server verificato” o “conforme
GDPR”. La release successiva introduce correzioni sorgente,
che richiedono una nuova verifica dopo il caricamento.
Puoi scrivere a hello@goodscroll.it.