Rapporti di arresto anomalo e ripristino: il consenso e la schermata di ripiego

Quando una schermata di Senzoukria Desktop va in errore durante il rendering, un error boundary sostituisce solo quella zona con una scheda «Questa schermata si è fermata» che offre Ricarica e Copia i dettagli. Un rapporto di arresto viene inviato solo se hai attivato i Rapporti di arresto nella pagina Account, e non contiene mai credenziali, posizioni o P&L.

Senzoukria · Documentazione · Aggiornato a settembre 2026


Dove trovarlo

Dove
Pagina Account → Preferenze → Rapporti di arresto anomalo (casella On / Off)
Predefinito
Off. Nulla viene inviato finché non lo attivi
Endpoint
POST https://senzoukria.com/api/crash, timeout 5 s, silenzioso in caso di errore
Payload
kind, message (max 1.000 caratteri), stack (max 4.000 caratteri), appVersion, platform, timestamp

Che cosa fa

Due meccanismi lavorano insieme. Il primo è un error boundary React posto attorno a ogni zona protetta dell'applicazione. Se un componente di quella zona va in errore durante il rendering, React smonterebbe l'intero albero lasciando una finestra nera; il boundary lo intercetta, registra l'errore nella console con lo stack dei componenti e disegna una scheda al posto della zona. Il resto dell'applicazione continua a funzionare: il feed dati e la connessione broker restano intatti.

Il secondo è il reporter di arresti. Quando il boundary intercetta un errore di rendering, o quando un gestore globale vede una promise rifiutata o un errore non intercettato fuori da React, viene assemblato e inviato un rapporto, ma solo se hai dato il consenso. L'impostazione è salvata in locale sotto un'unica chiave; assente significa nessun consenso. L'invio è fire-and-forget: la schermata di errore non viene mai ritardata dalla richiesta, e un invio fallito fallisce senza alcun popup.

Impostazioni

La preferenza sui rapporti di arresto e i pulsanti della scheda di ripiego
ComandoPredefinitoChe cosa cambia
Rapporti di arresto anomalo (pagina Account)OffCon On, un arresto invia a senzoukria.com la versione, la piattaforma e la traccia dell'errore. Con Off nulla lascia la macchina; la console e il pulsante di copia funzionano comunque
RicaricaRicarica la finestra (window.location.reload). Gli store salvati si reidratano dall'archiviazione locale; la connessione broker vive nel backend e non viene azzerata
Copia i dettagliCopia negli appunti il messaggio di errore, il suo stack e lo stack dei componenti React; l'etichetta passa a Copiato. Un errore degli appunti viene ignorato invece che mostrato

Che cosa contiene il rapporto

Il payload ha sei campi: kind (panic per il lato Rust, render per un errore di rendering React, unhandled per una promise rifiutata o un errore non intercettato), message, stack, appVersion, platform e il timestamp. Il messaggio è tagliato a 1.000 caratteri e lo stack a 4.000, conservando i frame più alti, quelli che portano l'informazione.

Prima di entrare nel payload, message e stack passano da un filtro che maschera le chiavi API delle IA, i token Bearer e Basic, i percorsi utente Windows e Unix (delimitati al separatore di percorso, così un nome account Windows di due parole non lascia trapelare la seconda metà), gli indirizzi email e le coppie chiave/valore sensibili come password, token, api_key, user_id, unique_user_id, login o account. Un test fissa questi pattern con le forme reali che assumono nei messaggi di errore dell'applicazione. Credenziali del broker, nome del conto, posizioni, P&L, simboli negoziati e chiave IA non fanno mai parte del rapporto.

Un freno conserva un solo rapporto per firma distinta (kind più i primi 200 caratteri del messaggio ripulito) e al massimo cinque firme distinte per sessione, così un ciclo di rendering che va in errore a ogni frame non produce centinaia di richieste.

Come si usa

  • Se una schermata mostra «Questa schermata si è fermata», clicca prima Ricarica. Se si ripete, clicca Copia i dettagli e incolla il testo in una segnalazione dalla schermata Segnala un problema, che allega automaticamente anche le ultime righe di errore.
  • Attiva i Rapporti di arresto nella pagina Account se vuoi che gli errori di rendering e quelli non intercettati arrivino agli sviluppatori senza alcuna azione da parte tua. L'etichetta accanto alla casella dice esattamente che cosa viene inviato e che cosa no.
  • La schermata Segnala un problema è un canale separato e volontario, con messaggi di errore visibili; il reporter di arresti è automatico e silenzioso per scelta.

Limiti e trappole

  • Il boundary copre gli errori di rendering della sua zona. Gli errori nei callback degli eventi, nei timer e negli import dinamici sono intercettati dai gestori globali, che li riportano ma non mostrano la scheda.
  • Il consenso è una singola chiave di archiviazione locale su questa macchina; un profilo nuovo, un'archiviazione svuotata o un'archiviazione che l'app non riesce a leggere significano tutti nessun consenso, quindi non viene inviato nulla.
  • Il rapporto è inviato al dominio canonico con un timeout di 5 secondi; se la macchina è offline il rapporto viene scartato, non messo in coda.

Questa pagina in altre lingue

Domande frequenti

Un arresto di un pannello fa cadere la mia connessione broker?
No. La connessione è tenuta dal processo di backend. La scheda sostituisce solo la zona andata in errore, e Ricarica ricarica la finestra mentre la connessione resta com'era.
I rapporti di arresto vengono inviati automaticamente?
Solo dopo che hai attivato i Rapporti di arresto nella pagina Account. Il valore predefinito è Off e resta Off finché non lo cambi. Anche con On, credenziali, posizioni, P&L e chiavi vengono rimossi prima dell'invio.
Qual è la differenza fra un rapporto di arresto e una segnalazione di problema?
Un rapporto di arresto è automatico, minimale e silenzioso in caso di errore. Una segnalazione di problema la scrivi tu nella schermata Segnala un problema, mostra che cosa allega e ti dice se l'invio è fallito.