GoodScroll

Privacy Policy

"I tuoi dati sono tuoi. Punto."

La privacy, detta in modo semplice.

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.

Cosa sappiamo di te e perché:

Dati necessari o generati dal funzionamento del servizio:

  • La tua email e i metadati dell'account - Per il Magic Link, la creazione dell'account e la gestione dell'accesso (Base giuridica: esecuzione del servizio)
  • Nickname, stato di approvazione, giorno di pausa ed eventuale abilitazione di sviluppo - Il nickname è facoltativo; lo stato serve al processo di approvazione manuale; il giorno feriale del Philosophical Bath viene assegnato casualmente dal server una volta sola e non è modificabile dall'utente. Il flag di sviluppo viene assegnato soltanto dall'amministratore agli account che devono eseguire la diagnostica tecnica e non è leggibile o modificabile dalle normali API del profilo (Base giuridica: consenso per il nickname, esecuzione del servizio per accesso e pausa strutturale, legittimo interesse alla sicurezza e alla verifica tecnica per l'abilitazione di sviluppo)
  • Confine del percorso corrente - Un identificativo casuale del percorso, la fase, l'eventuale termine della pausa e gli identificativi di massimo 20 contenuti assegnati. Servono soltanto a impedire feed infiniti e aggiramenti tra dispositivi: non conserviamo la posizione, i singoli passaggi, il tempo di lettura o una cronologia dei percorsi (Base giuridica: esecuzione del servizio)
  • Derivati temporanei dell'indirizzo IP - Identificativi HMAC pseudonimi e timestamp recenti, usati nei file privati di rate limit per proteggere Magic Link, autenticazione e sintesi vocale dagli abusi (Base giuridica: legittimo interesse alla sicurezza e alla sostenibilità tecnica)

Dati che crei soltanto con una tua azione:

  • Reazioni e letture salvate - Identificativo del contenuto o della storia, reazione e relativo momento. Nell'interfaccia la Raccolta è formata da tre librerie, una per ciascuna reazione, e contenuti e storie compaiono nella libreria corrispondente alla tua scelta (Base giuridica: esecuzione del servizio)
  • I tuoi "Margini di Crescita" - Note cifrate sul dispositivo prima del salvataggio nel database (Base giuridica: esecuzione del servizio)
  • I tuoi "Eco" - Commenti condivisi soltanto nella community approvata, con testo, data, nickname facoltativo o indicazione "Anonimo" (Base giuridica: consenso espresso dall'azione facoltativa di pubblicazione, revocabile eliminando l'Eco fuori dal Bath o ritirando durante il Bath la reazione associata, con le conseguenze spiegate sotto)
  • Messaggi inviati a hello@goodscroll.it - Indirizzo del mittente, eventuale nome dichiarato, oggetto, testo, allegati e metadati tecnici dell'email. Li trattiamo per rispondere, fornire assistenza, gestire richieste privacy o tutelare i diritti connessi alla comunicazione (Base giuridica: esecuzione del servizio o misure precontrattuali quando pertinenti; adempimento di obblighi di legge per le richieste che lo richiedono; negli altri casi legittimo interesse alla gestione della corrispondenza e alla tutela dei diritti)

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.

È obbligatorio darci questi dati?

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.

Il vault dei "Margini di Crescita" 🔐

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.

I tuoi "Eco" sono condivisi nella community 🌊

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:

  • Il testo del tuo eco (max 280 caratteri)
  • Il tuo nickname (se lo hai impostato) o la scritta "Anonimo"
  • La data di pubblicazione

“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.

Per quanto tempo conserviamo i tuoi dati:

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.

Con chi condividiamo i tuoi pochissimi dati:

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.

Dove teniamo i tuoi dati:

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.

Documentazione legale scaricabile

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 ufficiale non firmato (5 agosto 2025) 🌍 TIA - Transfer Impact Assessment

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.

Cookie e tecnologie simili

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:

  • access token, refresh token e scadenza della sessione; del record account restituito da Supabase conserviamo soltanto UUID, email, date di creazione e aggiornamento, conferma email e ultimo accesso, perché sono i campi usati dall'app. Gli altri metadati Auth vengono scartati e GoodScroll non aggiunge alla sessione reazioni, note o Eco;
  • versione dell'app e avviso di aggiornamento già mostrato;
  • soltanto l'identificativo della storia rinviata o iniziata da riprendere, non il testo, e la data locale dell'ultima storia completata;
  • presa visione dell'avviso privacy e chiusura delle istruzioni PWA;
  • per Lumi, soltanto il giorno in cui la domanda è stata proposta e il giorno in cui il pensiero della stanza è stato ricevuto.

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.

Intelligenza artificiale: come la usiamo e come non la usiamo

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.

  • L'AI non ha accesso al tuo account
  • Non sa quali contenuti hai letto
  • Non vede le tue reazioni
  • Non può identificarti in alcun modo
  • Non riceve né il testo né il ciphertext dei tuoi "Margini di Crescita"
  • Non può leggere i tuoi "Eco" o sapere chi sei

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.

Modifiche a questa policy:

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.

Testiamo quello che diciamo

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.

Questa informativa descrive dati, finalità, strumenti e limiti.

Le sue affermazioni devono poter essere confrontate con il comportamento del software e con prove riferite a versione, data e perimetro dichiarati.

Se emerge una divergenza, va resa visibile, documentata e corretta.

Domande, osservazioni o segnalazioni?

Puoi scrivere a hello@goodscroll.it.