Ogni evento catalogato spara dove l'evento realmente accade

Fixkamo-internal
Spegnimento
26 agosto 2026 alle ore 20:22 UTC
Autore
kamo
Impegno
cec7592

La maggior parte del catalogo sonoro era configurabile e inaudibile. Due cause, entrambe silenzio per costruzione: un suono che non suona mai sembra esattamente uno membro spento, quindi non sarebbe mai stato segnalato come un bug. Il motore ha implementato `playsWhenFocused: false` come `!document.hidden`, che chiede sulla scheda del browser. Il catalogo lo documenta come questione SURFACE — "un tema per un messaggio che stai leggendo è il rumore" — e per un gestore dell'app non sono la stessa domanda. Abbonamento di una casella di posta copre ogni casella di posta, un ascoltatore SMS ogni conversazione, uno conduce feed tutta l'organizzazione; nessuno può vedere quale pagina il membro è su, così ogni sono stati uccisi per esattamente fino a quando il membro stava lavorando. Otto eventi spedito abilitato e mai giocato una volta: email.received, sms.received, chat.typing, lead.created, lead.credits.changed, task.assigned, training.assigned e notifica. ritirata. Un sito di chiamata ora nomina la superficie del suo evento proveniva da (lib/sound/soundSurfaces) e qualsiasi cosa rende che la superficie lo dichiara sullo schermo (useSoundSurface), quindi il motore pone la domanda il catalogo sempre descritto. "forza" vince ancora dove nessuna superficie potrebbe essere applicata. L'altra causa era il test di guardia, che non manca solo su una chiave nulla MENTIONS. Questa è una regola molto più debole di "può essere sentito", quindi ogni evento è stato collegato esattamente uno dei suoi produttori e non più. Notifica di Chat Ascoltatore — il applicazione è un app-wide chat arrivo — fatto nessun suono affatto, quindi un messaggio da qualcuno il membro non stava già parlando con arrivato in silenzio, e il primo messaggio di qualsiasi nuova conversazione era inaudibile anche dopo l'apertura della finestra per questo. ui.action.success/error licenziato da quattro posti nell'intera applicazione. Anche licenziato ora: entrambi imbuti tostato condivisi; caricare. completata/fallita MultiFileUploader e su un allegato di chat fallito; documento. salvato in BinderEditor; ui.action.error sui tre percorsi di errore di email-send. conversion.completed è stato erroneamente dichiarato `playsWhenFocused: falso` — è un il risultato che il membro sta aspettando, come caricare. completato accanto a esso. I ~67 componenti che tengono il proprio snackbar sono coperti da un drop-in `useSnackbarState` (lib/snackbarSound) che deriva il tono dallo stato transizione, quindi l'adozione è una linea e nessun cambiamento del sito di chiamata. Si risolve il prossimo valore contro un ref piuttosto che all'interno dell'aggiornamento setState: React può chiamare un aggiornamento due volte, e due set nella stessa zecca devono confrontare l'uno contro l'altro. I suoni del feed dei cavi si muovono fuori usoLeadsRealtime, che monta solo sul due pagine di piombo — così un atterraggio di piombo mentre il membro ha letto la loro posta ha raggiunto un gancio che non era in esecuzione. Ora vivono in un app-wide LeadsFeedListener gated su VIEW LEADS. Un proprietario, o le pagine di piombo si raffreddano due volte. TASK CHANGED è org-wide e copre ogni mutazione di attività, quindi task.assigned viene filtrato alle attività assegnato a questo membro da qualcun altro, cancellazioni escluse, ids rispetto a stringhe perché sono int64. Due guardie in modo che nessuno di questo possa marcire indietro: eventoCatalog.test.ts ora non riesce su un `playsWhenFocused: falso evento sparato con né `forza` né una `superficie`, e check-snackbar-sound.mjs non riesce su uno snackbar tenuto in un semplice usoState. Entrambi verificata ripugnando una correzione e guardandoli catturare.

Tutte le modifiche

Come quello che vedi la spedizione?

Ognuno di questi aggiornamenti atterra automaticamente nello spazio di lavoro. Inizia gratis e guardalo crescere settimana dopo settimana.

Inizia gratis per sempreVisualizza il prezzo